function auto_username_generate_username in Automatic User Names 7
Work out what the new username could be, calling api hooks where applicable, and adding a number suffix if necccessary.
Parameters
type $edit:
type $account:
Return value
string
1 call to auto_username_generate_username()
- auto_username_user_presave in ./
auto_username.module - Implements hook_user_presave().
File
- ./
auto_username.module, line 143 - Allows a user's username to be assigned based on tokens.
Code
function auto_username_generate_username(&$edit, &$account) {
$new_name = "";
// Other modules may implement hook_auto_username_name($edit, $account) to generate a username (return a
// string to be used as the username, NULL to have auto_username generate it).
$names = module_invoke_all('auto_username_name', $edit, $account);
// Remove any empty entries.
$names = array_filter($names);
if (empty($names)) {
// Default implementation of name generation.
$new_name = _auto_username_patternprocessor($account);
}
else {
// One would expect a single implementation of the hook, but if there
// are multiples out there use the last one.
$new_name = array_pop($names);
}
// If no new name was found, then either the hook hasn't been implemented, or
// the aun_pattern hasn't been set yet. Therefore leave the username as it is.
if (empty($new_name)) {
return $account->name;
}
// lets check if our name is used somewhere else, and append _1 if it is eg:(chris_123). We do this regardless of
// whether hook has run, as we can't assume the hook implementation will do this santity check.
$i = 0;
$static_name = $new_name;
do {
$new_name = empty($i) ? $static_name : $static_name . '_' . $i;
$found = db_select('users', 'u')
->fields('u')
->condition('uid', $account->uid, '!=')
->condition('name', $new_name)
->execute()
->fetchAll();
$i++;
} while (!empty($found));
return $new_name;
}