You are here

function oembed_providers_media_source_info_alter in oEmbed Providers 2.x

Same name and namespace in other branches
  1. 1.0.x oembed_providers.module \oembed_providers_media_source_info_alter()
  2. 1.1.x oembed_providers.module \oembed_providers_media_source_info_alter()

Implements hook_media_source_info_alter().

File

./oembed_providers.module, line 14
This module allows site builders and developers to manage oEmbed providers.

Code

function oembed_providers_media_source_info_alter(array &$sources) {
  $buckets = \Drupal::service('entity_type.manager')
    ->getStorage('oembed_provider_bucket')
    ->loadMultiple();
  $provider_repository = \Drupal::service('media.oembed.provider_repository');
  $available_providers = [];
  foreach ($provider_repository
    ->getAll() as $provider) {
    $available_providers[] = $provider
      ->getName();
  }
  foreach ($buckets as $bucket) {
    $id = 'oembed:' . $bucket
      ->id();

    // Return providers that are 1) allowed per config and 2) exist as
    // an available provider.
    $providers = array_intersect($available_providers, $bucket
      ->get('providers'));
    $sources[$id] = [
      'id' => $bucket
        ->id(),
      'label' => $bucket
        ->label(),
      'description' => $bucket
        ->get('description'),
      'allowed_field_types' => [
        'string',
      ],
      'default_thumbnail_filename' => 'no-thumbnail.png',
      'providers' => $providers,
      'class' => 'Drupal\\media\\Plugin\\media\\Source\\OEmbed',
      'default_name_metadata_attribute' => 'default_name',
      'thumbnail_uri_metadata_attribute' => 'thumbnail_uri',
      'forms' => [
        'media_library_add' => 'Drupal\\media_library\\Form\\OEmbedForm',
      ],
    ];
  }
}