Esempio n. 1
0
 /**
  * Test resource_view
  * @return void
  */
 public function test_resource_view()
 {
     global $CFG;
     $CFG->enablecompletion = 1;
     $this->resetAfterTest();
     $this->setAdminUser();
     // Setup test data.
     $course = $this->getDataGenerator()->create_course(array('enablecompletion' => 1));
     $resource = $this->getDataGenerator()->create_module('resource', array('course' => $course->id), array('completion' => 2, 'completionview' => 1));
     $context = context_module::instance($resource->cmid);
     $cm = get_coursemodule_from_instance('resource', $resource->id);
     // Trigger and capture the event.
     $sink = $this->redirectEvents();
     resource_view($resource, $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_resource\\event\\course_module_viewed', $event);
     $this->assertEquals($context, $event->get_context());
     $moodleurl = new \moodle_url('/mod/resource/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);
 }
Esempio n. 2
0
 /**
  * Simulate the resource/view.php web interface page: trigger events, completion, etc...
  *
  * @param int $resourceid the resource instance id
  * @return array of warnings and status result
  * @since Moodle 3.0
  * @throws moodle_exception
  */
 public static function view_resource($resourceid)
 {
     global $DB, $CFG;
     require_once $CFG->dirroot . "/mod/resource/lib.php";
     $params = self::validate_parameters(self::view_resource_parameters(), array('resourceid' => $resourceid));
     $warnings = array();
     // Request and permission validation.
     $resource = $DB->get_record('resource', array('id' => $params['resourceid']), '*', MUST_EXIST);
     list($course, $cm) = get_course_and_cm_from_instance($resource, 'resource');
     $context = context_module::instance($cm->id);
     self::validate_context($context);
     require_capability('mod/resource:view', $context);
     // Call the resource/lib API.
     resource_view($resource, $course, $cm, $context);
     $result = array();
     $result['status'] = true;
     $result['warnings'] = $warnings;
     return $result;
 }
Esempio n. 3
0
        print_error('invalidaccessparameter');
    }
    $cm = get_coursemodule_from_instance('resource', $resource->id, $resource->course, false, MUST_EXIST);
} else {
    if (!($cm = get_coursemodule_from_id('resource', $id))) {
        resource_redirect_if_migrated(0, $id);
        print_error('invalidcoursemodule');
    }
    $resource = $DB->get_record('resource', array('id' => $cm->instance), '*', MUST_EXIST);
}
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
require_capability('mod/resource:view', $context);
// Completion and trigger events.
resource_view($resource, $course, $cm, $context);
$PAGE->set_url('/mod/resource/view.php', array('id' => $cm->id));
if ($resource->tobemigrated) {
    resource_print_tobemigrated($resource, $cm, $course);
    die;
}
$fs = get_file_storage();
$files = $fs->get_area_files($context->id, 'mod_resource', 'content', 0, 'sortorder DESC, id ASC', false);
// TODO: this is not very efficient!!
if (count($files) < 1) {
    resource_print_filenotfound($resource, $cm, $course);
    die;
} else {
    $file = reset($files);
    unset($files);
}