MDL-52831 users: Do not delete Mr. and Mrs. Whitespace accounts
authorDavid Mudrák <david@moodle.com>
Tue, 19 Jan 2016 15:51:23 +0000 (16:51 +0100)
committerDavid Mudrák <david@moodle.com>
Tue, 19 Jan 2016 20:40:45 +0000 (21:40 +0100)
Due to imperfect validation of the user registration and profile forms,
we allowed for firstname and lastname be just a whitespace. On MySQL,
such a whitespace is not significant for VARCHAR comparison so these
otherwise valid accounts could be silently deleted.

The patch makes sure that at least one of the checked fields is a real
empty string before deleting such account.

lib/classes/task/delete_incomplete_users_task.php

index 0fb84b8..dda16f7 100644 (file)
@@ -59,6 +59,10 @@ class delete_incomplete_users_task extends scheduled_task {
                 if (isguestuser($user) or is_siteadmin($user)) {
                     continue;
                 }
+                if ($user->lastname !== '' and $user->firstname !== '' and $user->email !== '') {
+                    // This can happen on MySQL - see MDL-52831.
+                    continue;
+                }
                 delete_user($user);
                 mtrace(" Deleted not fully setup user $user->username ($user->id)");
             }