From caadf0090909a590dace290d30f37c3c967bf08f Mon Sep 17 00:00:00 2001 From: moodler Date: Mon, 21 Oct 2002 08:10:24 +0000 Subject: [PATCH] Rearranged functions to match other modules, and added forum_grades() --- mod/forum/lib.php | 816 ++++++++++++++++++++++++---------------------- 1 file changed, 423 insertions(+), 393 deletions(-) diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 004962035e..d981ff2ee1 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -32,7 +32,366 @@ $FORUM_LONG_POST = 600; // More than this is "long" $FORUM_MANY_DISCUSSIONS = 10; -/// FUNCTIONS /////////////////////////////////////////////////////////// +/// STANDARD FUNCTIONS /////////////////////////////////////////////////////////// + +function forum_add_instance($forum) { +// Given an object containing all the necessary data, +// (defined by the form in mod.html) this function +// will create a new instance and return the id number +// of the new instance. + + global $CFG; + + $forum->timemodified = time(); + + if (! $forum->id = insert_record("forum", $forum)) { + return false; + } + + if ($forum->type == "single") { // Create related discussion. + + $discussion->course = $forum->course; + $discussion->forum = $forum->id; + $discussion->name = $forum->name; + $discussion->intro = $forum->intro; + $discussion->assessed = $forum->assessed; + + if (! forum_add_discussion($discussion)) { + error("Could not add the discussion for this forum"); + } + } + add_to_log($forum->course, "forum", "add", "index.php?f=$forum->id", "$forum->id"); + + return $forum->id; +} + + +function forum_update_instance($forum) { +// Given an object containing all the necessary data, +// (defined by the form in mod.html) this function +// will update an existing instance with new data. + + $forum->timemodified = time(); + $forum->id = $forum->instance; + + if ($forum->type == "single") { // Update related discussion and post. + if (! $discussion = get_record("forum_discussions", "forum", $forum->id)) { + if ($discussions = get_records("forum_discussions", "forum", $forum->id, "timemodified ASC")) { + notify("Warning! There is more than one discussion in this forum - using the most recent"); + $discussion = array_pop($discussions); + } else { + error("Could not find the discussion in this forum"); + } + } + if (! $post = get_record("forum_posts", "id", $discussion->firstpost)) { + error("Could not find the first post in this forum discussion"); + } + + $post->subject = $forum->name; + $post->message = $forum->intro; + $post->modified = $forum->timemodified; + + if (! update_record("forum_posts", $post)) { + error("Could not update the first post"); + } + + $discussion->name = $forum->name; + + if (! update_record("forum_discussions", $discussion)) { + error("Could not update the discussion"); + } + } + + if (update_record("forum", $forum)) { + add_to_log($forum->course, "forum", "update", "index.php?f=$forum->id", "$forum->id"); + return true; + } else { + return false; + } +} + + +function forum_delete_instance($id) { +// Given an ID of an instance of this module, +// this function will permanently delete the instance +// and any data that depends on it. + + if (! $forum = get_record("forum", "id", "$id")) { + return false; + } + + $result = true; + + if ($discussions = get_records("forum_discussions", "forum", $forum->id)) { + foreach ($discussions as $discussion) { + if (! forum_delete_discussion($discussion)) { + $result = false; + } + } + } + + if (! delete_records("forum_subscriptions", "forum", "$forum->id")) { + $result = false; + } + + if (! delete_records("forum", "id", "$forum->id")) { + $result = false; + } + + return $result; +} + + +function forum_cron () { +// Function to be run periodically according to the moodle cron +// Finds all posts that have yet to be mailed out, and mails them + + global $CFG, $USER; + + $cutofftime = time() - $CFG->maxeditingtime; + + if ($posts = get_records_sql("SELECT p.*, d.course FROM forum_posts p, forum_discussions d + WHERE p.mailed = '0' AND p.created < '$cutofftime' AND p.discussion = d.id")) { + + $timenow = time(); + + foreach ($posts as $post) { + + print_string("processingpost", "forum", $post->id); + echo " ... "; + + if (! $userfrom = get_record("user", "id", "$post->user")) { + echo "Could not find user $post->user\n"; + continue; + } + + if (! $discussion = get_record("forum_discussions", "id", "$post->discussion")) { + echo "Could not find discussion $post->discussion\n"; + continue; + } + + if (! $forum = get_record("forum", "id", "$discussion->forum")) { + echo "Could not find forum $discussion->forum\n"; + continue; + } + + if (! $course = get_record("course", "id", "$forum->course")) { + echo "Could not find course $forum->course\n"; + continue; + } + + if ($users = forum_subscribed_users($course, $forum)) { + $canunsubscribe = ! forum_is_forcesubscribed($forum->id); + + $mailcount=0; + foreach ($users as $userto) { + $USER->lang = $userto->lang; // Affects the language of get_string + + + $by->name = "$userfrom->firstname $userfrom->lastname"; + $by->date = userdate($post->created, "", $userto->timezone); + $strbynameondate = get_string("bynameondate", "forum", $by); + + $strforums = get_string("forums", "forum"); + + $postsubject = "$course->shortname: $post->subject"; + $posttext = "$course->shortname -> $strforums -> $forum->name"; + + if ($discussion->name == $forum->name) { + $posttext .= "\n"; + } else { + $posttext .= " -> $discussion->name\n"; + } + $posttext .= "---------------------------------------------------------------------\n"; + $posttext .= "$post->subject\n"; + $posttext .= $strbynameondate."\n"; + $posttext .= "---------------------------------------------------------------------\n"; + $posttext .= strip_tags($post->message); + $posttext .= "\n\n"; + if ($post->attachment) { + $post->course = $course->id; + $post->forum = $forum->id; + $posttext .= forum_print_attachments($post, "text"); + } + $posttext .= "---------------------------------------------------------------------\n"; + $posttext .= get_string("postmailinfo", "forum", $course->shortname)."\n"; + $posttext .= "$CFG->wwwroot/mod/forum/post.php?reply=$post->id\n"; + if ($canunsubscribe) { + $posttext .= "\n---------------------------------------------------------------------\n"; + $posttext .= get_string("unsubscribe", "forum"); + $posttext .= ": $CFG->wwwroot/mod/forum/subscribe.php?id=$forum->id\n"; + } + + if ($userto->mailformat == 1) { // HTML + $posthtml = "

