case PARAM_USERNAME:
$param = str_replace(" " , "", $param);
- if (empty($CFG->extendedusernamechars)) {
+ $param = moodle_strtolower($param); // Convert uppercase to lowercase MDL-16919
+ if (empty($CFG->extendedusernamechars)) {
// regular expression, eliminate all chars EXCEPT:
// alphanum, dash (-), underscore (_), at sign (@) and period (.) characters.
$param = preg_replace('/[^-\.@_a-z0-9]/', '', $param);
- } else {
- $param = preg_replace('/[A-Z]/', '', $param);
- }
+ }
return $param;
default: // throw error, switched parameters in optional_param or another serious problem
$this->assertEqual(clean_param('john~doe', PARAM_USERNAME), 'johndoe');
$this->assertEqual(clean_param('john´doe', PARAM_USERNAME), 'johndoe');
$this->assertEqual(clean_param('john#$%&() ', PARAM_USERNAME), 'john');
- $this->assertEqual(clean_param('JOHNdóé ', PARAM_USERNAME), 'd');
- $this->assertEqual(clean_param('john.,:;-_/|\ñÑ[]A_X-,D {} ~!@#$%^&*()_+ ?><[] ščřžžý ?ýá\9e?\9eý??\9adoe ', PARAM_USERNAME), 'john.-__-@_doe');
+ $this->assertEqual(clean_param('JOHNdóé ', PARAM_USERNAME), 'johnd');
+ $this->assertEqual(clean_param('john.,:;-_/|\ñÑ[]A_X-,D {} ~!@#$%^&*()_+ ?><[] ščřžžý ?ýá\9e?\9eý??\9adoe ', PARAM_USERNAME), 'john.-_a_x-d@_doe');
// Test success condition, if extendedusernamechars == ENABLE;
$this->assertEqual(clean_param('john@doe', PARAM_USERNAME), 'john@doe');
$this->assertEqual(clean_param('john# $%&()+_^', PARAM_USERNAME), 'john#$%&()+_^');
$this->assertEqual(clean_param('john~doe', PARAM_USERNAME), 'john~doe');
- $this->assertEqual(clean_param('joHN´doe', PARAM_USERNAME), 'jo´doe');
- $this->assertEqual(clean_param('johnDOE', PARAM_USERNAME), 'john');
+ $this->assertEqual(clean_param('joHN´doe', PARAM_USERNAME), 'john´doe');
+ $this->assertEqual(clean_param('johnDOE', PARAM_USERNAME), 'johndoe');
$this->assertEqual(clean_param('johndóé ', PARAM_USERNAME), 'johndóé');
$CFG->extendedusernamechars = $currentstatus;