diff --git a/lang/en/moodle.php b/lang/en/moodle.php index 213b717754b..61b401a8855 100644 --- a/lang/en/moodle.php +++ b/lang/en/moodle.php @@ -659,6 +659,7 @@ $string['errorcreatingactivity'] = 'Unable to create an instance of activity \'{ $string['errorfiletoobig'] = 'The file was bigger than the limit of {$a} bytes'; $string['errornouploadrepo'] = 'There is no upload repository enabled for this site'; $string['errorwhenconfirming'] = 'You are not confirmed yet because an error occurred. If you clicked on a link in an email to get here, make sure that the line in your email wasn\'t broken or wrapped. You may have to use cut and paste to reconstruct the link properly.'; +$string['eventcoursecontentdeleted'] = 'Course content deleted'; $string['eventcoursecreated'] = 'Course created'; $string['eventcoursedeleted'] = 'Course deleted'; $string['eventcourseupdated'] = 'Course updated'; diff --git a/lib/classes/event/course_content_deleted.php b/lib/classes/event/course_content_deleted.php new file mode 100644 index 00000000000..4587583621b --- /dev/null +++ b/lib/classes/event/course_content_deleted.php @@ -0,0 +1,76 @@ +. + +namespace core\event; + +/** + * Course content_deleted event. + * + * @package core + * @copyright 2013 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class course_content_deleted extends base { + + /** + * Initialise the event data. + */ + protected function init() { + $this->data['objecttable'] = 'course'; + $this->data['crud'] = 'd'; + $this->data['level'] = 50; + } + + /** + * Returns localised general event name. + * + * @return string + */ + public static function get_name() { + return get_string('eventcoursecontentdeleted'); + } + + /** + * Returns non-localised description of what happened. + * + * @return string + */ + public function get_description() { + return "Course content was deleted by user {$this->userid}"; + } + + /** + * Returns the name of the legacy event. + * + * @return string legacy event name + */ + public static function get_legacy_eventname() { + return 'course_content_removed'; + } + + /** + * Returns the legacy event data. + * + * @return \stdClass the course the content was deleted from + */ + protected function get_legacy_eventdata() { + $course = $this->get_record_snapshot('course', $this->objectid); + $course->context = $this->context; + $course->options = $this->other['options']; + + return $course; + } +} diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 001289c7ae3..8fd04b3581c 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -4893,6 +4893,7 @@ function delete_course($courseorid, $showfeedback = true) { */ function remove_course_contents($courseid, $showfeedback = true, array $options = null) { global $CFG, $DB, $OUTPUT; + require_once($CFG->libdir.'/badgeslib.php'); require_once($CFG->libdir.'/completionlib.php'); require_once($CFG->libdir.'/questionlib.php'); @@ -5132,10 +5133,16 @@ function remove_course_contents($courseid, $showfeedback = true, array $options // also some non-standard unsupported plugins may try to store something there. fulldelete($CFG->dataroot.'/'.$course->id); - // Finally trigger the event. - $course->context = $coursecontext; // You can not access context in cron event later after course is deleted. - $course->options = $options; // Not empty if we used any crazy hack. - events_trigger('course_content_removed', $course); + // Trigger a course content deleted event. + $event = \core\event\course_content_deleted::create(array( + 'objectid' => $course->id, + 'context' => $coursecontext, + 'other' => array('shortname' => $course->shortname, + 'fullname' => $course->fullname, + 'options' => $options) // Passing this for legacy reasons. + )); + $event->add_record_snapshot('course', $course); + $event->trigger(); return true; }