Chris@14: getStorage('entity_view_display'); Chris@14: if (!isset($sandbox['ids'])) { Chris@14: $sandbox['ids'] = $storage->getQuery()->accessCheck(FALSE)->execute(); Chris@14: $sandbox['count'] = count($sandbox['ids']); Chris@14: } Chris@14: Chris@14: for ($i = 0; $i < 10 && count($sandbox['ids']); $i++) { Chris@14: $id = array_shift($sandbox['ids']); Chris@14: if ($display = $storage->load($id)) { Chris@14: $display->save(); Chris@14: } Chris@14: } Chris@14: Chris@14: $sandbox['#finished'] = empty($sandbox['ids']) ? 1 : ($sandbox['count'] - count($sandbox['ids'])) / $sandbox['count']; Chris@14: } Chris@17: Chris@17: /** Chris@17: * Ensure all extra fields are properly stored on entity view displays. Chris@17: * Chris@17: * Previously Chris@17: * \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::setComponent() Chris@17: * was not correctly setting the configuration for extra fields. This function Chris@17: * calls setComponent() for all extra field components to ensure the updated Chris@17: * logic is invoked on all extra fields to correct the settings. Chris@17: */ Chris@17: function layout_builder_post_update_add_extra_fields(&$sandbox = NULL) { Chris@17: $entity_field_manager = \Drupal::service('entity_field.manager'); Chris@17: \Drupal::classResolver(ConfigEntityUpdater::class)->update($sandbox, 'entity_view_display', function (LayoutEntityDisplayInterface $display) use ($entity_field_manager) { Chris@17: if (!$display->isLayoutBuilderEnabled()) { Chris@17: return FALSE; Chris@17: } Chris@17: Chris@17: $extra_fields = $entity_field_manager->getExtraFields($display->getTargetEntityTypeId(), $display->getTargetBundle()); Chris@17: $components = $display->getComponents(); Chris@17: // Sort the components to avoid them being reordered by setComponent(). Chris@17: uasort($components, 'Drupal\Component\Utility\SortArray::sortByWeightElement'); Chris@17: $result = FALSE; Chris@17: foreach ($components as $name => $component) { Chris@17: if (isset($extra_fields['display'][$name])) { Chris@17: $display->setComponent($name, $component); Chris@17: $result = TRUE; Chris@17: } Chris@17: } Chris@17: return $result; Chris@17: }); Chris@17: }