123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
- /**
- * @file
- * Contains install and update functions for Layout Builder.
- */
- use Drupal\Core\Cache\Cache;
- use Drupal\Core\Database\Database;
- use Drupal\Core\Entity\EntityTypeInterface;
- use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay;
- use Drupal\layout_builder\Section;
- /**
- * Implements hook_install().
- */
- function layout_builder_install() {
- $display_changed = FALSE;
- $displays = LayoutBuilderEntityViewDisplay::loadMultiple();
- /** @var \Drupal\layout_builder\Entity\LayoutEntityDisplayInterface[] $displays */
- foreach ($displays as $display) {
- // Create the first section from any existing Field Layout settings.
- $field_layout = $display->getThirdPartySettings('field_layout');
- if (isset($field_layout['id'])) {
- $field_layout += ['settings' => []];
- $display
- ->enableLayoutBuilder()
- ->appendSection(new Section($field_layout['id'], $field_layout['settings']))
- ->save();
- $display_changed = TRUE;
- }
- }
- // Clear the rendered cache to ensure the new layout builder flow is used.
- // While in many cases the above change will not affect the rendered output,
- // the cacheability metadata will have changed and should be processed to
- // prepare for future changes.
- if ($display_changed) {
- Cache::invalidateTags(['rendered']);
- }
- }
- /**
- * Enable Layout Builder for existing entity displays.
- */
- function layout_builder_update_8601(&$sandbox) {
- $config_factory = \Drupal::configFactory();
- if (!isset($sandbox['count'])) {
- $sandbox['ids'] = $config_factory->listAll('core.entity_view_display.');
- $sandbox['count'] = count($sandbox['ids']);
- }
- $ids = array_splice($sandbox['ids'], 0, 50);
- foreach ($ids as $id) {
- $display = $config_factory->getEditable($id);
- if ($display->get('third_party_settings.layout_builder')) {
- $display
- ->set('third_party_settings.layout_builder.enabled', TRUE)
- ->save();
- }
- }
- $sandbox['#finished'] = empty($sandbox['ids']) ? 1 : ($sandbox['count'] - count($sandbox['ids'])) / $sandbox['count'];
- }
- /**
- * Implements hook_schema().
- */
- function layout_builder_schema() {
- $schema['inline_block_usage'] = [
- 'description' => 'Track where a block_content entity is used.',
- 'fields' => [
- 'block_content_id' => [
- 'description' => 'The block_content entity ID.',
- 'type' => 'int',
- 'unsigned' => TRUE,
- 'not null' => TRUE,
- ],
- 'layout_entity_type' => [
- 'description' => 'The entity type of the parent entity.',
- 'type' => 'varchar_ascii',
- 'length' => EntityTypeInterface::ID_MAX_LENGTH,
- 'not null' => FALSE,
- 'default' => '',
- ],
- 'layout_entity_id' => [
- 'description' => 'The ID of the parent entity.',
- 'type' => 'varchar_ascii',
- 'length' => 128,
- 'not null' => FALSE,
- 'default' => 0,
- ],
- ],
- 'primary key' => ['block_content_id'],
- 'indexes' => [
- 'type_id' => ['layout_entity_type', 'layout_entity_id'],
- ],
- ];
- return $schema;
- }
- /**
- * Create the 'inline_block_usage' table.
- */
- function layout_builder_update_8602() {
- $inline_block_usage = [
- 'description' => 'Track where a block_content entity is used.',
- 'fields' => [
- 'block_content_id' => [
- 'description' => 'The block_content entity ID.',
- 'type' => 'int',
- 'unsigned' => TRUE,
- 'not null' => TRUE,
- ],
- 'layout_entity_type' => [
- 'description' => 'The entity type of the parent entity.',
- 'type' => 'varchar_ascii',
- 'length' => EntityTypeInterface::ID_MAX_LENGTH,
- 'not null' => FALSE,
- 'default' => '',
- ],
- 'layout_entity_id' => [
- 'description' => 'The ID of the parent entity.',
- 'type' => 'varchar_ascii',
- 'length' => 128,
- 'not null' => FALSE,
- 'default' => 0,
- ],
- ],
- 'primary key' => ['block_content_id'],
- 'indexes' => [
- 'type_id' => ['layout_entity_type', 'layout_entity_id'],
- ],
- ];
- Database::getConnection()->schema()->createTable('inline_block_usage', $inline_block_usage);
- }
|