function lightning_roles_node_type_insert in Lightning Core 8.4
Same name and namespace in other branches
- 8.5 modules/lightning_roles/lightning_roles.module \lightning_roles_node_type_insert()
- 8 modules/lightning_roles/lightning_roles.module \lightning_roles_node_type_insert()
- 8.2 modules/lightning_roles/lightning_roles.module \lightning_roles_node_type_insert()
- 8.3 modules/lightning_roles/lightning_roles.module \lightning_roles_node_type_insert()
Implements hook_ENTITY_TYPE_insert().
1 string reference to 'lightning_roles_node_type_insert'
- lightning_roles_install in modules/
lightning_roles/ lightning_roles.install - Implements hook_install().
File
- modules/
lightning_roles/ lightning_roles.module, line 14 - Contains hook implementations for Lightning Roles.
Code
function lightning_roles_node_type_insert(NodeTypeInterface $node_type) {
// Don't do anything during config sync.
if (\Drupal::isConfigSyncing()) {
return;
}
$config = \Drupal::config('lightning_roles.settings')
->get('content_roles');
if (empty($config)) {
return;
}
$permission_map = function ($permission) use ($node_type) {
return str_replace('?', $node_type
->id(), $permission);
};
foreach ($config as $key => $info) {
if (empty($info['enabled'])) {
continue;
}
$role_id = $node_type
->id() . '_' . $key;
$role = Role::load($role_id) ?: Role::create([
'id' => $role_id,
'label' => str_replace('?', $node_type
->label(), $info['label']),
'is_admin' => FALSE,
]);
// Only grant permissions the role does not already have.
$permissions = array_diff(array_map($permission_map, $info['permissions']), $role
->getPermissions());
array_walk($permissions, [
$role,
'grantPermission',
]);
$role
->save();
}
}