You are here

function administerusersbyrole_update_7200 in Administer Users by Role 7.2

Update permissions to match the new values used in version 2.

File

./administerusersbyrole.install, line 23
Update migration code for administerusersbyrole.

Code

function administerusersbyrole_update_7200() {
  $roles = user_roles(TRUE);
  foreach ($roles as $rid => $role) {

    // Rename permissions from old value to new.
    foreach (array(
      'edit',
      'cancel',
    ) as $op) {
      $new_name = _administerusersbyrole_build_perm_string($rid, $op);
      if ($rid === DRUPAL_AUTHENTICATED_RID) {
        $old_name = "{$op} users with no custom roles";
      }
      else {
        $old_name = _administerusersbyrole_old_perm_string($role, $op);
      }
      $old_name_extra = _administerusersbyrole_old_perm_string($rid, $op, TRUE);

      // Perform the database updates.
      db_update('role_permission')
        ->fields(array(
        'permission' => $new_name,
      ))
        ->condition(db_or()
        ->condition('permission', $old_name), db_or()
        ->condition('permission', $old_name_extra))
        ->condition('module', 'administerusersbyrole')
        ->execute();
    }

    // Degrade 'administer users' permission to 'access users overview' for non-admins.
    // We have to make a guess as to what counts as an admin.
    $perms = user_role_permissions(array(
      $rid => $role,
    ));
    if ($perms[$rid]['administer users'] && !$perms[$rid]['administer permissions']) {
      user_role_change_permissions($rid, array(
        'administer users' => FALSE,
        'access users overview' => TRUE,
      ));
    }
  }
  return t('Role permissions updated for upgrade to Administer Users by Role version 2.  Please check the new permissions are correct, in particular for "administer users".');
}