/** * Tests retrieving most recent message. */ public function test_get_most_recent_message() { // Create some users. $user1 = self::getDataGenerator()->create_user(); $user2 = self::getDataGenerator()->create_user(); // The person doing the search. $this->setUser($user1); // Send some messages back and forth. $time = 1; $this->send_fake_message($user1, $user2, 'Yo!', 0, $time + 1); $this->send_fake_message($user2, $user1, 'Sup mang?', 0, $time + 2); $this->send_fake_message($user1, $user2, 'Writing PHPUnit tests!', 0, $time + 3); $this->send_fake_message($user2, $user1, 'Word.', 0, $time + 4); // Retrieve the most recent messages. $message = \core_message\api::get_most_recent_message($user1->id, $user2->id); // Check the results are correct. $this->assertEquals($user2->id, $message->useridfrom); $this->assertEquals($user1->id, $message->useridto); $this->assertContains('Word.', $message->text); }
/** * Get the most recent message in a conversation. * * @param int $currentuserid The current user's id * @param int $otheruserid The other user's id * @return stdClass * @throws moodle_exception * @since 3.2 */ public static function data_for_messagearea_get_most_recent_message($currentuserid, $otheruserid) { global $CFG, $PAGE, $USER; // Check if messaging is enabled. if (empty($CFG->messaging)) { throw new moodle_exception('disabled', 'message'); } $systemcontext = context_system::instance(); $params = array('currentuserid' => $currentuserid, 'otheruserid' => $otheruserid); self::validate_parameters(self::data_for_messagearea_get_most_recent_message_parameters(), $params); self::validate_context($systemcontext); if ($USER->id != $currentuserid && !has_capability('moodle/site:readallmessages', $systemcontext)) { throw new moodle_exception('You do not have permission to perform this action.'); } $message = \core_message\api::get_most_recent_message($currentuserid, $otheruserid); $message = new \core_message\output\messagearea\message($message); $renderer = $PAGE->get_renderer('core_message'); return $message->export_for_template($renderer); }