rac.install in Role Access Control 8.2
Same filename and directory in other branches
Implements hook_install()
File
rac.installView source
<?php
/**
* @file
* Implements hook_install()
*/
/**
* Install function to assign default permissions for role access.
*/
function rac_install() {
$ops = [
'view',
];
$roles = user_roles();
foreach ($ops as $op) {
foreach ($roles as $role) {
$permission = "RAC_" . $op . "_" . $role
->id();
$role
->grantPermission($permission);
$role
->save();
}
}
}
/**
* Add default config for new update_unpublished setting.
*/
function rac_update_8100($sandbox) {
\Drupal::service("config.factory")
->getEditable("rac.settings")
->set("update_unpublished", TRUE)
->save();
}
/**
* Update configuration around updated reference provider settings.
*/
function rac_update_8101($sandbox) {
// Enable the new sub module.
\Drupal::service('module_installer')
->install([
'rac_relations',
]);
$consumers = Drupal::service('entity_type.manager')
->getStorage('access_consumer')
->loadMultiple();
$rac_unpublished = \Drupal::config("rac.settings")
->get('update_unpublished');
foreach ($consumers as $consumer) {
$provider_ids = $consumer
->getProviders();
if (in_array('rac', $provider_ids)) {
if (!in_array('rac_relations', $provider_ids)) {
$provider_ids = $provider_ids + [
'rac_relations' => 'rac_relations',
];
$consumer
->setProviders($provider_ids);
}
$rac_config = $consumer
->getProviderConfig('rac');
$rac_relations_config = $consumer
->getProviderConfig('rac_relations') ?: [];
$fields = array_keys($rac_config['enabled_fields']);
foreach ($fields as $field_name) {
$rac_config['enabled_fields'][$field_name] = [];
// Setup the new operation grants system.
$rac_config['enabled_fields'][$field_name]['grants'] = [
'view' => 'view',
];
$rac_config['enabled_fields'][$field_name]['unpublished'] = FALSE;
$rac_relations_config['enabled_fields'][$field_name]['grants'] = [
'view' => 'view',
'update' => 'update',
];
// Move the old rac delete grant.
if (isset($rac_config['enabled_fields']['grant_delete']) && $rac_config['enabled_fields']['grant_delete']) {
$rac_relations_config['enabled_fields'][$field_name]['grants']['delete'] = 'delete';
}
if (is_array($rac_config['enabled_fields'])) {
unset($rac_config['enabled_fields']['grant_delete']);
}
// Move the global unpublished setting the the new field.
$rac_relations_config['enabled_fields'][$field_name]['unpublished'] = $rac_unpublished;
}
$consumer
->setProviderConfig('rac', $rac_config);
$consumer
->setProviderConfig('rac_relations', $rac_relations_config);
$consumer
->save();
}
}
}
Functions
Name | Description |
---|---|
rac_install | Install function to assign default permissions for role access. |
rac_update_8100 | Add default config for new update_unpublished setting. |
rac_update_8101 | Update configuration around updated reference provider settings. |