From: moodler Date: Tue, 6 Mar 2007 12:59:18 +0000 (+0000) Subject: Merged some forum fixes from stable MDL-8767 X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=918e9805c3d973a0f5b882bdc9b2ed7fe9b2abc7;p=moodle.git Merged some forum fixes from stable MDL-8767 --- diff --git a/mod/forum/lib.php b/mod/forum/lib.php index e2c0cc1f16..71400e7cb1 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -324,10 +324,14 @@ function forum_cron() { $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)) { @@ -341,6 +345,7 @@ function forum_cron() { // 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; } @@ -361,6 +366,8 @@ function forum_cron() { $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); @@ -389,6 +396,8 @@ function forum_cron() { } } } + + mtrace(' sent.'); } mtrace(".... mailed to $mailcount users."); @@ -691,7 +700,7 @@ function forum_make_mail_html($course, $forum, $discussion, $post, $userfrom, $u $strforums = get_string('forums', 'forum'); $canreply = forum_user_can_post($forum, $userto); - $canunsubscribe = ! forum_is_forcesubscribed($forum->id); + $canunsubscribe = ! $forum->forcesubscribe; $posthtml = ''; foreach ($CFG->stylesheets as $stylesheet) { @@ -2908,14 +2917,18 @@ function forum_user_has_posted($forumid, $did, $userid) { 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; @@ -2944,12 +2957,16 @@ function forum_user_can_post_discussion($forum, $currentgroup=false, $groupmode= * @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) @@ -3108,11 +3125,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=5, $dis /// 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 @@ -3130,8 +3143,8 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions=5, $dis /// 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 '
'; echo "
wwwroot/mod/forum/post.php\">";