user_role_save

7 user.module user_role_save($role)
8 user.module user_role_save($role)

Save a user role to the database.

Parameters

$role: A role object to modify or add. If $role->rid is not specified, a new role will be created.

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.

4 calls to user_role_save()

File

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

Code

function user_role_save($role) {
  if ($role->name) {
    // Prevent leading and trailing spaces in role names.
    $role->name = trim($role->name);
  }
  if (!isset($role->weight)) {
    // Set a role weight to make this new role last.
    $query = db_select('role');
    $query->addExpression('MAX(weight)');
    $role->weight = $query->execute()->fetchField() + 1;
  }

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

  if (!empty($role->rid) && $role->name) {
    $status = drupal_write_record('role', $role, 'rid');
    module_invoke_all('user_role_update', $role);
  }
  else {
    $status = drupal_write_record('role', $role);
    module_invoke_all('user_role_insert', $role);
  }

  // Clear the user access cache.
  drupal_static_reset('user_access');
  drupal_static_reset('user_role_permissions');

  return $status;
}

Comments

Simple Implementation

The following function will add these roles.

1. live member
2. normal member

/**
* Create user roles
*/
function my_module_name_create_user_roles() {
  $newRoles = array('live member', 'normal member');
  $roles = user_roles();
  foreach ($newRoles as $r){
    if(!in_array($r, $roles)){
      $addRole->name = $r;
      user_role_save($addRole);
    }
  }
}

That didn't work for me

The above method didn't work for me. This did (implemented in hook_enable):

function mymodule_enable() {
  $newRoles = array('new role', 'other role');
  foreach ($newRoles as $r){
    if(!user_role_load_by_name($r)){
      $role = new stdClass();
      $role->name = $r;
      user_role_save($role);
    }
  }
}

Login or register to post comments