/** * Get messagearea search users results. * * @param int $userid The id of the user who is performing the search * @param string $search The string being searched * @param int $limitnum * @return stdClass * @throws moodle_exception * @since 3.2 */ public static function data_for_messagearea_search_users($userid, $search, $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, 'limitnum' => $limitnum); self::validate_parameters(self::data_for_messagearea_search_users_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.'); } list($contacts, $courses, $noncontacts) = \core_message\api::search_users($userid, $search, $limitnum); $search = new \core_message\output\messagearea\user_search_results($contacts, $courses, $noncontacts); $renderer = $PAGE->get_renderer('core_message'); return $search->export_for_template($renderer); }
/** * Tests searching users. */ public function test_search_users() { // Create some users. $user1 = new stdClass(); $user1->firstname = 'User'; $user1->lastname = 'One'; $user1 = self::getDataGenerator()->create_user($user1); // Set as the user performing the search. $this->setUser($user1); $user2 = new stdClass(); $user2->firstname = 'User search'; $user2->lastname = 'Two'; $user2 = self::getDataGenerator()->create_user($user2); $user3 = new stdClass(); $user3->firstname = 'User search'; $user3->lastname = 'Three'; $user3 = self::getDataGenerator()->create_user($user3); $user4 = new stdClass(); $user4->firstname = 'User'; $user4->lastname = 'Four'; $user4 = self::getDataGenerator()->create_user($user4); $user5 = new stdClass(); $user5->firstname = 'User search'; $user5->lastname = 'Five'; $user5 = self::getDataGenerator()->create_user($user5); $user6 = new stdClass(); $user6->firstname = 'User'; $user6->lastname = 'Six'; $user6 = self::getDataGenerator()->create_user($user6); // Create some courses. $course1 = new stdClass(); $course1->fullname = 'Course search'; $course1->shortname = 'One'; $course1 = $this->getDataGenerator()->create_course($course1); $course2 = new stdClass(); $course2->fullname = 'Course'; $course2->shortname = 'Two'; $course2 = $this->getDataGenerator()->create_course($course2); $course3 = new stdClass(); $course3->fullname = 'Course'; $course3->shortname = 'Three search'; $course3 = $this->getDataGenerator()->create_course($course3); // Add some users as contacts. message_add_contact($user2->id, 0, $user1->id); message_add_contact($user3->id, 0, $user1->id); message_add_contact($user4->id, 0, $user1->id); // Perform a search. list($contacts, $courses, $noncontacts) = \core_message\api::search_users($user1->id, 'search'); // Check that we retrieved the correct contacts. $this->assertEquals(2, count($contacts)); $this->assertEquals($user3->id, $contacts[0]->userid); $this->assertEquals($user2->id, $contacts[1]->userid); // Check that we retrieved the correct courses. $this->assertEquals(2, count($courses)); $this->assertEquals($course3->id, $courses[0]->id); $this->assertEquals($course1->id, $courses[1]->id); // Check that we retrieved the correct non-contacts. $this->assertEquals(1, count($noncontacts)); $this->assertEquals($user5->id, $noncontacts[0]->userid); }
/** * Tests searching users. */ public function test_search_users() { global $DB; // Create some users. $user1 = new stdClass(); $user1->firstname = 'User'; $user1->lastname = 'One'; $user1 = self::getDataGenerator()->create_user($user1); // Set as the user performing the search. $this->setUser($user1); $user2 = new stdClass(); $user2->firstname = 'User search'; $user2->lastname = 'Two'; $user2 = self::getDataGenerator()->create_user($user2); $user3 = new stdClass(); $user3->firstname = 'User search'; $user3->lastname = 'Three'; $user3 = self::getDataGenerator()->create_user($user3); $user4 = new stdClass(); $user4->firstname = 'User'; $user4->lastname = 'Four'; $user4 = self::getDataGenerator()->create_user($user4); $user5 = new stdClass(); $user5->firstname = 'User search'; $user5->lastname = 'Five'; $user5 = self::getDataGenerator()->create_user($user5); $user6 = new stdClass(); $user6->firstname = 'User'; $user6->lastname = 'Six'; $user6 = self::getDataGenerator()->create_user($user6); // Create some courses. $course1 = new stdClass(); $course1->fullname = 'Course search'; $course1->shortname = 'One'; $course1 = $this->getDataGenerator()->create_course($course1); $course2 = new stdClass(); $course2->fullname = 'Course'; $course2->shortname = 'Two'; $course2 = $this->getDataGenerator()->create_course($course2); $course3 = new stdClass(); $course3->fullname = 'Course'; $course3->shortname = 'Three search'; $course3 = $this->getDataGenerator()->create_course($course3); $course4 = new stdClass(); $course4->fullname = 'Course Four'; $course4->shortname = 'CF100'; $course4 = $this->getDataGenerator()->create_course($course4); $course5 = new stdClass(); $course5->fullname = 'Course'; $course5->shortname = 'Five search'; $course5 = $this->getDataGenerator()->create_course($course5); $role = $DB->get_record('role', ['shortname' => 'student']); $this->getDataGenerator()->enrol_user($user1->id, $course1->id, $role->id); $this->getDataGenerator()->enrol_user($user1->id, $course2->id, $role->id); $this->getDataGenerator()->enrol_user($user1->id, $course3->id, $role->id); $this->getDataGenerator()->enrol_user($user1->id, $course5->id, $role->id); // Add some users as contacts. message_add_contact($user2->id, 0, $user1->id); message_add_contact($user3->id, 0, $user1->id); message_add_contact($user4->id, 0, $user1->id); // Remove the viewparticipants capability from one of the courses. $course5context = context_course::instance($course5->id); assign_capability('moodle/course:viewparticipants', CAP_PROHIBIT, $role->id, $course5context->id); $course5context->mark_dirty(); // Perform a search. list($contacts, $courses, $noncontacts) = \core_message\api::search_users($user1->id, 'search'); // Check that we retrieved the correct contacts. $this->assertEquals(2, count($contacts)); $this->assertEquals($user3->id, $contacts[0]->userid); $this->assertEquals($user2->id, $contacts[1]->userid); // Check that we retrieved the correct courses. $this->assertEquals(2, count($courses)); $this->assertEquals($course3->id, $courses[0]->id); $this->assertEquals($course1->id, $courses[1]->id); // Check that we retrieved the correct non-contacts. $this->assertEquals(1, count($noncontacts)); $this->assertEquals($user5->id, $noncontacts[0]->userid); }