You are here

public function ContentModelUpdater::convertFields in Panopoly 8.2

Batch execution callback for converting entities reference fields.

File

modules/panopoly/panopoly_media/src/Update/ContentModelUpdater.php, line 119

Class

ContentModelUpdater
Applies changes to media content model from schema versions 8204 to 8205.

Namespace

Drupal\panopoly_media\Update

Code

public function convertFields() {

  // Find entity reference fields.

  /** @var \Drupal\field\Entity\FieldConfig[] $fields */
  $fields = FieldConfig::loadMultiple();
  $fields = array_filter($fields, function ($fieldConfig) {

    /** @var \Drupal\field\Entity\FieldConfig $fieldConfig */
    return $fieldConfig
      ->getType() == 'entity_reference';
  });
  foreach ($fields as $fieldConfig) {
    $settings = $fieldConfig
      ->getSettings();
    if ($settings['handler'] == 'default:media') {
      foreach ($settings['handler_settings']['target_bundles'] as $bundle) {
        switch ($bundle) {
          case 'file':
            $settings['handler_settings']['target_bundles']['panopoly_media_file'] = 'panopoly_media_file';
            unset($settings['handler_settings']['target_bundles'][$bundle]);
            break;
          case 'image':
            $settings['handler_settings']['target_bundles']['panopoly_media_image'] = 'panopoly_media_image';
            unset($settings['handler_settings']['target_bundles'][$bundle]);
            break;
          case 'video':
            $settings['handler_settings']['target_bundles']['panopoly_media_remote_video'] = 'panopoly_media_remote_video';
            unset($settings['handler_settings']['target_bundles'][$bundle]);
            break;
        }
      }
      if (isset($settings['handler_settings']['auto_create_bundle'])) {
        switch ($settings['handler_settings']['auto_create_bundle']) {
          case 'file':
            $settings['handler_settings']['auto_create_bundle'] = 'panopoly_media_file';
            break;
          case 'image':
            $settings['handler_settings']['auto_create_bundle'] = 'panopoly_media_image';
            break;
          case 'video':
            $settings['handler_settings']['auto_create_bundle'] = 'panopoly_media_remote_video';
            break;
        }
      }
      ksort($settings);
      $fieldConfig
        ->setSettings($settings);
      $fieldConfig
        ->save();
    }
  }
}