public static function delete_all_conversation_data(int $conversationid) {
global $DB;
+ $conv = $DB->get_record('message_conversations', ['id' => $conversationid], 'id, contextid');
+ $convcontext = !empty($conv->contextid) ? \context::instance_by_id($conv->contextid) : null;
+
$DB->delete_records('message_conversations', ['id' => $conversationid]);
$DB->delete_records('message_conversation_members', ['conversationid' => $conversationid]);
$DB->delete_records('message_conversation_actions', ['conversationid' => $conversationid]);
// Delete the messages now.
$DB->delete_records('messages', ['conversationid' => $conversationid]);
}
+
+ // Delete all favourite records for all users relating to this conversation.
+ $service = \core_favourites\service_factory::get_service_for_component('core_message');
+ $service->delete_favourites_by_type('message_conversations', $convcontext);
}
}
$g2m3 = \core_message\tests\helper::send_fake_message_to_conversation($user1, $groupconversation2->id);
$g2m4 = \core_message\tests\helper::send_fake_message_to_conversation($user2, $groupconversation2->id);
+ // Favourite the conversation for several of the users.
+ \core_message\api::set_favourite_conversation($groupconversation1->id, $user1->id);
+ \core_message\api::set_favourite_conversation($groupconversation1->id, $user2->id);
+
// Delete a few messages.
\core_message\api::delete_message($user1->id, $g1m1);
\core_message\api::delete_message($user1->id, $g1m2);
$this->assertEquals(1, $DB->count_records('messages', ['id' => $g2m2]));
$this->assertEquals(1, $DB->count_records('messages', ['id' => $g2m3]));
$this->assertEquals(1, $DB->count_records('messages', ['id' => $g2m4]));
+
+ // Confirm favourites were deleted for both users.
+ $user1service = \core_favourites\service_factory::get_service_for_user_context(context_user::instance($user1->id));
+ $this->assertFalse($user1service->favourite_exists('core_message', 'message_conversations', $groupconversation1->id,
+ $coursecontext1));
+ $user2service = \core_favourites\service_factory::get_service_for_user_context(context_user::instance($user1->id));
+ $this->assertFalse($user2service->favourite_exists('core_message', 'message_conversations', $groupconversation1->id,
+ $coursecontext1));
}
/**