/** * Tests searching messages. */ public function test_search_messages() { // 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); $this->send_fake_message($user2, $user1, 'Sup mang?', 0, $time + 1); $this->send_fake_message($user1, $user2, 'Writing PHPUnit tests!', 0, $time + 2); $this->send_fake_message($user2, $user1, 'Word.', 0, $time + 3); // Perform a search. $messages = \core_message\api::search_messages($user1->id, 'o'); // Confirm the data is correct. $this->assertEquals(2, count($messages)); $message1 = $messages[0]; $message2 = $messages[1]; $this->assertEquals($user2->id, $message1->userid); $this->assertEquals($user2->id, $message1->useridfrom); $this->assertEquals(fullname($user2), $message1->fullname); $this->assertTrue($message1->ismessaging); $this->assertEquals('Word.', $message1->lastmessage); $this->assertNotEmpty($message1->messageid); $this->assertFalse($message1->isonline); $this->assertFalse($message1->isread); $this->assertFalse($message1->isblocked); $this->assertNull($message1->unreadcount); $this->assertEquals($user2->id, $message2->userid); $this->assertEquals($user1->id, $message2->useridfrom); $this->assertEquals(fullname($user2), $message2->fullname); $this->assertTrue($message2->ismessaging); $this->assertEquals('Yo!', $message2->lastmessage); $this->assertNotEmpty($message2->messageid); $this->assertFalse($message2->isonline); $this->assertTrue($message2->isread); $this->assertFalse($message2->isblocked); $this->assertNull($message2->unreadcount); }
/** * Get messagearea search messages results. * * @param int $userid The id of the user who is performing the search * @param string $search The string being searched * @param int $limitfrom * @param int $limitnum * @return stdClass * @throws moodle_exception * @since 3.2 */ public static function data_for_messagearea_search_messages($userid, $search, $limitfrom = 0, $limitnum = 0) { 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('userid' => $userid, 'search' => $search, 'limitfrom' => $limitfrom, 'limitnum' => $limitnum); self::validate_parameters(self::data_for_messagearea_search_messages_parameters(), $params); self::validate_context($systemcontext); if ($USER->id != $userid && !has_capability('moodle/site:readallmessages', $systemcontext)) { throw new moodle_exception('You do not have permission to perform this action.'); } $messages = \core_message\api::search_messages($userid, $search, $limitfrom, $limitnum); $results = new \core_message\output\messagearea\message_search_results($messages); $renderer = $PAGE->get_renderer('core_message'); return $results->export_for_template($renderer); }