MDL-39957 course: replaced the course_content_deleted legacy event

This commit is contained in:
Mark Nelson
2013-08-15 18:14:08 +08:00
parent bc3c5b222a
commit db53f7fe28
3 changed files with 88 additions and 4 deletions
+1
View File
@@ -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';
@@ -0,0 +1,76 @@
<?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/>.
namespace core\event;
/**
* Course content_deleted event.
*
* @package core
* @copyright 2013 Mark Nelson <[email protected]>
* @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;
}
}
+11 -4
View File
@@ -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;
}