1.20.x user.module user_role_save($role)

Save a user role to the database.

Parameters

$role: A role object to modify or add.

Return value

Status constant indicating if role was created or updated.: Failure to write the user role record will return FALSE. Otherwise. SAVED_NEW or SAVED_UPDATED is returned depending on the operation performed.

File

modules/user/user.module, line 2507
Enables the user registration and login system.

Code

function user_role_save($role) {
  // Trim spaces from names.
  $role->name = trim($role->name);
  $role->label = trim($role->label);

  if (!isset($role->weight)) {
    // Set a role weight to make this new role last.
    $weight = 0;
    foreach (user_roles(FALSE, NULL, TRUE) as $existing_role) {
      $weight = max($existing_role->weight, $weight);
    }
    $role->weight = $weight + 1;
  }

  // Let modules modify the user role before it is saved to the database.
  module_invoke_all('user_role_presave', $role);

  $config = config('user.role.' . $role->name);
  $config->set('name', $role->name);
  $config->set('label', $role->label);
  $config->set('weight', $role->weight);
  if (isset($role->permissions)) {
    $config->set('permissions', $role->permissions);
  }
  $is_new = $config->isNew();
  $config->save();
  if ($is_new) {
    module_invoke_all('user_role_insert', $role);
    $status = SAVED_NEW;
  }
  else {
    module_invoke_all('user_role_update', $role);
    $status = SAVED_UPDATED;
  }

  // Clear the user access cache.
  backdrop_static_reset('user_roles');
  backdrop_static_reset('user_access');

  return $status;
}