From 534b0b61474f1252bac0ff842cdc025bd2e71023 Mon Sep 17 00:00:00 2001 From: eWallah Date: Tue, 22 Jan 2019 15:47:14 +0100 Subject: [PATCH 1/2] MDL-63168 core_message: fix failures in migrate_message_data task. --- message/classes/task/migrate_message_data.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message/classes/task/migrate_message_data.php b/message/classes/task/migrate_message_data.php index 53e21822bf6..2cf5dbdcd11 100644 --- a/message/classes/task/migrate_message_data.php +++ b/message/classes/task/migrate_message_data.php @@ -236,7 +236,7 @@ class migrate_message_data extends \core\task\adhoc_task { } // Check if we need to mark this message as deleted for the user to. - if ($message->timeusertodeleted) { + if ($message->timeusertodeleted and ($message->useridfrom != $message->useridto)) { $mua = new \stdClass(); $mua->userid = $message->useridto; $mua->messageid = $messageid; From a0c78cc672ee733b794c50a56104c71705dbe292 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Wed, 23 Jan 2019 12:58:35 +0800 Subject: [PATCH 2/2] MDL-63168 core_message: added unit test --- .../tests/migrate_message_data_task_test.php | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/message/tests/migrate_message_data_task_test.php b/message/tests/migrate_message_data_task_test.php index 3ec3009f124..a480e70e213 100644 --- a/message/tests/migrate_message_data_task_test.php +++ b/message/tests/migrate_message_data_task_test.php @@ -324,6 +324,37 @@ class core_message_migrate_message_data_task_testcase extends advanced_testcase $this->assertEquals(FORMAT_MOODLE, $notification->fullmessageformat); } + /** + * Test migrating a legacy message that a user sent to themselves then deleted. + */ + public function test_migrating_message_deleted_message_sent_to_self() { + global $DB; + + // Create user to test with. + $user1 = $this->getDataGenerator()->create_user(); + + $m1 = $this->create_legacy_message_or_notification($user1->id, $user1->id, null, false, null, null); + + // Let's delete the message for the 'user to' and 'user from' which in this case is the same user. + $messageupdate = new stdClass(); + $messageupdate->id = $m1; + $messageupdate->timeuserfromdeleted = time(); + $messageupdate->timeusertodeleted = time(); + $DB->update_record('message', $messageupdate); + + // Now, let's execute the task for the user. + $task = new \core_message\task\migrate_message_data(); + $task->set_custom_data( + [ + 'userid' => $user1->id + ] + ); + $task->execute(); + + $this->assertEquals(0, $DB->count_records('message')); + $this->assertEquals(1, $DB->count_records('message_user_actions')); + } + /** * Creates a legacy message or notification to be used for testing. *