You are here

protected function ContentModelUpdater::installFields in Panopoly 8.2

Installs fields on media types.

1 call to ContentModelUpdater::installFields()
ContentModelUpdater::installBundleConfig in modules/panopoly/panopoly_media/src/Update/ContentModelUpdater.php
Installs config pertinent to media entity bundles.

File

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

Class

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

Namespace

Drupal\panopoly_media\Update

Code

protected function installFields() {

  // File, copy existing fields.
  $existingFields = \Drupal::configFactory()
    ->listAll('field.field.media.file.');
  foreach ($existingFields as $configId) {
    if (!$this
      ->getConfigStorage()
      ->exists($configId)) {
      $config = $this
        ->getConfigStorage()
        ->read($configId);
      unset($config['uuid']);
      $config['id'] = 'media.panopoly_media_file.' . $config['field_name'];
      $config['bundle'] = 'panopoly_media_file';
      $config['translatable'] = TRUE;
      $configId = 'field.field.' . $config['id'];
      $this
        ->createConfigEntity($configId, $config)
        ->save();
    }
  }

  // Image, copy existing fields.
  $existingFields = \Drupal::configFactory()
    ->listAll('field.field.media.image.');
  foreach ($existingFields as $configId) {
    if (!$this
      ->getConfigStorage()
      ->exists($configId)) {
      $config = $this
        ->getConfigStorage()
        ->read($configId);
      unset($config['uuid']);
      $config['id'] = 'media.panopoly_media_image.' . $config['field_name'];
      $config['bundle'] = 'panopoly_media_image';
      $config['translatable'] = TRUE;
      $configId = 'field.field.' . $config['id'];
      $this
        ->createConfigEntity($configId, $config)
        ->save();
    }
  }

  // Remote video, copy existing fields.
  $existingFields = \Drupal::configFactory()
    ->listAll('field.field.media.video.');
  foreach ($existingFields as $configId) {
    if (!$this
      ->getConfigStorage()
      ->exists($configId)) {
      $config = $this
        ->getConfigStorage()
        ->read($configId);
      unset($config['uuid']);

      // Skip video_embed, will create oembed field instead.
      if ($configId == 'field.field.media.video.field_media_video_embed_field') {
        continue;
      }
      $config['id'] = 'media.panopoly_media_remote_video.' . $config['field_name'];
      $config['bundle'] = 'panopoly_media_remote_video';
      $config['translatable'] = TRUE;
      $configId = 'field.field.' . $config['id'];
      $this
        ->createConfigEntity($configId, $config)
        ->save();
    }
  }
  $this
    ->installAllOfType('field.field.media');
}