You are here

function hybridauth_user_register_submit in HybridAuth Social Login 7

Custom submit handler for the standard user_register form.

1 string reference to 'hybridauth_user_register_submit'
hybridauth_form_user_register_form_alter in ./hybridauth.module
Implements hook_form_FORM_ID_alter().

File

./hybridauth.module, line 378

Code

function hybridauth_user_register_submit($form, &$form_state) {
  form_state_values_clean($form_state);
  $pass = user_password();
  $form_state['values']['pass'] = $pass;
  $form_state['values']['init'] = $form_state['values']['mail'];
  $account = $form['#user'];
  $category = $form['#user_category'];
  $account_unchanged = clone $account;
  entity_form_submit_build_entity('user', $account, $form, $form_state);
  $edit = array_intersect_key((array) $account, $form_state['values']);
  $account = user_save($account_unchanged, $edit, $category);

  // Add the HybridAuth data to the account.
  $account = _hybridauth_populate_user_record($account, $_SESSION['hybridauth']);

  // Terminate if an error occurred during user_save().
  if (!$account) {
    drupal_set_message(t("Error saving user account."), 'error');
    $form_state['redirect'] = '';
    return;
  }

  // Add the 3rd party profile picture to the account.
  $account = _hybridauth_save_profile_picture($account);
  watchdog('hybridauth', 'New user: %name (%email).', array(
    '%name' => $form_state['values']['name'],
    '%email' => $form_state['values']['mail'],
  ), WATCHDOG_NOTICE, l(t('edit'), 'user/' . $account->uid . '/edit'));
  $form_state['user'] = $account;
  $form_state['values']['uid'] = $account->uid;

  // Add plain text password into user account to generate mail tokens.
  $account->password = $pass;

  // If no email verification required, log the user in immediately.
  if ((!variable_get('user_email_verification', TRUE) || variable_get('hybridauth_bypass_email_verification', FALSE) || !empty($_SESSION['hybridauth']['profile']['verifiedEmail']) && strtolower($account->mail) == strtolower($_SESSION['hybridauth']['profile']['verifiedEmail'])) && $account->status) {
    _user_mail_notify('register_no_approval_required', $account);
    $form_state['uid'] = $account->uid;
    user_login_submit(array(), $form_state);
    drupal_set_message(t('Registration successful. You are now logged in.'));
  }
  elseif ($account->status) {

    // Require email confirmation
    drupal_mail('hybridauth', 'hybridauth_confirm_email', $account->mail, user_preferred_language($account), array(
      'account' => $account,
    ));
    drupal_set_message(t('In order to confirm your email address, an email has been sent to you with confirmation instructions.'));
  }
  else {
    _user_mail_notify('register_pending_approval', $account);
    drupal_set_message(t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br />In the meantime, a welcome message with further instructions has been sent to your e-mail address.'));
  }
  $form_state['redirect'] = '';
}