/** * Saves the image style dependencies into form and view display entities. */ function image_post_update_image_style_dependencies() { // Merge view and form displays. Use array_values() to avoid key collisions. $displays = array_merge(array_values(EntityViewDisplay::loadMultiple()), array_values(EntityFormDisplay::loadMultiple())); /** @var \Drupal\Core\Entity\Display\EntityDisplayInterface[] $displays */ foreach ($displays as $display) { // Re-save each config entity to add missed dependencies. $display->save(); } }
/** * Make responsive image formatters dependent on responsive image styles. */ function responsive_image_post_update_recreate_dependencies() { $displays = EntityViewDisplay::loadMultiple(); array_walk($displays, function (EntityViewDisplayInterface $entity_view_display) { $old_dependencies = $entity_view_display->getDependencies(); $new_dependencies = $entity_view_display->calculateDependencies()->getDependencies(); if ($old_dependencies !== $new_dependencies) { $entity_view_display->save(); } }); }
/** * Update field settings if the image style name is changed. * * @param \Drupal\image\ImageStyleInterface $style * The image style. */ protected static function replaceImageStyle(ImageStyleInterface $style) { if ($style->id() != $style->getOriginalId()) { // Loop through all entity displays looking for formatters / widgets using // the image style. foreach (EntityViewDisplay::loadMultiple() as $display) { foreach ($display->getComponents() as $name => $options) { if (isset($options['type']) && $options['type'] == 'image' && $options['settings']['image_style'] == $style->getOriginalId()) { $options['settings']['image_style'] = $style->id(); $display->setComponent($name, $options)->save(); } } } foreach (EntityViewDisplay::loadMultiple() as $display) { foreach ($display->getComponents() as $name => $options) { if (isset($options['type']) && $options['type'] == 'image_image' && $options['settings']['preview_image_style'] == $style->getOriginalId()) { $options['settings']['preview_image_style'] = $style->id(); $display->setComponent($name, $options)->save(); } } } } }