public function test_hsuforum_get_courses_user_posted_in()
 {
     $this->resetAfterTest();
     $user1 = $this->getDataGenerator()->create_user();
     $user2 = $this->getDataGenerator()->create_user();
     $user3 = $this->getDataGenerator()->create_user();
     $course1 = $this->getDataGenerator()->create_course();
     $course2 = $this->getDataGenerator()->create_course();
     $course3 = $this->getDataGenerator()->create_course();
     // Create 3 forums, one in each course.
     $record = new stdClass();
     $record->course = $course1->id;
     $forum1 = $this->getDataGenerator()->create_module('hsuforum', $record);
     $record = new stdClass();
     $record->course = $course2->id;
     $forum2 = $this->getDataGenerator()->create_module('hsuforum', $record);
     $record = new stdClass();
     $record->course = $course3->id;
     $forum3 = $this->getDataGenerator()->create_module('hsuforum', $record);
     // Add a second forum in course 1.
     $record = new stdClass();
     $record->course = $course1->id;
     $forum4 = $this->getDataGenerator()->create_module('hsuforum', $record);
     // Add discussions to course 1 started by user1.
     $record = new stdClass();
     $record->course = $course1->id;
     $record->userid = $user1->id;
     $record->forum = $forum1->id;
     $this->getDataGenerator()->get_plugin_generator('mod_hsuforum')->create_discussion($record);
     $record = new stdClass();
     $record->course = $course1->id;
     $record->userid = $user1->id;
     $record->forum = $forum4->id;
     $this->getDataGenerator()->get_plugin_generator('mod_hsuforum')->create_discussion($record);
     // Add discussions to course2 started by user1.
     $record = new stdClass();
     $record->course = $course2->id;
     $record->userid = $user1->id;
     $record->forum = $forum2->id;
     $this->getDataGenerator()->get_plugin_generator('mod_hsuforum')->create_discussion($record);
     // Add discussions to course 3 started by user2.
     $record = new stdClass();
     $record->course = $course3->id;
     $record->userid = $user2->id;
     $record->forum = $forum3->id;
     $discussion3 = $this->getDataGenerator()->get_plugin_generator('mod_hsuforum')->create_discussion($record);
     // Add post to course 3 by user1.
     $record = new stdClass();
     $record->course = $course3->id;
     $record->userid = $user1->id;
     $record->forum = $forum3->id;
     $record->discussion = $discussion3->id;
     $this->getDataGenerator()->get_plugin_generator('mod_hsuforum')->create_post($record);
     // User 3 hasn't posted anything, so shouldn't get any results.
     $user3courses = hsuforum_get_courses_user_posted_in($user3);
     $this->assertEmpty($user3courses);
     // User 2 has only posted in course3.
     $user2courses = hsuforum_get_courses_user_posted_in($user2);
     $this->assertCount(1, $user2courses);
     $user2course = array_shift($user2courses);
     $this->assertEquals($course3->id, $user2course->id);
     $this->assertEquals($course3->shortname, $user2course->shortname);
     // User 1 has posted in all 3 courses.
     $user1courses = hsuforum_get_courses_user_posted_in($user1);
     $this->assertCount(3, $user1courses);
     foreach ($user1courses as $course) {
         $this->assertContains($course->id, array($course1->id, $course2->id, $course3->id));
         $this->assertContains($course->shortname, array($course1->shortname, $course2->shortname, $course3->shortname));
     }
     // User 1 has only started a discussion in course 1 and 2 though.
     $user1courses = hsuforum_get_courses_user_posted_in($user1, true);
     $this->assertCount(2, $user1courses);
     foreach ($user1courses as $course) {
         $this->assertContains($course->id, array($course1->id, $course2->id));
         $this->assertContains($course->shortname, array($course1->shortname, $course2->shortname));
     }
 }
Esempio n. 2
0
        $PAGE->set_context($coursecontext);
        $PAGE->set_course($course);
    } else {
        // Enter the course we are searching
        require_login($course);
    }
    // Get the course ready for access checks
    $courses = array($courseid => $course);
} else {
    // We are going to search for all of the users posts in all courses!
    // a general require login here as we arn't actually within any course.
    require_login();
    $PAGE->set_context(context_system::instance());
    // Now we need to get all of the courses to search.
    // All courses where the user has posted within a forum will be returned.
    $courses = hsuforum_get_courses_user_posted_in($user, $discussionsonly);
}
$params = array('context' => $PAGE->context, 'relateduserid' => $user->id, 'other' => array('reportmode' => $mode));
$event = \mod_hsuforum\event\user_report_viewed::create($params);
$event->trigger();
// Get the posts by the requested user that the current user can access.
$result = hsuforum_get_posts_by_user($user, $courses, $isspecificcourse, $discussionsonly, $page * $perpage, $perpage);
// Check whether there are not posts to display.
if (empty($result->posts)) {
    // Ok no posts to display means that either the user has not posted or there
    // are no posts made by the requested user that the current user is able to
    // see.
    // In either case we need to decide whether we can show personal information
    // about the requested user to the current user so we will execute some checks
    // First check the obvious, its the current user, a specific course has been
    // provided (require_login has been called), or they have a course contact role.