function usermerge_usermerge_merge_users in User Merge 6
Same name and namespace in other branches
- 7 usermerge.module \usermerge_usermerge_merge_users()
Implement hook_usermerge_merge_users().
File
- ./
usermerge.module, line 182 - 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.
db_query('UPDATE {comments} SET uid = %d where uid = %d', $user_to_keep->uid, $user_to_delete->uid);
// Node: change uid of node and revisions to the new one.
db_query('UPDATE {node} SET uid = %d where uid = %d', $user_to_keep->uid, $user_to_delete->uid);
db_query('UPDATE {node_revisions} SET uid = %d where uid = %d', $user_to_keep->uid, $user_to_delete->uid);
//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_query("DELETE FROM {users_roles} WHERE uid = %d", $user_to_keep->uid);
// 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,
))) {
db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $user_to_keep->uid, $rid);
}
}
// Block the old user.
user_block_user_action($user_to_delete);
// Success!
drupal_set_message(t('We successfully merged %user_to_delete into %user_to_keep', array(
'%user_to_delete' => $user_to_delete->name,
'%user_to_keep' => $user_to_keep->name,
)));
}