This commit is contained in:
Sara Arjona
2025-08-27 07:17:25 +02:00
16 changed files with 187 additions and 143 deletions
@@ -0,0 +1,7 @@
issueNumber: MDL-84632
notes:
mod_book:
- message: >-
The \mod_book\event\course_module_instance_list_viewed event is now
deprecated. Use \core\event\course_resources_list_viewed instead.
type: deprecated
@@ -0,0 +1,7 @@
issueNumber: MDL-84632
notes:
mod_folder:
- message: >-
The \mod_folder\event\course_module_instance_list_viewed event is now
deprecated. Use \core\event\course_resources_list_viewed instead.
type: deprecated
@@ -0,0 +1,7 @@
issueNumber: MDL-84632
notes:
mod_imscp:
- message: >-
The \mod_imscp\event\course_module_instance_list_viewed event is now
deprecated. Use \core\event\course_resources_list_viewed instead.
type: deprecated
@@ -0,0 +1,7 @@
issueNumber: MDL-84632
notes:
mod_page:
- message: >-
The \mod_page\event\course_module_instance_list_viewed event is now
deprecated. Use \core\event\course_resources_list_viewed instead.
type: deprecated
@@ -0,0 +1,7 @@
issueNumber: MDL-84632
notes:
mod_resource:
- message: >-
The \mod_resource\event\course_module_instance_list_viewed event is now
deprecated. Use \core\event\course_resources_list_viewed instead.
type: deprecated
@@ -0,0 +1,7 @@
issueNumber: MDL-84632
notes:
mod_url:
- message: >-
The \mod_url\event\course_module_instance_list_viewed event is now
deprecated. Use \core\event\course_resources_list_viewed instead.
type: deprecated
@@ -147,8 +147,8 @@ final class eventobservers_test extends \advanced_testcase {
// Now, let's create a rule so an event can be stored.
$rule = new \stdClass();
$rule->courseid = $course->id;
$rule->plugin = 'mod_book';
$rule->eventname = '\mod_book\event\course_module_instance_list_viewed';
$rule->plugin = 'mod_assign';
$rule->eventname = '\mod_assign\event\course_module_instance_list_viewed';
$rule = $monitorgenerator->create_rule($rule);
// Let's subscribe to this rule.
@@ -166,7 +166,7 @@ final class eventobservers_test extends \advanced_testcase {
}
// Fire the event we want to capture.
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course);
$event = \mod_assign\event\course_module_instance_list_viewed::create_from_course($course);
$event->trigger();
// Check that the event data is valid.
@@ -186,8 +186,8 @@ final class eventobservers_test extends \advanced_testcase {
// Now, let's create a site wide rule.
$rule = new \stdClass();
$rule->courseid = 0;
$rule->plugin = 'mod_book';
$rule->eventname = '\mod_book\event\course_module_instance_list_viewed';
$rule->plugin = 'mod_assign';
$rule->eventname = '\mod_assign\event\course_module_instance_list_viewed';
$rule = $monitorgenerator->create_rule($rule);
// Let's subscribe to this rule.
@@ -198,7 +198,7 @@ final class eventobservers_test extends \advanced_testcase {
$monitorgenerator->create_subscription($sub);
// Fire the event we want to capture - but in a different course.
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course2);
$event = \mod_assign\event\course_module_instance_list_viewed::create_from_course($course2);
$event->trigger();
// Check that the event data is valid.
@@ -230,7 +230,7 @@ final class eventobservers_test extends \advanced_testcase {
$rulerecord = new \stdClass();
$rulerecord->courseid = $course->id;
$rulerecord->eventname = '\mod_book\event\course_module_instance_list_viewed';
$rulerecord->eventname = '\mod_assign\event\course_module_instance_list_viewed';
$rulerecord->frequency = 1;
$rule = $toolgenerator->create_rule($rulerecord);
@@ -245,7 +245,7 @@ final class eventobservers_test extends \advanced_testcase {
$this->assertFalse($recordexists);
// Now let us trigger the event.
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course);
$event = \mod_assign\event\course_module_instance_list_viewed::create_from_course($course);
$event->trigger();
$this->verify_processed_data($msgsink);
@@ -262,7 +262,7 @@ final class eventobservers_test extends \advanced_testcase {
// Let us trigger events.
for ($i = 0; $i < 5; $i++) {
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course);
$event = \mod_assign\event\course_module_instance_list_viewed::create_from_course($course);
$event->trigger();
if ($i != 4) {
$this->verify_message_not_sent_yet($msgsink);
@@ -278,20 +278,20 @@ final class eventobservers_test extends \advanced_testcase {
// Now let us create a rule specific to a module instance.
$cm = new \stdClass();
$cm->course = $course->id;
$book = $this->getDataGenerator()->create_module('book', $cm);
$rulerecord->eventname = '\mod_book\event\course_module_viewed';
$rulerecord->cmid = $book->cmid;
$assign = $this->getDataGenerator()->create_module('assign', $cm);
$rulerecord->eventname = '\mod_assign\event\course_module_viewed';
$rulerecord->cmid = $assign->cmid;
$rule = $toolgenerator->create_rule($rulerecord);
$subrecord->ruleid = $rule->id;
$toolgenerator->create_subscription($subrecord);
// Let us trigger events.
$params = array(
'context' => \context_module::instance($book->cmid),
'objectid' => $book->id
);
$params = [
'context' => \context_module::instance($assign->cmid),
'objectid' => $assign->id,
];
for ($i = 0; $i < 5; $i++) {
$event = \mod_book\event\course_module_viewed::create($params);
$event = \mod_assign\event\course_module_viewed::create($params);
$event->trigger();
if ($i != 4) {
$this->verify_message_not_sent_yet($msgsink);
@@ -366,7 +366,7 @@ final class eventobservers_test extends \advanced_testcase {
$rulerecord = new \stdClass();
$rulerecord->courseid = $course->id;
$rulerecord->eventname = '\mod_book\event\course_module_instance_list_viewed';
$rulerecord->eventname = '\mod_assign\event\course_module_instance_list_viewed';
$rulerecord->frequency = 5;
$rule = $toolgenerator->create_rule($rulerecord);
@@ -379,7 +379,7 @@ final class eventobservers_test extends \advanced_testcase {
for ($i = 0; $i < 7; $i++) {
// Now let us trigger 7 instances of the event.
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course);
$event = \mod_assign\event\course_module_instance_list_viewed::create_from_course($course);
$event->trigger();
$this->waitForSecond(); // Add a second delay, to prevent time collisions.
}
@@ -388,7 +388,7 @@ final class eventobservers_test extends \advanced_testcase {
$this->assertCount(1, $messages); // There should be only one message not 3.
for ($i = 0; $i < 3; $i++) {
// Now let us trigger 5 more instances of the event.
$event = \mod_book\event\course_module_instance_list_viewed::create_from_course($course);
$event = \mod_assign\event\course_module_instance_list_viewed::create_from_course($course);
$event->trigger();
}
@@ -453,17 +453,17 @@ final class eventobservers_test extends \advanced_testcase {
$toolgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor');
$context = \context_user::instance($USER->id, IGNORE_MISSING);
// Creating book.
// Creating assign.
$cm = new \stdClass();
$cm->course = $course->id;
$cm->name = 'Observed book';
$book = $this->getDataGenerator()->create_module('book', $cm);
$cm->name = 'Observed assign';
$assign = $this->getDataGenerator()->create_module('assign', $cm);
// Creating rule.
$rulerecord = new \stdClass();
$rulerecord->courseid = $course->id;
$rulerecord->eventname = '\mod_book\event\course_module_viewed';
$rulerecord->cmid = $book->cmid;
$rulerecord->eventname = '\mod_assign\event\course_module_viewed';
$rulerecord->cmid = $assign->cmid;
$rulerecord->frequency = 1;
$rulerecord->template = '## {link} ##
@@ -486,18 +486,18 @@ final class eventobservers_test extends \advanced_testcase {
$toolgenerator->create_subscription($subrecord);
// Now let us trigger the event.
$params = array(
'context' => \context_module::instance($book->cmid),
'objectid' => $book->id
);
$params = [
'context' => \context_module::instance($assign->cmid),
'objectid' => $assign->id,
];
$event = \mod_book\event\course_module_viewed::create($params);
$event = \mod_assign\event\course_module_viewed::create($params);
$event->trigger();
$this->run_adhock_tasks();
$msgs = $msgsink->get_messages();
$msg = array_pop($msgs);
$modurl = new \moodle_url('/mod/book/view.php', array('id' => $book->cmid));
$modurl = new \moodle_url('/mod/assign/view.php', ['id' => $assign->cmid]);
$this->assertMatchesRegularExpression('~<h2>.*' . preg_quote($event->get_url()->out(), '~') . '.*</h2>~',
$msg->fullmessagehtml);
@@ -595,7 +595,7 @@ final class eventobservers_test extends \advanced_testcase {
// Now let us create a rule specific to a module instance.
$cm = new \stdClass();
$cm->course = $course1->id;
$book = $this->getDataGenerator()->create_module('book', $cm);
$assign = $this->getDataGenerator()->create_module('assign', $cm);
$rule = new \stdClass();
$rule->userid = $user->id;
@@ -605,7 +605,7 @@ final class eventobservers_test extends \advanced_testcase {
$sub = new \stdClass();
$sub->courseid = $course1->id;
$sub->userid = $user->id;
$sub->cmid = $book->cmid;
$sub->cmid = $assign->cmid;
// Add 10 rules for this course with subscriptions for this module.
for ($i = 0; $i < 10; $i++) {
@@ -631,7 +631,7 @@ final class eventobservers_test extends \advanced_testcase {
$this->assertCount(20, $totalsubs);
// Let us delete the user now.
course_delete_module($book->cmid);
course_delete_module($assign->cmid);
// Verify data after course delete.
$totalrules = \tool_monitor\rule_manager::get_rules_by_plugin('test');
@@ -65,7 +65,7 @@ final class task_clean_events_test extends \advanced_testcase {
// Let's add a few rules we want to monitor.
$rule1 = $monitorgenerator->create_rule($rule);
$rule->eventname = '\mod_book\event\course_module_instance_list_viewed';
$rule->eventname = '\mod_assign\event\course_module_instance_list_viewed';
$rule2 = $monitorgenerator->create_rule($rule);
// Add the same rules for the same course, but this time with a lower timewindow (used to test that we do not
@@ -74,7 +74,7 @@ final class task_clean_events_test extends \advanced_testcase {
$rule->timewindow = 200;
$rule3 = $monitorgenerator->create_rule($rule);
$rule->eventname = '\mod_book\event\course_module_instance_list_viewed';
$rule->eventname = '\mod_assign\event\course_module_instance_list_viewed';
$rule4 = $monitorgenerator->create_rule($rule);
// Add another rule in a different course.
@@ -116,13 +116,13 @@ final class task_clean_events_test extends \advanced_testcase {
// Now let's populate the tool_monitor table with the events associated with those rules.
\mod_book\event\course_module_viewed::create_from_book($book, $bookcontext)->trigger();
\mod_book\event\course_module_instance_list_viewed::create_from_course($course)->trigger();
\mod_assign\event\course_module_instance_list_viewed::create_from_course($course)->trigger();
\mod_book\event\chapter_viewed::create_from_chapter($book, $bookcontext, $bookchapter)->trigger();
// Let's trigger the viewed events again, but in another course. The rules created for these events are
// associated with another course, so these events should get deleted when we trigger the cleanup task.
\mod_book\event\course_module_viewed::create_from_book($book2, $book2context)->trigger();
\mod_book\event\course_module_instance_list_viewed::create_from_course($course2)->trigger();
\mod_assign\event\course_module_instance_list_viewed::create_from_course($course2)->trigger();
// Trigger a chapter_viewed event in this course - this should not get deleted as the rule is site wide.
\mod_book\event\chapter_viewed::create_from_chapter($book2, $book2context, $book2chapter)->trigger();
@@ -151,7 +151,7 @@ final class task_clean_events_test extends \advanced_testcase {
$event4 = array_shift($events);
$this->assertEquals('\mod_book\event\course_module_viewed', $event1->eventname);
$this->assertEquals($course->id, $event1->courseid);
$this->assertEquals('\mod_book\event\course_module_instance_list_viewed', $event2->eventname);
$this->assertEquals('\mod_assign\event\course_module_instance_list_viewed', $event2->eventname);
$this->assertEquals($course->id, $event2->courseid);
$this->assertEquals('\mod_book\event\chapter_viewed', $event3->eventname);
$this->assertEquals($course->id, $event3->courseid);
@@ -14,14 +14,6 @@
// 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_book instance list viewed event.
*
* @package mod_book
* @copyright 2013 Ankit Agarwal
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_book\event;
defined('MOODLE_INTERNAL') || die();
@@ -32,8 +24,25 @@ defined('MOODLE_INTERNAL') || die();
* @since Moodle 2.7
* @copyright 2013 onwards Ankit Agarwal
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @deprecated This event is deprecated and will be removed in Moodle 6.0.
* @todo Remove class in 6.0 (MDL-86384)
*/
#[\core\attribute\deprecated(
replacement: \core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
class course_module_instance_list_viewed extends \core\event\course_module_instance_list_viewed {
#[\Override]
#[\core\attribute\deprecated(
replacement: \core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
protected function init() {
\core\deprecation::emit_deprecation([self::class, __FUNCTION__]);
parent::init();
}
/**
* Create the event from course record.
*
@@ -44,8 +53,9 @@ class course_module_instance_list_viewed extends \core\event\course_module_insta
$params = array(
'context' => \context_course::instance($course->id)
);
$event = \mod_book\event\course_module_instance_list_viewed::create($params);
/** @var course_module_instance_list_viewed $event */
$event = self::create($params);
$event->add_record_snapshot('course', $course);
return $event;
}}
}
}
@@ -120,28 +120,6 @@ final class events_test extends \advanced_testcase {
$this->assertEquals($chapter, $event->get_record_snapshot('book_chapters', $chapter->id));
}
public function test_course_module_instance_list_viewed(): void {
// 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_book\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_book\event\course_module_instance_list_viewed', $event);
$this->assertEquals(\context_course::instance($course->id), $event->get_context());
}
public function test_course_module_viewed(): void {
// 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.
@@ -14,14 +14,6 @@
// 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_folder instance list viewed event.
*
* @package mod_folder
* @copyright 2013 Mark Nelson <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_folder\event;
defined('MOODLE_INTERNAL') || die();
@@ -33,7 +25,23 @@ defined('MOODLE_INTERNAL') || die();
* @since Moodle 2.7
* @copyright 2013 Mark Nelson <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @deprecated This event is deprecated and will be removed in Moodle 6.0.
* @todo Remove class in 6.0 (MDL-86384)
*/
#[\core\attribute\deprecated(
replacement: core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
class course_module_instance_list_viewed extends \core\event\course_module_instance_list_viewed {
// No code required here as the parent class handles it all.
#[\Override]
#[\core\attribute\deprecated(
replacement: core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
protected function init() {
\core\deprecation::emit_deprecation([self::class, __FUNCTION__]);
parent::init();
}
}
@@ -14,14 +14,6 @@
// 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_imscp instance list viewed event.
*
* @package mod_imscp
* @copyright 2014 Mark Nelson <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_imscp\event;
defined('MOODLE_INTERNAL') || die();
@@ -33,7 +25,23 @@ defined('MOODLE_INTERNAL') || die();
* @since Moodle 2.7
* @copyright 2014 Mark Nelson <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @deprecated This event is deprecated and will be removed in Moodle 6.0.
* @todo Remove class in 6.0 (MDL-86384)
*/
#[\core\attribute\deprecated(
replacement: core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
class course_module_instance_list_viewed extends \core\event\course_module_instance_list_viewed {
// No code required here as the parent class handles it all.
#[\Override]
#[\core\attribute\deprecated(
replacement: core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
protected function init() {
\core\deprecation::emit_deprecation([self::class, __FUNCTION__]);
parent::init();
}
}
@@ -14,14 +14,6 @@
// 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_page instance list viewed event.
*
* @package mod_page
* @copyright 2013 Ankit Agarwal
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_page\event;
defined('MOODLE_INTERNAL') || die();
@@ -32,7 +24,23 @@ defined('MOODLE_INTERNAL') || die();
* @since Moodle 2.7
* @copyright 2013 onwards Ankit Agarwal
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @deprecated This event is deprecated and will be removed in Moodle 6.0.
* @todo Remove class in 6.0 (MDL-86384)
*/
#[\core\attribute\deprecated(
replacement: core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
class course_module_instance_list_viewed extends \core\event\course_module_instance_list_viewed {
#[\Override]
#[\core\attribute\deprecated(
replacement: core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
protected function init() {
\core\deprecation::emit_deprecation([self::class, __FUNCTION__]);
parent::init();
}
}
@@ -14,14 +14,6 @@
// 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_resource instance list viewed event.
*
* @package mod_resource
* @copyright 2014 Rajesh Taneja <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_resource\event;
defined('MOODLE_INTERNAL') || die();
@@ -33,7 +25,23 @@ defined('MOODLE_INTERNAL') || die();
* @since Moodle 2.7
* @copyright 2014 Rajesh Taneja <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @deprecated This event is deprecated and will be removed in Moodle 6.0.
* @todo Remove class in 6.0 (MDL-86384)
*/
#[\core\attribute\deprecated(
replacement: core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
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.
#[\Override]
#[\core\attribute\deprecated(
replacement: core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
protected function init() {
\core\deprecation::emit_deprecation([self::class, __FUNCTION__]);
parent::init();
}
}
@@ -44,32 +44,6 @@ final class events_test extends \advanced_testcase {
$this->setAdminUser();
}
/**
* Test course_module_instance_list_viewed event.
*/
public function test_course_module_instance_list_viewed(): void {
// 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());
$this->assertEventContextNotUsed($event);
}
/**
* Test course_module_viewed event.
*/
@@ -14,14 +14,6 @@
// 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_url instance list viewed event.
*
* @package mod_url
* @copyright 2013 Mark Nelson <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_url\event;
defined('MOODLE_INTERNAL') || die();
@@ -33,7 +25,23 @@ defined('MOODLE_INTERNAL') || die();
* @since Moodle 2.7
* @copyright 2013 Mark Nelson <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @deprecated This event is deprecated and will be removed in Moodle 6.0.
* @todo Remove class in 6.0 (MDL-86384)
*/
#[\core\attribute\deprecated(
replacement: \core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
class course_module_instance_list_viewed extends \core\event\course_module_instance_list_viewed {
#[\Override]
#[\core\attribute\deprecated(
replacement: \core\event\course_resources_list_viewed::class,
since: '5.1',
mdl: 'MDL-84632',
)]
protected function init() {
\core\deprecation::emit_deprecation([self::class, __FUNCTION__]);
parent::init();
}
}