View source
<?php
namespace Drupal\media_test_source\Plugin\media\Source;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Form\FormStateInterface;
use Drupal\media\MediaInterface;
use Drupal\media\MediaSourceBase;
class Test extends MediaSourceBase {
public function getMetadataAttributes() {
$attributes = \Drupal::state()
->get('media_source_test_attributes', [
'attribute_1' => [
'label' => $this
->t('Attribute 1'),
'value' => 'Value 1',
],
'attribute_2' => [
'label' => $this
->t('Attribute 2'),
'value' => 'Value 1',
],
]);
return array_map(function ($item) {
return $item['label'];
}, $attributes);
}
public function getMetadata(MediaInterface $media, $attribute_name) {
$attributes = \Drupal::state()
->get('media_source_test_attributes', [
'attribute_1' => [
'label' => $this
->t('Attribute 1'),
'value' => 'Value 1',
],
'attribute_2' => [
'label' => $this
->t('Attribute 2'),
'value' => 'Value 1',
],
]);
if (in_array($attribute_name, array_keys($attributes))) {
return $attributes[$attribute_name]['value'];
}
return parent::getMetadata($media, $attribute_name);
}
public function getPluginDefinition() {
return NestedArray::mergeDeep(parent::getPluginDefinition(), \Drupal::state()
->get('media_source_test_definition', []));
}
public function defaultConfiguration() {
return parent::defaultConfiguration() + [
'test_config_value' => 'This is default value.',
];
}
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form = parent::buildConfigurationForm($form, $form_state);
$form['test_config_value'] = [
'#type' => 'textfield',
'#title' => $this
->t('Test config value'),
'#default_value' => $this->configuration['test_config_value'],
];
return $form;
}
}