mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 14:27:22 +01:00
Merge branch 'MDL-49430_m29v4' of git://github.com/sbourget/moodle
Conflicts: mod/lesson/version.php
This commit is contained in:
commit
a2be9de182
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'.";
|
||||||
|
}
|
||||||
|
}
|
@ -182,6 +182,8 @@ $string['eventessayattemptviewed'] = 'Essay attempt viewed';
|
|||||||
$string['eventhighscoreadded'] = 'Highscore added';
|
$string['eventhighscoreadded'] = 'Highscore added';
|
||||||
$string['eventhighscoresviewed'] = 'Highscores viewed';
|
$string['eventhighscoresviewed'] = 'Highscores viewed';
|
||||||
$string['eventlessonended'] = 'Lesson ended';
|
$string['eventlessonended'] = 'Lesson ended';
|
||||||
|
$string['eventlessonrestarted'] = 'Lesson restarted';
|
||||||
|
$string['eventlessonresumed'] = 'Lesson resumed';
|
||||||
$string['eventlessonstarted'] = 'Lesson started';
|
$string['eventlessonstarted'] = 'Lesson started';
|
||||||
$string['eventpagecreated'] = 'Page created';
|
$string['eventpagecreated'] = 'Page created';
|
||||||
$string['eventpagemoved'] = 'Page moved';
|
$string['eventpagemoved'] = 'Page moved';
|
||||||
|
@ -1266,6 +1266,9 @@ class lesson extends lesson_base {
|
|||||||
*/
|
*/
|
||||||
public function update_timer($restart=false, $continue=false, $endreached =false) {
|
public function update_timer($restart=false, $continue=false, $endreached =false) {
|
||||||
global $USER, $DB;
|
global $USER, $DB;
|
||||||
|
|
||||||
|
$cm = get_coursemodule_from_instance('lesson', $this->properties->id, $this->properties->course);
|
||||||
|
|
||||||
// clock code
|
// clock code
|
||||||
// get time information for this user
|
// get time information for this user
|
||||||
$params = array("lessonid" => $this->properties->id, "userid" => $USER->id);
|
$params = array("lessonid" => $this->properties->id, "userid" => $USER->id);
|
||||||
@ -1279,9 +1282,27 @@ class lesson extends lesson_base {
|
|||||||
if ($continue) {
|
if ($continue) {
|
||||||
// continue a previous test, need to update the clock (think this option is disabled atm)
|
// continue a previous test, need to update the clock (think this option is disabled atm)
|
||||||
$timer->starttime = time() - ($timer->lessontime - $timer->starttime);
|
$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 {
|
} else {
|
||||||
// starting over, so reset the clock
|
// starting over, so reset the clock
|
||||||
$timer->starttime = time();
|
$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();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,6 +289,51 @@ class mod_lesson_events_testcase extends advanced_testcase {
|
|||||||
$this->assertEventContextNotUsed($event);
|
$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.
|
* Test the lesson ended event.
|
||||||
*/
|
*/
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
defined('MOODLE_INTERNAL') || die();
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
$plugin->version = 2015032400; // The current module version (Date: YYYYMMDDXX)
|
$plugin->version = 2015032401; // The current module version (Date: YYYYMMDDXX)
|
||||||
$plugin->requires = 2014110400; // Requires this Moodle version
|
$plugin->requires = 2014110400; // Requires this Moodle version
|
||||||
$plugin->component = 'mod_lesson'; // Full name of the plugin (used for diagnostics)
|
$plugin->component = 'mod_lesson'; // Full name of the plugin (used for diagnostics)
|
||||||
$plugin->cron = 0;
|
$plugin->cron = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user