From 92cec53b47e908fa7b757879fc3eecb573ca7e83 Mon Sep 17 00:00:00 2001 From: dg711 Date: Wed, 9 Mar 2016 16:43:20 +0530 Subject: [PATCH] MDL-53139 admin: case diff issue with email --- admin/tool/uploaduser/index.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/admin/tool/uploaduser/index.php b/admin/tool/uploaduser/index.php index 2b3f43eaee0..b0533885f24 100644 --- a/admin/tool/uploaduser/index.php +++ b/admin/tool/uploaduser/index.php @@ -568,8 +568,18 @@ if ($formdata = $mform2->is_cancelled()) { } if ($existinguser->$column !== $user->$column) { if ($column === 'email') { - if ($DB->record_exists('user', array('email'=>$user->email))) { - if ($noemailduplicates) { + $select = $DB->sql_like('email', ':email', false, true, false, '|'); + $params = array('email' => $DB->sql_like_escape($user->email, '|')); + if ($DB->record_exists_select('user', $select , $params)) { + + $changeincase = core_text::strtolower($existinguser->$column) === core_text::strtolower( + $user->$column); + + if ($changeincase) { + // If only case is different then switch to lower case and carry on. + $user->$column = core_text::strtolower($user->$column); + continue; + } else if ($noemailduplicates) { $upt->track('email', $stremailduplicate, 'error'); $upt->track('status', $strusernotupdated, 'error'); $userserrors++; @@ -1182,7 +1192,10 @@ while ($linenum <= $previewrows and $fields = $cir->next()) { if (!validate_email($rowcols['email'])) { $rowcols['status'][] = get_string('invalidemail'); } - if ($DB->record_exists('user', array('email'=>$rowcols['email']))) { + + $select = $DB->sql_like('email', ':email', false, true, false, '|'); + $params = array('email' => $DB->sql_like_escape($rowcols['email'], '|')); + if ($DB->record_exists_select('user', $select , $params)) { $rowcols['status'][] = $stremailduplicate; } } -- 2.43.0