You are here

function media_entity_video_update_8301 in Media entity video 8.3

Update media video types to use core video source plugin and field.

File

./media_entity_video.install, line 63
Install, uninstall and update hooks for Media entity video module.

Code

function media_entity_video_update_8301() {
  $config_factory = \Drupal::configFactory();
  foreach ($config_factory
    ->listAll('media.type.') as $media_type_id) {
    $config = $config_factory
      ->getEditable($media_type_id);
    $source_id = $config
      ->get('source');
    if ($source_id === 'video') {
      $source_field_name = $config
        ->get('source_configuration.source_field');
      $type_id = $config
        ->get('id');
      $config
        ->set('source', 'video_file');
      $dependencies = $config
        ->get('dependencies');
      if (is_array($dependencies) && !empty($dependencies['module'])) {
        $dependencies['module'] = array_diff($dependencies['module'], [
          'media_entity_video',
        ]);
        if (empty($dependencies['module'])) {
          unset($dependencies['module']);
        }
        $config
          ->set('dependencies', $dependencies);
      }
      $config
        ->save();
      foreach ($config_factory
        ->listAll("core.entity_view_display.media.{$type_id}.") as $view_display_name) {
        $view_display_config = $config_factory
          ->getEditable($view_display_name);
        $content = $view_display_config
          ->get('content');
        if ($content[$source_field_name]['type'] === 'video_player_html5') {
          $content[$source_field_name]['type'] = 'file_video';
          $content[$source_field_name]['settings'] = [
            'controls' => TRUE,
            'autoplay' => FALSE,
            'loop' => FALSE,
            'multiple_file_display_type' => 'tags',
          ];
          $view_display_config
            ->set('content', $content);
          $dependencies = $view_display_config
            ->get('dependencies');
          if (is_array($dependencies) && !empty($dependencies['module'])) {
            $dependencies['module'] = array_diff($dependencies['module'], [
              'media_entity_video',
            ]);
            if (empty($dependencies['module'])) {
              unset($dependencies['module']);
            }
            $view_display_config
              ->set('dependencies', $dependencies);
          }
          $view_display_config
            ->save();
        }
      }
    }
  }
}