$modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); // Cached already
+
if ($users = forum_subscribed_users($course, $forum, 0, true)) {
+ mtrace('Found '.count($users).' subscribed users for forum '.$forum->id);
+
$mailcount=0;
$errorcount=0;
+
foreach ($users as $userto) {
if ($groupmode) { // Look for a reason not to send this email
if (!empty($group->id)) {
// make sure we're allowed to see it...
if (!forum_user_can_see_post($forum, $discussion, $post, $userto)) {
+ mtrace('user '.$userto->id. ' can not see '.$post->id);
continue;
}
$USER = $userto;
course_setup($course);
+ mtrace('Sending post '.$post->id. ' to user '.$userto->id. '...', '');
+
$postsubject = "$course->shortname: ".format_string($post->subject,true);
$posttext = forum_make_mail_text($course, $forum, $discussion, $post, $userfrom, $userto);
$posthtml = forum_make_mail_html($course, $forum, $discussion, $post, $userfrom, $userto);
}
}
}
+
+ mtrace(' sent.');
}
mtrace(".... mailed to $mailcount users.");
$strforums = get_string('forums', 'forum');
$canreply = forum_user_can_post($forum, $userto);
- $canunsubscribe = ! forum_is_forcesubscribed($forum->id);
+ $canunsubscribe = ! $forum->forcesubscribe;
$posthtml = '<head>';
foreach ($CFG->stylesheets as $stylesheet) {
return record_exists('forum_posts','discussion',$did,'userid',$userid);
}
-function forum_user_can_post_discussion($forum, $currentgroup=false, $groupmode='') {
+function forum_user_can_post_discussion($forum, $currentgroup=false, $groupmode=false, $cm=NULL, $context=NULL) {
// $forum is an object
global $USER, $SESSION;
- if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course)) {
- error('Course Module ID was incorrect');
+ if (!$cm) {
+ if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course)) {
+ error('Course Module ID was incorrect');
+ }
+ }
+ if (!$context) {
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
}
- $context = get_context_instance(CONTEXT_MODULE, $cm->id);
if (!has_capability('mod/forum:startdiscussion', $context)) {
return false;
* @param $forum - forum object
* @param $user - user object
*/
-function forum_user_can_post($forum, $user=NULL) {
+function forum_user_can_post($forum, $user=NULL, $cm=NULL, $context=NULL) {
- if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course)) {
- error('Course Module ID was incorrect');
+ if (!$cm) {
+ if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $forum->course)) {
+ error('Course Module ID was incorrect');
+ }
+ }
+ if (!$context) {
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
}
- $context = get_context_instance(CONTEXT_MODULE, $cm->id);
if (isset($user)) {
$canreply = has_capability('mod/forum:replypost', $context, $user->id, false)
/// First check the group stuff
if ($groupmode == -1) { /// We need to reconstruct groupmode because none was given
- if ($cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) {
- $groupmode = groupmode($course, $cm);
- } else {
- $groupmode = SEPARATEGROUPS;
- }
+ $groupmode = groupmode($course, $cm); // Works even if $cm is not valid
}
if ($currentgroup == -1) { /// We need to reconstruct currentgroup because none was given
/// button for it. We do not show the button if we are showing site news
/// and the current user is a guest.
- // TODO: Add group mode in there, to test for visible group.
- if (forum_user_can_post_discussion($forum, $currentgroup, $groupmode)) {
+ if (forum_user_can_post_discussion($forum, $currentgroup, $groupmode, $cm, $context) ||
+ ($forum->type != 'news' && has_capability('moodle/legacy:guest', $context, NULL, false)) ) {
echo '<div class="singlebutton forumaddnew">';
echo "<form id=\"newdiscussionform\" method=\"get\" action=\"$CFG->wwwroot/mod/forum/post.php\">";