A few small fixes related to efficiency etc MDL-8767

This commit is contained in:
moodler
2007-03-06 12:53:17 +00:00
parent 3c5ecd5859
commit e53a867fa4
+29 -12
View File
@@ -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;
}
@@ -360,7 +365,9 @@ function forum_cron() {
/// mail is customised for the receiver.
$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 = '<head>';
foreach ($CFG->stylesheets as $stylesheet) {
@@ -2916,14 +2925,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=false) {
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 ($forum->type == 'news') {
$capname = 'mod/forum:addnews';
@@ -2958,12 +2971,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 ($forum->type == 'news') {
$capname = 'mod/forum:replynews';
@@ -3128,7 +3145,6 @@ 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
$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id);
$groupmode = groupmode($course, $cm); // Works even if $cm is not valid
}
@@ -3147,7 +3163,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.
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\">";