dfm-8.x-1.16/dfm.install

dfm.install
<?php

/**
 * @file
 * Manages installation and update of dfm module.
 */

use Drupal\Core\Database\Database;
use Drupal\Core\StreamWrapper\StreamWrapperInterface;
use Drupal\Core\Url;
use Drupal\user\Entity\Role;
use Drupal\user\RoleInterface;

/**
 * Implements hook_install().
 */
function dfm_install() {
  // Assign admin profile to administrators.
  $admin_roles = \Drupal::entityQuery('user_role')->condition('is_admin', TRUE)->execute();
  if ($admin_roles) {
    $config = \Drupal::configFactory()->getEditable('dfm.settings');
    $roles_profiles = $config->get('roles_profiles', []);
    $wrappers = \Drupal::service('stream_wrapper_manager')->getWrappers(StreamWrapperInterface::WRITE_VISIBLE);
    foreach ($wrappers as $scheme => $info) {
      foreach ($admin_roles as $role) {
        $roles_profiles[$role][$scheme] = 'admin';
      }
    }
    $config->set('roles_profiles', $roles_profiles);
    $config->save(TRUE);
  }
  // Import D7 profiles.
  $db = Database::getConnection();
  $table = 'dfm_profiles';
  if ($db->schema()->tableExists($table)) {
    $result = $db->query('SELECT * FROM {' . $table . '}');
    $storage = \Drupal::entityTypeManager()->getStorage('dfm_profile');
    foreach ($result as $profile) {
      $profile->conf = unserialize($profile->conf);
      $profile->conf['dirConf'] = $profile->conf['dirConfRaw'];
      unset($profile->conf['dirConfRaw']);
      $new_profile = $storage->create([
        'id' => 'imported_' . $profile->pid,
        'label' => '[Imported] ' . $profile->name,
        'conf' => $profile->conf,
      ]);
      $new_profile->save();
    }
    $db->schema()->dropTable($table);
  }
}

/**
 * Implements hook_requirements().
 */
function dfm_requirements($phase) {
  $requirements = [];
  if ($phase === 'runtime') {
    $roles = Role::loadMultiple([
      RoleInterface::ANONYMOUS_ID,
      RoleInterface::AUTHENTICATED_ID,
    ]);
    $roles = array_filter($roles, function ($role) {
      return $role->hasPermission('administer dfm');
    });
    if ($roles) {
      $roles = array_map(function ($role) {
        return $role->label();
      }, $roles);
      $requirements['dfm'] = [
        'title' => t('Drupella File Manager'),
        'value' => t(
          'Roles (%roles) having %permission permission is a security risk. Please consider <a href=":url">revoking the permission</a>.',
          [
            '%roles' => implode(', ', $roles),
            '%permission' => t('Administer Drupella File Manager'),
            ':url' => Url::fromRoute('user.admin_permissions', [], ['fragment' => 'module-dfm'])->toString(),
          ]),
        'severity' => REQUIREMENT_ERROR,
      ];
    }
  }
  return $requirements;
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc