From dcbef3f4c2473bda096e5b225e3e03f57b8bd946 Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Wed, 18 Jun 2014 15:40:31 +0800 Subject: [PATCH] MDL-39883 events: Trigger a module created event when duplicating a module --- course/lib.php | 4 ++++ course/tests/courselib_test.php | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/course/lib.php b/course/lib.php index c0f714e576a..ffde87bd8f4 100644 --- a/course/lib.php +++ b/course/lib.php @@ -3530,6 +3530,10 @@ function duplicate_module($course, $cm) { $section = $DB->get_record('course_sections', array('id' => $cm->section, 'course' => $cm->course)); moveto_module($newcm, $section, $cm); moveto_module($cm, $section, $newcm); + + // Trigger course module created event. We can trigger the event only if we know the newcmid. + $event = \core\event\course_module_created::create_from_cm($newcm); + $event->trigger(); } rebuild_course_cache($cm->course); diff --git a/course/tests/courselib_test.php b/course/tests/courselib_test.php index 216db322cb4..b2e9fa4f688 100644 --- a/course/tests/courselib_test.php +++ b/course/tests/courselib_test.php @@ -1958,9 +1958,8 @@ class core_course_courselib_testcase extends advanced_testcase { $modinfo = $this->create_specific_module_test('assign'); $events = $sink->get_events(); $event = array_pop($events); - $sink->close(); - $cm = $DB->get_record('course_modules', array('id' => $modinfo->coursemodule), '*', MUST_EXIST); + $cm = get_coursemodule_from_id('assign', $modinfo->coursemodule, 0, false, MUST_EXIST); $mod = $DB->get_record('assign', array('id' => $modinfo->instance), '*', MUST_EXIST); // Validate event data. @@ -1988,6 +1987,21 @@ class core_course_courselib_testcase extends advanced_testcase { $this->assertEventLegacyLogData($arr, $event); $this->assertEventContextNotUsed($event); + // Let us see if duplicating an activity results in a nice course module created event. + $sink->clear(); + $course = get_course($mod->course); + $newcm = duplicate_module($course, $cm); + $events = $sink->get_events(); + $event = array_pop($events); + $sink->close(); + + // Validate event data. + $this->assertInstanceOf('\core\event\course_module_created', $event); + $this->assertEquals($newcm->id, $event->objectid); + $this->assertEquals($USER->id, $event->userid); + $this->assertEquals($course->id, $event->courseid); + $url = new moodle_url('/mod/assign/view.php', array('id' => $newcm->id)); + $this->assertEquals($url, $event->get_url()); } /** -- 2.43.0