Пример #1
0
 /**
  * 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);
 }
Пример #2
0
 /**
  * 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);
 }
Пример #3
0
 /**
  * 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);
 }