diff --git a/course/lib.php b/course/lib.php index 31f539c0a18..e73403cc88c 100644 --- a/course/lib.php +++ b/course/lib.php @@ -2229,7 +2229,7 @@ function course_overviewfiles_options($course) { * @return object new course instance */ function create_course($data, $editoroptions = NULL) { - global $CFG, $DB; + global $DB; //check the categoryid - must be given for all new courses $category = $DB->get_record('course_categories', array('id'=>$data->category), '*', MUST_EXIST); @@ -2304,10 +2304,15 @@ function create_course($data, $editoroptions = NULL) { // set up enrolments enrol_course_updated(true, $course, $data); - add_to_log(SITEID, 'course', 'new', 'view.php?id='.$course->id, $data->fullname.' (ID '.$course->id.')'); - - // Trigger events - events_trigger('course_created', $course); + // Trigger a course created event. + $event = \core\event\course_created::create(array( + 'objectid' => $course->id, + 'context' => context_course::instance($course->id), + 'other' => array('shortname' => $course->shortname, + 'fullname' => $course->fullname) + )); + $event->add_record_snapshot('course', $course); + $event->trigger(); return $course; } diff --git a/lang/en/moodle.php b/lang/en/moodle.php index fdbabdbea90..82e14b753fc 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['eventcoursecreated'] = 'Course created'; $string['everybody'] = 'Everybody'; $string['executeat'] = 'Execute at'; $string['existing'] = 'Existing'; diff --git a/lib/classes/event/course_created.php b/lib/classes/event/course_created.php new file mode 100644 index 00000000000..73c4599e1ca --- /dev/null +++ b/lib/classes/event/course_created.php @@ -0,0 +1,90 @@ +. + +namespace core\event; + +/** + * Course created event. + * + * @package core + * @copyright 2013 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class course_created extends base { + + /** + * Initialise the event data. + */ + protected function init() { + $this->data['objecttable'] = 'course'; + $this->data['crud'] = 'c'; + $this->data['level'] = 50; + } + + /** + * Returns localised general event name. + * + * @return string + */ + public static function get_name() { + return get_string('eventcoursecreated'); + } + + /** + * Returns non-localised description of what happened. + * + * @return string + */ + public function get_description() { + return "Course {$this->objectid} was created by user {$this->userid}"; + } + + /** + * Returns relevant URL. + * + * @return \moodle_url + */ + public function get_url() { + return new \moodle_url('/course/view.php', array('id' => $this->objectid)); + } + + /** + * Returns the name of the legacy event. + * + * @return string legacy event name + */ + public static function get_legacy_eventname() { + return 'course_created'; + } + + /** + * Returns the legacy event data. + * + * @return \stdClass the course that was created + */ + protected function get_legacy_eventdata() { + return $this->get_record_snapshot('course', $this->objectid); + } + + /** + * Return legacy data for add_to_log(). + * + * @return array + */ + protected function get_legacy_logdata() { + return array(SITEID, 'course', 'new', 'view.php?id=' . $this->objectid, $this->other['fullname'] . ' (ID ' . $this->objectid . ')'); + } +}