function media_install

Same name in other branches
  1. 9 core/modules/media/media.install \media_install()
  2. 8.9.x core/modules/media/media.install \media_install()
  3. 10 core/modules/media/media.install \media_install()

Implements hook_install().

File

core/modules/media/media.install, line 22

Code

function media_install() : void {
    $source = \Drupal::service('extension.list.module')->getPath('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, FileExists::Error);
            } catch (FileException) {
                // Ignore and continue.
            }
        }
    }
    // Grant the "view media" permission to all users by default.
    if (\Drupal::moduleHandler()->moduleExists('user')) {
        user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, [
            'view media',
        ]);
        user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, [
            'view media',
        ]);
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.