Merge branch 'MDL-45075-master' of git://github.com/andrewnicols/moodle
This commit is contained in:
@@ -91,4 +91,22 @@ class mod_forum_observer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Observer for \core\event\course_module_created event.
|
||||
*
|
||||
* @param \core\event\course_module_created $event
|
||||
* @return void
|
||||
*/
|
||||
public static function course_module_created(\core\event\course_module_created $event) {
|
||||
global $CFG;
|
||||
|
||||
if ($event->other['modulename'] === 'forum') {
|
||||
// Include the forum library to make use of the forum_instance_created function.
|
||||
require_once($CFG->dirroot . '/mod/forum/lib.php');
|
||||
|
||||
$forum = $event->get_record_snapshot('forum', $event->other['instanceid']);
|
||||
forum_instance_created($event->get_context(), $forum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,4 +35,9 @@ $observers = array(
|
||||
'eventname' => '\core\event\role_assigned',
|
||||
'callback' => 'mod_forum_observer::role_assigned'
|
||||
),
|
||||
|
||||
array(
|
||||
'eventname' => '\core\event\course_module_created',
|
||||
'callback' => 'mod_forum_observer::course_module_created',
|
||||
),
|
||||
);
|
||||
|
||||
+16
-7
@@ -126,18 +126,27 @@ function forum_add_instance($forum, $mform = null) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($forum->forcesubscribe == FORUM_INITIALSUBSCRIBE) {
|
||||
$users = forum_get_potential_subscribers($modcontext, 0, 'u.id, u.email');
|
||||
foreach ($users as $user) {
|
||||
forum_subscribe($user->id, $forum->id);
|
||||
}
|
||||
}
|
||||
|
||||
forum_grade_item_update($forum);
|
||||
|
||||
return $forum->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle changes following the creation of a forum instance.
|
||||
* This function is typically called by the course_module_created observer.
|
||||
*
|
||||
* @param object $context the forum context
|
||||
* @param stdClass $forum The forum object
|
||||
* @return void
|
||||
*/
|
||||
function forum_instance_created($context, $forum) {
|
||||
if ($forum->forcesubscribe == FORUM_INITIALSUBSCRIBE) {
|
||||
$users = forum_get_potential_subscribers($context, 0, 'u.id, u.email');
|
||||
foreach ($users as $user) {
|
||||
forum_subscribe($user->id, $forum->id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given an object containing all the necessary data,
|
||||
|
||||
@@ -575,4 +575,118 @@ class mod_forum_lib_testcase extends advanced_testcase {
|
||||
$this->assertEquals(true, isset($result[$forumoptional->id]));
|
||||
$this->assertEquals(true, isset($result[$forumforce->id]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test subscription using automatic subscription on create.
|
||||
*/
|
||||
public function test_forum_auto_subscribe_on_create() {
|
||||
global $CFG;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
$usercount = 5;
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$users = array();
|
||||
|
||||
for ($i = 0; $i < $usercount; $i++) {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$users[] = $user;
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course->id);
|
||||
}
|
||||
|
||||
$options = array('course' => $course->id, 'forcesubscribe' => FORUM_INITIALSUBSCRIBE); // Automatic Subscription.
|
||||
$forum = $this->getDataGenerator()->create_module('forum', $options);
|
||||
|
||||
$result = forum_subscribed_users($course, $forum);
|
||||
$this->assertEquals($usercount, count($result));
|
||||
foreach ($users as $user) {
|
||||
$this->assertTrue(forum_is_subscribed($user->id, $forum));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test subscription using forced subscription on create.
|
||||
*/
|
||||
public function test_forum_forced_subscribe_on_create() {
|
||||
global $CFG;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
$usercount = 5;
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$users = array();
|
||||
|
||||
for ($i = 0; $i < $usercount; $i++) {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$users[] = $user;
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course->id);
|
||||
}
|
||||
|
||||
$options = array('course' => $course->id, 'forcesubscribe' => FORUM_FORCESUBSCRIBE); // Forced subscription.
|
||||
$forum = $this->getDataGenerator()->create_module('forum', $options);
|
||||
|
||||
$result = forum_subscribed_users($course, $forum);
|
||||
$this->assertEquals($usercount, count($result));
|
||||
foreach ($users as $user) {
|
||||
$this->assertTrue(forum_is_subscribed($user->id, $forum));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test subscription using optional subscription on create.
|
||||
*/
|
||||
public function test_forum_optional_subscribe_on_create() {
|
||||
global $CFG;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
$usercount = 5;
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$users = array();
|
||||
|
||||
for ($i = 0; $i < $usercount; $i++) {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$users[] = $user;
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course->id);
|
||||
}
|
||||
|
||||
$options = array('course' => $course->id, 'forcesubscribe' => FORUM_CHOOSESUBSCRIBE); // Subscription optional.
|
||||
$forum = $this->getDataGenerator()->create_module('forum', $options);
|
||||
|
||||
$result = forum_subscribed_users($course, $forum);
|
||||
// No subscriptions by default.
|
||||
$this->assertEquals(0, count($result));
|
||||
foreach ($users as $user) {
|
||||
$this->assertFalse(forum_is_subscribed($user->id, $forum));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test subscription using disallow subscription on create.
|
||||
*/
|
||||
public function test_forum_disallow_subscribe_on_create() {
|
||||
global $CFG;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
$usercount = 5;
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$users = array();
|
||||
|
||||
for ($i = 0; $i < $usercount; $i++) {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$users[] = $user;
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course->id);
|
||||
}
|
||||
|
||||
$options = array('course' => $course->id, 'forcesubscribe' => FORUM_DISALLOWSUBSCRIBE); // Subscription prevented.
|
||||
$forum = $this->getDataGenerator()->create_module('forum', $options);
|
||||
|
||||
$result = forum_subscribed_users($course, $forum);
|
||||
// No subscriptions by default.
|
||||
$this->assertEquals(0, count($result));
|
||||
foreach ($users as $user) {
|
||||
$this->assertFalse(forum_is_subscribed($user->id, $forum));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->version = 2014040400; // The current module version (Date: YYYYMMDDXX)
|
||||
$plugin->version = 2014042200; // The current module version (Date: YYYYMMDDXX)
|
||||
$plugin->requires = 2013110500; // Requires this Moodle version
|
||||
$plugin->component = 'mod_forum'; // Full name of the plugin (used for diagnostics)
|
||||
$plugin->cron = 60;
|
||||
|
||||
Reference in New Issue
Block a user