| 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;
}
Login or register to post comments
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);
}
}
}