Created
November 22, 2022 11:41
-
-
Save nonom/8ae2f8a95c5b19a59610364430ad7157 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @file | |
* mymodule module. | |
*/ | |
use Drupal\Core\File\FileSystemInterface; | |
/** | |
* Implements hook_preprocess_page(). | |
*/ | |
function mymodule_file_preprocess_page(&$vars) { | |
if (\Drupal::routeMatch()->getRouteName() == 'entity.media.collection') { | |
_mymodule_file_recreate_media_folder(); | |
}; | |
} | |
/** | |
* Helper function to recreate the media-icons public directory. | |
* | |
* @see media.install | |
*/ | |
function _mymodule_file_recreate_media_folder() { | |
$source = drupal_get_path('module', 'media') . '/images/icons'; | |
$destination = \Drupal::config('media.settings')->get('icon_base_uri'); | |
/** @var \Drupal\Core\File\FileSystemInterface $file_system */ | |
$file_system = \Drupal::service('file_system'); | |
$file_system->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY | FileSystemInterface::MODIFY_PERMISSIONS); | |
$files = $file_system->scanDirectory($source, '/.*\.(svg|png|jpg|jpeg|gif)$/'); | |
foreach ($files as $file) { | |
// When reinstalling the media module 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)) { | |
try { | |
$file_system->copy($file->uri, $destination, FileSystemInterface::EXISTS_ERROR); | |
} | |
catch (FileException $e) { | |
// Ignore and continue. | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment