MDL-35854 fix username generator

This eliminates infinite loop and also fixes potentially invalid email derived from usernames created from unicode first/last name.
This commit is contained in:
Petr Škoda 2012-10-09 23:04:51 +02:00
parent 2105f57590
commit fe67134eaa
2 changed files with 9 additions and 2 deletions

View File

@ -157,9 +157,11 @@ EOD;
}
if (!isset($record['username'])) {
$record['username'] = textlib::strtolower($record['firstname']).textlib::strtolower($record['lastname']);
$record['username'] = 'username'.$i;
$j = 2;
while ($DB->record_exists('user', array('username'=>$record['username'], 'mnethostid'=>$record['mnethostid']))) {
$record['username'] = $record['username'].'_'.$i;
$record['username'] = 'username'.$i.'_'.$j;
$j++;
}
}

View File

@ -44,6 +44,11 @@ class core_phpunit_generator_testcase extends advanced_testcase {
$count = $DB->count_records('user');
$user = $generator->create_user();
$this->assertEquals($count+1, $DB->count_records('user'));
$this->assertSame($user->username, clean_param($user->username, PARAM_USERNAME));
$this->assertSame($user->email, clean_param($user->email, PARAM_EMAIL));
$user = $generator->create_user(array('firstname'=>'Žluťoučký', 'lastname'=>'Koníček'));
$this->assertSame($user->username, clean_param($user->username, PARAM_USERNAME));
$this->assertSame($user->email, clean_param($user->email, PARAM_EMAIL));
$count = $DB->count_records('course_categories');
$category = $generator->create_category();