From 16076f1e3da16b0727ea90dbf4117ce2733d25c0 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 10 Nov 2016 13:51:02 +0800 Subject: [PATCH] MDL-56811 forum: Auto create the latest news forum When a course is created or updated, create a news forum if the newsitems setting is > 0. --- course/lib.php | 1 + mod/forum/classes/observer.php | 36 ++++++++++++++++++++++++++++++++++ mod/forum/db/events.php | 10 ++++++++++ mod/forum/version.php | 2 +- 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/course/lib.php b/course/lib.php index 8a03bcd8527..926c1ae1057 100644 --- a/course/lib.php +++ b/course/lib.php @@ -2337,6 +2337,7 @@ function create_course($data, $editoroptions = NULL) { 'other' => array('shortname' => $course->shortname, 'fullname' => $course->fullname) )); + $event->trigger(); // Setup the blocks diff --git a/mod/forum/classes/observer.php b/mod/forum/classes/observer.php index adfb4325252..ceac72c3fc6 100644 --- a/mod/forum/classes/observer.php +++ b/mod/forum/classes/observer.php @@ -113,4 +113,40 @@ class mod_forum_observer { forum_instance_created($event->get_context(), $forum); } } + + /** + * Observer for \core\event\course_created event. + * + * @param \core\event\course_created $event + * @return void + */ + public static function course_created(\core\event\course_created $event) { + global $CFG; + + $course = $event->get_record_snapshot('course', $event->objectid); + + if (!empty($course->newsitems)) { + require_once($CFG->dirroot . '/mod/forum/lib.php'); + // Auto create the announcements forum. + forum_get_course_forum($event->objectid, 'news'); + } + } + + /** + * Observer for \core\event\course_updated event. + * + * @param \core\event\course_updated $event + * @return void + */ + public static function course_updated(\core\event\course_updated $event) { + global $CFG; + + $course = $event->get_record_snapshot('course', $event->objectid); + + if (!empty($course->newsitems)) { + require_once($CFG->dirroot . '/mod/forum/lib.php'); + // Auto create the announcements forum. + forum_get_course_forum($event->objectid, 'news'); + } + } } diff --git a/mod/forum/db/events.php b/mod/forum/db/events.php index 764c66ed782..dacc2b7f4c8 100644 --- a/mod/forum/db/events.php +++ b/mod/forum/db/events.php @@ -40,4 +40,14 @@ $observers = array( 'eventname' => '\core\event\course_module_created', 'callback' => 'mod_forum_observer::course_module_created', ), + + array( + 'eventname' => '\core\event\course_created', + 'callback' => 'mod_forum_observer::course_created', + ), + + array( + 'eventname' => '\core\event\course_updated', + 'callback' => 'mod_forum_observer::course_updated', + ), ); diff --git a/mod/forum/version.php b/mod/forum/version.php index 09f78b36b62..232f87527f3 100644 --- a/mod/forum/version.php +++ b/mod/forum/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2016091201; // The current module version (Date: YYYYMMDDXX) +$plugin->version = 2016111000; // The current module version (Date: YYYYMMDDXX) $plugin->requires = 2016051900; // Requires this Moodle version $plugin->component = 'mod_forum'; // Full name of the plugin (used for diagnostics)