media.install

Same filename and directory in other branches
  1. 10 core/modules/media/media.install
  2. 11.x core/modules/media/media.install
  3. 9 core/modules/media/media.install
  4. 8.9.x core/modules/media/media.install

Install, uninstall and update hooks for Media module.

File

core/modules/media/media.install

View source
<?php


/**
 * @file
 * Install, uninstall and update hooks for Media module.
 */

use Drupal\Core\File\Exception\FileException;
use Drupal\Core\File\FileExists;
use Drupal\Core\File\FileSystemInterface;
use Drupal\user\RoleInterface;

/**
 * Implements hook_install().
 */
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',
    ]);
  }
}

/**
 * Implements hook_update_last_removed().
 */
function media_update_last_removed() : int {
  return 8700;
}

Functions

Title Deprecated Summary
media_install Implements hook_install().
media_update_last_removed Implements hook_update_last_removed().

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