You are here

function profile_usermerge_merge_users in User Merge 7

Same name and namespace in other branches
  1. 6 usermerge.module \profile_usermerge_merge_users()

Implement hook_usermerge_merge_users() on behalf of profile module.

File

./usermerge.module, line 236
Main file for the user merge module, which re-assigns data from an abandoned account to a live one.

Code

function profile_usermerge_merge_users($user_to_delete, $user_to_keep) {

  // retrieve kept-user's user field values
  if (module_exists('profile')) {

    //testing for profile, which is hidden in D6
    $result = db_query("SELECT fid FROM {profile_value} WHERE uid = :uid AND VALUE <> ''", array(
      ':uid' => $user_to_keep->uid,
    ));
    $kept = array();
    foreach ($result as $record) {
      $kept[] = $record->fid;
    }
    if (!empty($kept)) {

      // Remove profile values for blocked-user that kept-user has.
      db_delete('profile_value')
        ->condition('uid', $user_to_delete->uid)
        ->condition('fid', $kept, 'IN')
        ->execute();
    }

    // Remove empty profile values for kept-user.
    db_delete('profile_value')
      ->condition('uid', $user_to_keep->uid)
      ->condition('VALUE', '')
      ->execute();

    // Change uid.
    db_update('profile_value')
      ->fields(array(
      'uid' => $user_to_keep->uid,
    ))
      ->condition('uid', $user_to_delete->uid)
      ->execute();
  }
}