mirror of
https://github.com/moodle/moodle.git
synced 2025-08-09 19:06:41 +02:00
Merge branch 'MDL-39883-27' of git://github.com/ankitagarwal/moodle into MOODLE_27_STABLE
This commit is contained in:
commit
e5b111f26b
6 changed files with 66 additions and 23 deletions
|
@ -648,16 +648,7 @@ class dndupload_ajax_processor {
|
|||
$mod = $info->get_cm($this->cm->id);
|
||||
|
||||
// Trigger course module created event.
|
||||
$event = \core\event\course_module_created::create(array(
|
||||
'courseid' => $this->course->id,
|
||||
'context' => context_module::instance($mod->id),
|
||||
'objectid' => $mod->id,
|
||||
'other' => array(
|
||||
'modulename' => $mod->modname,
|
||||
'name' => $mod->name,
|
||||
'instanceid' => $instanceid
|
||||
)
|
||||
));
|
||||
$event = \core\event\course_module_created::create_from_cm($mod);
|
||||
$event->trigger();
|
||||
|
||||
$this->send_response($mod);
|
||||
|
|
|
@ -3497,6 +3497,10 @@ function mod_duplicate_activity($course, $cm, $sr = null) {
|
|||
$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);
|
||||
|
||||
|
|
|
@ -120,6 +120,10 @@ if ($newcmid) {
|
|||
$newcm = get_coursemodule_from_id('', $newcmid, $course->id, true, MUST_EXIST);
|
||||
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();
|
||||
}
|
||||
|
||||
$rc->destroy();
|
||||
|
|
|
@ -148,16 +148,11 @@ function add_moduleinfo($moduleinfo, $course, $mform = null) {
|
|||
$sectionid = course_add_cm_to_section($course, $moduleinfo->coursemodule, $moduleinfo->section);
|
||||
|
||||
// Trigger event based on the action we did.
|
||||
$event = \core\event\course_module_created::create(array(
|
||||
'courseid' => $course->id,
|
||||
'context' => $modcontext,
|
||||
'objectid' => $moduleinfo->coursemodule,
|
||||
'other' => array(
|
||||
'modulename' => $moduleinfo->modulename,
|
||||
'name' => $moduleinfo->name,
|
||||
'instanceid' => $moduleinfo->instance
|
||||
)
|
||||
));
|
||||
// Api create_from_cm expects modname and id property, and we don't want to modify $moduleinfo since we are returning it.
|
||||
$eventdata = clone $moduleinfo;
|
||||
$eventdata->modname = $eventdata->modulename;
|
||||
$eventdata->id = $eventdata->coursemodule;
|
||||
$event = \core\event\course_module_created::create_from_cm($eventdata, $modcontext);
|
||||
$event->trigger();
|
||||
|
||||
$moduleinfo = edit_module_post_actions($moduleinfo, $course);
|
||||
|
|
|
@ -1950,7 +1950,7 @@ class core_course_courselib_testcase extends advanced_testcase {
|
|||
* Tests for event related to course module creation.
|
||||
*/
|
||||
public function test_course_module_created_event() {
|
||||
global $USER, $DB;
|
||||
global $USER, $DB, $CFG;
|
||||
$this->resetAfterTest();
|
||||
|
||||
// Create an assign module.
|
||||
|
@ -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,27 @@ 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);
|
||||
|
||||
// Discard error logs.
|
||||
$oldlog = ini_get('error_log');
|
||||
ini_set('error_log', "$CFG->dataroot/testlog.log");
|
||||
$newcmhtml = mod_duplicate_activity($course, $cm);
|
||||
ini_set('error_log', $oldlog);
|
||||
|
||||
$events = $sink->get_events();
|
||||
$event = array_pop($events);
|
||||
$sink->close();
|
||||
|
||||
// Validate event data.
|
||||
$this->assertInstanceOf('\core\event\course_module_created', $event);
|
||||
$this->assertEquals($newcmhtml->cmid, $event->objectid);
|
||||
$this->assertEquals($USER->id, $event->userid);
|
||||
$this->assertEquals($course->id, $event->courseid);
|
||||
$url = new moodle_url('/mod/assign/view.php', array('id' => $newcmhtml->cmid));
|
||||
$this->assertEquals($url, $event->get_url());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -54,6 +54,35 @@ class course_module_created extends base {
|
|||
$this->data['edulevel'] = self::LEVEL_TEACHING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Api to Create new event from course module.
|
||||
*
|
||||
* @since Moodle 2.6.4, 2.7.1
|
||||
* @param \cm_info|\stdClass $cm course module instance, as returned by {@link get_coursemodule_from_id}
|
||||
* or {@link get_coursemodule_from_instance}.
|
||||
* @param \context_module $modcontext module context instance
|
||||
*
|
||||
* @return \core\event\base returns instance of new event
|
||||
*/
|
||||
public static final function create_from_cm($cm, $modcontext = null) {
|
||||
// If not set, get the module context.
|
||||
if (empty($modcontext)) {
|
||||
$modcontext = \context_module::instance($cm->id);
|
||||
}
|
||||
|
||||
// Create event object for course module update action.
|
||||
$event = static::create(array(
|
||||
'context' => $modcontext,
|
||||
'objectid' => $cm->id,
|
||||
'other' => array(
|
||||
'modulename' => $cm->modname,
|
||||
'instanceid' => $cm->instance,
|
||||
'name' => $cm->name,
|
||||
)
|
||||
));
|
||||
return $event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns localised general event name.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue