mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 00:12:56 +02:00
MDL-65069 mod_forum: Remove unused code and additional dev docs.
Additional updates to setting default subscription value for discussions
This commit is contained in:
parent
2aff2c19a9
commit
cb28132dce
@ -49,7 +49,11 @@ class MoodleQuickForm_submit extends HTML_QuickForm_submit implements templatabl
|
||||
protected $primary;
|
||||
|
||||
/**
|
||||
* Any class apart from 'btn' would be override with this content
|
||||
* Any class apart from 'btn' would be overridden with this content.
|
||||
*
|
||||
* By default, submit buttons will utilize the btn-primary OR btn-secondary classes. However there are cases where we
|
||||
* require a submit button with different stylings (e.g. btn-link). In these cases, $customclassoverride will override
|
||||
* the defaults mentioned previously and utilize the provided class(es).
|
||||
*
|
||||
* @var string $customclassoverride Custom class override for the input element
|
||||
*/
|
||||
@ -62,8 +66,11 @@ class MoodleQuickForm_submit extends HTML_QuickForm_submit implements templatabl
|
||||
* @param string $value (optional) field label
|
||||
* @param string $attributes (optional) Either a typical HTML attribute string or an associative array
|
||||
* @param bool|null $primary Is this button a primary button?
|
||||
* @param array $options Options to further customise the submit button. Currently accepted options are:
|
||||
* customclassoverride String The CSS class to use for the button instead of the standard
|
||||
* btn-primary and btn-secondary classes.
|
||||
*/
|
||||
public function __construct($elementName=null, $value=null, $attributes=null, $primary = null) {
|
||||
public function __construct($elementName=null, $value=null, $attributes=null, $primary = null, $options = []) {
|
||||
parent::__construct($elementName, $value, $attributes);
|
||||
|
||||
// Fallback to legacy behaviour if no value specified.
|
||||
@ -73,11 +80,7 @@ class MoodleQuickForm_submit extends HTML_QuickForm_submit implements templatabl
|
||||
$this->primary = $primary;
|
||||
}
|
||||
|
||||
$class = $this->getAttribute('customclassoverride');
|
||||
if ($class) {
|
||||
$this->removeAttribute('customclassoverride');
|
||||
$this->customclassoverride = $class;
|
||||
}
|
||||
$this->customclassoverride = $options['customclassoverride'] ?? false;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -146,7 +149,7 @@ class MoodleQuickForm_submit extends HTML_QuickForm_submit implements templatabl
|
||||
}
|
||||
|
||||
if ($this->customclassoverride) {
|
||||
$context['customclass'] = $this->customclassoverride;
|
||||
$context['customclassoverride'] = $this->customclassoverride;
|
||||
}
|
||||
return $context;
|
||||
}
|
||||
|
@ -3,12 +3,12 @@
|
||||
{{^element.frozen}}
|
||||
<input type="submit"
|
||||
class="btn
|
||||
{{^element.customclass}}
|
||||
{{^element.customclassoverride}}
|
||||
{{^element.secondary}}btn-primary{{/element.secondary}}
|
||||
{{#element.secondary}}btn-secondary{{/element.secondary}}
|
||||
{{/element.customclass}}
|
||||
{{/element.customclassoverride}}
|
||||
{{#error}} btn-danger {{/error}}
|
||||
{{#element.customclass}}{{element.customclass}}{{/element.customclass}}"
|
||||
{{#element.customclassoverride}}{{element.customclassoverride}}{{/element.customclassoverride}}"
|
||||
name="{{element.name}}"
|
||||
id="{{element.id}}"
|
||||
value="{{element.value}}"
|
||||
|
@ -3,13 +3,13 @@
|
||||
{{^element.frozen}}
|
||||
<input type="submit"
|
||||
class="btn
|
||||
{{^element.customclass}}
|
||||
{{^element.customclassoverride}}
|
||||
{{^element.secondary}}btn-primary{{/element.secondary}}
|
||||
{{#element.secondary}}btn-secondary{{/element.secondary}}
|
||||
{{/element.customclass}}
|
||||
{{/element.customclassoverride}}
|
||||
{{#error}} btn-danger {{/error}}
|
||||
{{element.extraclasses}}
|
||||
{{#element.customclass}}{{element.customclass}}{{/element.customclass}}"
|
||||
{{#element.customclassoverride}}{{element.customclassoverride}}{{/element.customclassoverride}}"
|
||||
name="{{element.name}}"
|
||||
id="{{element.id}}"
|
||||
{{#error}}
|
||||
|
@ -41,6 +41,7 @@ is disabled).
|
||||
* New optional parameter $throwexception for \get_complete_user_data(). If true, an exception will be thrown when there's no
|
||||
matching record found or when there are multiple records found for the given field value. If false, it will simply return false.
|
||||
Defaults to false when not set.
|
||||
* Exposed submit button to allow custom styling (via customclassoverride variable) which can override btn-primary/btn-secondary classes
|
||||
|
||||
=== 3.6 ===
|
||||
|
||||
|
@ -203,8 +203,6 @@ class discussion_list {
|
||||
* @return string The rendered html
|
||||
*/
|
||||
private function get_discussion_form(stdClass $user, \cm_info $cm, ?int $groupid) {
|
||||
global $PAGE;
|
||||
|
||||
$forum = $this->forum;
|
||||
$forumrecord = $this->legacydatamapperfactory->get_forum_data_mapper()->to_legacy_object($forum);
|
||||
$modcontext = \context_module::instance($cm->id);
|
||||
@ -221,7 +219,7 @@ class discussion_list {
|
||||
'messagetrust' => 0,
|
||||
'groupid' => $groupid,
|
||||
];
|
||||
$thresholdwarning = forum_check_throttling($forum, $cm);
|
||||
$thresholdwarning = forum_check_throttling($forumrecord, $cm);
|
||||
|
||||
$formparams = array(
|
||||
'course' => $forum->get_course_record(),
|
||||
@ -237,6 +235,7 @@ class discussion_list {
|
||||
'edit' => 0
|
||||
);
|
||||
$mformpost = new \mod_forum_post_form('post.php', $formparams, 'post', '', array('id' => 'mformforum'));
|
||||
$discussionsubscribe = \mod_forum\subscriptions::get_user_default_subscription($forumrecord, $coursecontext, $cm, null);
|
||||
|
||||
$params = array('reply' => 0, 'forum' => $forumrecord->id, 'edit' => 0) +
|
||||
(isset($post->groupid) ? array('groupid' => $post->groupid) : array()) +
|
||||
@ -244,7 +243,8 @@ class discussion_list {
|
||||
'userid' => $post->userid,
|
||||
'parent' => $post->parent,
|
||||
'discussion' => $post->discussion,
|
||||
'course' => $forum->get_course_id()
|
||||
'course' => $forum->get_course_id(),
|
||||
'discussionsubscribe' => $discussionsubscribe
|
||||
);
|
||||
$mformpost->set_data($params);
|
||||
|
||||
|
@ -95,9 +95,9 @@ class mod_forum_post_form extends moodleform {
|
||||
$thresholdwarning = $this->_customdata['thresholdwarning'];
|
||||
$canreplyprivately = array_key_exists('canreplyprivately', $this->_customdata) ?
|
||||
$this->_customdata['canreplyprivately'] : false;
|
||||
$stripped = isset($this->_customdata['inpagereply']) ? $this->_customdata['inpagereply'] : false;
|
||||
$inpagereply = $this->_customdata['inpagereply'] ?? false;
|
||||
|
||||
if (!$stripped) {
|
||||
if (!$inpagereply) {
|
||||
// Fill in the data depending on page params later using set_data.
|
||||
$mform->addElement('header', 'general', '');
|
||||
}
|
||||
@ -120,23 +120,23 @@ class mod_forum_post_form extends moodleform {
|
||||
$mform->setType('message', PARAM_RAW);
|
||||
$mform->addRule('message', get_string('required'), 'required', null, 'client');
|
||||
|
||||
if (!$stripped) {
|
||||
if (!$inpagereply) {
|
||||
$manageactivities = has_capability('moodle/course:manageactivities', $coursecontext);
|
||||
|
||||
if (\mod_forum\subscriptions::is_forcesubscribed($forum)) {
|
||||
$mform->addElement('advcheckbox', 'discussionsubscribe', get_string('discussionsubscription', 'forum'));
|
||||
$mform->addElement('checkbox', 'discussionsubscribe', get_string('discussionsubscription', 'forum'));
|
||||
$mform->freeze('discussionsubscribe');
|
||||
$mform->setDefaults('discussionsubscribe', 0);
|
||||
$mform->addHelpButton('discussionsubscribe', 'forcesubscribed', 'forum');
|
||||
|
||||
} else if (\mod_forum\subscriptions::subscription_disabled($forum) && !$manageactivities) {
|
||||
$mform->addElement('advcheckbox', 'discussionsubscribe', get_string('discussionsubscription', 'forum'));
|
||||
$mform->addElement('checkbox', 'discussionsubscribe', get_string('discussionsubscription', 'forum'));
|
||||
$mform->freeze('discussionsubscribe');
|
||||
$mform->setDefaults('discussionsubscribe', 0);
|
||||
$mform->addHelpButton('discussionsubscribe', 'disallowsubscription', 'forum');
|
||||
|
||||
} else {
|
||||
$mform->addElement('advcheckbox', 'discussionsubscribe', get_string('discussionsubscription', 'forum'));
|
||||
$mform->addElement('checkbox', 'discussionsubscribe', get_string('discussionsubscription', 'forum'));
|
||||
$mform->addHelpButton('discussionsubscribe', 'discussionsubscription', 'forum');
|
||||
}
|
||||
|
||||
@ -168,80 +168,76 @@ class mod_forum_post_form extends moodleform {
|
||||
$mform->addElement('checkbox', 'mailnow', get_string('mailnow', 'forum'));
|
||||
}
|
||||
|
||||
if ($groupmode = groups_get_activity_groupmode($cm, $course)) {
|
||||
$groupdata = groups_get_activity_allowed_groups($cm);
|
||||
|
||||
$groupinfo = array();
|
||||
foreach ($groupdata as $groupid => $group) {
|
||||
// Check whether this user can post in this group.
|
||||
// We must make this check because all groups are returned for a visible grouped activity.
|
||||
if (forum_user_can_post_discussion($forum, $groupid, null, $cm, $modcontext)) {
|
||||
// Build the data for the groupinfo select.
|
||||
$groupinfo[$groupid] = $group->name;
|
||||
} else {
|
||||
unset($groupdata[$groupid]);
|
||||
}
|
||||
}
|
||||
$groupcount = count($groupinfo);
|
||||
|
||||
// Check whether a user can post to all of their own groups.
|
||||
|
||||
// Posts to all of my groups are copied to each group that the user is a member of. Certain conditions must be met.
|
||||
// 1) It only makes sense to allow this when a user is in more than one group.
|
||||
// Note: This check must come before we consider adding accessallgroups, because that is not a real group.
|
||||
$canposttoowngroups = empty($post->edit) && $groupcount > 1;
|
||||
|
||||
// 2) Important: You can *only* post to multiple groups for a top level post. Never any reply.
|
||||
$canposttoowngroups = $canposttoowngroups && empty($post->parent);
|
||||
|
||||
// 3) You also need the canposttoowngroups capability.
|
||||
$canposttoowngroups = $canposttoowngroups && has_capability('mod/forum:canposttomygroups', $modcontext);
|
||||
if ($canposttoowngroups) {
|
||||
// This user is in multiple groups, and can post to all of their own groups.
|
||||
// Note: This is not the same as accessallgroups. This option will copy a post to all groups that a
|
||||
// user is a member of.
|
||||
$mform->addElement('checkbox', 'posttomygroups', get_string('posttomygroups', 'forum'));
|
||||
$mform->addHelpButton('posttomygroups', 'posttomygroups', 'forum');
|
||||
$mform->disabledIf('groupinfo', 'posttomygroups', 'checked');
|
||||
}
|
||||
|
||||
// Check whether this user can post to all groups.
|
||||
// Posts to the 'All participants' group go to all groups, not to each group in a list.
|
||||
// It makes sense to allow this, even if there currently aren't any groups because there may be in the future.
|
||||
if (forum_user_can_post_discussion($forum, -1, null, $cm, $modcontext)) {
|
||||
// Note: We must reverse in this manner because array_unshift renumbers the array.
|
||||
$groupinfo = array_reverse($groupinfo, true);
|
||||
$groupinfo[-1] = get_string('allparticipants');
|
||||
$groupinfo = array_reverse($groupinfo, true);
|
||||
$groupcount++;
|
||||
}
|
||||
|
||||
// Determine whether the user can select a group from the dropdown. The dropdown is available for several reasons.
|
||||
// 1) This is a new post (not an edit), and there are at least two groups to choose from.
|
||||
$canselectgroupfornew = empty($post->edit) && $groupcount > 1;
|
||||
|
||||
// 2) This is editing of an existing post and the user is allowed to movediscussions.
|
||||
// We allow this because the post may have been moved from another forum where groups are not available.
|
||||
// We show this even if no groups are available as groups *may* have been available but now are not.
|
||||
$canselectgroupformove =
|
||||
$groupcount && !empty($post->edit) && has_capability('mod/forum:movediscussions', $modcontext);
|
||||
|
||||
// Important: You can *only* change the group for a top level post. Never any reply.
|
||||
$canselectgroup = empty($post->parent) && ($canselectgroupfornew || $canselectgroupformove);
|
||||
|
||||
if ($canselectgroup) {
|
||||
$mform->addElement('select', 'groupinfo', get_string('group'), $groupinfo);
|
||||
$mform->setDefault('groupinfo', $post->groupid);
|
||||
$mform->setType('groupinfo', PARAM_INT);
|
||||
$groupinfo = array();
|
||||
foreach ($groupdata as $groupid => $group) {
|
||||
// Check whether this user can post in this group.
|
||||
// We must make this check because all groups are returned for a visible grouped activity.
|
||||
if (forum_user_can_post_discussion($forum, $groupid, null, $cm, $modcontext)) {
|
||||
// Build the data for the groupinfo select.
|
||||
$groupinfo[$groupid] = $group->name;
|
||||
} else {
|
||||
if (empty($post->groupid)) {
|
||||
$groupname = get_string('allparticipants');
|
||||
} else {
|
||||
$groupname = format_string($groupdata[$post->groupid]->name);
|
||||
}
|
||||
$mform->addElement('static', 'groupinfo', get_string('group'), $groupname);
|
||||
unset($groupdata[$groupid]);
|
||||
}
|
||||
}
|
||||
$groupcount = count($groupinfo);
|
||||
|
||||
// Check whether a user can post to all of their own groups.
|
||||
|
||||
// Posts to all of my groups are copied to each group that the user is a member of. Certain conditions must be met.
|
||||
// 1) It only makes sense to allow this when a user is in more than one group.
|
||||
// Note: This check must come before we consider adding accessallgroups, because that is not a real group.
|
||||
$canposttoowngroups = empty($post->edit) && $groupcount > 1;
|
||||
|
||||
// 2) Important: You can *only* post to multiple groups for a top level post. Never any reply.
|
||||
$canposttoowngroups = $canposttoowngroups && empty($post->parent);
|
||||
|
||||
// 3) You also need the canposttoowngroups capability.
|
||||
$canposttoowngroups = $canposttoowngroups && has_capability('mod/forum:canposttomygroups', $modcontext);
|
||||
if ($canposttoowngroups) {
|
||||
// This user is in multiple groups, and can post to all of their own groups.
|
||||
// Note: This is not the same as accessallgroups. This option will copy a post to all groups that a
|
||||
// user is a member of.
|
||||
$mform->addElement('checkbox', 'posttomygroups', get_string('posttomygroups', 'forum'));
|
||||
$mform->addHelpButton('posttomygroups', 'posttomygroups', 'forum');
|
||||
$mform->disabledIf('groupinfo', 'posttomygroups', 'checked');
|
||||
}
|
||||
|
||||
// Check whether this user can post to all groups.
|
||||
// Posts to the 'All participants' group go to all groups, not to each group in a list.
|
||||
// It makes sense to allow this, even if there currently aren't any groups because there may be in the future.
|
||||
if (forum_user_can_post_discussion($forum, -1, null, $cm, $modcontext)) {
|
||||
// Note: We must reverse in this manner because array_unshift renumbers the array.
|
||||
$groupinfo = array_reverse($groupinfo, true);
|
||||
$groupinfo[-1] = get_string('allparticipants');
|
||||
$groupinfo = array_reverse($groupinfo, true);
|
||||
$groupcount++;
|
||||
}
|
||||
|
||||
// Determine whether the user can select a group from the dropdown. The dropdown is available for several reasons.
|
||||
// 1) This is a new post (not an edit), and there are at least two groups to choose from.
|
||||
$canselectgroupfornew = empty($post->edit) && $groupcount > 1;
|
||||
|
||||
// 2) This is editing of an existing post and the user is allowed to movediscussions.
|
||||
// We allow this because the post may have been moved from another forum where groups are not available.
|
||||
// We show this even if no groups are available as groups *may* have been available but now are not.
|
||||
$canselectgroupformove =
|
||||
$groupcount && !empty($post->edit) && has_capability('mod/forum:movediscussions', $modcontext);
|
||||
|
||||
// Important: You can *only* change the group for a top level post. Never any reply.
|
||||
$canselectgroup = empty($post->parent) && ($canselectgroupfornew || $canselectgroupformove);
|
||||
|
||||
if ($canselectgroup) {
|
||||
$mform->addElement('select', 'groupinfo', get_string('group'), $groupinfo);
|
||||
$mform->setDefault('groupinfo', $post->groupid);
|
||||
$mform->setType('groupinfo', PARAM_INT);
|
||||
} else {
|
||||
if (empty($post->groupid)) {
|
||||
$groupname = get_string('allparticipants');
|
||||
} else {
|
||||
$groupname = format_string($groupdata[$post->groupid]->name);
|
||||
}
|
||||
$mform->addElement('static', 'groupinfo', get_string('group'), $groupname);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($CFG->forum_enabletimedposts) && !$post->parent &&
|
||||
@ -284,7 +280,10 @@ class mod_forum_post_form extends moodleform {
|
||||
$mform->registerNoSubmitButton('advancedadddiscussion');
|
||||
|
||||
// This is an inpage add discussion which requires custom buttons.
|
||||
if ($stripped) {
|
||||
if ($inpagereply) {
|
||||
$mform->addElement('hidden', 'discussionsubscribe');
|
||||
$mform->setType('discussionsubscribe', PARAM_INT);
|
||||
$mform->disable_form_change_checker();
|
||||
$buttonarray = array();
|
||||
$buttonarray[] = &$mform->createElement('submit', 'submitbutton', $submitstring);
|
||||
$buttonarray[] = &$mform->createElement('button', 'cancelbtn',
|
||||
@ -292,7 +291,7 @@ class mod_forum_post_form extends moodleform {
|
||||
// Additional attribs to handle collapsible div.
|
||||
['data-toggle' => 'collapse', 'data-target' => "#collapseAddForm"]);
|
||||
$buttonarray[] = &$mform->createElement('submit', 'advancedadddiscussion',
|
||||
get_string('advanced'), ['customclassoverride' => 'btn-link']);
|
||||
get_string('advanced'), null, null, ['customclassoverride' => 'btn-link']);
|
||||
|
||||
$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
|
||||
$mform->closeHeaderBefore('buttonar');
|
||||
|
@ -825,4 +825,38 @@ class subscriptions {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the default subscription value for the logged in user.
|
||||
*
|
||||
* @param \stdClass $forum The forum record
|
||||
* @param \context $context The course context
|
||||
* @param \cm_info $cm cm_info
|
||||
* @param int|null $discussionid The discussion we are checking against
|
||||
* @return bool Default subscription
|
||||
* @throws coding_exception
|
||||
*/
|
||||
public static function get_user_default_subscription($forum, $context, $cm, ?int $discussionid) {
|
||||
global $USER;
|
||||
$manageactivities = has_capability('moodle/course:manageactivities', $context);
|
||||
if (\mod_forum\subscriptions::subscription_disabled($forum) && !$manageactivities) {
|
||||
// User does not have permission to subscribe to this discussion at all.
|
||||
$discussionsubscribe = false;
|
||||
} else if (\mod_forum\subscriptions::is_forcesubscribed($forum)) {
|
||||
// User does not have permission to unsubscribe from this discussion at all.
|
||||
$discussionsubscribe = true;
|
||||
} else {
|
||||
if (isset($discussion) && \mod_forum\subscriptions::is_subscribed($USER->id, $forum, $discussionid, $cm)) {
|
||||
// User is subscribed to the discussion - continue the subscription.
|
||||
$discussionsubscribe = true;
|
||||
} else if (!isset($discussionid) && \mod_forum\subscriptions::is_subscribed($USER->id, $forum, null, $cm)) {
|
||||
// Starting a new discussion, and the user is subscribed to the forum - subscribe to the discussion.
|
||||
$discussionsubscribe = true;
|
||||
} else {
|
||||
// User is not subscribed to either forum or discussion. Follow user preference.
|
||||
$discussionsubscribe = $USER->autosubscribe ?? false;
|
||||
}
|
||||
}
|
||||
|
||||
return $discussionsubscribe;
|
||||
}
|
||||
}
|
||||
|
@ -720,26 +720,8 @@ $postid = empty($post->id) ? null : $post->id;
|
||||
$draftideditor = file_get_submitted_draft_itemid('message');
|
||||
$editoropts = mod_forum_post_form::editor_options($modcontext, $postid);
|
||||
$currenttext = file_prepare_draft_area($draftideditor, $modcontext->id, 'mod_forum', 'post', $postid, $editoropts, $post->message);
|
||||
|
||||
$manageactivities = has_capability('moodle/course:manageactivities', $coursecontext);
|
||||
if (\mod_forum\subscriptions::subscription_disabled($forum) && !$manageactivities) {
|
||||
// User does not have permission to subscribe to this discussion at all.
|
||||
$discussionsubscribe = false;
|
||||
} else if (\mod_forum\subscriptions::is_forcesubscribed($forum)) {
|
||||
// User does not have permission to unsubscribe from this discussion at all.
|
||||
$discussionsubscribe = true;
|
||||
} else {
|
||||
if (isset($discussion) && \mod_forum\subscriptions::is_subscribed($USER->id, $forum, $discussion->id, $cm)) {
|
||||
// User is subscribed to the discussion - continue the subscription.
|
||||
$discussionsubscribe = true;
|
||||
} else if (!isset($discussion) && \mod_forum\subscriptions::is_subscribed($USER->id, $forum, null, $cm)) {
|
||||
// Starting a new discussion, and the user is subscribed to the forum - subscribe to the discussion.
|
||||
$discussionsubscribe = true;
|
||||
} else {
|
||||
// User is not subscribed to either forum or discussion. Follow user preference.
|
||||
$discussionsubscribe = $USER->autosubscribe;
|
||||
}
|
||||
}
|
||||
$discussionid = isset($discussion) ? $discussion->id : null;
|
||||
$discussionsubscribe = \mod_forum\subscriptions::get_user_default_subscription($forum, $coursecontext, $cm, $discussionid);
|
||||
|
||||
$mformpost->set_data(
|
||||
array(
|
||||
|
@ -1378,4 +1378,48 @@ class mod_forum_subscriptions_testcase extends advanced_testcase {
|
||||
|
||||
$this->assertEquals($expect, \mod_forum\subscriptions::is_subscribable($forum));
|
||||
}
|
||||
|
||||
public function test_get_user_default_subscription() {
|
||||
global $DB;
|
||||
$this->resetAfterTest(true);
|
||||
|
||||
// Create a course, with a forum.
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$context = \context_course::instance($course->id);
|
||||
$options['course'] = $course->id;
|
||||
$forum = $this->getDataGenerator()->create_module('forum', $options);
|
||||
$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id);
|
||||
|
||||
// Create a user enrolled in the course as a student.
|
||||
list($author, $student) = $this->helper_create_users($course, 2, 'student');
|
||||
// Post a discussion to the forum.
|
||||
list($discussion, $post) = $this->helper_post_to_forum($forum, $author);
|
||||
|
||||
// A guest user.
|
||||
$this->setUser(0);
|
||||
$this->assertFalse((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, $discussion->id));
|
||||
$this->assertFalse((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, null));
|
||||
|
||||
// A user enrolled in the course.
|
||||
$this->setUser($author->id);
|
||||
$this->assertTrue((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, $discussion->id));
|
||||
$this->assertTrue((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, null));
|
||||
|
||||
// Subscribption disabled.
|
||||
$this->setUser($student->id);
|
||||
\mod_forum\subscriptions::set_subscription_mode($forum->id, FORUM_DISALLOWSUBSCRIBE);
|
||||
$forum = $DB->get_record('forum', array('id' => $forum->id));
|
||||
$this->assertFalse((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, $discussion->id));
|
||||
$this->assertFalse((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, null));
|
||||
|
||||
\mod_forum\subscriptions::set_subscription_mode($forum->id, FORUM_FORCESUBSCRIBE);
|
||||
$forum = $DB->get_record('forum', array('id' => $forum->id));
|
||||
$this->assertTrue((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, $discussion->id));
|
||||
$this->assertTrue((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, null));
|
||||
|
||||
// Admin user.
|
||||
$this->setAdminUser();
|
||||
$this->assertTrue((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, $discussion->id));
|
||||
$this->assertTrue((boolean)\mod_forum\subscriptions::get_user_default_subscription($forum, $context, $cm, null));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user