You are here

function usermerge_merge_accounts in User Merge 7.2

Merges the selected accounts.

Parameters

object $user_to_delete: A fully loaded user object from user_load() that will be merged and blocked or deleted.

object $user_to_keep: A fully loaded user object from user_load() that will be merged and retained.

$form_values: The values from the submitted data-review form.

Return value

boolean TRUE if they are merged, FALSE if the validation failed.

1 call to usermerge_merge_accounts()
usermerge_merge_form_submit in ./usermerge.module
Displays the userdata-review form, or merges the selected accounts.

File

./usermerge.module, line 289
Main file for the User Merge module.

Code

function usermerge_merge_accounts($user_to_delete, $user_to_keep, $form_values) {
  if (usermerge_validate_merge($user_to_delete, $user_to_keep)) {
    $merged_account = usermerge_invoke_all('usermerge_merge_accounts', $user_to_delete, $user_to_keep, $form_values['review']);

    // This allows modules to modify the array without merging values
    drupal_alter('usermerge_merge_accounts', $merged_account, $user_to_delete, $user_to_keep);
    $merged_account = (object) $merged_account;

    // Save $merged_account
    $merged_account->pass = $user_to_keep->pass;
    $merged_account->status = 1;

    // Block or delete old account. Do this before saving the new account in
    // case the merged account is using the deleted account's mail or name.
    switch ($form_values['usermerge_user_delete_action']) {
      case 'block':
        user_block_user_action($user_to_delete);
        break;
      case 'delete':
        user_delete($user_to_delete->uid);
        break;
    }

    // Save merged account
    user_save($merged_account);
    drupal_set_message(t('%user_to_delete was successfully merged into %user_to_keep', array(
      '%user_to_delete' => $user_to_delete->name,
      '%user_to_keep' => $user_to_keep->name,
    )));
    return TRUE;
  }
  else {
    return FALSE;
  }
}