class VideoEmbedField in Video Embed Field 8.2
Same name in this branch
- 8.2 src/Plugin/Field/FieldType/VideoEmbedField.php \Drupal\video_embed_field\Plugin\Field\FieldType\VideoEmbedField
- 8.2 src/Plugin/migrate/field/VideoEmbedField.php \Drupal\video_embed_field\Plugin\migrate\field\VideoEmbedField
- 8.2 modules/video_embed_media/src/Plugin/media/Source/VideoEmbedField.php \Drupal\video_embed_media\Plugin\media\Source\VideoEmbedField
Provides media source plugin for video embed field.
Plugin annotation
@MediaSource(
id = "video_embed_field",
label = @Translation("Video embed field"),
description = @Translation("Enables video_embed_field integration with media."),
allowed_field_types = {"video_embed_field"},
default_thumbnail_filename = "video.png"
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\media\MediaSourceBase implements ContainerFactoryPluginInterface, MediaSourceInterface
- class \Drupal\video_embed_media\Plugin\media\Source\VideoEmbedField
- class \Drupal\media\MediaSourceBase implements ContainerFactoryPluginInterface, MediaSourceInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of VideoEmbedField
File
- modules/
video_embed_media/ src/ Plugin/ media/ Source/ VideoEmbedField.php, line 26
Namespace
Drupal\video_embed_media\Plugin\media\SourceView source
class VideoEmbedField extends MediaSourceBase {
/**
* The video provider manager.
*
* @var \Drupal\video_embed_field\ProviderManagerInterface
*/
protected $providerManager;
/**
* The media settings.
*
* @var \Drupal\Core\Config\Config
*/
protected $mediaSettings;
/**
* Constructs a new class instance.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* Entity type manager service.
* @param \Drupal\Core\Entity\EntityFieldManagerInterface $entity_field_manager
* Entity field manager service.
* @param \Drupal\Core\Field\FieldTypePluginManagerInterface $field_type_manager
* Config field type manager service.
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* Config factory service.
* @param \Drupal\video_embed_field\ProviderManagerInterface $provider_manager
* The video provider manager.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, FieldTypePluginManagerInterface $field_type_manager, ConfigFactoryInterface $config_factory, ProviderManagerInterface $provider_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_type_manager, $entity_field_manager, $field_type_manager, $config_factory);
$this->providerManager = $provider_manager;
$this->mediaSettings = $config_factory
->get('media.settings');
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('entity_type.manager'), $container
->get('entity_field.manager'), $container
->get('plugin.manager.field.field_type'), $container
->get('config.factory'), $container
->get('video_embed_field.provider_manager'));
}
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [
'source_field' => 'field_media_video_embed_field',
];
}
/**
* {@inheritdoc}
*/
public function getMetadata(MediaInterface $media, $attribute_name) {
$url = $this
->getVideoUrl($media);
switch ($attribute_name) {
case 'default_name':
if ($provider = $this->providerManager
->loadProviderFromInput($url)) {
return $provider
->getName();
}
return parent::getMetadata($media, 'default_name');
case 'id':
if ($provider = $this->providerManager
->loadProviderFromInput($url)) {
return $provider
->getIdFromInput($url);
}
return FALSE;
case 'source':
case 'source_name':
$definition = $this->providerManager
->loadDefinitionFromInput($url);
if (!empty($definition)) {
return $definition['id'];
}
return FALSE;
case 'image_local':
case 'image_local_uri':
$thumbnail_uri = $this
->getMetadata($media, 'thumbnail_uri');
if (!empty($thumbnail_uri) && file_exists($thumbnail_uri)) {
return $thumbnail_uri;
}
return parent::getMetadata($media, 'thumbnail_uri');
case 'thumbnail_uri':
if ($provider = $this->providerManager
->loadProviderFromInput($url)) {
$provider
->downloadThumbnail();
$thumbnail_uri = $provider
->getLocalThumbnailUri();
if (!empty($thumbnail_uri)) {
return $thumbnail_uri;
}
}
return parent::getMetadata($media, 'thumbnail_uri');
}
return FALSE;
}
/**
* {@inheritdoc}
*/
public function getMetadataAttributes() {
return [
'id' => $this
->t('Video ID.'),
'source' => $this
->t('Video source machine name.'),
'source_name' => $this
->t('Video source human name.'),
'image_local' => $this
->t('Copies thumbnail image to the local filesystem and returns the URI.'),
'image_local_uri' => $this
->t('Gets URI of the locally saved image.'),
];
}
/**
* Get the video URL from a media entity.
*
* @param \Drupal\media\MediaInterface $media
* The media entity.
*
* @return string|bool
* A video URL or FALSE on failure.
*/
protected function getVideoUrl(MediaInterface $media) {
$media_type = $this->entityTypeManager
->getStorage('media_type')
->load($media
->bundle());
$source_field = $this
->getSourceFieldDefinition($media_type);
$field_name = $source_field
->getName();
$video_url = $media->{$field_name}->value;
return !empty($video_url) ? $video_url : FALSE;
}
/**
* {@inheritdoc}
*/
public function createSourceField(MediaTypeInterface $type) {
return parent::createSourceField($type)
->set('label', 'Video Url');
}
/**
* {@inheritdoc}
*/
public function getSourceFieldDefinition(MediaTypeInterface $type) {
// video_embed_media has not historically had a value in
// $this->configuration['source_field'], instead just creating
// field_media_video_embed_field on install and treating that as the source.
// Here we privilege the standard way, but also allow the old VEM way, of
// getting the source field's name.
$field = !empty($this->configuration['source_field']) ? $this->configuration['source_field'] : 'field_media_video_embed_field';
if ($field) {
// Be sure that the suggested source field actually exists.
$fields = $this->entityFieldManager
->getFieldDefinitions('media', $type
->id());
return isset($fields[$field]) ? $fields[$field] : NULL;
}
return NULL;
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
MediaSourceBase:: |
protected | property | The config factory service. | |
MediaSourceBase:: |
protected | property | The entity field manager service. | |
MediaSourceBase:: |
protected | property | The entity type manager service. | |
MediaSourceBase:: |
protected | property | The field type plugin manager service. | |
MediaSourceBase:: |
protected | property | Plugin label. | |
MediaSourceBase:: |
public | function |
Form constructor. Overrides PluginFormInterface:: |
2 |
MediaSourceBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
MediaSourceBase:: |
protected | function | Creates the source field storage definition. | |
MediaSourceBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurableInterface:: |
|
MediaSourceBase:: |
protected | function | Determine the name of the source field. | 2 |
MediaSourceBase:: |
protected | function | Get the source field options for the media type form. | |
MediaSourceBase:: |
protected | function | Returns the source field storage definition. | |
MediaSourceBase:: |
public | function |
Get the primary value stored in the source field. Overrides MediaSourceInterface:: |
|
MediaSourceBase:: |
public | function |
Prepares the media type fields for this source in the form display. Overrides MediaSourceInterface:: |
3 |
MediaSourceBase:: |
public | function |
Prepares the media type fields for this source in the view display. Overrides MediaSourceInterface:: |
6 |
MediaSourceBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurableInterface:: |
|
MediaSourceBase:: |
public | function |
Form submission handler. Overrides PluginFormInterface:: |
1 |
MediaSourceBase:: |
public | function |
Form validation handler. Overrides PluginFormInterface:: |
1 |
MediaSourceInterface:: |
constant | Default empty value for metadata fields. | ||
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
VideoEmbedField:: |
protected | property | The media settings. | |
VideoEmbedField:: |
protected | property | The video provider manager. | |
VideoEmbedField:: |
public static | function |
Creates an instance of the plugin. Overrides MediaSourceBase:: |
|
VideoEmbedField:: |
public | function |
Creates the source field definition for a type. Overrides MediaSourceBase:: |
|
VideoEmbedField:: |
public | function |
Gets default configuration for this plugin. Overrides MediaSourceBase:: |
|
VideoEmbedField:: |
public | function |
Gets the value for a metadata attribute for a given media item. Overrides MediaSourceBase:: |
|
VideoEmbedField:: |
public | function |
Gets a list of metadata attributes provided by this plugin. Overrides MediaSourceInterface:: |
|
VideoEmbedField:: |
public | function |
Get the source field definition for a media type. Overrides MediaSourceBase:: |
|
VideoEmbedField:: |
protected | function | Get the video URL from a media entity. | |
VideoEmbedField:: |
public | function |
Constructs a new class instance. Overrides MediaSourceBase:: |