You are here

function realname_registration_user_presave in Realname registration 7.2

Same name and namespace in other branches
  1. 7 realname_registration.module \realname_registration_user_presave()

Implementation of hook_user_presave().

File

./realname_registration.module, line 87
For using real names during registration/

Code

function realname_registration_user_presave(&$edit, $account, $category) {
  if (isset($edit['name'])) {
    if ($edit['name'] == 'unset_username') {
      $firstname_field = variable_get('realname_registration_firstname_field');
      $middlename_field = variable_get('realname_registration_middlename_field');
      $lastname_field = variable_get('realname_registration_lastname_field');
      $firstname_type = variable_get('realname_registration_profile2_firstname_field_profile_name');
      $middlename_type = variable_get('realname_registration_profile2_middlename_field_profile_name');
      $lastname_type = variable_get('realname_registration_profile2_lastname_field_profile_name');
      if (variable_get('realname_registration_ucfirst')) {
        if (variable_get('realname_registration_use_profile2_firstname_field')) {
          $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'] = drupal_ucfirst($edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value']);
        }
        else {
          $edit[$firstname_field][LANGUAGE_NONE][0]['value'] = drupal_ucfirst($edit[$firstname_field][LANGUAGE_NONE][0]['value']);
        }
        if (variable_get('realname_registration_use_profile2_middlename_field')) {
          if (!empty($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'])) {
            $edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'] = drupal_ucfirst($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value']);
          }
        }
        else {
          if (!empty($edit[$middlename_field][LANGUAGE_NONE][0]['value'])) {
            $edit[$middlename_field][LANGUAGE_NONE][0]['value'] = drupal_ucfirst($edit[$middlename_field][LANGUAGE_NONE][0]['value']);
          }
        }
        if (variable_get('realname_registration_use_profile2_lastname_field')) {
          $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'] = drupal_ucfirst($edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value']);
        }
        else {
          $edit[$lastname_field][LANGUAGE_NONE]['0']['value'] = drupal_ucfirst($edit[$lastname_field][LANGUAGE_NONE][0]['value']);
        }
      }

      // Generate the username based on first name and last name fields.
      switch (variable_get('realname_registration_format')) {
        case 0:

          // Create username based on first name and last name (e.g., John Smith).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          $username .= ' ';
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 1:

          // Create username based on first initial and last name (e.g., JSmith).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = drupal_substr($edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'], 0, 1);
          }
          else {
            $username = drupal_substr($edit[$firstname_field][LANGUAGE_NONE][0]['value'], 0, 1);
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 2:

          // Create username based on first name, middle name, and last name (e.g., John Jacob Smith).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          $username .= ' ';
          if (variable_get('realname_registration_use_profile2_middlename_field')) {
            if (!empty($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= $edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'];
              $username .= ' ';
            }
          }
          else {
            if (!empty($edit[$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= $edit[$middlename_field][LANGUAGE_NONE][0]['value'];
              $username .= ' ';
            }
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 3:

          // Create username based on first name, middle initial, and last name (e.g., John J Smith).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          $username .= ' ';
          if (variable_get('realname_registration_use_profile2_middlename_field')) {
            if (!empty($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= drupal_substr($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'], 0, 1);
              $username .= ' ';
            }
          }
          else {
            if (!empty($edit[$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= drupal_substr($edit[$middlename_field][LANGUAGE_NONE][0]['value'], 0, 1);
              $username .= ' ';
            }
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 4:

          // Create username based on first initial, middle initial, and last name (e.g., JJSmith).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = drupal_substr($edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'], 0, 1);
          }
          else {
            $username = drupal_substr($edit[$firstname_field][LANGUAGE_NONE][0]['value'], 0, 1);
          }
          if (variable_get('realname_registration_use_profile2_middlename_field')) {
            if (!empty($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= drupal_substr($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'], 0, 1);
            }
          }
          else {
            if (!empty($edit[$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= drupal_substr($edit[$middlename_field][LANGUAGE_NONE][0]['value'], 0, 1);
            }
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 5:

          // Create username based on first name and last name without spaces (e.g., JohnSmith).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 6:

          // Create username based on first name, middle name, and last name without spaces (e.g., JohnJacobSmith).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          if (variable_get('realname_registration_use_profile2_middlename_field')) {
            if (!empty($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= $edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'];
            }
          }
          else {
            if (!empty($edit[$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= $edit[$middlename_field][LANGUAGE_NONE][0]['value'];
            }
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 7:

          // Create username based on first name, middle initial, and last name without spaces (e.g., JohnJSmith).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          if (variable_get('realname_registration_use_profile2_middlename_field')) {
            if (!empty($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= drupal_substr($edit['profile_' . $middlename_type][$middlename_field][LANGUAGE_NONE][0]['value'], 0, 1);
            }
          }
          else {
            if (!empty($edit[$middlename_field][LANGUAGE_NONE][0]['value'])) {
              $username .= drupal_substr($edit[$middlename_field][LANGUAGE_NONE][0]['value'], 0, 1);
            }
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 8:

          // Create username based on last name and first name without spaces (e.g., SmithJohn).
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username = $edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$lastname_field][LANGUAGE_NONE][0]['value'];
          }
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username .= $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username .= $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          break;
        case 9:

          // Create username based on first name and last initial (e.g., JohnS).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= drupal_substr($edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'], 0, 1);
          }
          else {
            $username .= drupal_substr($edit[$lastname_field][LANGUAGE_NONE][0]['value'], 0, 1);
          }
          break;
        case 10:

          // Create username based on first name and last initial (e.g., John S).
          if (variable_get('realname_registration_use_profile2_firstname_field')) {
            $username = $edit['profile_' . $firstname_type][$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          else {
            $username = $edit[$firstname_field][LANGUAGE_NONE][0]['value'];
          }
          if (variable_get('realname_registration_use_profile2_lastname_field')) {
            $username .= ' ' . drupal_substr($edit['profile_' . $lastname_type][$lastname_field][LANGUAGE_NONE][0]['value'], 0, 1);
          }
          else {
            $username .= ' ' . drupal_substr($edit[$lastname_field][LANGUAGE_NONE][0]['value'], 0, 1);
          }
          break;
      }
      if (variable_get('realname_registration_tolower')) {
        $username = drupal_strtolower($username);
      }

      // Make sure username is at least 3 characters less than the maximum
      // length in the database schema to allow for adding digits in case of
      // duplicates
      if (drupal_strlen($username) > USERNAME_MAX_LENGTH - 3) {
        $username = drupal_substr($username, 0, USERNAME_MAX_LENGTH - 3);
      }

      // Check if the username already exists in the database.
      $result = db_query("SELECT name FROM {users} WHERE name = :username", array(
        ':username' => $username,
      ));

      // While the username is taken, append a number and increment it until our username is unique.
      $i = 0;
      while ($result
        ->rowCount()) {
        $result = db_query("SELECT name FROM {users} WHERE name = :username", array(
          ':username' => $username . ++$i,
        ));
        if (!$result
          ->rowCount()) {
          $username = $username . $i;
        }
      }
      $edit['name'] = $username;
    }
  }
}