function usermerge_usermerge_merge_users in User Merge 7
Same name and namespace in other branches
- 6 usermerge.module \usermerge_usermerge_merge_users()
Implements hook_usermerge_merge_users().
File
- ./
usermerge.module, line 176 - Main file for the user merge module, which re-assigns data from an abandoned account to a live one.
Code
function usermerge_usermerge_merge_users($user_to_delete, $user_to_keep) {
// Comment: change the uid to the new one.
if (module_exists('comment')) {
db_update('comment')
->fields(array(
'uid' => $user_to_keep->uid,
))
->condition('uid', $user_to_delete->uid, '=')
->execute();
}
//updating node table
db_update('node')
->fields(array(
'uid' => $user_to_keep->uid,
))
->condition('uid', $user_to_delete->uid, '=')
->execute();
//updating node_revisions table
db_update('node_revision')
->fields(array(
'uid' => $user_to_keep->uid,
))
->condition('uid', $user_to_delete->uid, '=')
->execute();
//Update roles
$merged_roles = $user_to_keep->roles + $user_to_delete->roles;
// First, remove all roles from the user to keep to prevent duplicate key errors.
db_delete('users_roles')
->condition('uid', $user_to_keep->uid)
->execute();
// Then add them on to the user to keep.
foreach (array_keys($merged_roles) as $rid) {
if (!in_array($rid, array(
DRUPAL_ANONYMOUS_RID,
DRUPAL_AUTHENTICATED_RID,
))) {
$id = db_insert('users_roles')
->fields(array(
'uid' => $user_to_keep->uid,
'rid' => $rid,
))
->execute();
}
}
// Block the old user.
user_block_user_action($user_to_delete);
// Success!
drupal_set_message(t('User %user_to_delete was successfully merged into user %user_to_keep.', array(
'%user_to_delete' => $user_to_delete->name,
'%user_to_keep' => $user_to_keep->name,
)));
}