update_replace_permissions($replace)
Replace permissions during update.
This function can replace one permission to several or even delete an old one.
array $replace: An associative array. The keys are the old permissions the values are lists of new permissions. If the list is an empty array, the old permission is removed.
function update_replace_permissions($replace) { $prefix = 'user.role.'; $cut = strlen($prefix); $role_names = \Drupal::service('config.storage')->listAll($prefix); foreach ($role_names as $role_name) { $rid = substr($role_name, $cut); $config = \Drupal::config("user.role.$rid"); $permissions = $config->get('permissions') ? : array(); foreach ($replace as $old_permission => $new_permissions) { if (($index = array_search($old_permission, $permissions)) !== FALSE) { unset($permissions[$index]); $permissions = array_unique(array_merge($permissions, $new_permissions)); } } $config ->set('permissions', $permissions) ->save(); } }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!includes!update.inc/function/update_replace_permissions/8.1.x