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;
}
