There are more than 20 user roles(Editor,approver,new admin..) in the project. Whenever the admin assign/delete the role to user then the user should be notified with email. Email should say Hey Prabhakar You have been assinged to following roles or you have been removed from following roles.
1 Answer
Implement hook_user_presave
:
/**
* Implements hook_user_presave()
*/
function yourModuleName_user_presave(&$edit, $account, $category){
foreach ($account->roles as $role_id => $val) {
$user_roles_existing[] = $role_id;
}
foreach ($edit['roles'] as $role_id => $val) {
// $edit['roles'] contains all roles ids as key and selected role id as val. If not selected then value is 0
// ex. $edit['roles'] = array(5=>5, 6=>0) here role id 5 selected
if ((int) $val > 0) {
$user_roles_form[] = $role_id;
}
}
$user_roles_new = array_diff($user_roles_form, $user_roles_existing);
$user_roles_removed = array_diff($user_roles_existing, $user_roles_form);
//roles added
if (count($user_roles_new) >= 1) {
/**
* Required code...
*/
drupal_set_message('Testing new roles count' . count($user_roles_new));
}
//roles removed
if (count($user_roles_removed) >= 1) {
/**
* Required code...
*/
drupal_set_message('Testing Removed roles count' . count($user_roles_removed));
}
}
-
1