Mercurial > hg > isophonics-drupal-site
diff core/modules/layout_builder/layout_builder.install @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | 1fec387a4317 |
children |
line wrap: on
line diff
--- a/core/modules/layout_builder/layout_builder.install Tue Jul 10 15:07:59 2018 +0100 +++ b/core/modules/layout_builder/layout_builder.install Thu Feb 28 13:21:36 2019 +0000 @@ -6,6 +6,8 @@ */ 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; @@ -13,6 +15,8 @@ * Implements hook_install(). */ function layout_builder_install() { + $display_changed = FALSE; + $displays = LayoutBuilderEntityViewDisplay::loadMultiple(); /** @var \Drupal\layout_builder\Entity\LayoutEntityDisplayInterface[] $displays */ foreach ($displays as $display) { @@ -20,21 +24,115 @@ $field_layout = $display->getThirdPartySettings('field_layout'); if (isset($field_layout['id'])) { $field_layout += ['settings' => []]; - $display->appendSection(new Section($field_layout['id'], $field_layout['settings'])); + $display + ->enableLayoutBuilder() + ->appendSection(new Section($field_layout['id'], $field_layout['settings'])) + ->save(); + $display_changed = TRUE; } - - // Sort the components by weight. - $components = $display->get('content'); - uasort($components, 'Drupal\Component\Utility\SortArray::sortByWeightElement'); - foreach ($components as $name => $component) { - $display->setComponent($name, $component); - } - $display->save(); } // 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. - Cache::invalidateTags(['rendered']); + 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); +}