MDL-61255 core_message: created task to handle migration of data

This commit is contained in:
Mark Nelson
2018-04-10 15:17:01 +08:00
parent 2bd2660751
commit 41bc5aa587
3 changed files with 286 additions and 2 deletions
+23 -1
View File
@@ -4405,7 +4405,7 @@ function authenticate_user_login($username, $password, $ignorelockout=false, &$f
* @return stdClass A {@link $USER} object - BC only, do not use
*/
function complete_user_login($user) {
global $CFG, $USER, $SESSION;
global $CFG, $DB, $USER, $SESSION;
\core\session\manager::login_user($user);
@@ -4429,6 +4429,28 @@ function complete_user_login($user) {
);
$event->trigger();
// Queue migrating the messaging data, if we need to.
if (!get_user_preferences('core_message_migrate_data', false, $USER->id)) {
// Check if there are any legacy messages to migrate.
$sql = "SELECT id
FROM {message} m
WHERE useridfrom = ?
OR useridto = ?";
$messageexists = $DB->record_exists_sql($sql, [$USER->id, $USER->id]);
$sql = "SELECT id
FROM {message_read} m
WHERE useridfrom = ?
OR useridto = ?";
$messagereadexists = $DB->record_exists_sql($sql, [$USER->id, $USER->id]);
if ($messageexists || $messagereadexists) {
\core_message\task\migrate_message_data::queue_task($USER->id);
} else {
set_user_preference('core_message_migrate_data', true, $USER->id);
}
}
if (isguestuser()) {
// No need to continue when user is THE guest.
return $USER;