diff --git a/mod/resource/classes/event/course_module_instance_list_viewed.php b/mod/resource/classes/event/course_module_instance_list_viewed.php new file mode 100644 index 00000000000..c95e2954784 --- /dev/null +++ b/mod/resource/classes/event/course_module_instance_list_viewed.php @@ -0,0 +1,38 @@ +. + +/** + * The mod_resource instance list viewed event. + * + * @package mod_resource + * @copyright 2014 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_resource\event; + +defined('MOODLE_INTERNAL') || die(); + +/** + * The mod_resource instance list viewed event. + * + * @package mod_resource + * @copyright 2014 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class course_module_instance_list_viewed extends \core\event\course_module_instance_list_viewed { + // No need for any code here as everything is handled by the parent class. +} diff --git a/mod/resource/classes/event/course_module_viewed.php b/mod/resource/classes/event/course_module_viewed.php new file mode 100644 index 00000000000..8647cd53845 --- /dev/null +++ b/mod/resource/classes/event/course_module_viewed.php @@ -0,0 +1,48 @@ +. + +/** + * The mod_resource course module viewed event. + * + * @package mod_resource + * @copyright 2014 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_resource\event; + +defined('MOODLE_INTERNAL') || die(); + +/** + * The mod_resource course module viewed event. + * + * @package mod_resource + * @copyright 2014 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class course_module_viewed extends \core\event\course_module_viewed { + + /** + * Init method. + * + * @return void + */ + protected function init() { + $this->data['objecttable'] = 'resource'; + $this->data['crud'] = 'r'; + $this->data['level'] = self::LEVEL_PARTICIPATING; + } +} diff --git a/mod/resource/index.php b/mod/resource/index.php index 145af410733..82b5978fbee 100644 --- a/mod/resource/index.php +++ b/mod/resource/index.php @@ -33,7 +33,11 @@ $course = $DB->get_record('course', array('id'=>$id), '*', MUST_EXIST); require_course_login($course, true); $PAGE->set_pagelayout('incourse'); -add_to_log($course->id, 'resource', 'view all', "index.php?id=$course->id", ''); +$params = array( + 'context' => context_course::instance($course->id) +); +$event = \mod_resource\event\course_module_instance_list_viewed::create($params); +$event->trigger(); $strresource = get_string('modulename', 'resource'); $strresources = get_string('modulenameplural', 'resource'); diff --git a/mod/resource/tests/events_test.php b/mod/resource/tests/events_test.php new file mode 100644 index 00000000000..10a77a902a5 --- /dev/null +++ b/mod/resource/tests/events_test.php @@ -0,0 +1,103 @@ +. + +/** + * Events test. + * + * @package mod_resource + * @copyright 2014 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Resource events test cases. + * + * @package mod_resource + * @copyright 2014 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_resource_events_testcase extends advanced_testcase { + + /** + * Setup is called before calling test case. + */ + public function setUp() { + $this->resetAfterTest(); + + // Must be a non-guest user to create resources. + $this->setAdminUser(); + } + + /** + * Test course_module_instance_list_viewed event. + */ + public function test_course_module_instance_list_viewed() { + // There is no proper API to call to trigger this event, so what we are + // doing here is simply making sure that the events returns the right information. + + $course = $this->getDataGenerator()->create_course(); + $params = array( + 'context' => context_course::instance($course->id) + ); + $event = \mod_resource\event\course_module_instance_list_viewed::create($params); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $event->trigger(); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\mod_resource\event\course_module_instance_list_viewed', $event); + $this->assertEquals(context_course::instance($course->id), $event->get_context()); + $expected = array($course->id, 'resource', 'view all', 'index.php?id='.$course->id, ''); + $this->assertEventLegacyLogData($expected, $event); + } + + /** + * Test course_module_viewed event. + */ + public function test_course_module_viewed() { + // There is no proper API to call to trigger this event, so what we are + // doing here is simply making sure that the events returns the right information. + + $course = $this->getDataGenerator()->create_course(); + $resource = $this->getDataGenerator()->create_module('resource', array('course' => $course->id)); + + $params = array( + 'context' => context_module::instance($resource->cmid), + 'objectid' => $resource->id + ); + $event = \mod_resource\event\course_module_viewed::create($params); + + // Triggering and capturing the event. + $sink = $this->redirectEvents(); + $event->trigger(); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Checking that the event contains the expected values. + $this->assertInstanceOf('\mod_resource\event\course_module_viewed', $event); + $this->assertEquals(context_module::instance($resource->cmid), $event->get_context()); + $this->assertEquals($resource->id, $event->objectid); + $expected = array($course->id, 'resource', 'view', 'view.php?id=' . $resource->cmid, $resource->id, $resource->cmid); + $this->assertEventLegacyLogData($expected, $event); + } +} diff --git a/mod/resource/view.php b/mod/resource/view.php index 0fb05f46606..2c11595d1b3 100644 --- a/mod/resource/view.php +++ b/mod/resource/view.php @@ -53,7 +53,13 @@ require_course_login($course, true, $cm); $context = context_module::instance($cm->id); require_capability('mod/resource:view', $context); -add_to_log($course->id, 'resource', 'view', 'view.php?id='.$cm->id, $resource->id, $cm->id); +$params = array( + 'context' => $context, + 'objectid' => $resource->id +); +$event = \mod_resource\event\course_module_viewed::create($params); +$event->add_record_snapshot('resource', $resource); +$event->trigger(); // Update 'viewed' state if required by completion system $completion = new completion_info($course);