media_entity_video.install in Media entity video 8.3
Same filename and directory in other branches
Install, uninstall and update hooks for Media entity video module.
File
media_entity_video.installView source
<?php
use Drupal\Core\File\FileSystemInterface;
/**
* @file
* Install, uninstall and update hooks for Media entity video module.
*/
/**
* Implements hook_install().
*/
function media_entity_video_install() {
$source = drupal_get_path('module', 'media_entity_video') . '/images/icons';
$destination = \Drupal::config('media.settings')
->get('icon_base_uri');
\Drupal::service('file_system')
->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY | FileSystemInterface::MODIFY_PERMISSIONS);
$files = \Drupal::service('file_system')
->scanDirectory($source, '/.*\\.(svg|png|jpg|jpeg|gif)$/');
foreach ($files as $file) {
// When reinstalling we don't want to copy the icons when
// they already exist. The icons could be replaced (by a contrib module or
// manually), so we don't want to replace the existing files. Removing the
// files when we uninstall could also be a problem if the files are
// referenced somewhere else. Since showing an error that it was not
// possible to copy the files is also confusing, we silently do nothing.
if (!file_exists($destination . DIRECTORY_SEPARATOR . $file->filename)) {
\Drupal::service('file_system')
->copy($file->uri, $destination, FileSystemInterface::EXISTS_ERROR);
}
}
}
/**
* Implements hook_requirements().
*/
function media_entity_video_requirements($phase) {
$requirements = [];
if ($phase == 'install') {
$destination = \Drupal::config('media.settings')
->get('icon_base_uri');
\Drupal::service('file_system')
->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY | FileSystemInterface::MODIFY_PERMISSIONS);
$is_writable = is_writable($destination);
$is_directory = is_dir($destination);
if (!$is_writable || !$is_directory) {
if (!$is_directory) {
$error = t('The directory %directory does not exist.', [
'%directory' => $destination,
]);
}
else {
$error = t('The directory %directory is not writable.', [
'%directory' => $destination,
]);
}
$description = t('An automated attempt to create this directory failed, possibly due to a permissions problem. To proceed with the installation, either create the directory and modify its permissions manually or ensure that the installer has the permissions to create it automatically. For more information, see INSTALL.txt or the <a href=":handbook_url">online handbook</a>.', [
':handbook_url' => 'https://www.drupal.org/server-permissions',
]);
if (!empty($error)) {
$description = $error . ' ' . $description;
$requirements['media_entity_video']['description'] = $description;
$requirements['media_entity_video']['severity'] = REQUIREMENT_ERROR;
}
}
}
return $requirements;
}
/**
* Update media video types to use core video source plugin and field.
*/
function media_entity_video_update_8301() {
$config_factory = \Drupal::configFactory();
foreach ($config_factory
->listAll('media.type.') as $media_type_id) {
$config = $config_factory
->getEditable($media_type_id);
$source_id = $config
->get('source');
if ($source_id === 'video') {
$source_field_name = $config
->get('source_configuration.source_field');
$type_id = $config
->get('id');
$config
->set('source', 'video_file');
$dependencies = $config
->get('dependencies');
if (is_array($dependencies) && !empty($dependencies['module'])) {
$dependencies['module'] = array_diff($dependencies['module'], [
'media_entity_video',
]);
if (empty($dependencies['module'])) {
unset($dependencies['module']);
}
$config
->set('dependencies', $dependencies);
}
$config
->save();
foreach ($config_factory
->listAll("core.entity_view_display.media.{$type_id}.") as $view_display_name) {
$view_display_config = $config_factory
->getEditable($view_display_name);
$content = $view_display_config
->get('content');
if ($content[$source_field_name]['type'] === 'video_player_html5') {
$content[$source_field_name]['type'] = 'file_video';
$content[$source_field_name]['settings'] = [
'controls' => TRUE,
'autoplay' => FALSE,
'loop' => FALSE,
'multiple_file_display_type' => 'tags',
];
$view_display_config
->set('content', $content);
$dependencies = $view_display_config
->get('dependencies');
if (is_array($dependencies) && !empty($dependencies['module'])) {
$dependencies['module'] = array_diff($dependencies['module'], [
'media_entity_video',
]);
if (empty($dependencies['module'])) {
unset($dependencies['module']);
}
$view_display_config
->set('dependencies', $dependencies);
}
$view_display_config
->save();
}
}
}
}
}
Functions
Name![]() |
Description |
---|---|
media_entity_video_install | Implements hook_install(). |
media_entity_video_requirements | Implements hook_requirements(). |
media_entity_video_update_8301 | Update media video types to use core video source plugin and field. |