update_replace_permissions($replace)
Replace permissions during update.
This function can replace one permission to several or even delete an old one.
Parameters
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.
File
- core/includes/update.inc, line 671
- Drupal database update API.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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(); } } |
Please login to continue.