oembed_providers.module in oEmbed Providers 2.x
Same filename and directory in other branches
This module allows site builders and developers to manage oEmbed providers.
File
oembed_providers.moduleView source
<?php
/**
* @file
* This module allows site builders and developers to manage oEmbed providers.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\oembed_providers\Traits\HelperTrait;
/**
* Implements hook_media_source_info_alter().
*/
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',
],
];
}
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function oembed_providers_form_media_type_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
/** @var \Drupal\Core\Entity\EntityFormInterface */
$callback_object = $form_state
->getBuildInfo()['callback_object'];
/** @var \Drupal\media\MediaSourceInterface */
$source = $callback_object
->getEntity()
->getSource();
// Only render warning message for media types with oEmbed source.
if ($source instanceof OEmbedInterface) {
$warning = [
'#markup' => HelperTrait::disabledProviderSecurityWarning(),
// Simulate warning message.
'#prefix' => '<div role="contentinfo" aria-label="Warning message" class="messages messages--warning">',
'#suffix' => '</div>',
];
array_unshift($form['source_dependent']['source_configuration'], $warning);
}
}
Functions
Name | Description |
---|---|
oembed_providers_form_media_type_edit_form_alter | Implements hook_form_FORM_ID_alter(). |
oembed_providers_media_source_info_alter | Implements hook_media_source_info_alter(). |