/** * Test wiki_view. * * @return void */ public function test_wiki_view() { global $CFG; $CFG->enablecompletion = COMPLETION_ENABLED; $this->resetAfterTest(); $this->setAdminUser(); // Setup test data. $course = $this->getDataGenerator()->create_course(array('enablecompletion' => COMPLETION_ENABLED)); $options = array('completion' => COMPLETION_TRACKING_AUTOMATIC, 'completionview' => COMPLETION_VIEW_REQUIRED); $wiki = $this->getDataGenerator()->create_module('wiki', array('course' => $course->id), $options); $context = context_module::instance($wiki->cmid); $cm = get_coursemodule_from_instance('wiki', $wiki->id); // Trigger and capture the event. $sink = $this->redirectEvents(); wiki_view($wiki, $course, $cm, $context); $events = $sink->get_events(); // 2 additional events thanks to completion. $this->assertCount(3, $events); $event = array_shift($events); // Checking that the event contains the expected values. $this->assertInstanceOf('\\mod_wiki\\event\\course_module_viewed', $event); $this->assertEquals($context, $event->get_context()); $moodleurl = new \moodle_url('/mod/wiki/view.php', array('id' => $cm->id)); $this->assertEquals($moodleurl, $event->get_url()); $this->assertEventContextNotUsed($event); $this->assertNotEmpty($event->get_name()); // Check completion status. $completion = new completion_info($course); $completiondata = $completion->get_data($cm); $this->assertEquals(1, $completiondata->completionstate); }
/** * Trigger the course module viewed event and update the module completion status. * * @param int $wikiid The wiki instance ID. * @return array of warnings and status result. * @since Moodle 3.1 */ public static function view_wiki($wikiid) { $params = self::validate_parameters(self::view_wiki_parameters(), array('wikiid' => $wikiid)); $warnings = array(); // Get wiki instance. if (!($wiki = wiki_get_wiki($params['wikiid']))) { throw new moodle_exception('incorrectwikiid', 'wiki'); } // Permission validation. list($course, $cm) = get_course_and_cm_from_instance($wiki, 'wiki'); $context = context_module::instance($cm->id); self::validate_context($context); // Check if user can view this wiki. // We don't use wiki_user_can_view because it requires to have a valid subwiki for the user. if (!has_capability('mod/wiki:viewpage', $context)) { throw new moodle_exception('cannotviewpage', 'wiki'); } // Trigger course_module_viewed event and completion. wiki_view($wiki, $course, $cm, $context); $result = array(); $result['status'] = true; $result['warnings'] = $warnings; return $result; }
// * // * Error. No more options // */ } else { print_error('invalidparameters', 'wiki'); } if (!wiki_user_can_view($subwiki, $wiki)) { print_error('cannotviewpage', 'wiki'); } if ($edit != -1 and $PAGE->user_allowed_editing()) { $USER->editing = $edit; } $wikipage = new page_wiki_view($wiki, $subwiki, $cm); $wikipage->set_gid($currentgroup); $wikipage->set_page($page); $context = context_module::instance($cm->id); if ($pageid) { wiki_page_view($wiki, $page, $course, $cm, $context, null, null, $subwiki); } else { if ($id) { wiki_view($wiki, $course, $cm, $context); } else { if ($wid && $title) { $other = array('title' => $title, 'wid' => $wid, 'group' => $gid, 'groupanduser' => $groupanduser); wiki_page_view($wiki, $page, $course, $cm, $context, $uid, $other, $subwiki); } } } $wikipage->print_header(); $wikipage->print_content(); $wikipage->print_footer();