mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 14:27:22 +01:00
MDL-49430 Lesson: Add restarted and resumed events
This commit is contained in:
parent
06122e46fd
commit
e0f7b96347
75
mod/lesson/classes/event/lesson_restarted.php
Normal file
75
mod/lesson/classes/event/lesson_restarted.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* The mod_lesson lesson restarted event class.
|
||||
*
|
||||
* @package mod_lesson
|
||||
* @copyright 2015 Stephen Bourget
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
|
||||
*/
|
||||
|
||||
namespace mod_lesson\event;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* The mod_lesson lesson restarted event class
|
||||
*
|
||||
* @package mod_lesson
|
||||
* @since Moodle 2.9
|
||||
* @copyright 2015 Stephen Bourget
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
|
||||
*/
|
||||
class lesson_restarted extends \core\event\base {
|
||||
|
||||
/**
|
||||
* Set basic properties for the event.
|
||||
*/
|
||||
protected function init() {
|
||||
$this->data['objecttable'] = 'lesson';
|
||||
$this->data['crud'] = 'u';
|
||||
$this->data['edulevel'] = self::LEVEL_PARTICIPATING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns localised general event name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_name() {
|
||||
return get_string('eventlessonrestarted', 'mod_lesson');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get URL related to the action.
|
||||
*
|
||||
* @return \moodle_url
|
||||
*/
|
||||
public function get_url() {
|
||||
return new \moodle_url('/mod/lesson/view.php', array('id' => $this->contextinstanceid));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns non-localised event description with id's for admin use only.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_description() {
|
||||
return "The user with id '$this->userid' abandoned their previous incomplete attempt ".
|
||||
"and started a new attempt on the lesson with course module id '$this->contextinstanceid'.";
|
||||
}
|
||||
}
|
75
mod/lesson/classes/event/lesson_resumed.php
Normal file
75
mod/lesson/classes/event/lesson_resumed.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* The mod_lesson lesson resumed event class.
|
||||
*
|
||||
* @package mod_lesson
|
||||
* @copyright 2015 Stephen Bourget
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
|
||||
*/
|
||||
|
||||
namespace mod_lesson\event;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* The mod_lesson lesson resumed event class
|
||||
*
|
||||
* @package mod_lesson
|
||||
* @since Moodle 2.9
|
||||
* @copyright 2015 Stephen Bourget
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
|
||||
*/
|
||||
class lesson_resumed extends \core\event\base {
|
||||
|
||||
/**
|
||||
* Set basic properties for the event.
|
||||
*/
|
||||
protected function init() {
|
||||
$this->data['objecttable'] = 'lesson';
|
||||
$this->data['crud'] = 'u';
|
||||
$this->data['edulevel'] = self::LEVEL_PARTICIPATING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns localised general event name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_name() {
|
||||
return get_string('eventlessonresumed', 'mod_lesson');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get URL related to the action.
|
||||
*
|
||||
* @return \moodle_url
|
||||
*/
|
||||
public function get_url() {
|
||||
return new \moodle_url('/mod/lesson/view.php', array('id' => $this->contextinstanceid));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns non-localised event description with id's for admin use only.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_description() {
|
||||
return "The user with id '$this->userid' resumed their previous incomplete attempt on".
|
||||
" the lesson with course module id '$this->contextinstanceid'.";
|
||||
}
|
||||
}
|
@ -179,6 +179,8 @@ $string['eventessayattemptviewed'] = 'Essay attempt viewed';
|
||||
$string['eventhighscoreadded'] = 'Highscore added';
|
||||
$string['eventhighscoresviewed'] = 'Highscores viewed';
|
||||
$string['eventlessonended'] = 'Lesson ended';
|
||||
$string['eventlessonrestarted'] = 'Lesson restarted';
|
||||
$string['eventlessonresumed'] = 'Lesson resumed';
|
||||
$string['eventlessonstarted'] = 'Lesson started';
|
||||
$string['eventpagecreated'] = 'Page created';
|
||||
$string['eventpageupdated'] = 'Page updated';
|
||||
|
@ -1256,6 +1256,9 @@ class lesson extends lesson_base {
|
||||
*/
|
||||
public function update_timer($restart=false, $continue=false, $endreached =false) {
|
||||
global $USER, $DB;
|
||||
|
||||
$cm = get_coursemodule_from_instance('lesson', $this->properties->id, $this->properties->course);
|
||||
|
||||
// clock code
|
||||
// get time information for this user
|
||||
$params = array("lessonid" => $this->properties->id, "userid" => $USER->id);
|
||||
@ -1269,9 +1272,27 @@ class lesson extends lesson_base {
|
||||
if ($continue) {
|
||||
// continue a previous test, need to update the clock (think this option is disabled atm)
|
||||
$timer->starttime = time() - ($timer->lessontime - $timer->starttime);
|
||||
|
||||
// Trigger lesson resumed event.
|
||||
$event = \mod_lesson\event\lesson_resumed::create(array(
|
||||
'objectid' => $this->properties->id,
|
||||
'context' => context_module::instance($cm->id),
|
||||
'courseid' => $this->properties->course
|
||||
));
|
||||
$event->trigger();
|
||||
|
||||
} else {
|
||||
// starting over, so reset the clock
|
||||
$timer->starttime = time();
|
||||
|
||||
// Trigger lesson restarted event.
|
||||
$event = \mod_lesson\event\lesson_restarted::create(array(
|
||||
'objectid' => $this->properties->id,
|
||||
'context' => context_module::instance($cm->id),
|
||||
'courseid' => $this->properties->course
|
||||
));
|
||||
$event->trigger();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -259,6 +259,51 @@ class mod_lesson_events_testcase extends advanced_testcase {
|
||||
$this->assertEventContextNotUsed($event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the lesson restarted event.
|
||||
*/
|
||||
public function test_lesson_restarted() {
|
||||
|
||||
// Initialize timer.
|
||||
$this->lesson->start_timer();
|
||||
// Trigger and capture the event.
|
||||
$sink = $this->redirectEvents();
|
||||
$this->lesson->update_timer(true);
|
||||
$events = $sink->get_events();
|
||||
$event = reset($events);
|
||||
|
||||
// Check that the event data is valid.
|
||||
$this->assertInstanceOf('\mod_lesson\event\lesson_restarted', $event);
|
||||
$this->assertEquals(context_module::instance($this->lesson->properties()->cmid), $event->get_context());
|
||||
$expected = array($this->course->id, 'lesson', 'start', 'view.php?id=' . $this->lesson->properties()->cmid,
|
||||
$this->lesson->properties()->id, $this->lesson->properties()->cmid);
|
||||
$this->assertEventContextNotUsed($event);
|
||||
$this->assertDebuggingNotCalled();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the lesson restarted event.
|
||||
*/
|
||||
public function test_lesson_resumed() {
|
||||
|
||||
// Initialize timer.
|
||||
$this->lesson->start_timer();
|
||||
// Trigger and capture the event.
|
||||
$sink = $this->redirectEvents();
|
||||
$this->lesson->update_timer(true, true);
|
||||
$events = $sink->get_events();
|
||||
$event = reset($events);
|
||||
|
||||
// Check that the event data is valid.
|
||||
$this->assertInstanceOf('\mod_lesson\event\lesson_resumed', $event);
|
||||
$this->assertEquals(context_module::instance($this->lesson->properties()->cmid), $event->get_context());
|
||||
$expected = array($this->course->id, 'lesson', 'start', 'view.php?id=' . $this->lesson->properties()->cmid,
|
||||
$this->lesson->properties()->id, $this->lesson->properties()->cmid);
|
||||
$this->assertEventContextNotUsed($event);
|
||||
$this->assertDebuggingNotCalled();
|
||||
|
||||
}
|
||||
/**
|
||||
* Test the lesson ended event.
|
||||
*/
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->version = 2015030401; // The current module version (Date: YYYYMMDDXX)
|
||||
$plugin->version = 2015031800; // The current module version (Date: YYYYMMDDXX)
|
||||
$plugin->requires = 2014110400; // Requires this Moodle version
|
||||
$plugin->component = 'mod_lesson'; // Full name of the plugin (used for diagnostics)
|
||||
$plugin->cron = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user