protected function SimpleFbConnectUserManager::generateUniqueUsername in Simple FB Connect 8.3
Same name and namespace in other branches
- 8.2 src/SimpleFbConnectUserManager.php \Drupal\simple_fb_connect\SimpleFbConnectUserManager::generateUniqueUsername()
Ensures that Drupal usernames will be unique.
Drupal usernames will be generated so that the user's full name on Facebook will become user's Drupal username. This method will check if the username is already used and appends a number until it finds the first available username.
Parameters
string $fb_name: User's full name on Facebook.
Return value
string Unique username
2 calls to SimpleFbConnectUserManager::generateUniqueUsername()
- SimpleFbConnectUserManager::createUser in src/
SimpleFbConnectUserManager.php - Create a new user account.
- TestSimpleFbConnectUserManager::subGenerateUniqueUsername in tests/
src/ Unit/ TestSimpleFbConnectUserManager.php - Public method to help unit testing generateUniqueUsername().
File
- src/
SimpleFbConnectUserManager.php, line 311
Class
- SimpleFbConnectUserManager
- Contains all logic that is related to Drupal user management.
Namespace
Drupal\simple_fb_connectCode
protected function generateUniqueUsername($fb_name) {
// Truncate to max length. We use hard coded length because using
// USERNAME_MAX_LENGTH cause unit tests to fail.
$max_length = 60;
$fb_name = Unicode::substr($fb_name, 0, $max_length);
// Add a trailing number if needed to make username unique.
$base = $fb_name;
$i = 1;
$candidate = $base;
while ($this
->loadUserByProperty('name', $candidate)) {
$i++;
// Calculate max length for $base and truncate if needed.
$max_length_base = $max_length - strlen((string) $i) - 1;
$base = Unicode::substr($base, 0, $max_length_base);
$candidate = $base . " " . $i;
}
// Trim leading and trailing whitespace.
$candidate = trim($candidate);
// Remove multiple spacebars from the username if needed.
$candidate = preg_replace('/ {2,}/', ' ', $candidate);
return $candidate;
}