". + "wwwroot/course/view.php?id=$course->id\">$course->shortname -> ". + "wwwroot/mod/forum/index.php?id=$course->id\">$strforums -> ". + "wwwroot/mod/forum/view.php?f=$forum->id\">$forum->name"; + if ($discussion->name == $forum->name) { + $posthtml .= "

"; + } else { + $posthtml .= " -> wwwroot/mod/forum/discuss.php?d=$discussion->id\">$discussion->name

"; + } + $posthtml .= forum_make_mail_post($post, $userfrom, $userto, $course, false, true, false, false); + + if ($canunsubscribe) { + $posthtml .= "\n

wwwroot/mod/forum/subscribe.php?id=$forum->id\">".get_string("unsubscribe", "forum")."

"; + } + + } else { + $posthtml = ""; + } + + if (! email_to_user($userto, $userfrom, $postsubject, $posttext, $posthtml)) { + echo "Error: mod/forum/cron.php: Could not send out mail for id $post->id to user $userto->id ($userto->email)\n"; + } else { + $mailcount++; + } + } + echo "mailed to $mailcount users ..."; + } + + if (! set_field("forum_posts", "mailed", "1", "id", "$post->id")) { + echo "Could not update the mailed field for id $post->id\n"; + } + echo "\n"; + } + } + + return true; +} + +function forum_user_outline($course, $user, $mod, $forum) { + + if ($posts = get_records_sql("SELECT p.*, u.id as userid, u.firstname, u.lastname, u.email, u.picture + FROM forum f, forum_discussions d, forum_posts p, user u + WHERE f.id = '$forum->id' AND d.forum = f.id AND p.discussion = d.id + AND p.user = '$user->id' AND p.user = u.id + ORDER BY p.modified ASC")) { + + $result->info = get_string("numposts", "forum", count($posts)); + + $lastpost = array_pop($posts); + $result->time = $lastpost->modified; + return $result; + } + return NULL; +} + + +function forum_user_complete($course, $user, $mod, $forum) { + global $CFG; + + if ($posts = get_records_sql("SELECT p.*, u.id as userid, u.firstname, u.lastname, u.email, u.picture + FROM forum f, forum_discussions d, forum_posts p, user u + WHERE f.id = '$forum->id' AND d.forum = f.id AND p.discussion = d.id + AND p.user = '$user->id' AND p.user = u.id + ORDER BY p.modified ASC")) { + + foreach ($posts as $post) { + if ($post->parent) { + $footer = "wwwroot/mod/forum/discuss.php?d=$post->discussion&parent=$post->parent\">". + get_string("parentofthispost", "forum").""; + } else { + $footer = ""; + } + + forum_print_post($post, $course->id, $ownpost=false, $reply=false, $link=false, $rate=false, $footer); + } + + } else { + echo "

".get_string("noposts", "forum")."

"; + } + +} + +function forum_print_recent_activity(&$logs, $isteacher=false) { + global $CFG, $COURSE_TEACHER_COLOR; + + $heading = false; + $content = false; + + foreach ($logs as $log) { + if ($log->module == "forum") { + $post = NULL; + + if ($log->action == "add post") { + $post = get_record_sql("SELECT p.*, d.forum, u.firstname, u.lastname, + u.email, u.picture, u.id as userid + FROM forum_discussions d, forum_posts p, user u + WHERE p.id = '$log->info' AND d.id = p.discussion + AND p.user = u.id and u.deleted <> '1'"); + + } else if ($log->action == "add discussion") { + $post = get_record_sql("SELECT p.*, d.forum, u.firstname, u.lastname, + u.email, u.picture, u.id as userid + FROM forum_discussions d, forum_posts p, user u + WHERE d.id = '$log->info' AND d.firstpost = p.id + AND p.user = u.id and u.deleted <> '1'"); + } + + if ($post) { + $teacherpost = ""; + if ($forum = get_record("forum", "id", $post->forum) ) { + if ($forum->type == "teacher") { + if ($isteacher) { + $teacherpost = "COLOR=$COURSE_TEACHER_COLOR"; + } else { + continue; + } + } + } + if (! $heading) { + print_headline(get_string("newforumposts", "forum").":"); + $heading = true; + $content = true; + } + $date = userdate($post->modified, "%e %b, %H:%M"); + echo "

$date - $post->firstname $post->lastname
"; + echo "\"wwwroot/mod/forum/$log->url\">"; + if ($log->action == "add") { + echo "$post->subject"; + } else { + echo "$post->subject"; + } + echo "\"

"; + } + } + } + return $content; +} + + +function forum_grades($forumid) { +/// Must return an array of grades, indexed by user, and a max grade. + global $FORUM_POST_RATINGS; + + if ($ratings = get_records_sql_menu("SELECT p.user, r.rating + FROM forum_discussions d, forum_posts p, forum_ratings r + WHERE d.forum = '$forumid' + AND p.discussion = d.id + AND r.post = p.id")) { + foreach ($ratings as $user => $rating) { + if (!isset($sumrating[$user])) { + $sumrating[$user][1] = 0; + $sumrating[$user][2] = 0; + $sumrating[$user][3] = 0; + } + $sumrating[$user][$rating] += 1; + } + foreach ($sumrating as $user => $rating) { + $return->grades[$user] = $rating[1]."s/".$rating[2]."/".$rating[3]."c"; + } + } else { + $return->grades = array(); + } + + $return->maxgrade = ""; + return $return; +} + + +/// OTHER FUNCTIONS /////////////////////////////////////////////////////////// function forum_get_course_forum($courseid, $type) { @@ -621,249 +980,46 @@ function forum_add_discussion($discussion) { set_field("forum_posts", "attachment", $post->attachment, "id", $post->id); //ignore errors } - // Now do the real module entry - - $discussion->firstpost = $post->id; - $discussion->timemodified = $timenow; - - if (! $discussion->id = insert_record("forum_discussions", $discussion) ) { - delete_records("forum_posts", "id", $post->id); - return 0; - } - - // Finally, set the pointer on the post. - if (! set_field("forum_posts", "discussion", $discussion->id, "id", $post->id)) { - delete_records("forum_posts", "id", $post->id); - delete_records("forum_discussions", "id", $discussion->id); - return 0; - } - - return $discussion->id; -} - - -function forum_delete_discussion($discussion) { -// $discussion is a discussion record object - - $result = true; - - if ($posts = get_records("forum_posts", "discussion", $discussion->id)) { - foreach ($posts as $post) { - $post->course = $discussion->course; - $post->forum = $discussion->forum; - if (! delete_records("forum_ratings", "post", "$post->id")) { - $result = false; - } - if (! forum_delete_post($post)) { - $result = false; - } - } - } - - if (! delete_records("forum_discussions", "id", "$discussion->id")) { - $result = false; - } - - return $result; -} - - -function forum_delete_post($post) { - if (delete_records("forum_posts", "id", $post->id)) { - delete_records("forum_ratings", "post", $post->id); // Just in case - if ($post->attachment) { - $discussion = get_record("forum_discussions", "id", $post->discussion); - $post->course = $discussion->course; - $post->forum = $discussion->forum; - forum_delete_old_attachments($post); - } - return true; - } - return false; -} - - -function forum_print_user_discussions($courseid, $userid) { - global $CFG, $USER; - - $discussions = get_records_sql("SELECT p.*, u.firstname, u.lastname, u.email, u.picture, - u.id as userid, f.type as forumtype, f.name as forumname, f.id as forumid - FROM forum_discussions d, forum_posts p, user u, forum f - WHERE d.course = '$courseid' AND p.discussion = d.id AND - p.parent = 0 AND p.user = u.id AND u.id = '$userid' AND - d.forum = f.id - ORDER BY p.created ASC"); - - if ($discussions) { - $user = get_record("user", "id", $userid); - echo "
"; - print_heading( get_string("discussionsstartedby", "forum", "$user->firstname $user->lastname") ); - $replies = forum_count_discussion_replies(); - foreach ($discussions as $discussion) { - if (($discussion->forumtype == "teacher") and !isteacher($courseid)) { - continue; - } - if ($replies[$discussion->discussion]) { - $discussion->replies = $replies[$discussion->discussion]->replies; - } else { - $discussion->replies = 0; - } - $inforum = get_string("inforum", "forum", "wwwroot/mod/forum/view.php?f=$discussion->forumid\">$discussion->forumname"); - $discussion->subject .= " ($inforum)"; - $ownpost = ($discussion->userid == $USER->id); - forum_print_post($discussion, $courseid, $ownpost, $reply=0, $link=1, $assessed=false); - echo "
\n"; - } - } -} - - -function forum_user_outline($course, $user, $mod, $forum) { - - if ($posts = get_records_sql("SELECT p.*, u.id as userid, u.firstname, u.lastname, u.email, u.picture - FROM forum f, forum_discussions d, forum_posts p, user u - WHERE f.id = '$forum->id' AND d.forum = f.id AND p.discussion = d.id - AND p.user = '$user->id' AND p.user = u.id - ORDER BY p.modified ASC")) { - - $result->info = get_string("numposts", "forum", count($posts)); - - $lastpost = array_pop($posts); - $result->time = $lastpost->modified; - return $result; - } - return NULL; -} - - -function forum_user_complete($course, $user, $mod, $forum) { - global $CFG; - - if ($posts = get_records_sql("SELECT p.*, u.id as userid, u.firstname, u.lastname, u.email, u.picture - FROM forum f, forum_discussions d, forum_posts p, user u - WHERE f.id = '$forum->id' AND d.forum = f.id AND p.discussion = d.id - AND p.user = '$user->id' AND p.user = u.id - ORDER BY p.modified ASC")) { - - foreach ($posts as $post) { - if ($post->parent) { - $footer = "wwwroot/mod/forum/discuss.php?d=$post->discussion&parent=$post->parent\">". - get_string("parentofthispost", "forum").""; - } else { - $footer = ""; - } - - forum_print_post($post, $course->id, $ownpost=false, $reply=false, $link=false, $rate=false, $footer); - } - - } else { - echo "

".get_string("noposts", "forum")."

"; - } - -} - - -function forum_add_instance($forum) { -// Given an object containing all the necessary data, -// (defined by the form in mod.html) this function -// will create a new instance and return the id number -// of the new instance. - - global $CFG; - - $forum->timemodified = time(); - - if (! $forum->id = insert_record("forum", $forum)) { - return false; - } - - if ($forum->type == "single") { // Create related discussion. - - $discussion->course = $forum->course; - $discussion->forum = $forum->id; - $discussion->name = $forum->name; - $discussion->intro = $forum->intro; - $discussion->assessed = $forum->assessed; - - if (! forum_add_discussion($discussion)) { - error("Could not add the discussion for this forum"); - } - } - add_to_log($forum->course, "forum", "add", "index.php?f=$forum->id", "$forum->id"); - - return $forum->id; -} - - -function forum_update_instance($forum) { -// Given an object containing all the necessary data, -// (defined by the form in mod.html) this function -// will update an existing instance with new data. - - $forum->timemodified = time(); - $forum->id = $forum->instance; - - if ($forum->type == "single") { // Update related discussion and post. - if (! $discussion = get_record("forum_discussions", "forum", $forum->id)) { - if ($discussions = get_records("forum_discussions", "forum", $forum->id, "timemodified ASC")) { - notify("Warning! There is more than one discussion in this forum - using the most recent"); - $discussion = array_pop($discussions); - } else { - error("Could not find the discussion in this forum"); - } - } - if (! $post = get_record("forum_posts", "id", $discussion->firstpost)) { - error("Could not find the first post in this forum discussion"); - } - - $post->subject = $forum->name; - $post->message = $forum->intro; - $post->modified = $forum->timemodified; - - if (! update_record("forum_posts", $post)) { - error("Could not update the first post"); - } + // Now do the real module entry - $discussion->name = $forum->name; + $discussion->firstpost = $post->id; + $discussion->timemodified = $timenow; - if (! update_record("forum_discussions", $discussion)) { - error("Could not update the discussion"); - } + if (! $discussion->id = insert_record("forum_discussions", $discussion) ) { + delete_records("forum_posts", "id", $post->id); + return 0; } - if (update_record("forum", $forum)) { - add_to_log($forum->course, "forum", "update", "index.php?f=$forum->id", "$forum->id"); - return true; - } else { - return false; + // Finally, set the pointer on the post. + if (! set_field("forum_posts", "discussion", $discussion->id, "id", $post->id)) { + delete_records("forum_posts", "id", $post->id); + delete_records("forum_discussions", "id", $discussion->id); + return 0; } -} + return $discussion->id; +} -function forum_delete_instance($id) { -// Given an ID of an instance of this module, -// this function will permanently delete the instance -// and any data that depends on it. - if (! $forum = get_record("forum", "id", "$id")) { - return false; - } +function forum_delete_discussion($discussion) { +// $discussion is a discussion record object $result = true; - if ($discussions = get_records("forum_discussions", "forum", $forum->id)) { - foreach ($discussions as $discussion) { - if (! forum_delete_discussion($discussion)) { + if ($posts = get_records("forum_posts", "discussion", $discussion->id)) { + foreach ($posts as $post) { + $post->course = $discussion->course; + $post->forum = $discussion->forum; + if (! delete_records("forum_ratings", "post", "$post->id")) { + $result = false; + } + if (! forum_delete_post($post)) { $result = false; } } } - if (! delete_records("forum_subscriptions", "forum", "$forum->id")) { - $result = false; - } - - if (! delete_records("forum", "id", "$forum->id")) { + if (! delete_records("forum_discussions", "id", "$discussion->id")) { $result = false; } @@ -871,126 +1027,55 @@ function forum_delete_instance($id) { } -function forum_cron () { -// Function to be run periodically according to the moodle cron -// Finds all posts that have yet to be mailed out, and mails them - - global $CFG, $USER; - - $cutofftime = time() - $CFG->maxeditingtime; - - if ($posts = get_records_sql("SELECT p.*, d.course FROM forum_posts p, forum_discussions d - WHERE p.mailed = '0' AND p.created < '$cutofftime' AND p.discussion = d.id")) { - - $timenow = time(); - - foreach ($posts as $post) { - - print_string("processingpost", "forum", $post->id); - echo " ... "; - - if (! $userfrom = get_record("user", "id", "$post->user")) { - echo "Could not find user $post->user\n"; - continue; - } +function forum_delete_post($post) { + if (delete_records("forum_posts", "id", $post->id)) { + delete_records("forum_ratings", "post", $post->id); // Just in case + if ($post->attachment) { + $discussion = get_record("forum_discussions", "id", $post->discussion); + $post->course = $discussion->course; + $post->forum = $discussion->forum; + forum_delete_old_attachments($post); + } + return true; + } + return false; +} - if (! $discussion = get_record("forum_discussions", "id", "$post->discussion")) { - echo "Could not find discussion $post->discussion\n"; - continue; - } - if (! $forum = get_record("forum", "id", "$discussion->forum")) { - echo "Could not find forum $discussion->forum\n"; - continue; - } +function forum_print_user_discussions($courseid, $userid) { + global $CFG, $USER; - if (! $course = get_record("course", "id", "$forum->course")) { - echo "Could not find course $forum->course\n"; + $discussions = get_records_sql("SELECT p.*, u.firstname, u.lastname, u.email, u.picture, + u.id as userid, f.type as forumtype, f.name as forumname, f.id as forumid + FROM forum_discussions d, forum_posts p, user u, forum f + WHERE d.course = '$courseid' AND p.discussion = d.id AND + p.parent = 0 AND p.user = u.id AND u.id = '$userid' AND + d.forum = f.id + ORDER BY p.created ASC"); + + if ($discussions) { + $user = get_record("user", "id", $userid); + echo "
"; + print_heading( get_string("discussionsstartedby", "forum", "$user->firstname $user->lastname") ); + $replies = forum_count_discussion_replies(); + foreach ($discussions as $discussion) { + if (($discussion->forumtype == "teacher") and !isteacher($courseid)) { continue; } - - if ($users = forum_subscribed_users($course, $forum)) { - $canunsubscribe = ! forum_is_forcesubscribed($forum->id); - - $mailcount=0; - foreach ($users as $userto) { - $USER->lang = $userto->lang; // Affects the language of get_string - - - $by->name = "$userfrom->firstname $userfrom->lastname"; - $by->date = userdate($post->created, "", $userto->timezone); - $strbynameondate = get_string("bynameondate", "forum", $by); - - $strforums = get_string("forums", "forum"); - - $postsubject = "$course->shortname: $post->subject"; - $posttext = "$course->shortname -> $strforums -> $forum->name"; - - if ($discussion->name == $forum->name) { - $posttext .= "\n"; - } else { - $posttext .= " -> $discussion->name\n"; - } - $posttext .= "---------------------------------------------------------------------\n"; - $posttext .= "$post->subject\n"; - $posttext .= $strbynameondate."\n"; - $posttext .= "---------------------------------------------------------------------\n"; - $posttext .= strip_tags($post->message); - $posttext .= "\n\n"; - if ($post->attachment) { - $post->course = $course->id; - $post->forum = $forum->id; - $posttext .= forum_print_attachments($post, "text"); - } - $posttext .= "---------------------------------------------------------------------\n"; - $posttext .= get_string("postmailinfo", "forum", $course->shortname)."\n"; - $posttext .= "$CFG->wwwroot/mod/forum/post.php?reply=$post->id\n"; - if ($canunsubscribe) { - $posttext .= "\n---------------------------------------------------------------------\n"; - $posttext .= get_string("unsubscribe", "forum"); - $posttext .= ": $CFG->wwwroot/mod/forum/subscribe.php?id=$forum->id\n"; - } - - if ($userto->mailformat == 1) { // HTML - $posthtml = "

". - "wwwroot/course/view.php?id=$course->id\">$course->shortname -> ". - "wwwroot/mod/forum/index.php?id=$course->id\">$strforums -> ". - "wwwroot/mod/forum/view.php?f=$forum->id\">$forum->name"; - if ($discussion->name == $forum->name) { - $posthtml .= "

"; - } else { - $posthtml .= " -> wwwroot/mod/forum/discuss.php?d=$discussion->id\">$discussion->name

"; - } - $posthtml .= forum_make_mail_post($post, $userfrom, $userto, $course, false, true, false, false); - - if ($canunsubscribe) { - $posthtml .= "\n

wwwroot/mod/forum/subscribe.php?id=$forum->id\">".get_string("unsubscribe", "forum")."

"; - } - - } else { - $posthtml = ""; - } - - if (! email_to_user($userto, $userfrom, $postsubject, $posttext, $posthtml)) { - echo "Error: mod/forum/cron.php: Could not send out mail for id $post->id to user $userto->id ($userto->email)\n"; - } else { - $mailcount++; - } - } - echo "mailed to $mailcount users ..."; - } - - if (! set_field("forum_posts", "mailed", "1", "id", "$post->id")) { - echo "Could not update the mailed field for id $post->id\n"; + if ($replies[$discussion->discussion]) { + $discussion->replies = $replies[$discussion->discussion]->replies; + } else { + $discussion->replies = 0; } - echo "\n"; + $inforum = get_string("inforum", "forum", "wwwroot/mod/forum/view.php?f=$discussion->forumid\">$discussion->forumname"); + $discussion->subject .= " ($inforum)"; + $ownpost = ($discussion->userid == $USER->id); + forum_print_post($discussion, $courseid, $ownpost, $reply=0, $link=1, $assessed=false); + echo "
\n"; } } - - return true; } - function forum_forcesubscribe($forumid, $value=1) { return set_field("forum", "forcesubscribe", $value, "id", $forumid); } @@ -1304,60 +1389,5 @@ function forum_set_display_mode($mode=0) { } } -function forum_print_recent_activity(&$logs, $isteacher=false) { - global $CFG, $COURSE_TEACHER_COLOR; - - $heading = false; - $content = false; - - foreach ($logs as $log) { - if ($log->module == "forum") { - $post = NULL; - - if ($log->action == "add post") { - $post = get_record_sql("SELECT p.*, d.forum, u.firstname, u.lastname, - u.email, u.picture, u.id as userid - FROM forum_discussions d, forum_posts p, user u - WHERE p.id = '$log->info' AND d.id = p.discussion - AND p.user = u.id and u.deleted <> '1'"); - - } else if ($log->action == "add discussion") { - $post = get_record_sql("SELECT p.*, d.forum, u.firstname, u.lastname, - u.email, u.picture, u.id as userid - FROM forum_discussions d, forum_posts p, user u - WHERE d.id = '$log->info' AND d.firstpost = p.id - AND p.user = u.id and u.deleted <> '1'"); - } - - if ($post) { - $teacherpost = ""; - if ($forum = get_record("forum", "id", $post->forum) ) { - if ($forum->type == "teacher") { - if ($isteacher) { - $teacherpost = "COLOR=$COURSE_TEACHER_COLOR"; - } else { - continue; - } - } - } - if (! $heading) { - print_headline(get_string("newforumposts", "forum").":"); - $heading = true; - $content = true; - } - $date = userdate($post->modified, "%e %b, %H:%M"); - echo "

$date - $post->firstname $post->lastname
"; - echo "\"wwwroot/mod/forum/$log->url\">"; - if ($log->action == "add") { - echo "$post->subject"; - } else { - echo "$post->subject"; - } - echo "\"

"; - } - } - } - return $content; -} ?> -- 2.39.5