class BrightcoveVideo in Brightcove Video Connect 3.x
Same name in this branch
- 3.x src/Entity/BrightcoveVideo.php \Drupal\brightcove\Entity\BrightcoveVideo
- 3.x modules/media_brightcove/src/Plugin/media/Source/BrightcoveVideo.php \Drupal\media_brightcove\Plugin\media\Source\BrightcoveVideo
- 3.x modules/media_entity_brightcove/src/Plugin/MediaEntity/Type/BrightcoveVideo.php \Drupal\media_entity_brightcove\Plugin\MediaEntity\Type\BrightcoveVideo
Same name and namespace in other branches
- 8.2 modules/media_brightcove/src/Plugin/media/Source/BrightcoveVideo.php \Drupal\media_brightcove\Plugin\media\Source\BrightcoveVideo
Brightcove Video entity media source.
Plugin annotation
@MediaSource(
id = "brightcove_video",
label = @Translation("Brightcove Video"),
description = @Translation("Use Brightcove Videos for reusable media."),
allowed_field_types = {"entity_reference"},
default_thumbnail_filename = "no-thumbnail.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\media_brightcove\Plugin\media\Source\BrightcoveVideo implements MediaSourceFieldConstraintsInterface
- class \Drupal\media\MediaSourceBase implements ContainerFactoryPluginInterface, MediaSourceInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of BrightcoveVideo
File
- modules/
media_brightcove/ src/ Plugin/ media/ Source/ BrightcoveVideo.php, line 24
Namespace
Drupal\media_brightcove\Plugin\media\SourceView source
class BrightcoveVideo extends MediaSourceBase implements MediaSourceFieldConstraintsInterface {
/**
* {@inheritdoc}
*/
public function getMetadataAttributes() {
return [
'name' => $this
->t('Name'),
'api_client' => $this
->t('API Client'),
'player' => $this
->t('Player'),
'video_id' => $this
->t('Video ID'),
'duration' => $this
->t('Video Duration'),
'description' => $this
->t('Short description'),
'long_description' => $this
->t('Long description'),
'poster' => $this
->t('Video Still'),
'thumbnail' => $this
->t('Thumbnail'),
// TODO: Check if these are useful in the Brightcove Video media source.
'complete' => $this
->t('Complete'),
'reference_id' => $this
->t('Reference ID'),
'state' => $this
->t('State'),
'tags' => $this
->t('Tags'),
'custom_fields' => $this
->t('Custom fields'),
'geo' => $this
->t('Geo information'),
'geo.countries' => $this
->t('Geo countries'),
'geo.exclude_countries' => $this
->t('Exclude countries'),
'geo.restricted' => $this
->t('Geo Restricted'),
'schedule' => $this
->t('Schedule'),
'starts_at' => $this
->t('Starts at'),
'ends_at' => $this
->t('Ends at'),
'picture_thumbnail' => $this
->t('Thumbnail picture'),
'picture_poster' => $this
->t('Picture poster'),
'video_source' => $this
->t('Video source'),
'economics' => $this
->t('Economics'),
'partner_channel' => $this
->t('Partner channel'),
];
}
/**
* {@inheritdoc}
*/
public function getMetadata(MediaInterface $media, $attribute_name) {
switch ($attribute_name) {
case 'thumbnail_uri':
// Have a decent default.
$uri = $this->configFactory
->get('media.settings')
->get('icon_base_uri') . '/no-thumbnail.png';
// Check if the source field is still present and populated.
$media_source = $media
->getSource();
/** @var \Drupal\brightcove\Entity\BrightcoveVideo $brightcove_video */
if ($brightcove_video = $media
->get($media_source
->getConfiguration()['source_field'])->entity) {
// Check if the thumbnail file is still present.
if ($thumbnail = $brightcove_video
->getThumbnail()) {
if ($thumbnail_file = File::load($thumbnail['target_id'])) {
$uri = $thumbnail_file
->getFileUri();
}
}
}
return $uri;
case 'name':
return $media
->get('name')
->get(0)
->getValue();
// TODO: Add cases for other metadata as/if needed.
default:
return parent::getMetadata($media, $attribute_name);
}
}
/**
* {@inheritdoc}
*/
protected function createSourceFieldStorage() {
return $this->entityTypeManager
->getStorage('field_storage_config')
->create([
'entity_type' => 'media',
'field_name' => $this
->getSourceFieldName(),
'type' => reset($this->pluginDefinition['allowed_field_types']),
'settings' => [
'target_type' => 'brightcove_video',
],
'locked' => TRUE,
]);
}
/**
* {@inheritdoc}
*/
public function createSourceField(MediaTypeInterface $type) {
$storage = $this
->getSourceFieldStorage() ?: $this
->createSourceFieldStorage();
return $this->entityTypeManager
->getStorage('field_config')
->create([
'field_storage' => $storage,
'bundle' => $type
->id(),
'label' => $this->pluginDefinition['label'],
'required' => TRUE,
'settings' => [
'handler' => 'default:brightcove_video',
],
]);
}
/**
* {@inheritdoc}
*/
public function getSourceFieldConstraints() {
// Make sure that the referenced entity is a brightcove_video one, although
// this validation happens only when creating a media item with this
// MediaSource plugin.
// Theoretically this will not be needed when the automatically-created
// source field gets really locked.
// @see https://www.drupal.org/node/2274433#comment-12007765
return [
'BrightcoveVideoConstraint' => [],
];
}
/**
* {@inheritdoc}
*/
public function prepareFormDisplay(MediaTypeInterface $type, EntityFormDisplayInterface $display) {
// Let the parent add the defaults.
parent::prepareFormDisplay($type, $display);
// Change only what's needed.
$component = $display
->getComponent($this
->getSourceFieldDefinition($type)
->getName());
$component['type'] = 'brightcove_inline_entity_form_complex';
$component['settings'] = [
'form_mode' => 'default',
'allow_new' => 1,
'allow_existing' => 1,
'match_operator' => 'CONTAINS',
];
$display
->setComponent($this
->getSourceFieldDefinition($type)
->getName(), $component);
}
/**
* {@inheritdoc}
*/
public function prepareViewDisplay(MediaTypeInterface $type, EntityViewDisplayInterface $display) {
// Let the parent add the defaults.
parent::prepareViewDisplay($type, $display);
// Change only what's needed.
$component = $display
->getComponent($this
->getSourceFieldDefinition($type)
->getName());
$component['label'] = 'hidden';
$component['settings']['link'] = TRUE;
$component['type'] = 'entity_reference_entity_view';
$display
->setComponent($this
->getSourceFieldDefinition($type)
->getName(), $component);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BrightcoveVideo:: |
public | function |
Creates the source field definition for a type. Overrides MediaSourceBase:: |
|
BrightcoveVideo:: |
protected | function |
Creates the source field storage definition. Overrides MediaSourceBase:: |
|
BrightcoveVideo:: |
public | function |
Gets the value for a metadata attribute for a given media item. Overrides MediaSourceBase:: |
|
BrightcoveVideo:: |
public | function |
Gets a list of metadata attributes provided by this plugin. Overrides MediaSourceInterface:: |
|
BrightcoveVideo:: |
public | function |
Gets media source-specific validation constraints for a source field. Overrides MediaSourceFieldConstraintsInterface:: |
|
BrightcoveVideo:: |
public | function |
Prepares the media type fields for this source in the form display. Overrides MediaSourceBase:: |
|
BrightcoveVideo:: |
public | function |
Prepares the media type fields for this source in the view display. Overrides MediaSourceBase:: |
|
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | 2 | |
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:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
2 |
MediaSourceBase:: |
public | function |
Gets default configuration for this plugin. Overrides ConfigurableInterface:: |
2 |
MediaSourceBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurableInterface:: |
|
MediaSourceBase:: |
public | function |
Get the source field definition for a media type. Overrides MediaSourceInterface:: |
|
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 |
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 |
MediaSourceBase:: |
public | function |
Constructs a new class instance. Overrides PluginBase:: |
2 |
MediaSourceInterface:: |
constant | Default empty value for metadata fields. | ||
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
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:: |
2 |
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. | 4 |
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. |