-
Max Bronsema authoredMax Bronsema authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ableplayer.install 5.98 KiB
<?php
/**
* @file
* Install file for Able Player.
*/
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\field\Entity\FieldConfig;
/**
* Implements hook_install().
*/
function ableplayer_install() {
$fields = _ableplayer_fields();
$remote_video_fields = _ableplayer_remote_video_fields();
$bundles = \Drupal::entityTypeManager()->getListBuilder('media_type')->load();
foreach ($bundles as $bundle) {
if (!in_array($bundle->get('source'), ['video_file', 'audio_file'])) {
continue;
}
foreach ($fields as $field) {
$storage = FieldStorageConfig::loadByName('media', $field['storage']['field_name']);
if (is_null($storage)) {
$storage = FieldStorageConfig::create($field['storage']);
$storage->save();
}
$field['instance']['bundle'] = $bundle->get('id');
$field['instance']['storage'] = $storage;
if (is_null(FieldConfig::loadByName('media', $bundle->get('id'), $field['storage']['field_name']))) {
$instance = FieldConfig::create($field['instance']);
$instance->save();
}
$form = \Drupal::entityTypeManager()->getStorage('entity_form_display')->load('media.' . $bundle->get('id') . '.default');
if (!empty($form)) {
$options = [
'weight' => $form->getHighestWeight() - 3,
];
$form->setComponent($field['storage']['field_name'], $options)->save();
}
else {
\Drupal::logger('ableplayer')->warning(t('Skipping %field due to missing entity form.', [
'%field' => $bundle->get('id'),
]));
}
}
}
foreach ($bundles as $bundle) {
if (!in_array($bundle->get('source'), ['oembed:video'])) {
continue;
}
foreach ($remote_video_fields as $remote_video_field) {
$storage = FieldStorageConfig::loadByName('media', $remote_video_field['storage']['field_name']);
if (is_null($storage)) {
$storage = FieldStorageConfig::create($remote_video_field['storage']);
$storage->save();
}
$remote_video_field['instance']['bundle'] = $bundle->get('id');
$remote_video_field['instance']['storage'] = $storage;
if (is_null(FieldConfig::loadByName('media', $bundle->get('id'), $remote_video_field['storage']['field_name']))) {
$instance = FieldConfig::create($remote_video_field['instance']);
$instance->save();
}
$form = \Drupal::entityTypeManager()->getStorage('entity_form_display')->load('media.' . $bundle->get('id') . '.default');
if (!empty($form)) {
$form->setComponent($remote_video_field['storage']['field_name'])->save();
}
else {
\Drupal::logger('ableplayer')->warning(t('Skipping %field due to missing entity form.', [
'%field' => $bundle->get('id'),
]));
}
}
}
$factory = \Drupal::configFactory();
$video_entity_form_display = $factory->getEditable('core.entity_form_display.media.video.default');
$video_entity_form_display->set('content.field_ableplayer_media_caption.type', 'media_library_widget');
$video_entity_form_display->save();
$video_entity_view_display = $factory->getEditable('core.entity_view_display.media.video.default');
$video_entity_view_display->set('content.field_media_video_file.type', 'ableplayer_video');
$video_entity_view_display->set('content.field_media_video_file.settings', [
'controls' => FALSE,
'autoplay' => FALSE,
'loop' => FALSE,
'multiple_file_display_type' => 'tags',
]);
$video_entity_view_display->save();
}
/**
* Adds support for swappable audio description.
*
* If videos are hosted on YouTube or Vimeo.
*/
function ableplayer_update_9001() {
$remote_video_fields = _ableplayer_remote_video_fields();
$bundles = \Drupal::entityTypeManager()->getListBuilder('media_type')->load();
foreach ($bundles as $bundle) {
if (!in_array($bundle->get('source'), ['oembed:video'])) {
continue;
}
foreach ($remote_video_fields as $remote_video_field) {
$storage = FieldStorageConfig::loadByName('media', $remote_video_field['storage']['field_name']);
if (is_null($storage)) {
$storage = FieldStorageConfig::create($remote_video_field['storage']);
$storage->save();
}
$remote_video_field['instance']['bundle'] = $bundle->get('id');
$remote_video_field['instance']['storage'] = $storage;
if (is_null(FieldConfig::loadByName('media', $bundle->get('id'), $remote_video_field['storage']['field_name']))) {
$instance = FieldConfig::create($remote_video_field['instance']);
$instance->save();
}
$form = \Drupal::entityTypeManager()->getStorage('entity_form_display')->load('media.' . $bundle->get('id') . '.default');
if (!empty($form)) {
$weight = $form->getHighestWeight() - 1;
$options = [
'weight' => $weight,
];
$form->setComponent($remote_video_field['storage']['field_name'], $options)->save();
}
else {
\Drupal::logger('ableplayer')->warning(t('Skipping %field due to missing entity form.', [
'%field' => $bundle->get('id'),
]));
}
}
}
}
/**
* Adjust weight of audio description field.
*/
function ableplayer_update_9002() {
$remote_video_fields = _ableplayer_remote_video_fields();
$bundles = \Drupal::entityTypeManager()->getListBuilder('media_type')->load();
foreach ($bundles as $bundle) {
if (!in_array($bundle->get('source'), ['oembed:video'])) {
continue;
}
foreach ($remote_video_fields as $remote_video_field) {
$form = \Drupal::entityTypeManager()->getStorage('entity_form_display')->load('media.' . $bundle->get('id') . '.default');
if (!empty($form)) {
$options = [
'weight' => $form->getHighestWeight() - 3,
];
$form->setComponent($remote_video_field['storage']['field_name'], $options)->save();
}
else {
\Drupal::logger('ableplayer')->warning(t('Skipping %field due to missing entity form.', [
'%field' => $bundle->get('id'),
]));
}
}
}
}