]> git.mjollnir.org Git - moodle.git/commitdiff
mod-forum MDL-19808 Added set_url calls, replaced deprecated functions
authorsamhemelryk <samhemelryk>
Thu, 24 Sep 2009 06:41:04 +0000 (06:41 +0000)
committersamhemelryk <samhemelryk>
Thu, 24 Sep 2009 06:41:04 +0000 (06:41 +0000)
12 files changed:
mod/forum/index.php
mod/forum/markposts.php
mod/forum/post.php
mod/forum/rate.php
mod/forum/rate_ajax.php
mod/forum/report.php
mod/forum/search.php
mod/forum/settracking.php
mod/forum/subscribe.php
mod/forum/subscribers.php
mod/forum/unsubscribeall.php
mod/forum/user.php

index 71cab7c1c78495782f1d2556d55face34ac35ef4..41e22b6c6d0bdd0a91d8eab1c4cf0589dccf028f 100644 (file)
-<?php  // $Id$
+<?php
 
-    require_once(dirname(__FILE__) . '/../../config.php');
-    require_once($CFG->dirroot . '/course/lib.php');
-    require_once($CFG->dirroot . '/mod/forum/lib.php');
-    require_once($CFG->libdir . '/rsslib.php');
+require_once(dirname(__FILE__) . '/../../config.php');
+require_once($CFG->dirroot . '/course/lib.php');
+require_once($CFG->dirroot . '/mod/forum/lib.php');
+require_once($CFG->libdir . '/rsslib.php');
 
-    $id = optional_param('id', 0, PARAM_INT);                   // Course id
-    $subscribe = optional_param('subscribe', null, PARAM_INT);  // Subscribe/Unsubscribe all forums
+$id = optional_param('id', 0, PARAM_INT);                   // Course id
+$subscribe = optional_param('subscribe', null, PARAM_INT);  // Subscribe/Unsubscribe all forums
 
-    if ($id) {
-        if (! $course = $DB->get_record('course', array('id' => $id))) {
-            print_error('invalidcourseid');
-        }
-    } else {
-        if (! $course = get_site()) {
-            print_error('nosite');
-        }
+$url = new moodle_url($CFG->wwwroot.'/mod/forum/index.php', array('id'=>$id));
+if ($subscribe !== null) {
+    $url->param('subscribe', $subscribe);
+}
+$PAGE->set_url($url);
+
+if ($id) {
+    if (! $course = $DB->get_record('course', array('id' => $id))) {
+        print_error('invalidcourseid');
+    }
+} else {
+    if (! $course = get_site()) {
+        print_error('nosite');
     }
+}
 
-    require_course_login($course);
-    $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
+require_course_login($course);
+$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
 
 
-    unset($SESSION->fromdiscussion);
+unset($SESSION->fromdiscussion);
 
-    add_to_log($course->id, 'forum', 'view forums', "index.php?id=$course->id");
+add_to_log($course->id, 'forum', 'view forums', "index.php?id=$course->id");
 
-    $strforums       = get_string('forums', 'forum');
-    $strforum        = get_string('forum', 'forum');
-    $strdescription  = get_string('description');
-    $strdiscussions  = get_string('discussions', 'forum');
-    $strsubscribed   = get_string('subscribed', 'forum');
-    $strunreadposts  = get_string('unreadposts', 'forum');
-    $strtracking     = get_string('tracking', 'forum');
-    $strmarkallread  = get_string('markallread', 'forum');
-    $strtrackforum   = get_string('trackforum', 'forum');
-    $strnotrackforum = get_string('notrackforum', 'forum');
-    $strsubscribe    = get_string('subscribe', 'forum');
-    $strunsubscribe  = get_string('unsubscribe', 'forum');
-    $stryes          = get_string('yes');
-    $strno           = get_string('no');
-    $strrss          = get_string('rss');
-    $strweek         = get_string('week');
-    $strsection      = get_string('section');
+$strforums       = get_string('forums', 'forum');
+$strforum        = get_string('forum', 'forum');
+$strdescription  = get_string('description');
+$strdiscussions  = get_string('discussions', 'forum');
+$strsubscribed   = get_string('subscribed', 'forum');
+$strunreadposts  = get_string('unreadposts', 'forum');
+$strtracking     = get_string('tracking', 'forum');
+$strmarkallread  = get_string('markallread', 'forum');
+$strtrackforum   = get_string('trackforum', 'forum');
+$strnotrackforum = get_string('notrackforum', 'forum');
+$strsubscribe    = get_string('subscribe', 'forum');
+$strunsubscribe  = get_string('unsubscribe', 'forum');
+$stryes          = get_string('yes');
+$strno           = get_string('no');
+$strrss          = get_string('rss');
+$strweek         = get_string('week');
+$strsection      = get_string('section');
 
-    $searchform = forum_search_form($course);
+$searchform = forum_search_form($course);
 
 
-    // Start of the table for General Forums
+// Start of the table for General Forums
 
-    $generaltable = new html_table();
-    $generaltable->head  = array ($strforum, $strdescription, $strdiscussions);
-    $generaltable->align = array ('left', 'left', 'center');
+$generaltable = new html_table();
+$generaltable->head  = array ($strforum, $strdescription, $strdiscussions);
+$generaltable->align = array ('left', 'left', 'center');
 
-    if ($usetracking = forum_tp_can_track_forums()) {
-        $untracked = forum_tp_get_untracked_forums($USER->id, $course->id);
+if ($usetracking = forum_tp_can_track_forums()) {
+    $untracked = forum_tp_get_untracked_forums($USER->id, $course->id);
 
-        $generaltable->head[] = $strunreadposts;
-        $generaltable->align[] = 'center';
+    $generaltable->head[] = $strunreadposts;
+    $generaltable->align[] = 'center';
 
-        $generaltable->head[] = $strtracking;
-        $generaltable->align[] = 'center';
-    }
+    $generaltable->head[] = $strtracking;
+    $generaltable->align[] = 'center';
+}
 
-    $subscribed_forums = forum_get_subscribed_forums($course);
+$subscribed_forums = forum_get_subscribed_forums($course);
+
+if ($can_subscribe = (!isguestuser() && has_capability('moodle/course:view', $coursecontext))) {
+    $generaltable->head[] = $strsubscribed;
+    $generaltable->align[] = 'center';
+}
+
+if ($show_rss = (($can_subscribe || $course->id == SITEID) &&
+                 isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) &&
+                 $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds)) {
+    $generaltable->head[] = $strrss;
+    $generaltable->align[] = 'center';
+}
 
-    if ($can_subscribe = (!isguestuser() && has_capability('moodle/course:view', $coursecontext))) {
-        $generaltable->head[] = $strsubscribed;
-        $generaltable->align[] = 'center';
-    }
 
-    if ($show_rss = (($can_subscribe || $course->id == SITEID) &&
-                     isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) &&
-                     $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds)) {
-        $generaltable->head[] = $strrss;
-        $generaltable->align[] = 'center';
+// Parse and organise all the forums.  Most forums are course modules but
+// some special ones are not.  These get placed in the general forums
+// category with the forums in section 0.
+
+$forums = $DB->get_records('forum', array('course' => $course->id));
+
+$generalforums  = array();
+$learningforums = array();
+$modinfo =& get_fast_modinfo($course);
+
+if (!isset($modinfo->instances['forum'])) {
+    $modinfo->instances['forum'] = array();
+}
+
+foreach ($modinfo->instances['forum'] as $forumid=>$cm) {
+    if (!$cm->uservisible or !isset($forums[$forumid])) {
+        continue;
     }
 
+    $forum = $forums[$forumid];
 
-    // Parse and organise all the forums.  Most forums are course modules but
-    // some special ones are not.  These get placed in the general forums
-    // category with the forums in section 0.
+    if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) {
+        continue;   // Shouldn't happen
+    }
+
+    if (!has_capability('mod/forum:viewdiscussion', $context)) {
+        continue;
+    }
 
-    $forums = $DB->get_records('forum', array('course' => $course->id));
+    // fill two type array - order in modinfo is the same as in course
+    if ($forum->type == 'news' or $forum->type == 'social') {
+        $generalforums[$forum->id] = $forum;
 
-    $generalforums  = array();
-    $learningforums = array();
-    $modinfo =& get_fast_modinfo($course);
+    } else if ($course->id == SITEID or empty($cm->sectionnum)) {
+        $generalforums[$forum->id] = $forum;
 
-    if (!isset($modinfo->instances['forum'])) {
-        $modinfo->instances['forum'] = array();
+    } else {
+        $learningforums[$forum->id] = $forum;
     }
+}
 
+/// Do course wide subscribe/unsubscribe
+if (!is_null($subscribe) and !isguestuser() and !isguest()) {
     foreach ($modinfo->instances['forum'] as $forumid=>$cm) {
-        if (!$cm->uservisible or !isset($forums[$forumid])) {
-            continue;
-        }
-
         $forum = $forums[$forumid];
+        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+        $cansub = false;
 
-        if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) {
-            continue;   // Shouldn't happen
+        if (has_capability('mod/forum:viewdiscussion', $modcontext)) {
+            $cansub = true;
         }
-
-        if (!has_capability('mod/forum:viewdiscussion', $context)) {
-            continue;
+        if ($cansub && $cm->visible == 0 &&
+            !has_capability('mod/forum:managesubscriptions', $modcontext))
+        {
+            $cansub = false;
         }
+        if (!forum_is_forcesubscribed($forum)) {
+            $subscribed = forum_is_subscribed($USER->id, $forum);
+            if ((has_capability('moodle/course:manageactivities', $coursecontext, $USER->id) || $forum->forcesubscribe != FORUM_DISALLOWSUBSCRIBE) && $subscribe && !$subscribed && $cansub) {
+                forum_subscribe($USER->id, $forumid);
+            } else if (!$subscribe && $subscribed) {
+                forum_unsubscribe($USER->id, $forumid);
+            }
+        }
+    }
+    $returnto = forum_go_back_to("index.php?id=$course->id");
+    if ($subscribe) {
+        add_to_log($course->id, 'forum', 'subscribeall', "index.php?id=$course->id", $course->id);
+        redirect($returnto, get_string('nowallsubscribed', 'forum', format_string($course->shortname)), 1);
+    } else {
+        add_to_log($course->id, 'forum', 'unsubscribeall', "index.php?id=$course->id", $course->id);
+        redirect($returnto, get_string('nowallunsubscribed', 'forum', format_string($course->shortname)), 1);
+    }
+}
 
-        // fill two type array - order in modinfo is the same as in course
-        if ($forum->type == 'news' or $forum->type == 'social') {
-            $generalforums[$forum->id] = $forum;
+/// First, let's process the general forums and build up a display
+
+if ($generalforums) {
+    foreach ($generalforums as $forum) {
+        $cm      = $modinfo->instances['forum'][$forum->id];
+        $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+
+        $count = forum_count_discussions($forum, $cm, $course);
+
+        if ($usetracking) {
+            if ($forum->trackingtype == FORUM_TRACKING_OFF) {
+                $unreadlink  = '-';
+                $trackedlink = '-';
+
+            } else {
+                if (isset($untracked[$forum->id])) {
+                        $unreadlink  = '-';
+                } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
+                        $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
+                    $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
+                                   $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->old_icon_url('t/clear') . '" alt="'.$strmarkallread.'" /></a></span>';
+                } else {
+                    $unreadlink = '<span class="read">0</span>';
+                }
 
-        } else if ($course->id == SITEID or empty($cm->sectionnum)) {
-            $generalforums[$forum->id] = $forum;
+                if ($forum->trackingtype == FORUM_TRACKING_ON) {
+                    $trackedlink = $stryes;
 
+                } else {
+                    $options = array('id'=>$forum->id);
+                    if (!isset($untracked[$forum->id])) {
+                        $form = html_form::make_button($CFG->wwwroot.'/mod/forum/settracking.php', $options, $stryes);
+                        $form->button->title = $strnotrackforum;
+                        $trackedlink = $OUTPUT->button($form);
+                    } else {
+                        $form = html_form::make_button($CFG->wwwroot.'/mod/forum/settracking.php', $options, $strno);
+                        $form->button->title = $strtrackforum;
+                        $trackedlink = $OUTPUT->button($form);
+                    }
+                }
+            }
+        }
+
+        $forum->intro = shorten_text(format_module_intro('forum', $forum, $cm->id), $CFG->forum_shortpost);
+        $forumname = format_string($forum->name, true);;
+
+        if ($cm->visible) {
+            $style = '';
         } else {
-            $learningforums[$forum->id] = $forum;
+            $style = 'class="dimmed"';
         }
-    }
+        $forumlink = "<a href=\"view.php?f=$forum->id\" $style>".format_string($forum->name,true)."</a>";
+        $discussionlink = "<a href=\"view.php?f=$forum->id\" $style>".$count."</a>";
 
-    /// Do course wide subscribe/unsubscribe
-    if (!is_null($subscribe) and !isguestuser() and !isguest()) {
-        foreach ($modinfo->instances['forum'] as $forumid=>$cm) {
-            $forum = $forums[$forumid];
-            $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
-            $cansub = false;
+        $row = array ($forumlink, $forum->intro, $discussionlink);
+        if ($usetracking) {
+            $row[] = $unreadlink;
+            $row[] = $trackedlink;    // Tracking.
+        }
 
-            if (has_capability('mod/forum:viewdiscussion', $modcontext)) {
-                $cansub = true;
-            }
-            if ($cansub && $cm->visible == 0 &&
-                !has_capability('mod/forum:managesubscriptions', $modcontext))
-            {
-                $cansub = false;
+        if ($can_subscribe) {
+            if ($forum->forcesubscribe != FORUM_DISALLOWSUBSCRIBE) {
+                $row[] = forum_get_subscribe_link($forum, $context, array('subscribed' => $stryes,
+                        'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
+                        'cantsubscribe' => '-'), false, false, true, $subscribed_forums);
+            } else {
+                $row[] = '-';
             }
-            if (!forum_is_forcesubscribed($forum)) {
-                $subscribed = forum_is_subscribed($USER->id, $forum);
-                if ((has_capability('moodle/course:manageactivities', $coursecontext, $USER->id) || $forum->forcesubscribe != FORUM_DISALLOWSUBSCRIBE) && $subscribe && !$subscribed && $cansub) {
-                    forum_subscribe($USER->id, $forumid);
-                } else if (!$subscribe && $subscribed) {
-                    forum_unsubscribe($USER->id, $forumid);
+        }
+
+        //If this forum has RSS activated, calculate it
+        if ($show_rss) {
+            if ($forum->rsstype and $forum->rssarticles) {
+                //Calculate the tolltip text
+                if ($forum->rsstype == 1) {
+                    $tooltiptext = get_string('rsssubscriberssdiscussions', 'forum', format_string($forum->name));
+                } else {
+                    $tooltiptext = get_string('rsssubscriberssposts', 'forum', format_string($forum->name));
                 }
+                //Get html code for RSS link
+                $row[] = rss_get_link($course->id, $USER->id, 'forum', $forum->id, $tooltiptext);
+            } else {
+                $row[] = '&nbsp;';
             }
         }
-        $returnto = forum_go_back_to("index.php?id=$course->id");
-        if ($subscribe) {
-            add_to_log($course->id, 'forum', 'subscribeall', "index.php?id=$course->id", $course->id);
-            redirect($returnto, get_string('nowallsubscribed', 'forum', format_string($course->shortname)), 1);
-        } else {
-            add_to_log($course->id, 'forum', 'unsubscribeall', "index.php?id=$course->id", $course->id);
-            redirect($returnto, get_string('nowallunsubscribed', 'forum', format_string($course->shortname)), 1);
-        }
+
+        $generaltable->data[] = $row;
+    }
+}
+
+
+// Start of the table for Learning Forums
+$learningtable = new html_table();
+$learningtable->head  = array ($strforum, $strdescription, $strdiscussions);
+$learningtable->align = array ('left', 'left', 'center');
+
+if ($usetracking) {
+    $learningtable->head[] = $strunreadposts;
+    $learningtable->align[] = 'center';
+
+    $learningtable->head[] = $strtracking;
+    $learningtable->align[] = 'center';
+}
+
+if ($can_subscribe) {
+    $learningtable->head[] = $strsubscribed;
+    $learningtable->align[] = 'center';
+}
+
+if ($show_rss = (($can_subscribe || $course->id == SITEID) &&
+                 isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) &&
+                 $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds)) {
+    $learningtable->head[] = $strrss;
+    $learningtable->align[] = 'center';
+}
+
+/// Now let's process the learning forums
+
+if ($course->id != SITEID) {    // Only real courses have learning forums
+    // Add extra field for section number, at the front
+    if ($course->format == 'weeks' or $course->format == 'weekscss') {
+        array_unshift($learningtable->head, $strweek);
+    } else {
+        array_unshift($learningtable->head, $strsection);
     }
+    array_unshift($learningtable->align, 'center');
 
-    /// First, let's process the general forums and build up a display
 
-    if ($generalforums) {
-        foreach ($generalforums as $forum) {
+    if ($learningforums) {
+        $currentsection = '';
+            foreach ($learningforums as $forum) {
             $cm      = $modinfo->instances['forum'][$forum->id];
             $context = get_context_instance(CONTEXT_MODULE, $cm->id);
 
 
                 } else {
                     if (isset($untracked[$forum->id])) {
-                            $unreadlink  = '-';
+                        $unreadlink  = '-';
                     } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
-                            $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
+                        $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
                         $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
                                        $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->old_icon_url('t/clear') . '" alt="'.$strmarkallread.'" /></a></span>';
                     } else {
             }
 
             $forum->intro = shorten_text(format_module_intro('forum', $forum, $cm->id), $CFG->forum_shortpost);
-            $forumname = format_string($forum->name, true);;
+
+            if ($cm->sectionnum != $currentsection) {
+                $printsection = $cm->sectionnum;
+                if ($currentsection) {
+                    $learningtable->data[] = 'hr';
+                }
+                $currentsection = $cm->sectionnum;
+            } else {
+                $printsection = '';
+            }
+
+            $forumname = format_string($forum->name,true);;
 
             if ($cm->visible) {
                 $style = '';
             $forumlink = "<a href=\"view.php?f=$forum->id\" $style>".format_string($forum->name,true)."</a>";
             $discussionlink = "<a href=\"view.php?f=$forum->id\" $style>".$count."</a>";
 
-            $row = array ($forumlink, $forum->intro, $discussionlink);
+            $row = array ($printsection, $forumlink, $forum->intro, $discussionlink);
             if ($usetracking) {
                 $row[] = $unreadlink;
                 $row[] = $trackedlink;    // Tracking.
             if ($can_subscribe) {
                 if ($forum->forcesubscribe != FORUM_DISALLOWSUBSCRIBE) {
                     $row[] = forum_get_subscribe_link($forum, $context, array('subscribed' => $stryes,
-                            'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
-                            'cantsubscribe' => '-'), false, false, true, $subscribed_forums);
+                        'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
+                        'cantsubscribe' => '-'), false, false, true, $subscribed_forums);
                 } else {
                     $row[] = '-';
                 }
                 }
             }
 
-            $generaltable->data[] = $row;
+            $learningtable->data[] = $row;
         }
     }
-
-
-    // Start of the table for Learning Forums
-    $learningtable = new html_table();
-    $learningtable->head  = array ($strforum, $strdescription, $strdiscussions);
-    $learningtable->align = array ('left', 'left', 'center');
-
-    if ($usetracking) {
-        $learningtable->head[] = $strunreadposts;
-        $learningtable->align[] = 'center';
-
-        $learningtable->head[] = $strtracking;
-        $learningtable->align[] = 'center';
-    }
-
-    if ($can_subscribe) {
-        $learningtable->head[] = $strsubscribed;
-        $learningtable->align[] = 'center';
-    }
-
-    if ($show_rss = (($can_subscribe || $course->id == SITEID) &&
-                     isset($CFG->enablerssfeeds) && isset($CFG->forum_enablerssfeeds) &&
-                     $CFG->enablerssfeeds && $CFG->forum_enablerssfeeds)) {
-        $learningtable->head[] = $strrss;
-        $learningtable->align[] = 'center';
-    }
-
-    /// Now let's process the learning forums
-
-    if ($course->id != SITEID) {    // Only real courses have learning forums
-        // Add extra field for section number, at the front
-        if ($course->format == 'weeks' or $course->format == 'weekscss') {
-            array_unshift($learningtable->head, $strweek);
-        } else {
-            array_unshift($learningtable->head, $strsection);
-        }
-        array_unshift($learningtable->align, 'center');
-
-
-        if ($learningforums) {
-            $currentsection = '';
-                foreach ($learningforums as $forum) {
-                $cm      = $modinfo->instances['forum'][$forum->id];
-                $context = get_context_instance(CONTEXT_MODULE, $cm->id);
-
-                $count = forum_count_discussions($forum, $cm, $course);
-
-                if ($usetracking) {
-                    if ($forum->trackingtype == FORUM_TRACKING_OFF) {
-                        $unreadlink  = '-';
-                        $trackedlink = '-';
-
-                    } else {
-                        if (isset($untracked[$forum->id])) {
-                            $unreadlink  = '-';
-                        } else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
-                            $unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
-                            $unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
-                                           $forum->id.'&amp;mark=read"><img src="'.$OUTPUT->old_icon_url('t/clear') . '" alt="'.$strmarkallread.'" /></a></span>';
-                        } else {
-                            $unreadlink = '<span class="read">0</span>';
-                        }
-
-                        if ($forum->trackingtype == FORUM_TRACKING_ON) {
-                            $trackedlink = $stryes;
-
-                        } else {
-                            $options = array('id'=>$forum->id);
-                            if (!isset($untracked[$forum->id])) {
-                                $form = html_form::make_button($CFG->wwwroot.'/mod/forum/settracking.php', $options, $stryes);
-                                $form->button->title = $strnotrackforum;
-                                $trackedlink = $OUTPUT->button($form);
-                            } else {
-                                $form = html_form::make_button($CFG->wwwroot.'/mod/forum/settracking.php', $options, $strno);
-                                $form->button->title = $strtrackforum;
-                                $trackedlink = $OUTPUT->button($form);
-                            }
-                        }
-                    }
-                }
-
-                $forum->intro = shorten_text(format_module_intro('forum', $forum, $cm->id), $CFG->forum_shortpost);
-
-                if ($cm->sectionnum != $currentsection) {
-                    $printsection = $cm->sectionnum;
-                    if ($currentsection) {
-                        $learningtable->data[] = 'hr';
-                    }
-                    $currentsection = $cm->sectionnum;
-                } else {
-                    $printsection = '';
-                }
-
-                $forumname = format_string($forum->name,true);;
-
-                if ($cm->visible) {
-                    $style = '';
-                } else {
-                    $style = 'class="dimmed"';
-                }
-                $forumlink = "<a href=\"view.php?f=$forum->id\" $style>".format_string($forum->name,true)."</a>";
-                $discussionlink = "<a href=\"view.php?f=$forum->id\" $style>".$count."</a>";
-
-                $row = array ($printsection, $forumlink, $forum->intro, $discussionlink);
-                if ($usetracking) {
-                    $row[] = $unreadlink;
-                    $row[] = $trackedlink;    // Tracking.
-                }
-
-                if ($can_subscribe) {
-                    if ($forum->forcesubscribe != FORUM_DISALLOWSUBSCRIBE) {
-                        $row[] = forum_get_subscribe_link($forum, $context, array('subscribed' => $stryes,
-                            'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
-                            'cantsubscribe' => '-'), false, false, true, $subscribed_forums);
-                    } else {
-                        $row[] = '-';
-                    }
-                }
-
-                //If this forum has RSS activated, calculate it
-                if ($show_rss) {
-                    if ($forum->rsstype and $forum->rssarticles) {
-                        //Calculate the tolltip text
-                        if ($forum->rsstype == 1) {
-                            $tooltiptext = get_string('rsssubscriberssdiscussions', 'forum', format_string($forum->name));
-                        } else {
-                            $tooltiptext = get_string('rsssubscriberssposts', 'forum', format_string($forum->name));
-                        }
-                        //Get html code for RSS link
-                        $row[] = rss_get_link($course->id, $USER->id, 'forum', $forum->id, $tooltiptext);
-                    } else {
-                        $row[] = '&nbsp;';
-                    }
-                }
-
-                $learningtable->data[] = $row;
-            }
-        }
-    }
-
-
-    /// Output the page
-    $PAGE->navbar->add($strforums);
-    $PAGE->set_title("$course->shortname: $strforums");
-    $PAGE->set_heading($course->fullname);
-    $PAGE->set_button($searchform);
-    echo $OUTPUT->header();
-
-    if (!isguest()) {
-        echo $OUTPUT->box_start('subscription');
-        echo '<span class="helplink">';
-        echo '<a href="index.php?id='.$course->id.'&amp;subscribe=1">'.get_string('allsubscribe', 'forum').'</a>';
-        echo '</span><br /><span class="helplink">';
-        echo '<a href="index.php?id='.$course->id.'&amp;subscribe=0">'.get_string('allunsubscribe', 'forum').'</a>';
-        echo '</span>';
-        echo $OUTPUT->box_end();
-        echo $OUTPUT->box('&nbsp;', 'clearer');
-    }
-
-    if ($generalforums) {
-        echo $OUTPUT->heading(get_string('generalforums', 'forum'));
-        echo $OUTPUT->table($generaltable);
-    }
-
-    if ($learningforums) {
-        echo $OUTPUT->heading(get_string('learningforums', 'forum'));
-        echo $OUTPUT->table($learningtable);
-    }
-
-    echo $OUTPUT->footer();
-
-?>
+}
+
+
+/// Output the page
+$PAGE->navbar->add($strforums);
+$PAGE->set_title("$course->shortname: $strforums");
+$PAGE->set_heading($course->fullname);
+$PAGE->set_button($searchform);
+echo $OUTPUT->header();
+
+if (!isguest()) {
+    echo $OUTPUT->box_start('subscription');
+    echo '<span class="helplink">';
+    echo '<a href="index.php?id='.$course->id.'&amp;subscribe=1">'.get_string('allsubscribe', 'forum').'</a>';
+    echo '</span><br /><span class="helplink">';
+    echo '<a href="index.php?id='.$course->id.'&amp;subscribe=0">'.get_string('allunsubscribe', 'forum').'</a>';
+    echo '</span>';
+    echo $OUTPUT->box_end();
+    echo $OUTPUT->box('&nbsp;', 'clearer');
+}
+
+if ($generalforums) {
+    echo $OUTPUT->heading(get_string('generalforums', 'forum'));
+    echo $OUTPUT->table($generaltable);
+}
+
+if ($learningforums) {
+    echo $OUTPUT->heading(get_string('learningforums', 'forum'));
+    echo $OUTPUT->table($learningtable);
+}
+
+echo $OUTPUT->footer();
+
+?>
\ No newline at end of file
index b322fcf0bb030c63ba7fb3850c9abf6e750741a4..bd7ff27fc50a2bc3c1564e9dbf2c0d573e73c4e5 100644 (file)
@@ -1,71 +1,80 @@
-<?php // $Id$
-
-      //  Set tracking option for the forum.
-
-    require_once("../../config.php");
-    require_once("lib.php");
-
-    $f          = required_param('f',PARAM_INT); // The forum to mark
-    $mark       = required_param('mark',PARAM_ALPHA); // Read or unread?
-    $d          = optional_param('d',0,PARAM_INT); // Discussion to mark.
-    $returnpage = optional_param('returnpage', 'index.php', PARAM_FILE);    // Page to return to.
-
-    if (! $forum = $DB->get_record("forum", array("id" => $f))) {
-        print_error('invalidforumid', 'forum');
-    }
-
-    if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
-        print_error('invalidcourseid');
-    }
-
-    if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
-        print_error('invalidcoursemodule');
-    }
-
-    $user = $USER;
-
-    require_course_login($course, false, $cm);
+<?php
+
+  //  Set tracking option for the forum.
+
+require_once("../../config.php");
+require_once("lib.php");
+
+$f          = required_param('f',PARAM_INT); // The forum to mark
+$mark       = required_param('mark',PARAM_ALPHA); // Read or unread?
+$d          = optional_param('d',0,PARAM_INT); // Discussion to mark.
+$returnpage = optional_param('returnpage', 'index.php', PARAM_FILE);    // Page to return to.
+
+$url = new moodle_url($CFG->wwwroot.'/mod/forum/markposts.php', array('f'=>$f, 'mark'=>$mark));
+if ($d !== 0) {
+    $url->param('d', $d);
+}
+if ($returnpage !== 'index.php') {
+    $url->param('returnpage', $returnpage);
+}
+$PAGE->set_url($url);
+
+if (! $forum = $DB->get_record("forum", array("id" => $f))) {
+    print_error('invalidforumid', 'forum');
+}
+
+if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
+    print_error('invalidcourseid');
+}
+
+if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
+    print_error('invalidcoursemodule');
+}
+
+$user = $USER;
+
+require_course_login($course, false, $cm);
+
+if ($returnpage == 'index.php') {
+    $returnto = forum_go_back_to($returnpage.'?id='.$course->id);
+} else {
+    $returnto = forum_go_back_to($returnpage.'?f='.$forum->id);
+}
+
+if (has_capability('moodle/legacy:guest', get_context_instance(CONTEXT_SYSTEM), 0, false)) {   // Guests can't change forum
+    $PAGE->set_title($course->shortname);
+    $PAGE->set_heading($course->fullname);
+    echo $OUTPUT->header();
+    echo $OUTPUT->confirm(get_string('noguesttracking', 'forum').'<br /><br />'.get_string('liketologin'), get_login_url(), $returnto);
+    echo $OUTPUT->footer();
+    exit;
+}
+
+$info = new object();
+$info->name  = fullname($user);
+$info->forum = format_string($forum->name);
+
+if ($mark == 'read') {
+    if (!empty($d)) {
+        if (! $discussion = $DB->get_record('forum_discussions', array('id'=> $d, 'forum'=> $forum->id))) {
+            print_error('invaliddiscussionid', 'forum');
+        }
 
-    if ($returnpage == 'index.php') {
-        $returnto = forum_go_back_to($returnpage.'?id='.$course->id);
+        if (forum_tp_mark_discussion_read($user, $d)) {
+            add_to_log($course->id, "discussion", "mark read", "view.php?f=$forum->id", $d, $cm->id);
+        }
     } else {
-        $returnto = forum_go_back_to($returnpage.'?f='.$forum->id);
-    }
-
-    if (isguest()) {   // Guests can't change forum
-        $PAGE->set_title($course->shortname);
-        $PAGE->set_heading($course->fullname);
-        echo $OUTPUT->header();
-        echo $OUTPUT->confirm(get_string('noguesttracking', 'forum').'<br /><br />'.get_string('liketologin'), get_login_url(), $returnto);
-        echo $OUTPUT->footer();
-        exit;
-    }
-
-    $info = new object();
-    $info->name  = fullname($user);
-    $info->forum = format_string($forum->name);
-
-    if ($mark == 'read') {
-        if (!empty($d)) {
-            if (! $discussion = $DB->get_record('forum_discussions', array('id'=> $d, 'forum'=> $forum->id))) {
-                print_error('invaliddiscussionid', 'forum');
-            }
-
-            if (forum_tp_mark_discussion_read($user, $d)) {
-                add_to_log($course->id, "discussion", "mark read", "view.php?f=$forum->id", $d, $cm->id);
-            }
-        } else {
-            // Mark all messages read in current group
-            $currentgroup = groups_get_activity_group($cm);
-            if(!$currentgroup) {
-                // mark_forum_read requires ===false, while get_activity_group
-                // may return 0
-                $currentgroup=false;
-            }
-            if (forum_tp_mark_forum_read($user, $forum->id,$currentgroup)) {
-                add_to_log($course->id, "forum", "mark read", "view.php?f=$forum->id", $forum->id, $cm->id);
-            }
+        // Mark all messages read in current group
+        $currentgroup = groups_get_activity_group($cm);
+        if(!$currentgroup) {
+            // mark_forum_read requires ===false, while get_activity_group
+            // may return 0
+            $currentgroup=false;
+        }
+        if (forum_tp_mark_forum_read($user, $forum->id,$currentgroup)) {
+            add_to_log($course->id, "forum", "mark read", "view.php?f=$forum->id", $forum->id, $cm->id);
         }
+    }
 
 /// FUTURE - Add ability to mark them as unread.
 //    } else { // subscribe
@@ -75,8 +84,8 @@
 //        } else {
 //            print_error("Could not start tracking that forum", $_SERVER["HTTP_REFERER"]);
 //        }
-    }
+}
 
-    redirect($returnto);
+redirect($returnto);
 
-?>
+?>
\ No newline at end of file
index af9e9f7c4862dd360844647f72641fdd4b84d9a3..8607bc6b3be9200a0270ab39db27f915e2c5cdbb 100644 (file)
-<?php // $Id$
+<?php
 
 //  Edit and save a new post to a discussion
 
-    require_once('../../config.php');
-    require_once('lib.php');
-
-    $reply   = optional_param('reply', 0, PARAM_INT);
-    $forum   = optional_param('forum', 0, PARAM_INT);
-    $edit    = optional_param('edit', 0, PARAM_INT);
-    $delete  = optional_param('delete', 0, PARAM_INT);
-    $prune   = optional_param('prune', 0, PARAM_INT);
-    $name    = optional_param('name', '', PARAM_CLEAN);
-    $confirm = optional_param('confirm', 0, PARAM_INT);
-    $groupid = optional_param('groupid', null, PARAM_INT);
-
-    $PAGE->set_url('/mod/forum/post.php', array(
-            'reply' => $reply,
-            'forum' => $forum,
-            'edit'  => $edit,
-            'delete'=> $delete,
-            'prune' => $prune,
-            'name'  => $name,
-            'confirm'=>$confirm,
-            'groupid'=>$groupid,
-            ));
-    //these page_params will be passed as hidden variables later in the form.
-    $page_params = array('reply'=>$reply, 'forum'=>$forum, 'edit'=>$edit);
-
-    $sitecontext = get_context_instance(CONTEXT_SYSTEM);
-
-    if (has_capability('moodle/legacy:guest', $sitecontext, NULL, false)) {
-
-        if (!empty($forum)) {      // User is starting a new discussion in a forum
-            if (! $forum = $DB->get_record('forum', array('id' => $forum))) {
-                print_error('invalidforumid', 'forum');
-            }
-        } else if (!empty($reply)) {      // User is writing a new reply
-            if (! $parent = forum_get_post_full($reply)) {
-                print_error('invalidparentpostid', 'forum');
-            }
-            if (! $discussion = $DB->get_record('forum_discussions', array('id' => $parent->discussion))) {
-                print_error('notpartofdiscussion', 'forum');
-            }
-            if (! $forum = $DB->get_record('forum', array('id' => $discussion->forum))) {
-                print_error('invalidforumid');
-            }
+require_once('../../config.php');
+require_once('lib.php');
+
+$reply   = optional_param('reply', 0, PARAM_INT);
+$forum   = optional_param('forum', 0, PARAM_INT);
+$edit    = optional_param('edit', 0, PARAM_INT);
+$delete  = optional_param('delete', 0, PARAM_INT);
+$prune   = optional_param('prune', 0, PARAM_INT);
+$name    = optional_param('name', '', PARAM_CLEAN);
+$confirm = optional_param('confirm', 0, PARAM_INT);
+$groupid = optional_param('groupid', null, PARAM_INT);
+
+$PAGE->set_url('/mod/forum/post.php', array(
+        'reply' => $reply,
+        'forum' => $forum,
+        'edit'  => $edit,
+        'delete'=> $delete,
+        'prune' => $prune,
+        'name'  => $name,
+        'confirm'=>$confirm,
+        'groupid'=>$groupid,
+        ));
+//these page_params will be passed as hidden variables later in the form.
+$page_params = array('reply'=>$reply, 'forum'=>$forum, 'edit'=>$edit);
+
+$sitecontext = get_context_instance(CONTEXT_SYSTEM);
+
+if (has_capability('moodle/legacy:guest', $sitecontext, NULL, false)) {
+
+    if (!empty($forum)) {      // User is starting a new discussion in a forum
+        if (! $forum = $DB->get_record('forum', array('id' => $forum))) {
+            print_error('invalidforumid', 'forum');
         }
-        if (! $course = $DB->get_record('course', array('id' => $forum->course))) {
-            print_error('invalidcourseid');
+    } else if (!empty($reply)) {      // User is writing a new reply
+        if (! $parent = forum_get_post_full($reply)) {
+            print_error('invalidparentpostid', 'forum');
         }
-
-        if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { // For the logs
-            print_error('invalidcoursemodule');
-        } else {
-            $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+        if (! $discussion = $DB->get_record('forum_discussions', array('id' => $parent->discussion))) {
+            print_error('notpartofdiscussion', 'forum');
         }
-
-        if (!get_referer()) {   // No referer - probably coming in via email  See MDL-9052
-            require_login();
+        if (! $forum = $DB->get_record('forum', array('id' => $discussion->forum))) {
+            print_error('invalidforumid');
         }
+    }
+    if (! $course = $DB->get_record('course', array('id' => $forum->course))) {
+        print_error('invalidcourseid');
+    }
 
-        $PAGE->set_title($course->shortname);
-        $PAGE->set_heading($course->fullname);
+    if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { // For the logs
+        print_error('invalidcoursemodule');
+    } else {
+        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+    }
 
-        echo $OUTPUT->header();
-        echo $OUTPUT->confirm(get_string('noguestpost', 'forum').'<br /><br />'.get_string('liketologin'), get_login_url(), get_referer(false));
-        echo $OUTPUT->footer();
-        exit;
+    if (!get_referer()) {   // No referer - probably coming in via email  See MDL-9052
+        require_login();
     }
 
-    require_login(0, false);   // Script is useless unless they're logged in
+    $PAGE->set_title($course->shortname);
+    $PAGE->set_heading($course->fullname);
 
-    if (!empty($forum)) {      // User is starting a new discussion in a forum
-        if (! $forum = $DB->get_record("forum", array("id" => $forum))) {
-            print_error('invalidforumid', 'forum');
-        }
-        if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
-            print_error('invalidcourseid');
-        }
-        if (! $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
-            print_error("invalidcoursemodule");
-        }
+    echo $OUTPUT->header();
+    echo $OUTPUT->confirm(get_string('noguestpost', 'forum').'<br /><br />'.get_string('liketologin'), get_login_url(), get_referer(false));
+    echo $OUTPUT->footer();
+    exit;
+}
 
-        $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
+require_login(0, false);   // Script is useless unless they're logged in
 
-        if (! forum_user_can_post_discussion($forum, $groupid, -1, $cm)) {
-            if (has_capability('moodle/legacy:guest', $coursecontext, NULL, false)) {  // User is a guest here!
-                $SESSION->wantsurl = $FULLME;
-                $SESSION->enrolcancel = $_SERVER['HTTP_REFERER'];
-                redirect($CFG->wwwroot.'/course/enrol.php?id='.$course->id, get_string('youneedtoenrol'));
-            } else {
-                print_error('nopostforum', 'forum');
-            }
-        }
+if (!empty($forum)) {      // User is starting a new discussion in a forum
+    if (! $forum = $DB->get_record("forum", array("id" => $forum))) {
+        print_error('invalidforumid', 'forum');
+    }
+    if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
+        print_error('invalidcourseid');
+    }
+    if (! $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
+        print_error("invalidcoursemodule");
+    }
 
-        if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
-            print_error("activityiscurrentlyhidden");
-        }
+    $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
 
-        if (isset($_SERVER["HTTP_REFERER"])) {
-            $SESSION->fromurl = $_SERVER["HTTP_REFERER"];
+    if (! forum_user_can_post_discussion($forum, $groupid, -1, $cm)) {
+        if (has_capability('moodle/legacy:guest', $coursecontext, NULL, false)) {  // User is a guest here!
+            $SESSION->wantsurl = $FULLME;
+            $SESSION->enrolcancel = $_SERVER['HTTP_REFERER'];
+            redirect($CFG->wwwroot.'/course/enrol.php?id='.$course->id, get_string('youneedtoenrol'));
         } else {
-            $SESSION->fromurl = '';
+            print_error('nopostforum', 'forum');
         }
+    }
 
+    if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
+        print_error("activityiscurrentlyhidden");
+    }
 
-        // Load up the $post variable.
+    if (isset($_SERVER["HTTP_REFERER"])) {
+        $SESSION->fromurl = $_SERVER["HTTP_REFERER"];
+    } else {
+        $SESSION->fromurl = '';
+    }
 
-        $post = new object();
-        $post->course        = $course->id;
-        $post->forum         = $forum->id;
-        $post->discussion    = 0;           // ie discussion # not defined yet
-        $post->parent        = 0;
-        $post->subject       = '';
-        $post->userid        = $USER->id;
-        $post->message       = '';
-        $post->messageformat = FORMAT_HTML; // TODO: better default
-        $post->messagetrust  = 0;
 
-        if (isset($groupid)) {
-            $post->groupid = $groupid;
-        } else {
-            $post->groupid = groups_get_activity_group($cm);
-        }
+    // Load up the $post variable.
 
-        forum_set_return();
+    $post = new object();
+    $post->course        = $course->id;
+    $post->forum         = $forum->id;
+    $post->discussion    = 0;           // ie discussion # not defined yet
+    $post->parent        = 0;
+    $post->subject       = '';
+    $post->userid        = $USER->id;
+    $post->message       = '';
+    $post->messageformat = FORMAT_HTML; // TODO: better default
+    $post->messagetrust  = 0;
 
-    } else if (!empty($reply)) {      // User is writing a new reply
+    if (isset($groupid)) {
+        $post->groupid = $groupid;
+    } else {
+        $post->groupid = groups_get_activity_group($cm);
+    }
 
-        if (! $parent = forum_get_post_full($reply)) {
-            print_error('invalidparentpostid', 'forum');
-        }
-        if (! $discussion = $DB->get_record("forum_discussions", array("id" => $parent->discussion))) {
-            print_error('notpartofdiscussion', 'forum');
-        }
-        if (! $forum = $DB->get_record("forum", array("id" => $discussion->forum))) {
-            print_error('invalidforumid', 'forum');
-        }
-        if (! $course = $DB->get_record("course", array("id" => $discussion->course))) {
-            print_error('invalidcourseid');
-        }
-        if (! $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
-            print_error('invalidcoursemodule');
-        }
+    forum_set_return();
 
-        // Ensure lang, theme, etc. is set up properly. MDL-6926
-        $PAGE->set_course($course);
+} else if (!empty($reply)) {      // User is writing a new reply
 
-        $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
-        $modcontext    = get_context_instance(CONTEXT_MODULE, $cm->id);
+    if (! $parent = forum_get_post_full($reply)) {
+        print_error('invalidparentpostid', 'forum');
+    }
+    if (! $discussion = $DB->get_record("forum_discussions", array("id" => $parent->discussion))) {
+        print_error('notpartofdiscussion', 'forum');
+    }
+    if (! $forum = $DB->get_record("forum", array("id" => $discussion->forum))) {
+        print_error('invalidforumid', 'forum');
+    }
+    if (! $course = $DB->get_record("course", array("id" => $discussion->course))) {
+        print_error('invalidcourseid');
+    }
+    if (! $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
+        print_error('invalidcoursemodule');
+    }
 
-        if (! forum_user_can_post($forum, $discussion, $USER, $cm, $course, $modcontext)) {
-            if (has_capability('moodle/legacy:guest', $coursecontext, NULL, false)) {  // User is a guest here!
-                $SESSION->wantsurl = $FULLME;
-                $SESSION->enrolcancel = $_SERVER['HTTP_REFERER'];
-                redirect($CFG->wwwroot.'/course/enrol.php?id='.$course->id, get_string('youneedtoenrol'));
-            } else {
-                print_error('nopostforum', 'forum');
-            }
+    // Ensure lang, theme, etc. is set up properly. MDL-6926
+    $PAGE->set_course($course);
+
+    $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
+    $modcontext    = get_context_instance(CONTEXT_MODULE, $cm->id);
+
+    if (! forum_user_can_post($forum, $discussion, $USER, $cm, $course, $modcontext)) {
+        if (has_capability('moodle/legacy:guest', $coursecontext, NULL, false)) {  // User is a guest here!
+            $SESSION->wantsurl = $FULLME;
+            $SESSION->enrolcancel = $_SERVER['HTTP_REFERER'];
+            redirect($CFG->wwwroot.'/course/enrol.php?id='.$course->id, get_string('youneedtoenrol'));
+        } else {
+            print_error('nopostforum', 'forum');
         }
+    }
 
-        // Make sure user can post here
-        if (groupmode($course, $cm) == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $modcontext)) {
-            if ($discussion->groupid == -1) {
+    // Make sure user can post here
+    if (isset($cm->groupmode) && empty($course->groupmodeforce)) {
+        $groupmode =  $cm->groupmode;
+    } else {
+        $groupmode = $course->groupmode;
+    }
+    if ($groupmode == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $modcontext)) {
+        if ($discussion->groupid == -1) {
+            print_error('nopostforum', 'forum');
+        } else {
+            if (!groups_is_member($discussion->groupid)) {
                 print_error('nopostforum', 'forum');
-            } else {
-                if (!groups_is_member($discussion->groupid)) {
-                    print_error('nopostforum', 'forum');
-                }
             }
         }
+    }
 
-        if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
-            print_error("activityiscurrentlyhidden");
-        }
+    if (!$cm->visible and !has_capability('moodle/course:viewhiddenactivities', $coursecontext)) {
+        print_error("activityiscurrentlyhidden");
+    }
 
-        // Load up the $post variable.
+    // Load up the $post variable.
 
-        $post = new object();
-        $post->course      = $course->id;
-        $post->forum       = $forum->id;
-        $post->discussion  = $parent->discussion;
-        $post->parent      = $parent->id;
-        $post->subject     = $parent->subject;
-        $post->userid      = $USER->id;
-        $post->message     = '';
+    $post = new object();
+    $post->course      = $course->id;
+    $post->forum       = $forum->id;
+    $post->discussion  = $parent->discussion;
+    $post->parent      = $parent->id;
+    $post->subject     = $parent->subject;
+    $post->userid      = $USER->id;
+    $post->message     = '';
 
-        $post->groupid = ($discussion->groupid == -1) ? 0 : $discussion->groupid;
+    $post->groupid = ($discussion->groupid == -1) ? 0 : $discussion->groupid;
 
-        $strre = get_string('re', 'forum');
-        if (!(substr($post->subject, 0, strlen($strre)) == $strre)) {
-            $post->subject = $strre.' '.$post->subject;
-        }
+    $strre = get_string('re', 'forum');
+    if (!(substr($post->subject, 0, strlen($strre)) == $strre)) {
+        $post->subject = $strre.' '.$post->subject;
+    }
 
-        unset($SESSION->fromdiscussion);
+    unset($SESSION->fromdiscussion);
 
-    } else if (!empty($edit)) {  // User is editing their own post
+} else if (!empty($edit)) {  // User is editing their own post
 
-        if (! $post = forum_get_post_full($edit)) {
-            print_error('invalidpostid', 'forum');
-        }
-        if ($post->parent) {
-            if (! $parent = forum_get_post_full($post->parent)) {
-                print_error('invalidparentpostid', 'forum');
-            }
+    if (! $post = forum_get_post_full($edit)) {
+        print_error('invalidpostid', 'forum');
+    }
+    if ($post->parent) {
+        if (! $parent = forum_get_post_full($post->parent)) {
+            print_error('invalidparentpostid', 'forum');
         }
+    }
 
-        if (! $discussion = $DB->get_record("forum_discussions", array("id" => $post->discussion))) {
-            print_error('notpartofdiscussion', 'forum');
-        }
-        if (! $forum = $DB->get_record("forum", array("id" => $discussion->forum))) {
-            print_error('invalidforumid', 'forum');
-        }
-        if (! $course = $DB->get_record("course", array("id" => $discussion->course))) {
-            print_error('invalidcourseid');
-        }
-        if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
-            print_error('invalidcoursemodule');
-        } else {
-            $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
-        }
-        if (!($forum->type == 'news' && !$post->parent && $discussion->timestart > time())) {
-            if (((time() - $post->created) > $CFG->maxeditingtime) and
-                        !has_capability('mod/forum:editanypost', $modcontext)) {
-                print_error('maxtimehaspassed', 'forum', '', format_time($CFG->maxeditingtime));
-            }
-        }
-        if (($post->userid <> $USER->id) and
+    if (! $discussion = $DB->get_record("forum_discussions", array("id" => $post->discussion))) {
+        print_error('notpartofdiscussion', 'forum');
+    }
+    if (! $forum = $DB->get_record("forum", array("id" => $discussion->forum))) {
+        print_error('invalidforumid', 'forum');
+    }
+    if (! $course = $DB->get_record("course", array("id" => $discussion->course))) {
+        print_error('invalidcourseid');
+    }
+    if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
+        print_error('invalidcoursemodule');
+    } else {
+        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+    }
+    if (!($forum->type == 'news' && !$post->parent && $discussion->timestart > time())) {
+        if (((time() - $post->created) > $CFG->maxeditingtime) and
                     !has_capability('mod/forum:editanypost', $modcontext)) {
-            print_error('cannoteditposts', 'forum');
+            print_error('maxtimehaspassed', 'forum', '', format_time($CFG->maxeditingtime));
         }
+    }
+    if (($post->userid <> $USER->id) and
+                !has_capability('mod/forum:editanypost', $modcontext)) {
+        print_error('cannoteditposts', 'forum');
+    }
 
 
-        // Load up the $post variable.
-        $post->edit   = $edit;
-        $post->course = $course->id;
-        $post->forum  = $forum->id;
-        $post->groupid = ($discussion->groupid == -1) ? 0 : $discussion->groupid;
-
-        $post = trusttext_pre_edit($post, 'message', $modcontext);
-
-        unset($SESSION->fromdiscussion);
+    // Load up the $post variable.
+    $post->edit   = $edit;
+    $post->course = $course->id;
+    $post->forum  = $forum->id;
+    $post->groupid = ($discussion->groupid == -1) ? 0 : $discussion->groupid;
 
+    $post = trusttext_pre_edit($post, 'message', $modcontext);
 
-    }else if (!empty($delete)) {  // User is deleting a post
+    unset($SESSION->fromdiscussion);
 
-        if (! $post = forum_get_post_full($delete)) {
-            print_error('invalidpostid', 'forum');
-        }
-        if (! $discussion = $DB->get_record("forum_discussions", array("id" => $post->discussion))) {
-            print_error('notpartofdiscussion', 'forum');
-        }
-        if (! $forum = $DB->get_record("forum", array("id" => $discussion->forum))) {
-            print_error('invalidforumid', 'forum');
-        }
-        if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $forum->course)) {
-            print_error('invalidcoursemodule');
-        }
-        if (!$course = $DB->get_record('course', array('id' => $forum->course))) {
-            print_error('invalidcourseid');
-        }
 
-        require_login($course, false, $cm);
-        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+}else if (!empty($delete)) {  // User is deleting a post
 
-        if ( !(($post->userid == $USER->id && has_capability('mod/forum:deleteownpost', $modcontext))
-                    || has_capability('mod/forum:deleteanypost', $modcontext)) ) {
-            print_error('cannotdeletepost', 'forum');
-        }
+    if (! $post = forum_get_post_full($delete)) {
+        print_error('invalidpostid', 'forum');
+    }
+    if (! $discussion = $DB->get_record("forum_discussions", array("id" => $post->discussion))) {
+        print_error('notpartofdiscussion', 'forum');
+    }
+    if (! $forum = $DB->get_record("forum", array("id" => $discussion->forum))) {
+        print_error('invalidforumid', 'forum');
+    }
+    if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $forum->course)) {
+        print_error('invalidcoursemodule');
+    }
+    if (!$course = $DB->get_record('course', array('id' => $forum->course))) {
+        print_error('invalidcourseid');
+    }
 
+    require_login($course, false, $cm);
+    $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
 
-        $replycount = forum_count_replies($post);
+    if ( !(($post->userid == $USER->id && has_capability('mod/forum:deleteownpost', $modcontext))
+                || has_capability('mod/forum:deleteanypost', $modcontext)) ) {
+        print_error('cannotdeletepost', 'forum');
+    }
 
-        if (!empty($confirm) && confirm_sesskey()) {    // User has confirmed the delete
 
-            if ($post->totalscore) {
-                notice(get_string("couldnotdeleteratings", "forum"),
-                        forum_go_back_to("discuss.php?d=$post->discussion"));
+    $replycount = forum_count_replies($post);
 
-            } else if ($replycount && !has_capability('mod/forum:deleteanypost', $modcontext)) {
-                print_error("couldnotdeletereplies", "forum",
-                        forum_go_back_to("discuss.php?d=$post->discussion"));
+    if (!empty($confirm) && confirm_sesskey()) {    // User has confirmed the delete
 
-            } else {
-                if (! $post->parent) {  // post is a discussion topic as well, so delete discussion
-                    if ($forum->type == 'single') {
-                        notice("Sorry, but you are not allowed to delete that discussion!",
-                                forum_go_back_to("discuss.php?d=$post->discussion"));
-                    }
-                    forum_delete_discussion($discussion, false, $course, $cm, $forum);
+        if ($post->totalscore) {
+            notice(get_string("couldnotdeleteratings", "forum"),
+                    forum_go_back_to("discuss.php?d=$post->discussion"));
 
-                    add_to_log($discussion->course, "forum", "delete discussion",
-                               "view.php?id=$cm->id", "$forum->id", $cm->id);
+        } else if ($replycount && !has_capability('mod/forum:deleteanypost', $modcontext)) {
+            print_error("couldnotdeletereplies", "forum",
+                    forum_go_back_to("discuss.php?d=$post->discussion"));
 
-                    redirect("view.php?f=$discussion->forum");
+        } else {
+            if (! $post->parent) {  // post is a discussion topic as well, so delete discussion
+                if ($forum->type == 'single') {
+                    notice("Sorry, but you are not allowed to delete that discussion!",
+                            forum_go_back_to("discuss.php?d=$post->discussion"));
+                }
+                forum_delete_discussion($discussion, false, $course, $cm, $forum);
 
-                } else if (forum_delete_post($post, has_capability('mod/forum:deleteanypost', $modcontext),
-                    $course, $cm, $forum)) {
+                add_to_log($discussion->course, "forum", "delete discussion",
+                           "view.php?id=$cm->id", "$forum->id", $cm->id);
 
-                    if ($forum->type == 'single') {
-                        // Single discussion forums are an exception. We show
-                        // the forum itself since it only has one discussion
-                        // thread.
-                        $discussionurl = "view.php?f=$forum->id";
-                    } else {
-                        $discussionurl = "discuss.php?d=$post->discussion";
-                    }
+                redirect("view.php?f=$discussion->forum");
 
-                    add_to_log($discussion->course, "forum", "delete post", $discussionurl, "$post->id", $cm->id);
+            } else if (forum_delete_post($post, has_capability('mod/forum:deleteanypost', $modcontext),
+                $course, $cm, $forum)) {
 
-                    redirect(forum_go_back_to($discussionurl));
+                if ($forum->type == 'single') {
+                    // Single discussion forums are an exception. We show
+                    // the forum itself since it only has one discussion
+                    // thread.
+                    $discussionurl = "view.php?f=$forum->id";
                 } else {
-                    print_error('errorwhiledelete', 'forum');
+                    $discussionurl = "discuss.php?d=$post->discussion";
                 }
-            }
 
+                add_to_log($discussion->course, "forum", "delete post", $discussionurl, "$post->id", $cm->id);
 
-        } else { // User just asked to delete something
+                redirect(forum_go_back_to($discussionurl));
+            } else {
+                print_error('errorwhiledelete', 'forum');
+            }
+        }
 
-            forum_set_return();
 
-            if ($replycount) {
-                if (!has_capability('mod/forum:deleteanypost', $modcontext)) {
-                    print_error("couldnotdeletereplies", "forum",
-                          forum_go_back_to("discuss.php?d=$post->discussion"));
-                }
-                echo $OUTPUT->header();
-                echo $OUTPUT->confirm(get_string("deletesureplural", "forum", $replycount+1),
-                             "post.php?delete=$delete&confirm=$delete",
-                             $CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'#p'.$post->id);
+    } else { // User just asked to delete something
 
-                forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false);
+        forum_set_return();
 
-                if (empty($post->edit)) {
-                    $forumtracked = forum_tp_is_tracked($forum);
-                    $posts = forum_get_all_discussion_posts($discussion->id, "created ASC", $forumtracked);
-                    forum_print_posts_nested($course, $cm, $forum, $discussion, $post, false, false, $forumtracked, $posts);
-                }
-            } else {
-                echo $OUTPUT->header();
-                echo $OUTPUT->confirm(get_string("deletesure", "forum", $replycount),
-                             "post.php?delete=$delete&confirm=$delete",
-                             $CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'#p'.$post->id);
-                forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false);
+        if ($replycount) {
+            if (!has_capability('mod/forum:deleteanypost', $modcontext)) {
+                print_error("couldnotdeletereplies", "forum",
+                      forum_go_back_to("discuss.php?d=$post->discussion"));
             }
+            echo $OUTPUT->header();
+            echo $OUTPUT->confirm(get_string("deletesureplural", "forum", $replycount+1),
+                         "post.php?delete=$delete&confirm=$delete",
+                         $CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'#p'.$post->id);
 
+            forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false);
+
+            if (empty($post->edit)) {
+                $forumtracked = forum_tp_is_tracked($forum);
+                $posts = forum_get_all_discussion_posts($discussion->id, "created ASC", $forumtracked);
+                forum_print_posts_nested($course, $cm, $forum, $discussion, $post, false, false, $forumtracked, $posts);
+            }
+        } else {
+            echo $OUTPUT->header();
+            echo $OUTPUT->confirm(get_string("deletesure", "forum", $replycount),
+                         "post.php?delete=$delete&confirm=$delete",
+                         $CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'#p'.$post->id);
+            forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false);
         }
-        echo $OUTPUT->footer();
-        die;
 
+    }
+    echo $OUTPUT->footer();
+    die;
 
-    } else if (!empty($prune)) {  // Pruning
 
-        if (!$post = forum_get_post_full($prune)) {
-            print_error('invalidpostid', 'forum');
-        }
-        if (!$discussion = $DB->get_record("forum_discussions", array("id" => $post->discussion))) {
-            print_error('notpartofdiscussion', 'forum');
-        }
-        if (!$forum = $DB->get_record("forum", array("id" => $discussion->forum))) {
-            print_error('invalidforumid', 'forum');
-        }
-        if ($forum->type == 'single') {
-            print_error('cannotsplit', 'forum');
-        }
-        if (!$post->parent) {
-            print_error('alreadyfirstpost', 'forum');
-        }
-        if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $forum->course)) { // For the logs
-            print_error('invalidcoursemodule');
-        } else {
-            $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
-        }
-        if (!has_capability('mod/forum:splitdiscussions', $modcontext)) {
-            print_error('cannotsplit', 'forum');
-        }
+} else if (!empty($prune)) {  // Pruning
 
-        if (!empty($name) && confirm_sesskey()) {    // User has confirmed the prune
+    if (!$post = forum_get_post_full($prune)) {
+        print_error('invalidpostid', 'forum');
+    }
+    if (!$discussion = $DB->get_record("forum_discussions", array("id" => $post->discussion))) {
+        print_error('notpartofdiscussion', 'forum');
+    }
+    if (!$forum = $DB->get_record("forum", array("id" => $discussion->forum))) {
+        print_error('invalidforumid', 'forum');
+    }
+    if ($forum->type == 'single') {
+        print_error('cannotsplit', 'forum');
+    }
+    if (!$post->parent) {
+        print_error('alreadyfirstpost', 'forum');
+    }
+    if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $forum->course)) { // For the logs
+        print_error('invalidcoursemodule');
+    } else {
+        $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+    }
+    if (!has_capability('mod/forum:splitdiscussions', $modcontext)) {
+        print_error('cannotsplit', 'forum');
+    }
 
-            $newdiscussion = new object();
-            $newdiscussion->course       = $discussion->course;
-            $newdiscussion->forum        = $discussion->forum;
-            $newdiscussion->name         = $name;
-            $newdiscussion->firstpost    = $post->id;
-            $newdiscussion->userid       = $discussion->userid;
-            $newdiscussion->groupid      = $discussion->groupid;
-            $newdiscussion->assessed     = $discussion->assessed;
-            $newdiscussion->usermodified = $post->userid;
-            $newdiscussion->timestart    = $discussion->timestart;
-            $newdiscussion->timeend      = $discussion->timeend;
+    if (!empty($name) && confirm_sesskey()) {    // User has confirmed the prune
 
-            $newid = $DB->insert_record('forum_discussions', $newdiscussion);
+        $newdiscussion = new object();
+        $newdiscussion->course       = $discussion->course;
+        $newdiscussion->forum        = $discussion->forum;
+        $newdiscussion->name         = $name;
+        $newdiscussion->firstpost    = $post->id;
+        $newdiscussion->userid       = $discussion->userid;
+        $newdiscussion->groupid      = $discussion->groupid;
+        $newdiscussion->assessed     = $discussion->assessed;
+        $newdiscussion->usermodified = $post->userid;
+        $newdiscussion->timestart    = $discussion->timestart;
+        $newdiscussion->timeend      = $discussion->timeend;
 
-            $newpost = new object();
-            $newpost->id      = $post->id;
-            $newpost->parent  = 0;
-            $newpost->subject = $name;
+        $newid = $DB->insert_record('forum_discussions', $newdiscussion);
 
-            $DB->update_record("forum_posts", $newpost);
+        $newpost = new object();
+        $newpost->id      = $post->id;
+        $newpost->parent  = 0;
+        $newpost->subject = $name;
 
-            forum_change_discussionid($post->id, $newid);
+        $DB->update_record("forum_posts", $newpost);
 
-            // update last post in each discussion
-            forum_discussion_update_last_post($discussion->id);
-            forum_discussion_update_last_post($newid);
+        forum_change_discussionid($post->id, $newid);
 
-            add_to_log($discussion->course, "forum", "prune post",
-                           "discuss.php?d=$newid", "$post->id", $cm->id);
+        // update last post in each discussion
+        forum_discussion_update_last_post($discussion->id);
+        forum_discussion_update_last_post($newid);
 
-            redirect(forum_go_back_to("discuss.php?d=$newid"));
+        add_to_log($discussion->course, "forum", "prune post",
+                       "discuss.php?d=$newid", "$post->id", $cm->id);
 
-        } else { // User just asked to prune something
+        redirect(forum_go_back_to("discuss.php?d=$newid"));
 
-            $course = $DB->get_record('course', array('id' => $forum->course));
+    } else { // User just asked to prune something
 
-            $PAGE->navbar->add(format_string($post->subject, true), new moodle_url($CFG->wwwroot.'/mod/forum/discuss.php', array('d'=>$discussion->id)));
-            $PAGE->navbar->add(get_string("prune", "forum"));
-            $PAGE->set_title(format_string($discussion->name).": ".format_string($post->subject));
-            echo $OUTPUT->header();
-            echo $OUTPUT->heading(get_string('pruneheading', 'forum'));
-            echo '<center>';
+        $course = $DB->get_record('course', array('id' => $forum->course));
 
-            include('prune.html');
+        $PAGE->navbar->add(format_string($post->subject, true), new moodle_url($CFG->wwwroot.'/mod/forum/discuss.php', array('d'=>$discussion->id)));
+        $PAGE->navbar->add(get_string("prune", "forum"));
+        $PAGE->set_title(format_string($discussion->name).": ".format_string($post->subject));
+        echo $OUTPUT->header();
+        echo $OUTPUT->heading(get_string('pruneheading', 'forum'));
+        echo '<center>';
 
-            forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false);
-            echo '</center>';
-        }
-        echo $OUTPUT->footer();
-        die;
-    } else {
-        print_error('unknowaction');
+        include('prune.html');
 
+        forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false);
+        echo '</center>';
     }
+    echo $OUTPUT->footer();
+    die;
+} else {
+    print_error('unknowaction');
 
-    if (!isset($coursecontext)) {
-        // Has not yet been set by post.php.
-        $coursecontext = get_context_instance(CONTEXT_COURSE, $forum->course);
-    }
+}
+
+if (!isset($coursecontext)) {
+    // Has not yet been set by post.php.
+    $coursecontext = get_context_instance(CONTEXT_COURSE, $forum->course);
+}
 
 
 // from now on user must be logged on properly
 
-    if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { // For the logs
-        print_error('invalidcoursemodule');
-    }
-    $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
-    require_login($course, false, $cm);
+if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { // For the logs
+    print_error('invalidcoursemodule');
+}
+$modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
+require_login($course, false, $cm);
 
-    if (isguestuser()) {
-        // just in case
-        print_error('noguest');
+if (isguestuser()) {
+    // just in case
+    print_error('noguest');
+}
+
+if (!isset($forum->maxattachments)) {  // TODO - delete this once we add a field to the forum table
+    $forum->maxattachments = 3;
+}
+
+require_once('post_form.php');
+
+$mform_post = new mod_forum_post_form('post.php', array('course'=>$course, 'cm'=>$cm, 'coursecontext'=>$coursecontext, 'modcontext'=>$modcontext, 'forum'=>$forum, 'post'=>$post));
+
+$draftitemid = file_get_submitted_draft_itemid('attachments');
+file_prepare_draft_area($draftitemid, $modcontext->id, 'forum_attachment', empty($post->id)?null:$post->id);
+
+//load data into form NOW!
+
+if ($USER->id != $post->userid) {   // Not the original author, so add a message to the end
+    $data->date = userdate($post->modified);
+    if ($post->messageformat == FORMAT_HTML) {
+        $data->name = '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'&course='.$post->course.'">'.
+                       fullname($USER).'</a>';
+        $post->message .= '<p>(<span class="edited">'.get_string('editedby', 'forum', $data).'</span>)</p>';
+    } else {
+        $data->name = fullname($USER);
+        $post->message .= "\n\n(".get_string('editedby', 'forum', $data).')';
     }
+}
 
-    if (!isset($forum->maxattachments)) {  // TODO - delete this once we add a field to the forum table
-        $forum->maxattachments = 3;
+if (!empty($parent)) {
+    $heading = get_string("yourreply", "forum");
+} else {
+    if ($forum->type == 'qanda') {
+        $heading = get_string('yournewquestion', 'forum');
+    } else {
+        $heading = get_string('yournewtopic', 'forum');
+    }
+}
+
+if (forum_is_subscribed($USER->id, $forum->id)) {
+    $subscribe = true;
+
+} else if (forum_user_has_posted($forum->id, 0, $USER->id)) {
+    $subscribe = false;
+
+} else {
+    // user not posted yet - use subscription default specified in profile
+    $subscribe = !empty($USER->autosubscribe);
+}
+
+$draftid_editor = file_get_submitted_draft_itemid('message');
+$currenttext = file_prepare_draft_area($draftid_editor, $modcontext->id, 'forum_post', empty($post->id) ? null : $post->id, array('subdirs'=>true), $post->message);
+$mform_post->set_data(array(        'attachments'=>$draftitemid,
+                                    'general'=>$heading,
+                                    'subject'=>$post->subject,
+                                    'message'=>array(
+                                        'text'=>$currenttext,
+                                        'format'=>empty($post->messageformat) ? FORMAT_HTML : $post->messageformat, //TODO: add some better default
+                                        'itemid'=>$draftid_editor
+                                    ),
+                                    'subscribe'=>$subscribe?1:0,
+                                    'mailnow'=>!empty($post->mailnow),
+                                    'userid'=>$post->userid,
+                                    'parent'=>$post->parent,
+                                    'discussion'=>$post->discussion,
+                                    'course'=>$course->id) +
+                                    $page_params +
+
+                            (isset($post->format)?array(
+                                    'format'=>$post->format):
+                                array())+
+
+                            (isset($discussion->timestart)?array(
+                                    'timestart'=>$discussion->timestart):
+                                array())+
+
+                            (isset($discussion->timeend)?array(
+                                    'timeend'=>$discussion->timeend):
+                                array())+
+
+                            (isset($post->groupid)?array(
+                                    'groupid'=>$post->groupid):
+                                array())+
+
+                            (isset($discussion->id)?
+                                    array('discussion'=>$discussion->id):
+                                    array()));
+
+if ($fromform = $mform_post->get_data()) {
+
+    if (empty($SESSION->fromurl)) {
+        $errordestination = "$CFG->wwwroot/mod/forum/view.php?f=$forum->id";
+    } else {
+        $errordestination = $SESSION->fromurl;
     }
 
-    require_once('post_form.php');
+    $fromform->itemid        = $fromform->message['itemid'];
+    $fromform->messageformat = $fromform->message['format'];
+    $fromform->message       = $fromform->message['text'];
+    // WARNING: the $fromform->message array has been overwritten, do not use it anymore!
+    $fromform->messagetrust  = trusttext_trusted($modcontext);
 
-    $mform_post = new mod_forum_post_form('post.php', array('course'=>$course, 'cm'=>$cm, 'coursecontext'=>$coursecontext, 'modcontext'=>$modcontext, 'forum'=>$forum, 'post'=>$post));
+    if ($fromform->edit) {           // Updating a post
+        unset($fromform->groupid);
+        $fromform->id = $fromform->edit;
+        $message = '';
 
-    $draftitemid = file_get_submitted_draft_itemid('attachments');
-    file_prepare_draft_area($draftitemid, $modcontext->id, 'forum_attachment', empty($post->id)?null:$post->id);
+        //fix for bug #4314
+        if (!$realpost = $DB->get_record('forum_posts', array('id' => $fromform->id))) {
+            $realpost = new object;
+            $realpost->userid = -1;
+        }
 
-    //load data into form NOW!
 
-    if ($USER->id != $post->userid) {   // Not the original author, so add a message to the end
-        $data->date = userdate($post->modified);
-        if ($post->messageformat == FORMAT_HTML) {
-            $data->name = '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$USER->id.'&course='.$post->course.'">'.
-                           fullname($USER).'</a>';
-            $post->message .= '<p>(<span class="edited">'.get_string('editedby', 'forum', $data).'</span>)</p>';
-        } else {
-            $data->name = fullname($USER);
-            $post->message .= "\n\n(".get_string('editedby', 'forum', $data).')';
+        // if user has edit any post capability
+        // or has either startnewdiscussion or reply capability and is editting own post
+        // then he can proceed
+        // MDL-7066
+        if ( !(($realpost->userid == $USER->id && (has_capability('mod/forum:replypost', $modcontext)
+                            || has_capability('mod/forum:startdiscussion', $modcontext))) ||
+                            has_capability('mod/forum:editanypost', $modcontext)) ) {
+            print_error('cannotupdatepost', 'forum');
         }
-    }
 
-    if (!empty($parent)) {
-        $heading = get_string("yourreply", "forum");
-    } else {
-        if ($forum->type == 'qanda') {
-            $heading = get_string('yournewquestion', 'forum');
-        } else {
-            $heading = get_string('yournewtopic', 'forum');
+        $updatepost = $fromform; //realpost
+        $updatepost->forum = $forum->id;
+        if (!forum_update_post($updatepost, $mform_post, $message)) {
+            print_error("couldnotupdate", "forum", $errordestination);
         }
-    }
 
-    if (forum_is_subscribed($USER->id, $forum->id)) {
-        $subscribe = true;
+        // MDL-11818
+        if (($forum->type == 'single') && ($updatepost->parent == '0')){ // updating first post of single discussion type -> updating forum intro
+            $forum->intro = $updatepost->message;
+            $forum->timemodified = time();
+            $DB->update_record("forum", $forum);
+        }
 
-    } else if (forum_user_has_posted($forum->id, 0, $USER->id)) {
-        $subscribe = false;
+        $timemessage = 2;
+        if (!empty($message)) { // if we're printing stuff about the file upload
+            $timemessage = 4;
+        }
+        $message .= '<br />'.get_string("postupdated", "forum");
 
-    } else {
-        // user not posted yet - use subscription default specified in profile
-        $subscribe = !empty($USER->autosubscribe);
-    }
-
-    $draftid_editor = file_get_submitted_draft_itemid('message');
-    $currenttext = file_prepare_draft_area($draftid_editor, $modcontext->id, 'forum_post', empty($post->id) ? null : $post->id, array('subdirs'=>true), $post->message);
-    $mform_post->set_data(array(        'attachments'=>$draftitemid,
-                                        'general'=>$heading,
-                                        'subject'=>$post->subject,
-                                        'message'=>array(
-                                            'text'=>$currenttext,
-                                            'format'=>empty($post->messageformat) ? FORMAT_HTML : $post->messageformat, //TODO: add some better default
-                                            'itemid'=>$draftid_editor
-                                        ),
-                                        'subscribe'=>$subscribe?1:0,
-                                        'mailnow'=>!empty($post->mailnow),
-                                        'userid'=>$post->userid,
-                                        'parent'=>$post->parent,
-                                        'discussion'=>$post->discussion,
-                                        'course'=>$course->id) +
-                                        $page_params +
-
-                                (isset($post->format)?array(
-                                        'format'=>$post->format):
-                                    array())+
-
-                                (isset($discussion->timestart)?array(
-                                        'timestart'=>$discussion->timestart):
-                                    array())+
-
-                                (isset($discussion->timeend)?array(
-                                        'timeend'=>$discussion->timeend):
-                                    array())+
-
-                                (isset($post->groupid)?array(
-                                        'groupid'=>$post->groupid):
-                                    array())+
-
-                                (isset($discussion->id)?
-                                        array('discussion'=>$discussion->id):
-                                        array()));
-
-    if ($fromform = $mform_post->get_data()) {
-
-        if (empty($SESSION->fromurl)) {
-            $errordestination = "$CFG->wwwroot/mod/forum/view.php?f=$forum->id";
+        if ($subscribemessage = forum_post_subscription($fromform, $forum)) {
+            $timemessage = 4;
+        }
+        if ($forum->type == 'single') {
+            // Single discussion forums are an exception. We show
+            // the forum itself since it only has one discussion
+            // thread.
+            $discussionurl = "view.php?f=$forum->id";
         } else {
-            $errordestination = $SESSION->fromurl;
+            $discussionurl = "discuss.php?d=$discussion->id#p$fromform->id";
         }
+        add_to_log($course->id, "forum", "update post",
+                "$discussionurl&amp;parent=$fromform->id", "$fromform->id", $cm->id);
 
-        $fromform->itemid        = $fromform->message['itemid'];
-        $fromform->messageformat = $fromform->message['format'];
-        $fromform->message       = $fromform->message['text'];
-        // WARNING: the $fromform->message array has been overwritten, do not use it anymore!
-        $fromform->messagetrust  = trusttext_trusted($modcontext);
-
-        if ($fromform->edit) {           // Updating a post
-            unset($fromform->groupid);
-            $fromform->id = $fromform->edit;
-            $message = '';
-
-            //fix for bug #4314
-            if (!$realpost = $DB->get_record('forum_posts', array('id' => $fromform->id))) {
-                $realpost = new object;
-                $realpost->userid = -1;
-            }
+        redirect(forum_go_back_to("$discussionurl"), $message.$subscribemessage, $timemessage);
 
+        exit;
 
-            // if user has edit any post capability
-            // or has either startnewdiscussion or reply capability and is editting own post
-            // then he can proceed
-            // MDL-7066
-            if ( !(($realpost->userid == $USER->id && (has_capability('mod/forum:replypost', $modcontext)
-                                || has_capability('mod/forum:startdiscussion', $modcontext))) ||
-                                has_capability('mod/forum:editanypost', $modcontext)) ) {
-                print_error('cannotupdatepost', 'forum');
-            }
-
-            $updatepost = $fromform; //realpost
-            $updatepost->forum = $forum->id;
-            if (!forum_update_post($updatepost, $mform_post, $message)) {
-                print_error("couldnotupdate", "forum", $errordestination);
-            }
 
-            // MDL-11818
-            if (($forum->type == 'single') && ($updatepost->parent == '0')){ // updating first post of single discussion type -> updating forum intro
-                $forum->intro = $updatepost->message;
-                $forum->timemodified = time();
-                $DB->update_record("forum", $forum);
-            }
+    } else if ($fromform->discussion) { // Adding a new post to an existing discussion
+        unset($fromform->groupid);
+        $message = '';
+        $addpost = $fromform;
+        $addpost->forum=$forum->id;
+        if ($fromform->id = forum_add_new_post($addpost, $mform_post, $message)) {
 
             $timemessage = 2;
             if (!empty($message)) { // if we're printing stuff about the file upload
                 $timemessage = 4;
             }
-            $message .= '<br />'.get_string("postupdated", "forum");
 
             if ($subscribemessage = forum_post_subscription($fromform, $forum)) {
                 $timemessage = 4;
             }
+
+            if (!empty($fromform->mailnow)) {
+                $message .= get_string("postmailnow", "forum");
+                $timemessage = 4;
+            } else {
+                $message .= '<p>'.get_string("postaddedsuccess", "forum") . '</p>';
+                $message .= '<p>'.get_string("postaddedtimeleft", "forum", format_time($CFG->maxeditingtime)) . '</p>';
+            }
+
             if ($forum->type == 'single') {
                 // Single discussion forums are an exception. We show
                 // the forum itself since it only has one discussion
                 // thread.
                 $discussionurl = "view.php?f=$forum->id";
             } else {
-                $discussionurl = "discuss.php?d=$discussion->id#p$fromform->id";
+                $discussionurl = "discuss.php?d=$discussion->id";
+            }
+            add_to_log($course->id, "forum", "add post",
+                      "$discussionurl&amp;parent=$fromform->id", "$fromform->id", $cm->id);
+
+            // Update completion state
+            $completion=new completion_info($course);
+            if($completion->is_enabled($cm) &&
+                ($forum->completionreplies || $forum->completionposts)) {
+                $completion->update_state($cm,COMPLETION_COMPLETE);
             }
-            add_to_log($course->id, "forum", "update post",
-                    "$discussionurl&amp;parent=$fromform->id", "$fromform->id", $cm->id);
-
-            redirect(forum_go_back_to("$discussionurl"), $message.$subscribemessage, $timemessage);
-
-            exit;
 
+            redirect(forum_go_back_to("$discussionurl#p$fromform->id"), $message.$subscribemessage, $timemessage);
 
-        } else if ($fromform->discussion) { // Adding a new post to an existing discussion
-            unset($fromform->groupid);
-            $message = '';
-            $addpost = $fromform;
-            $addpost->forum=$forum->id;
-            if ($fromform->id = forum_add_new_post($addpost, $mform_post, $message)) {
+        } else {
+            print_error("couldnotadd", "forum", $errordestination);
+        }
+        exit;
 
-                $timemessage = 2;
-                if (!empty($message)) { // if we're printing stuff about the file upload
-                    $timemessage = 4;
-                }
+    } else {                     // Adding a new discussion
+        if (!forum_user_can_post_discussion($forum, $fromform->groupid, -1, $cm, $modcontext)) {
+            print_error('cannotcreatediscussion', 'forum');
+        }
+        if (empty($fromform->groupid)) {
+            $fromform->groupid = -1;
+        }
 
-                if ($subscribemessage = forum_post_subscription($fromform, $forum)) {
-                    $timemessage = 4;
-                }
+        $fromform->mailnow = empty($fromform->mailnow) ? 0 : 1;
+        $discussion = $fromform;
+        $discussion->name  = $fromform->subject;
+        $discussion->intro = $fromform->message;
+        $newstopic = false;
 
-                if (!empty($fromform->mailnow)) {
-                    $message .= get_string("postmailnow", "forum");
-                    $timemessage = 4;
-                } else {
-                    $message .= '<p>'.get_string("postaddedsuccess", "forum") . '</p>';
-                    $message .= '<p>'.get_string("postaddedtimeleft", "forum", format_time($CFG->maxeditingtime)) . '</p>';
-                }
+        if ($forum->type == 'news' && !$fromform->parent) {
+            $newstopic = true;
+        }
+        $discussion->timestart = $fromform->timestart;
+        $discussion->timeend = $fromform->timeend;
 
-                if ($forum->type == 'single') {
-                    // Single discussion forums are an exception. We show
-                    // the forum itself since it only has one discussion
-                    // thread.
-                    $discussionurl = "view.php?f=$forum->id";
-                } else {
-                    $discussionurl = "discuss.php?d=$discussion->id";
-                }
-                add_to_log($course->id, "forum", "add post",
-                          "$discussionurl&amp;parent=$fromform->id", "$fromform->id", $cm->id);
-
-                // Update completion state
-                $completion=new completion_info($course);
-                if($completion->is_enabled($cm) &&
-                    ($forum->completionreplies || $forum->completionposts)) {
-                    $completion->update_state($cm,COMPLETION_COMPLETE);
-                }
+        $message = '';
+        if ($discussion->id = forum_add_discussion($discussion, $mform_post, $message)) {
 
-                redirect(forum_go_back_to("$discussionurl#p$fromform->id"), $message.$subscribemessage, $timemessage);
+            add_to_log($course->id, "forum", "add discussion",
+                    "discuss.php?d=$discussion->id", "$discussion->id", $cm->id);
 
-            } else {
-                print_error("couldnotadd", "forum", $errordestination);
+            $timemessage = 2;
+            if (!empty($message)) { // if we're printing stuff about the file upload
+                $timemessage = 4;
             }
-            exit;
 
-        } else {                     // Adding a new discussion
-            if (!forum_user_can_post_discussion($forum, $fromform->groupid, -1, $cm, $modcontext)) {
-                print_error('cannotcreatediscussion', 'forum');
-            }
-            if (empty($fromform->groupid)) {
-                $fromform->groupid = -1;
+            if ($fromform->mailnow) {
+                $message .= get_string("postmailnow", "forum");
+                $timemessage = 4;
+            } else {
+                $message .= '<p>'.get_string("postaddedsuccess", "forum") . '</p>';
+                $message .= '<p>'.get_string("postaddedtimeleft", "forum", format_time($CFG->maxeditingtime)) . '</p>';
             }
 
-            $fromform->mailnow = empty($fromform->mailnow) ? 0 : 1;
-            $discussion = $fromform;
-            $discussion->name  = $fromform->subject;
-            $discussion->intro = $fromform->message;
-            $newstopic = false;
-
-            if ($forum->type == 'news' && !$fromform->parent) {
-                $newstopic = true;
+            if ($subscribemessage = forum_post_subscription($discussion, $forum)) {
+                $timemessage = 4;
             }
-            $discussion->timestart = $fromform->timestart;
-            $discussion->timeend = $fromform->timeend;
 
-            $message = '';
-            if ($discussion->id = forum_add_discussion($discussion, $mform_post, $message)) {
-
-                add_to_log($course->id, "forum", "add discussion",
-                        "discuss.php?d=$discussion->id", "$discussion->id", $cm->id);
-
-                $timemessage = 2;
-                if (!empty($message)) { // if we're printing stuff about the file upload
-                    $timemessage = 4;
-                }
-
-                if ($fromform->mailnow) {
-                    $message .= get_string("postmailnow", "forum");
-                    $timemessage = 4;
-                } else {
-                    $message .= '<p>'.get_string("postaddedsuccess", "forum") . '</p>';
-                    $message .= '<p>'.get_string("postaddedtimeleft", "forum", format_time($CFG->maxeditingtime)) . '</p>';
-                }
-
-                if ($subscribemessage = forum_post_subscription($discussion, $forum)) {
-                    $timemessage = 4;
-                }
-
-                // Update completion status
-                $completion=new completion_info($course);
-                if($completion->is_enabled($cm) &&
-                    ($forum->completiondiscussions || $forum->completionposts)) {
-                    $completion->update_state($cm,COMPLETION_COMPLETE);
-                }
-
-                redirect(forum_go_back_to("view.php?f=$fromform->forum"), $message.$subscribemessage, $timemessage);
-
-            } else {
-                print_error("couldnotadd", "forum", $errordestination);
+            // Update completion status
+            $completion=new completion_info($course);
+            if($completion->is_enabled($cm) &&
+                ($forum->completiondiscussions || $forum->completionposts)) {
+                $completion->update_state($cm,COMPLETION_COMPLETE);
             }
 
-            exit;
-        }
-    }
-
-
-
-    // To get here they need to edit a post, and the $post
-    // variable will be loaded with all the particulars,
-    // so bring up the form.
-
-    // $course, $forum are defined.  $discussion is for edit and reply only.
+            redirect(forum_go_back_to("view.php?f=$fromform->forum"), $message.$subscribemessage, $timemessage);
 
-    if ($post->discussion) {
-        if (! $toppost = $DB->get_record("forum_posts", array("discussion" => $post->discussion, "parent" => 0))) {
-            print_error('cannotfindparentpost', 'forum', '', $post->id);
+        } else {
+            print_error("couldnotadd", "forum", $errordestination);
         }
-    } else {
-        $toppost->subject = ($forum->type == "news") ? get_string("addanewtopic", "forum") :
-                                                       get_string("addanewdiscussion", "forum");
-    }
 
-    if (empty($post->edit)) {
-        $post->edit = '';
-    }
-
-    if (empty($discussion->name)) {
-        if (empty($discussion)) {
-            $discussion = new object;
-        }
-        $discussion->name = $forum->name;
-    }
-    if ($forum->type == 'single') {
-        // There is only one discussion thread for this forum type. We should
-        // not show the discussion name (same as forum name in this case) in
-        // the breadcrumbs.
-        $strdiscussionname = '';
-    } else {
-        // Show the discussion name in the breadcrumbs.
-        $strdiscussionname = format_string($discussion->name).':';
+        exit;
     }
+}
 
-    $forcefocus = empty($reply) ? NULL : 'message';
-
-    if (!empty($discussion->id)) {
-        $PAGE->navbar->add(format_string($toppost->subject, true), "discuss.php?d=$discussion->id");
-    }
 
-    if ($post->parent) {
-        $PAGE->navbar->add(get_string('editing', 'forum'));
-    }
 
-    $PAGE->set_title("$course->shortname: $strdiscussionname ".format_string($toppost->subject));
-    $PAGE->set_heading($course->fullname);
-    $PAGE->set_focuscontrol($mform_post->focus($forcefocus));
+// To get here they need to edit a post, and the $post
+// variable will be loaded with all the particulars,
+// so bring up the form.
 
-    echo $OUTPUT->header();
+// $course, $forum are defined.  $discussion is for edit and reply only.
 
-// checkup
-    if (!empty($parent) && !forum_user_can_see_post($forum, $discussion, $post, null, $cm)) {
-        print_error('cannotreply', 'forum');
+if ($post->discussion) {
+    if (! $toppost = $DB->get_record("forum_posts", array("discussion" => $post->discussion, "parent" => 0))) {
+        print_error('cannotfindparentpost', 'forum', '', $post->id);
     }
-    if (empty($parent) && empty($edit) && !forum_user_can_post_discussion($forum, $groupid, -1, $cm, $modcontext)) {
-        print_error('cannotcreatediscussion', 'forum');
+} else {
+    $toppost->subject = ($forum->type == "news") ? get_string("addanewtopic", "forum") :
+                                                   get_string("addanewdiscussion", "forum");
+}
+
+if (empty($post->edit)) {
+    $post->edit = '';
+}
+
+if (empty($discussion->name)) {
+    if (empty($discussion)) {
+        $discussion = new object;
     }
+    $discussion->name = $forum->name;
+}
+if ($forum->type == 'single') {
+    // There is only one discussion thread for this forum type. We should
+    // not show the discussion name (same as forum name in this case) in
+    // the breadcrumbs.
+    $strdiscussionname = '';
+} else {
+    // Show the discussion name in the breadcrumbs.
+    $strdiscussionname = format_string($discussion->name).':';
+}
+
+$forcefocus = empty($reply) ? NULL : 'message';
+
+if (!empty($discussion->id)) {
+    $PAGE->navbar->add(format_string($toppost->subject, true), "discuss.php?d=$discussion->id");
+}
+
+if ($post->parent) {
+    $PAGE->navbar->add(get_string('editing', 'forum'));
+}
+
+$PAGE->set_title("$course->shortname: $strdiscussionname ".format_string($toppost->subject));
+$PAGE->set_heading($course->fullname);
+$PAGE->set_focuscontrol($mform_post->focus($forcefocus));
+
+echo $OUTPUT->header();
 
-    if ($forum->type == 'qanda'
-                && !has_capability('mod/forum:viewqandawithoutposting', $modcontext)
-                && !empty($discussion->id)
-                && !forum_user_has_posted($forum->id, $discussion->id, $USER->id)) {
-        echo $OUTPUT->notification(get_string('qandanotify','forum'));
+// checkup
+if (!empty($parent) && !forum_user_can_see_post($forum, $discussion, $post, null, $cm)) {
+    print_error('cannotreply', 'forum');
+}
+if (empty($parent) && empty($edit) && !forum_user_can_post_discussion($forum, $groupid, -1, $cm, $modcontext)) {
+    print_error('cannotcreatediscussion', 'forum');
+}
+
+if ($forum->type == 'qanda'
+            && !has_capability('mod/forum:viewqandawithoutposting', $modcontext)
+            && !empty($discussion->id)
+            && !forum_user_has_posted($forum->id, $discussion->id, $USER->id)) {
+    echo $OUTPUT->notification(get_string('qandanotify','forum'));
+}
+
+forum_check_throttling($forum, $cm);
+
+if (!empty($parent)) {
+    if (! $discussion = $DB->get_record('forum_discussions', array('id' => $parent->discussion))) {
+        print_error('notpartofdiscussion', 'forum');
     }
 
-    forum_check_throttling($forum, $cm);
-
-    if (!empty($parent)) {
-        if (! $discussion = $DB->get_record('forum_discussions', array('id' => $parent->discussion))) {
-            print_error('notpartofdiscussion', 'forum');
-        }
-
-        forum_print_post($parent, $discussion, $forum, $cm, $course, false, false, false);
-        if (empty($post->edit)) {
-            if ($forum->type != 'qanda' || forum_user_can_see_discussion($forum, $discussion, $modcontext)) {
-                $forumtracked = forum_tp_is_tracked($forum);
-                $posts = forum_get_all_discussion_posts($discussion->id, "created ASC", $forumtracked);
-                forum_print_posts_threaded($course, $cm, $forum, $discussion, $parent, 0, false, false, $forumtracked, $posts);
-            }
-        }
-    } else {
-        if (!empty($forum->intro)) {
-            echo $OUTPUT->box(format_module_intro('forum', $forum, $cm->id), 'generalbox', 'intro');
+    forum_print_post($parent, $discussion, $forum, $cm, $course, false, false, false);
+    if (empty($post->edit)) {
+        if ($forum->type != 'qanda' || forum_user_can_see_discussion($forum, $discussion, $modcontext)) {
+            $forumtracked = forum_tp_is_tracked($forum);
+            $posts = forum_get_all_discussion_posts($discussion->id, "created ASC", $forumtracked);
+            forum_print_posts_threaded($course, $cm, $forum, $discussion, $parent, 0, false, false, $forumtracked, $posts);
         }
     }
+} else {
+    if (!empty($forum->intro)) {
+        echo $OUTPUT->box(format_module_intro('forum', $forum, $cm->id), 'generalbox', 'intro');
+    }
+}
 
-    $mform_post->display();
-
-    echo $OUTPUT->footer();
+$mform_post->display();
 
+echo $OUTPUT->footer();
 
-?>
+?>
\ No newline at end of file
index 3db0a72356487d7093137cf01546da9d59329571..8d2266305879273ad306fb1dedc5608658b62b5a 100644 (file)
-<?php // $Id$
+<?php
 
 //  Collect ratings, store them, then return to where we came from
 
 /// TODO: Centralise duplicate code in rate.php and rate_ajax.php
 
-    require_once('../../config.php');
-    require_once('lib.php');
+require_once('../../config.php');
+require_once('lib.php');
 
-    $forumid = required_param('forumid', PARAM_INT); // The forum the rated posts are from
+$forumid = required_param('forumid', PARAM_INT); // The forum the rated posts are from
 
-    if (!$forum = $DB->get_record('forum', array('id' => $forumid))) {
-        print_error('invalidforumid', 'forum');
-    }
-
-    if (!$course = $DB->get_record('course', array('id' => $forum->course))) {
-        print_error('invalidcourseid');
-    }
+$PAGE->set_url(new moodle_url($CFG->wwwroot.'/mod/forum/rate.php', array('forumid'=>$forumid)));
 
-    if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
-        print_error('invalidcoursemodule');
-    } else {
-        $forum->cmidnumber = $cm->id; //MDL-12961
-        }
+if (!$forum = $DB->get_record('forum', array('id' => $forumid))) {
+    print_error('invalidforumid', 'forum');
+}
 
-    require_login($course, false, $cm);
+if (!$course = $DB->get_record('course', array('id' => $forum->course))) {
+    print_error('invalidcourseid');
+}
 
-    if (isguestuser()) {
-        print_error('noguestrate', 'forum');
+if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
+    print_error('invalidcoursemodule');
+} else {
+    $forum->cmidnumber = $cm->id; //MDL-12961
     }
 
-    if (!$forum->assessed) {
-        print_error('norate', 'forum');
-    }
+require_login($course, false, $cm);
 
-    $context = get_context_instance(CONTEXT_MODULE, $cm->id);
-    require_capability('mod/forum:rate', $context);
+if (isguestuser()) {
+    print_error('noguestrate', 'forum');
+}
 
-    if ($data = data_submitted()) {
+if (!$forum->assessed) {
+    print_error('norate', 'forum');
+}
 
-        $discussionid = false;
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+require_capability('mod/forum:rate', $context);
 
-    /// Calculate scale values
-        $scale_values = make_grades_menu($forum->scale);
+if ($data = data_submitted()) {
 
-        foreach ((array)$data as $postid => $rating) {
-            if (!is_numeric($postid)) {
-                continue;
-            }
+    $discussionid = false;
 
-            // following query validates the submitted postid too
-            $sql = "SELECT fp.*
-                      FROM {forum_posts} fp, {forum_discussions} fd
-                     WHERE fp.id = ? AND fp.discussion = fd.id AND fd.forum = ?";
+/// Calculate scale values
+    $scale_values = make_grades_menu($forum->scale);
 
-            if (!$post = $DB->get_record_sql($sql, array($postid, $forum->id))) {
-                print_error('invalidpostid', 'forum', '', $postid);
-            }
+    foreach ((array)$data as $postid => $rating) {
+        if (!is_numeric($postid)) {
+            continue;
+        }
 
-            $discussionid = $post->discussion;
+        // following query validates the submitted postid too
+        $sql = "SELECT fp.*
+                  FROM {forum_posts} fp, {forum_discussions} fd
+                 WHERE fp.id = ? AND fp.discussion = fd.id AND fd.forum = ?";
 
-            if ($forum->assesstimestart and $forum->assesstimefinish) {
-                if ($post->created < $forum->assesstimestart or $post->created > $forum->assesstimefinish) {
-                    // we can not rate this, ignore it - this should not happen anyway unless teacher changes setting
-                    continue;
-                }
-            }
+        if (!$post = $DB->get_record_sql($sql, array($postid, $forum->id))) {
+            print_error('invalidpostid', 'forum', '', $postid);
+        }
+
+        $discussionid = $post->discussion;
 
-        /// Check rate is valid for for that forum scale values
-            if (!array_key_exists($rating, $scale_values) && $rating != FORUM_UNSET_POST_RATING) {
-                print_error('invalidrate', 'forum', '', $rating);
+        if ($forum->assesstimestart and $forum->assesstimefinish) {
+            if ($post->created < $forum->assesstimestart or $post->created > $forum->assesstimefinish) {
+                // we can not rate this, ignore it - this should not happen anyway unless teacher changes setting
+                continue;
             }
+        }
 
-            if ($rating == FORUM_UNSET_POST_RATING) {
-                $DB->delete_records('forum_ratings', array('post' => $postid, 'userid' => $USER->id));
-                forum_update_grades($forum, $post->userid);
+    /// Check rate is valid for for that forum scale values
+        if (!array_key_exists($rating, $scale_values) && $rating != FORUM_UNSET_POST_RATING) {
+            print_error('invalidrate', 'forum', '', $rating);
+        }
+
+        if ($rating == FORUM_UNSET_POST_RATING) {
+            $DB->delete_records('forum_ratings', array('post' => $postid, 'userid' => $USER->id));
+            forum_update_grades($forum, $post->userid);
 
-            } else if ($oldrating = $DB->get_record('forum_ratings', array('userid' => $USER->id, 'post' => $post->id))) {
-                if ($rating != $oldrating->rating) {
-                    $oldrating->rating = $rating;
-                    $oldrating->time   = time();
-                    $DB->update_record('forum_ratings', $oldrating);
-                    forum_update_grades($forum, $post->userid);
-                }
-
-            } else {
-                $newrating = new object();
-                $newrating->userid = $USER->id;
-                $newrating->time   = time();
-                $newrating->post   = $post->id;
-                $newrating->rating = $rating;
-
-                $DB->insert_record('forum_ratings', $newrating);
+        } else if ($oldrating = $DB->get_record('forum_ratings', array('userid' => $USER->id, 'post' => $post->id))) {
+            if ($rating != $oldrating->rating) {
+                $oldrating->rating = $rating;
+                $oldrating->time   = time();
+                $DB->update_record('forum_ratings', $oldrating);
                 forum_update_grades($forum, $post->userid);
             }
-        }
 
-        if ($forum->type == 'single' or !$discussionid) {
-            redirect("$CFG->wwwroot/mod/forum/view.php?id=$cm->id", get_string('ratingssaved', 'forum'));
         } else {
-            redirect("$CFG->wwwroot/mod/forum/discuss.php?d=$discussionid", get_string('ratingssaved', 'forum'));
+            $newrating = new object();
+            $newrating->userid = $USER->id;
+            $newrating->time   = time();
+            $newrating->post   = $post->id;
+            $newrating->rating = $rating;
+
+            $DB->insert_record('forum_ratings', $newrating);
+            forum_update_grades($forum, $post->userid);
         }
+    }
 
+    if ($forum->type == 'single' or !$discussionid) {
+        redirect("$CFG->wwwroot/mod/forum/view.php?id=$cm->id", get_string('ratingssaved', 'forum'));
     } else {
-        print_error('invalidaccess', 'forum');
+        redirect("$CFG->wwwroot/mod/forum/discuss.php?d=$discussionid", get_string('ratingssaved', 'forum'));
     }
 
-?>
+} else {
+    print_error('invalidaccess', 'forum');
+}
+
+?>
\ No newline at end of file
index f0478f715f18750b83077343550e0f5d179ec06e..376acd2fabd491251be4b4ec08ee1eae67a768b6 100644 (file)
@@ -1,4 +1,4 @@
-<?php // $Id$
+<?php
 
 ///////////////////////////////////////////////////////////////////////////
 //                                                                       //
 
 /// TODO: Centralise duplicate code in rate.php and rate_ajax.php
 
-    require_once('../../config.php');
-    require_once($CFG->dirroot . '/mod/forum/lib.php');
+require_once('../../config.php');
+require_once($CFG->dirroot . '/mod/forum/lib.php');
 
 /// In developer debug mode, when there is a debug=1 in the URL send as plain text
 /// for easier debugging.
-    if (debugging('', DEBUG_DEVELOPER) && optional_param('debug', false, PARAM_BOOL)) {
-        header('Content-type: text/plain; charset=UTF-8');
-        $debugmode = true;
-    } else {
-        header('Content-type: application/json');
-        $debugmode = false;
-    }
+if (debugging('', DEBUG_DEVELOPER) && optional_param('debug', false, PARAM_BOOL)) {
+    header('Content-type: text/plain; charset=UTF-8');
+    $debugmode = true;
+} else {
+    header('Content-type: application/json');
+    $debugmode = false;
+}
 
 /// Here we maintain response contents
-    $response = array('status'=> 'Error', 'message'=>'kk');
+$response = array('status'=> 'Error', 'message'=>'kk');
 
 /// Check access.
-    if (!isloggedin()) {
-        print_error('mustbeloggedin');
-    }
-    if (isguestuser()) {
-        print_error('noguestrate', 'forum');
-    }
-    if (!confirm_sesskey()) {
-        print_error('invalidsesskey');
-    }
+if (!isloggedin()) {
+    print_error('mustbeloggedin');
+}
+if (isguestuser()) {
+    print_error('noguestrate', 'forum');
+}
+if (!confirm_sesskey()) {
+    print_error('invalidsesskey');
+}
 
 
 /// Check required params
-    $postid = required_param('postid', PARAM_INT); // The postid to rate
-    $rate   = required_param('rate', PARAM_INT); // The rate to apply
+$postid = required_param('postid', PARAM_INT); // The postid to rate
+$rate   = required_param('rate', PARAM_INT); // The rate to apply
+
+$PAGE->set_url(new moodle_url($CFG->wwwroot.'/mod/forum/rate_ajax.php', array('postid'=>$postid,'rate'=>$rate)));
 
 /// Check postid is valid
-    if (!$post = $DB->get_record_sql('SELECT p.*,
-                                             d.forum AS forumid
-                                        FROM {forum_posts} p
-                                        JOIN {forum_discussions} d ON p.discussion = d.id
-                                       WHERE p.id = ?', array($postid))) {
-        print_error('invalidpostid', 'forum', '', $postid);;
-    }
+if (!$post = $DB->get_record_sql('SELECT p.*,
+                                         d.forum AS forumid
+                                    FROM {forum_posts} p
+                                    JOIN {forum_discussions} d ON p.discussion = d.id
+                                   WHERE p.id = ?', array($postid))) {
+    print_error('invalidpostid', 'forum', '', $postid);;
+}
 
 /// Check forum
-    if (!$forum = $DB->get_record('forum', array('id' => $post->forumid))) {
-        print_error('invalidforumid', 'forum');
-    }
+if (!$forum = $DB->get_record('forum', array('id' => $post->forumid))) {
+    print_error('invalidforumid', 'forum');
+}
 
 /// Check course
-    if (!$course = $DB->get_record('course', array('id' => $forum->course))) {
-        print_error('invalidcourseid');
-    }
+if (!$course = $DB->get_record('course', array('id' => $forum->course))) {
+    print_error('invalidcourseid');
+}
 
 /// Check coursemodule
-    if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
-        print_error('invalidcoursemodule');
-    } else {
-        $forum->cmidnumber = $cm->id; //MDL-12961
-    }
+if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
+    print_error('invalidcoursemodule');
+} else {
+    $forum->cmidnumber = $cm->id; //MDL-12961
+}
 
 /// Check forum can be rated
-    if (!$forum->assessed) {
-        print_error('norate', 'forum');
-    }
+if (!$forum->assessed) {
+    print_error('norate', 'forum');
+}
 
 /// Check user can rate
-    $context = get_context_instance(CONTEXT_MODULE, $cm->id);
-    require_capability('mod/forum:rate', $context);
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+require_capability('mod/forum:rate', $context);
 
 /// Check timed ratings
-    if ($forum->assesstimestart and $forum->assesstimefinish) {
-        if ($post->created < $forum->assesstimestart or $post->created > $forum->assesstimefinish) {
-            // we can not rate this, ignore it - this should not happen anyway unless teacher changes setting
-            print_error('norate', 'forum');
-        }
+if ($forum->assesstimestart and $forum->assesstimefinish) {
+    if ($post->created < $forum->assesstimestart or $post->created > $forum->assesstimefinish) {
+        // we can not rate this, ignore it - this should not happen anyway unless teacher changes setting
+        print_error('norate', 'forum');
     }
+}
 
 /// Calculate scale values
-    $scale_values = make_grades_menu($forum->scale);
+$scale_values = make_grades_menu($forum->scale);
 
 /// Check rate is valid for for that forum scale values
-    if (!array_key_exists($rate, $scale_values) && $rate != FORUM_UNSET_POST_RATING) {
-        print_error('invalidrate', 'forum');
-    }
+if (!array_key_exists($rate, $scale_values) && $rate != FORUM_UNSET_POST_RATING) {
+    print_error('invalidrate', 'forum');
+}
 
 /// Everything ready, process rate
 
 /// Deleting rate
-    if ($rate == FORUM_UNSET_POST_RATING) {
-        $DB->delete_records('forum_ratings', array('post' => $postid, 'userid' => $USER->id));
+if ($rate == FORUM_UNSET_POST_RATING) {
+    $DB->delete_records('forum_ratings', array('post' => $postid, 'userid' => $USER->id));
 
 /// Updating rate
-    } else if ($oldrating = $DB->get_record('forum_ratings', array('userid' => $USER->id, 'post' => $post->id))) {
-        if ($rate != $oldrating->rating) {
-            $oldrating->rating = $rate;
-            $oldrating->time   = time();
-            $DB->update_record('forum_ratings', $oldrating);
-        }
+} else if ($oldrating = $DB->get_record('forum_ratings', array('userid' => $USER->id, 'post' => $post->id))) {
+    if ($rate != $oldrating->rating) {
+        $oldrating->rating = $rate;
+        $oldrating->time   = time();
+        $DB->update_record('forum_ratings', $oldrating);
+    }
 
 /// Inserting rate
-    } else {
-        $newrating = new object();
-        $newrating->userid = $USER->id;
-        $newrating->time   = time();
-        $newrating->post   = $post->id;
-        $newrating->rating = $rate;
-        $DB->insert_record('forum_ratings', $newrating);
-    }
+} else {
+    $newrating = new object();
+    $newrating->userid = $USER->id;
+    $newrating->time   = time();
+    $newrating->post   = $post->id;
+    $newrating->rating = $rate;
+    $DB->insert_record('forum_ratings', $newrating);
+}
 
 /// Update grades
-    forum_update_grades($forum, $post->userid);
+forum_update_grades($forum, $post->userid);
 
 /// Check user can see any rate
-    $canviewanyrating = has_capability('mod/forum:viewanyrating', $context);
+$canviewanyrating = has_capability('mod/forum:viewanyrating', $context);
 
 /// Decide if rates info is displayed
-    $rateinfo = '';
-    if ($canviewanyrating) {
-        $rateinfo = forum_print_ratings($postid, $scale_values, $forum->assessed, true, NULL, true);
-    }
+$rateinfo = '';
+if ($canviewanyrating) {
+    $rateinfo = forum_print_ratings($postid, $scale_values, $forum->assessed, true, NULL, true);
+}
 
 /// Calculate response
-    $response['status']  = 'Ok';
-    $response['message'] = $rateinfo;
-    echo json_encode($response);
+$response['status']  = 'Ok';
+$response['message'] = $rateinfo;
+echo json_encode($response);
 
-?>
+?>
\ No newline at end of file
index 4f3f5a4e72fd52777dc974c879bf43d0a8568a3c..83566313c0bae7b7262fd33ab0a117fae190daff 100644 (file)
@@ -1,87 +1,94 @@
-<?php // $Id$
+<?php
 
 //  For a given post, shows a report of all the ratings it has
 
-    require_once("../../config.php");
-    require_once("lib.php");
-
-    $id   = required_param('id', PARAM_INT);
-    $sort = optional_param('sort', '', PARAM_ALPHA);
-
-    if (! $post = $DB->get_record('forum_posts', array('id' => $id))) {
-        print_error('invalidpostid','forum');
-    }
-
-    if (! $discussion = $DB->get_record('forum_discussions', array('id' => $post->discussion))) {
-        print_error('invaliddiscussion', 'forum');
-    }
-
-    if (! $forum = $DB->get_record('forum', array('id' => $discussion->forum))) {
-        print_error('invalidforumid', 'forum');
-    }
-
-    if (! $course = $DB->get_record('course', array('id' => $forum->course))) {
-        print_error('invalidcourseid');
-    }
-
-    if (! $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) {
-        print_error('invalidcoursemodule');
+require_once("../../config.php");
+require_once("lib.php");
+
+$id   = required_param('id', PARAM_INT);
+$sort = optional_param('sort', '', PARAM_ALPHA);
+
+$url = new moodle_url($CFG->wwwroot.'/mod/forum/report.php', array('id'=>$id));
+if ($sort !== 0) {
+    $url->param('sort', $sort);
+}
+$PAGE->set_url($url);
+
+if (! $post = $DB->get_record('forum_posts', array('id' => $id))) {
+    print_error('invalidpostid','forum');
+}
+
+if (! $discussion = $DB->get_record('forum_discussions', array('id' => $post->discussion))) {
+    print_error('invaliddiscussion', 'forum');
+}
+
+if (! $forum = $DB->get_record('forum', array('id' => $discussion->forum))) {
+    print_error('invalidforumid', 'forum');
+}
+
+if (! $course = $DB->get_record('course', array('id' => $forum->course))) {
+    print_error('invalidcourseid');
+}
+
+if (! $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) {
+    print_error('invalidcoursemodule');
+}
+
+require_login($course, false, $cm);
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
+
+if (!$forum->assessed) {
+    print_error('norate', 'forum');
+}
+
+if (!has_capability('mod/forum:viewrating', $context)) {
+    print_error('noviewrate', 'forum');
+}
+if (!has_capability('mod/forum:viewanyrating', $context) and $USER->id != $post->userid) {
+    print_error('noviewanyrate', 'forum');
+}
+
+switch ($sort) {
+    case 'firstname': $sqlsort = "u.firstname ASC"; break;
+    case 'rating':    $sqlsort = "r.rating ASC"; break;
+    default:          $sqlsort = "r.time ASC";
+}
+
+$scalemenu = make_grades_menu($forum->scale);
+
+$strratings = get_string('ratings', 'forum');
+$strrating  = get_string('rating', 'forum');
+$strname    = get_string('name');
+$strtime    = get_string('time');
+
+$PAGE->set_title("$strratings: ".format_string($post->subject));
+echo $OUTPUT->header();
+
+if (!$ratings = forum_get_ratings($post->id, $sqlsort)) {
+    print_error('noresult', 'forum', '', format_string($post->subject));
+
+} else {
+    echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"3\" class=\"generalbox\" style=\"width:100%\">";
+    echo "<tr>";
+    echo "<th class=\"header\" scope=\"col\">&nbsp;</th>";
+    echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&amp;sort=firstname\">$strname</a></th>";
+    echo "<th class=\"header\" scope=\"col\" style=\"width:100%\"><a href=\"report.php?id=$post->id&amp;sort=rating\">$strrating</a></th>";
+    echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&amp;sort=time\">$strtime</a></th>";
+    echo "</tr>";
+    foreach ($ratings as $rating) {
+        echo '<tr class="forumpostheader">';
+        echo "<td>";
+        echo $OUTPUT->user_picture(moodle_user_picture::make($rating, $forum->course));
+        echo '</td><td>'.fullname($rating).'</td>';
+        echo '<td style="white-space:nowrap" align="center" class="rating">'.$scalemenu[$rating->rating]."</td>";
+        echo '<td style="white-space:nowrap" align="center" class="time">'.userdate($rating->time)."</td>";
+        echo "</tr>\n";
     }
+    echo "</table>";
+    echo "<br />";
+}
 
-    require_login($course, false, $cm);
-    $context = get_context_instance(CONTEXT_MODULE, $cm->id);
-
-    if (!$forum->assessed) {
-        print_error('norate', 'forum');
-    }
-
-    if (!has_capability('mod/forum:viewrating', $context)) {
-        print_error('noviewrate', 'forum');
-    }
-    if (!has_capability('mod/forum:viewanyrating', $context) and $USER->id != $post->userid) {
-        print_error('noviewanyrate', 'forum');
-    }
-
-    switch ($sort) {
-        case 'firstname': $sqlsort = "u.firstname ASC"; break;
-        case 'rating':    $sqlsort = "r.rating ASC"; break;
-        default:          $sqlsort = "r.time ASC";
-    }
-
-    $scalemenu = make_grades_menu($forum->scale);
-
-    $strratings = get_string('ratings', 'forum');
-    $strrating  = get_string('rating', 'forum');
-    $strname    = get_string('name');
-    $strtime    = get_string('time');
-
-    $PAGE->set_title("$strratings: ".format_string($post->subject));
-    echo $OUTPUT->header();
-
-    if (!$ratings = forum_get_ratings($post->id, $sqlsort)) {
-        print_error('noresult', 'forum', '', format_string($post->subject));
-
-    } else {
-        echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"3\" class=\"generalbox\" style=\"width:100%\">";
-        echo "<tr>";
-        echo "<th class=\"header\" scope=\"col\">&nbsp;</th>";
-        echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&amp;sort=firstname\">$strname</a></th>";
-        echo "<th class=\"header\" scope=\"col\" style=\"width:100%\"><a href=\"report.php?id=$post->id&amp;sort=rating\">$strrating</a></th>";
-        echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&amp;sort=time\">$strtime</a></th>";
-        echo "</tr>";
-        foreach ($ratings as $rating) {
-            echo '<tr class="forumpostheader">';
-            echo "<td>";
-            echo $OUTPUT->user_picture(moodle_user_picture::make($rating, $forum->course));
-            echo '</td><td>'.fullname($rating).'</td>';
-            echo '<td style="white-space:nowrap" align="center" class="rating">'.$scalemenu[$rating->rating]."</td>";
-            echo '<td style="white-space:nowrap" align="center" class="time">'.userdate($rating->time)."</td>";
-            echo "</tr>\n";
-        }
-        echo "</table>";
-        echo "<br />";
-    }
+echo $OUTPUT->close_window_button();
+echo $OUTPUT->footer();
 
-    echo $OUTPUT->close_window_button();
-    echo $OUTPUT->footer();
-?>
+?>
\ No newline at end of file
index ed67ff01e5a0fa90d64e1e472c9562269bc960cc..1280c2c4b796dfa2fda7ea65c4604441ad3e339f 100644 (file)
-<?php // $Id$
-
-    require_once('../../config.php');
-    require_once('lib.php');
-
-    $id = required_param('id', PARAM_INT);                  // course id
-    $search = trim(optional_param('search', '', PARAM_NOTAGS));  // search string
-    $page = optional_param('page', 0, PARAM_INT);   // which page to show
-    $perpage = optional_param('perpage', 10, PARAM_INT);   // how many per page
-    $showform = optional_param('showform', 0, PARAM_INT);   // Just show the form
-
-    $user    = trim(optional_param('user', '', PARAM_NOTAGS));    // Names to search for
-    $userid  = trim(optional_param('userid', 0, PARAM_INT));      // UserID to search for
-    $forumid = trim(optional_param('forumid', 0, PARAM_INT));      // ForumID to search for
-    $subject = trim(optional_param('subject', '', PARAM_NOTAGS)); // Subject
-    $phrase  = trim(optional_param('phrase', '', PARAM_NOTAGS));  // Phrase
-    $words   = trim(optional_param('words', '', PARAM_NOTAGS));   // Words
-    $fullwords = trim(optional_param('fullwords', '', PARAM_NOTAGS)); // Whole words
-    $notwords = trim(optional_param('notwords', '', PARAM_NOTAGS));   // Words we don't want
-
-    $timefromrestrict = optional_param('timefromrestrict', 0, PARAM_INT); // Use starting date
-    $fromday = optional_param('fromday', 0, PARAM_INT);      // Starting date
-    $frommonth = optional_param('frommonth', 0, PARAM_INT);      // Starting date
-    $fromyear = optional_param('fromyear', 0, PARAM_INT);      // Starting date
-    $fromhour = optional_param('fromhour', 0, PARAM_INT);      // Starting date
-    $fromminute = optional_param('fromminute', 0, PARAM_INT);      // Starting date
-    if ($timefromrestrict) {
-        $datefrom = make_timestamp($fromyear, $frommonth, $fromday, $fromhour, $fromminute);
-    } else {
-        $datefrom = optional_param('datefrom', 0, PARAM_INT);      // Starting date
-    }
-
-    $timetorestrict = optional_param('timetorestrict', 0, PARAM_INT); // Use ending date
-    $today = optional_param('today', 0, PARAM_INT);      // Ending date
-    $tomonth = optional_param('tomonth', 0, PARAM_INT);      // Ending date
-    $toyear = optional_param('toyear', 0, PARAM_INT);      // Ending date
-    $tohour = optional_param('tohour', 0, PARAM_INT);      // Ending date
-    $tominute = optional_param('tominute', 0, PARAM_INT);      // Ending date
-    if ($timetorestrict) {
-        $dateto = make_timestamp($toyear, $tomonth, $today, $tohour, $tominute);
-    } else {
-        $dateto = optional_param('dateto', 0, PARAM_INT);      // Ending date
-    }
+<?php
+
+require_once('../../config.php');
+require_once('lib.php');
+
+$id = required_param('id', PARAM_INT);                  // course id
+$search = trim(optional_param('search', '', PARAM_NOTAGS));  // search string
+$page = optional_param('page', 0, PARAM_INT);   // which page to show
+$perpage = optional_param('perpage', 10, PARAM_INT);   // how many per page
+$showform = optional_param('showform', 0, PARAM_INT);   // Just show the form
+
+$user    = trim(optional_param('user', '', PARAM_NOTAGS));    // Names to search for
+$userid  = trim(optional_param('userid', 0, PARAM_INT));      // UserID to search for
+$forumid = trim(optional_param('forumid', 0, PARAM_INT));      // ForumID to search for
+$subject = trim(optional_param('subject', '', PARAM_NOTAGS)); // Subject
+$phrase  = trim(optional_param('phrase', '', PARAM_NOTAGS));  // Phrase
+$words   = trim(optional_param('words', '', PARAM_NOTAGS));   // Words
+$fullwords = trim(optional_param('fullwords', '', PARAM_NOTAGS)); // Whole words
+$notwords = trim(optional_param('notwords', '', PARAM_NOTAGS));   // Words we don't want
+
+$timefromrestrict = optional_param('timefromrestrict', 0, PARAM_INT); // Use starting date
+$fromday = optional_param('fromday', 0, PARAM_INT);      // Starting date
+$frommonth = optional_param('frommonth', 0, PARAM_INT);      // Starting date
+$fromyear = optional_param('fromyear', 0, PARAM_INT);      // Starting date
+$fromhour = optional_param('fromhour', 0, PARAM_INT);      // Starting date
+$fromminute = optional_param('fromminute', 0, PARAM_INT);      // Starting date
+if ($timefromrestrict) {
+    $datefrom = make_timestamp($fromyear, $frommonth, $fromday, $fromhour, $fromminute);
+} else {
+    $datefrom = optional_param('datefrom', 0, PARAM_INT);      // Starting date
+}
 
+$timetorestrict = optional_param('timetorestrict', 0, PARAM_INT); // Use ending date
+$today = optional_param('today', 0, PARAM_INT);      // Ending date
+$tomonth = optional_param('tomonth', 0, PARAM_INT);      // Ending date
+$toyear = optional_param('toyear', 0, PARAM_INT);      // Ending date
+$tohour = optional_param('tohour', 0, PARAM_INT);      // Ending date
+$tominute = optional_param('tominute', 0, PARAM_INT);      // Ending date
+if ($timetorestrict) {
+    $dateto = make_timestamp($toyear, $tomonth, $today, $tohour, $tominute);
+} else {
+    $dateto = optional_param('dateto', 0, PARAM_INT);      // Ending date
+}
 
+$PAGE->set_url($FULLME);
 
-    if (empty($search)) {   // Check the other parameters instead
-        if (!empty($words)) {
-            $search .= ' '.$words;
-        }
-        if (!empty($userid)) {
-            $search .= ' userid:'.$userid;
-        }
-        if (!empty($forumid)) {
-            $search .= ' forumid:'.$forumid;
-        }
-        if (!empty($user)) {
-            $search .= ' '.forum_clean_search_terms($user, 'user:');
-        }
-        if (!empty($subject)) {
-            $search .= ' '.forum_clean_search_terms($subject, 'subject:');
-        }
-        if (!empty($fullwords)) {
-            $search .= ' '.forum_clean_search_terms($fullwords, '+');
-        }
-        if (!empty($notwords)) {
-            $search .= ' '.forum_clean_search_terms($notwords, '-');
-        }
-        if (!empty($phrase)) {
-            $search .= ' "'.$phrase.'"';
-        }
-        if (!empty($datefrom)) {
-            $search .= ' datefrom:'.$datefrom;
-        }
-        if (!empty($dateto)) {
-            $search .= ' dateto:'.$dateto;
-        }
-        $individualparams = true;
-    } else {
-        $individualparams = false;
+if (empty($search)) {   // Check the other parameters instead
+    if (!empty($words)) {
+        $search .= ' '.$words;
     }
-
-    if ($search) {
-        $search = forum_clean_search_terms($search);
+    if (!empty($userid)) {
+        $search .= ' userid:'.$userid;
     }
-
-    if (!$course = $DB->get_record('course', array('id'=>$id))) {
-        print_error('invalidcourseid');
+    if (!empty($forumid)) {
+        $search .= ' forumid:'.$forumid;
+    }
+    if (!empty($user)) {
+        $search .= ' '.forum_clean_search_terms($user, 'user:');
+    }
+    if (!empty($subject)) {
+        $search .= ' '.forum_clean_search_terms($subject, 'subject:');
+    }
+    if (!empty($fullwords)) {
+        $search .= ' '.forum_clean_search_terms($fullwords, '+');
+    }
+    if (!empty($notwords)) {
+        $search .= ' '.forum_clean_search_terms($notwords, '-');
     }
+    if (!empty($phrase)) {
+        $search .= ' "'.$phrase.'"';
+    }
+    if (!empty($datefrom)) {
+        $search .= ' datefrom:'.$datefrom;
+    }
+    if (!empty($dateto)) {
+        $search .= ' dateto:'.$dateto;
+    }
+    $individualparams = true;
+} else {
+    $individualparams = false;
+}
 
-    require_course_login($course);
+if ($search) {
+    $search = forum_clean_search_terms($search);
+}
 
-    add_to_log($course->id, "forum", "search", "search.php?id=$course->id&amp;search=".urlencode($search), $search);
+if (!$course = $DB->get_record('course', array('id'=>$id))) {
+    print_error('invalidcourseid');
+}
 
-    $strforums = get_string("modulenameplural", "forum");
-    $strsearch = get_string("search", "forum");
-    $strsearchresults = get_string("searchresults", "forum");
-    $strpage = get_string("page");
+require_course_login($course);
 
-    if (!$search || $showform) {
+add_to_log($course->id, "forum", "search", "search.php?id=$course->id&amp;search=".urlencode($search), $search);
 
-        $PAGE->navbar->add($strforums, new moodle_url($CFG->wwwroot.'/mod/forum/index.php', array('id'=>$course->id)));
-        $PAGE->navbar->add($strsearch);
+$strforums = get_string("modulenameplural", "forum");
+$strsearch = get_string("search", "forum");
+$strsearchresults = get_string("searchresults", "forum");
+$strpage = get_string("page");
 
-        $PAGE->set_title($strsearch);
-        $PAGE->set_focuscontrol('search.words');
-        echo $OUTPUT->header();
+if (!$search || $showform) {
 
-        forum_print_big_search_form($course);
-        echo $OUTPUT->footer();
-        exit;
-    }
+    $PAGE->navbar->add($strforums, new moodle_url($CFG->wwwroot.'/mod/forum/index.php', array('id'=>$course->id)));
+    $PAGE->navbar->add($strsearch);
 
-/// We need to do a search now and print results
+    $PAGE->set_title($strsearch);
+    $PAGE->set_focuscontrol('search.words');
+    echo $OUTPUT->header();
 
-    $searchterms = str_replace('forumid:', 'instance:', $search);
-    $searchterms = explode(' ', $searchterms);
+    forum_print_big_search_form($course);
+    echo $OUTPUT->footer();
+    exit;
+}
 
-    $searchform = forum_search_form($course, $search);
+/// We need to do a search now and print results
 
-    $PAGE->navbar->add($strsearch, new moodle_url($CFG->wwwroot.'/mod/forum/search.php', array('id'=>$course->id)));
-    $PAGE->navbar->add(s($search, true));
-    if (!$posts = forum_search_posts($searchterms, $course->id, $page*$perpage, $perpage, $totalcount)) {
-        $PAGE->set_title($strsearchresults);
-        $PAGE->set_focuscontrol('search.words');
-        echo $OUTPUT->header();
-        echo $OUTPUT->heading(get_string("nopostscontaining", "forum", $search));
+$searchterms = str_replace('forumid:', 'instance:', $search);
+$searchterms = explode(' ', $searchterms);
 
-        if (!$individualparams) {
-            $words = $search;
-        }
+$searchform = forum_search_form($course, $search);
 
-        forum_print_big_search_form($course);
+$PAGE->navbar->add($strsearch, new moodle_url($CFG->wwwroot.'/mod/forum/search.php', array('id'=>$course->id)));
+$PAGE->navbar->add(s($search, true));
+if (!$posts = forum_search_posts($searchterms, $course->id, $page*$perpage, $perpage, $totalcount)) {
+    $PAGE->set_title($strsearchresults);
+    $PAGE->set_focuscontrol('search.words');
+    echo $OUTPUT->header();
+    echo $OUTPUT->heading(get_string("nopostscontaining", "forum", $search));
 
-        echo $OUTPUT->footer();
-        exit;
+    if (!$individualparams) {
+        $words = $search;
     }
 
-    $PAGE->set_title($strsearchresults);
-    $PAGE->set_button($searchform);
-    echo $OUTPUT->header();
-    echo '<div class="reportlink">';
-    echo '<a href="search.php?id='.$course->id.
-                             '&amp;user='.urlencode($user).
-                             '&amp;userid='.$userid.
-                             '&amp;forumid='.$forumid.
-                             '&amp;subject='.urlencode($subject).
-                             '&amp;phrase='.urlencode($phrase).
-                             '&amp;words='.urlencode($words).
-                             '&amp;fullwords='.urlencode($fullwords).
-                             '&amp;notwords='.urlencode($notwords).
-                             '&amp;dateto='.$dateto.
-                             '&amp;datefrom='.$datefrom.
-                             '&amp;showform=1'.
-                             '">'.get_string('advancedsearch','forum').'...</a>';
-    echo '</div>';
-
-    echo $OUTPUT->heading("$strsearchresults: $totalcount");
-    
-    $url = new moodle_url('search.php', array('search' => urlencode($search), 'id' => $course->id, 'perpage' => $perpage));
-    echo $OUTPUT->paging_bar(moodle_paging_bar::make($totalcount, $page, $perpage, $url));
-
-    //added to implement highlighting of search terms found only in HTML markup
-    //fiedorow - 9/2/2005
-    $strippedsearch = str_replace('user:','',$search);
-    $strippedsearch = str_replace('subject:','',$strippedsearch);
-    $strippedsearch = str_replace('&quot;','',$strippedsearch);
-    $searchterms = explode(' ', $strippedsearch);    // Search for words independently
-    foreach ($searchterms as $key => $searchterm) {
-        if (preg_match('/^\-/',$searchterm)) {
-            unset($searchterms[$key]);
-        } else {
-            $searchterms[$key] = preg_replace('/^\+/','',$searchterm);
-        }
+    forum_print_big_search_form($course);
+
+    echo $OUTPUT->footer();
+    exit;
+}
+
+$PAGE->set_title($strsearchresults);
+$PAGE->set_button($searchform);
+echo $OUTPUT->header();
+echo '<div class="reportlink">';
+echo '<a href="search.php?id='.$course->id.
+                         '&amp;user='.urlencode($user).
+                         '&amp;userid='.$userid.
+                         '&amp;forumid='.$forumid.
+                         '&amp;subject='.urlencode($subject).
+                         '&amp;phrase='.urlencode($phrase).
+                         '&amp;words='.urlencode($words).
+                         '&amp;fullwords='.urlencode($fullwords).
+                         '&amp;notwords='.urlencode($notwords).
+                         '&amp;dateto='.$dateto.
+                         '&amp;datefrom='.$datefrom.
+                         '&amp;showform=1'.
+                         '">'.get_string('advancedsearch','forum').'...</a>';
+echo '</div>';
+
+echo $OUTPUT->heading("$strsearchresults: $totalcount");
+
+$url = new moodle_url('search.php', array('search' => urlencode($search), 'id' => $course->id, 'perpage' => $perpage));
+echo $OUTPUT->paging_bar(moodle_paging_bar::make($totalcount, $page, $perpage, $url));
+
+//added to implement highlighting of search terms found only in HTML markup
+//fiedorow - 9/2/2005
+$strippedsearch = str_replace('user:','',$search);
+$strippedsearch = str_replace('subject:','',$strippedsearch);
+$strippedsearch = str_replace('&quot;','',$strippedsearch);
+$searchterms = explode(' ', $strippedsearch);    // Search for words independently
+foreach ($searchterms as $key => $searchterm) {
+    if (preg_match('/^\-/',$searchterm)) {
+        unset($searchterms[$key]);
+    } else {
+        $searchterms[$key] = preg_replace('/^\+/','',$searchterm);
     }
-    $strippedsearch = implode(' ', $searchterms);    // Rebuild the string
+}
+$strippedsearch = implode(' ', $searchterms);    // Rebuild the string
 
-    foreach ($posts as $post) {
+foreach ($posts as $post) {
 
-        // Replace the simple subject with the three items forum name -> thread name -> subject
-        // (if all three are appropriate) each as a link.
-        if (! $discussion = $DB->get_record('forum_discussions', array('id' => $post->discussion))) {
-            print_error('invaliddiscussionid', 'forum');
-        }
-        if (! $forum = $DB->get_record('forum', array('id' => "$discussion->forum"))) {
-            print_error('invalidforumid', 'forum');
-        }
+    // Replace the simple subject with the three items forum name -> thread name -> subject
+    // (if all three are appropriate) each as a link.
+    if (! $discussion = $DB->get_record('forum_discussions', array('id' => $post->discussion))) {
+        print_error('invaliddiscussionid', 'forum');
+    }
+    if (! $forum = $DB->get_record('forum', array('id' => "$discussion->forum"))) {
+        print_error('invalidforumid', 'forum');
+    }
 
-        if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
-            print_error('invalidcoursemodule');
-        }
+    if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
+        print_error('invalidcoursemodule');
+    }
 
-        $post->subject = highlight($strippedsearch, $post->subject);
-        $discussion->name = highlight($strippedsearch, $discussion->name);
+    $post->subject = highlight($strippedsearch, $post->subject);
+    $discussion->name = highlight($strippedsearch, $discussion->name);
 
-        $fullsubject = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
-        if ($forum->type != 'single') {
-            $fullsubject .= " -> <a href=\"discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a>";
-            if ($post->parent != 0) {
-                $fullsubject .= " -> <a href=\"discuss.php?d=$post->discussion&amp;parent=$post->id\">".format_string($post->subject,true)."</a>";
-            }
+    $fullsubject = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
+    if ($forum->type != 'single') {
+        $fullsubject .= " -> <a href=\"discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a>";
+        if ($post->parent != 0) {
+            $fullsubject .= " -> <a href=\"discuss.php?d=$post->discussion&amp;parent=$post->id\">".format_string($post->subject,true)."</a>";
         }
+    }
 
-        $post->subject = $fullsubject;
-        $post->subjectnoformat = true;
+    $post->subject = $fullsubject;
+    $post->subjectnoformat = true;
 
-        // Identify search terms only found in HTML markup, and add a warning about them to
-        // the start of the message text. However, do not do the highlighting here. forum_print_post
-        // will do it for us later.
-        $missing_terms = "";
+    // Identify search terms only found in HTML markup, and add a warning about them to
+    // the start of the message text. However, do not do the highlighting here. forum_print_post
+    // will do it for us later.
+    $missing_terms = "";
 
-        $options = new object();
-        $options->trusted = $post->messagetrust;
-        $message = highlight($strippedsearch,
-                        format_text($post->message, $post->messageformat, $options, $course->id),
-                        0, '<fgw9sdpq4>', '</fgw9sdpq4>');
+    $options = new object();
+    $options->trusted = $post->messagetrust;
+    $message = highlight($strippedsearch,
+                    format_text($post->message, $post->messageformat, $options, $course->id),
+                    0, '<fgw9sdpq4>', '</fgw9sdpq4>');
 
-        foreach ($searchterms as $searchterm) {
-            if (preg_match("/$searchterm/i",$message) && !preg_match('/<fgw9sdpq4>'.$searchterm.'<\/fgw9sdpq4>/i',$message)) {
-                $missing_terms .= " $searchterm";
-            }
+    foreach ($searchterms as $searchterm) {
+        if (preg_match("/$searchterm/i",$message) && !preg_match('/<fgw9sdpq4>'.$searchterm.'<\/fgw9sdpq4>/i',$message)) {
+            $missing_terms .= " $searchterm";
         }
+    }
 
-        if ($missing_terms) {
-            $strmissingsearchterms = get_string('missingsearchterms','forum');
-            $post->message = '<p class="highlight2">'.$strmissingsearchterms.' '.$missing_terms.'</p>'.$post->message;
-        }
+    if ($missing_terms) {
+        $strmissingsearchterms = get_string('missingsearchterms','forum');
+        $post->message = '<p class="highlight2">'.$strmissingsearchterms.' '.$missing_terms.'</p>'.$post->message;
+    }
 
-        // Prepare a link to the post in context, to be displayed after the forum post.
-        $fulllink = "<a href=\"discuss.php?d=$post->discussion#p$post->id\">".get_string("postincontext", "forum")."</a>";
+    // Prepare a link to the post in context, to be displayed after the forum post.
+    $fulllink = "<a href=\"discuss.php?d=$post->discussion#p$post->id\">".get_string("postincontext", "forum")."</a>";
 
-        // Now pring the post.
-        forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false, false,
-                $fulllink, $strippedsearch, -99, false);
-    }
+    // Now pring the post.
+    forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false, false,
+            $fulllink, $strippedsearch, -99, false);
+}
 
-    echo $OUTPUT->paging_bar(moodle_paging_bar::make($totalcount, $page, $perpage, $url));
+echo $OUTPUT->paging_bar(moodle_paging_bar::make($totalcount, $page, $perpage, $url));
 
-    echo $OUTPUT->footer();
+echo $OUTPUT->footer();
 
 
 
@@ -406,4 +406,4 @@ function forum_menu_list($course)  {
     return $menu;
 }
 
-?>
+?>
\ No newline at end of file
index 6e0a6b6252b5eb89751bd6cfe6ed8c62ace6697f..05e848f4671a69a83e054c340bad82d33ae96703 100644 (file)
@@ -2,50 +2,56 @@
 
 //  Set tracking option for the forum.
 
-    require_once("../../config.php");
-    require_once("lib.php");
-
-    $id         = required_param('id',PARAM_INT);                           // The forum to subscribe or unsubscribe to
-    $returnpage = optional_param('returnpage', 'index.php', PARAM_FILE);    // Page to return to.
-
-    if (! $forum = $DB->get_record("forum", array("id" => $id))) {
-        print_error('invalidforumid', 'forum');
-    }
-
-    if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
-        print_error('invalidcoursemodule');
-    }
-
-    if (! $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
-        print_error('invalidcoursemodule');
-    }
-
-    require_course_login($course, false, $cm);
-
-    $returnto = forum_go_back_to($returnpage.'?id='.$course->id.'&f='.$forum->id);
-
-    if (!forum_tp_can_track_forums($forum)) {
-        redirect($returnto);
+require_once("../../config.php");
+require_once("lib.php");
+
+$id         = required_param('id',PARAM_INT);                           // The forum to subscribe or unsubscribe to
+$returnpage = optional_param('returnpage', 'index.php', PARAM_FILE);    // Page to return to.
+
+$url = new moodle_url($CFG->wwwroot.'/mod/forum/settracking.php', array('id'=>$id));
+if ($returnpage !== 'index.php') {
+    $url->param('returnpage', $returnpage);
+}
+$PAGE->set_url($url);
+
+if (! $forum = $DB->get_record("forum", array("id" => $id))) {
+    print_error('invalidforumid', 'forum');
+}
+
+if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
+    print_error('invalidcoursemodule');
+}
+
+if (! $cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
+    print_error('invalidcoursemodule');
+}
+
+require_course_login($course, false, $cm);
+
+$returnto = forum_go_back_to($returnpage.'?id='.$course->id.'&f='.$forum->id);
+
+if (!forum_tp_can_track_forums($forum)) {
+    redirect($returnto);
+}
+
+$info = new object();
+$info->name  = fullname($USER);
+$info->forum = format_string($forum->name);
+if (forum_tp_is_tracked($forum) ) {
+    if (forum_tp_stop_tracking($forum->id)) {
+        add_to_log($course->id, "forum", "stop tracking", "view.php?f=$forum->id", $forum->id, $cm->id);
+        redirect($returnto, get_string("nownottracking", "forum", $info), 1);
+    } else {
+        print_error('cannottrack', '', $_SERVER["HTTP_REFERER"]);
     }
 
-    $info = new object();
-    $info->name  = fullname($USER);
-    $info->forum = format_string($forum->name);
-    if (forum_tp_is_tracked($forum) ) {
-        if (forum_tp_stop_tracking($forum->id)) {
-            add_to_log($course->id, "forum", "stop tracking", "view.php?f=$forum->id", $forum->id, $cm->id);
-            redirect($returnto, get_string("nownottracking", "forum", $info), 1);
-        } else {
-            print_error('cannottrack', '', $_SERVER["HTTP_REFERER"]);
-        }
-
-    } else { // subscribe
-        if (forum_tp_start_tracking($forum->id)) {
-            add_to_log($course->id, "forum", "start tracking", "view.php?f=$forum->id", $forum->id, $cm->id);
-            redirect($returnto, get_string("nowtracking", "forum", $info), 1);
-        } else {
-            print_error('cannottrack', '', $_SERVER["HTTP_REFERER"]);
-        }
+} else { // subscribe
+    if (forum_tp_start_tracking($forum->id)) {
+        add_to_log($course->id, "forum", "start tracking", "view.php?f=$forum->id", $forum->id, $cm->id);
+        redirect($returnto, get_string("nowtracking", "forum", $info), 1);
+    } else {
+        print_error('cannottrack', '', $_SERVER["HTTP_REFERER"]);
     }
+}
 
 ?>
index a70d64addf6be100fa0b7b203a8115390784f5bb..21c344821a01e9f1402447ed2688f76c81fdca50 100644 (file)
-<?php // $Id$
+<?php
 
 //  Subscribe to or unsubscribe from a forum.
 
-    require_once("../../config.php");
-    require_once("lib.php");
-
-    $id = required_param('id',PARAM_INT);      // The forum to subscribe or unsubscribe to
-    $force = optional_param('force','',PARAM_ALPHA);  // Force everyone to be subscribed to this forum?
-    $user = optional_param('user',0,PARAM_INT);
-
-    if (! $forum = $DB->get_record("forum", array("id" => $id))) {
-        print_error('invalidforumid', 'forum');
+require_once("../../config.php");
+require_once("lib.php");
+
+$id = required_param('id',PARAM_INT);      // The forum to subscribe or unsubscribe to
+$force = optional_param('force','',PARAM_ALPHA);  // Force everyone to be subscribed to this forum?
+$user = optional_param('user',0,PARAM_INT);
+
+$url = new moodle_url($CFG->wwwroot.'/mod/forum/subscribe.php', array('id'=>$id));
+if ($force !== '') {
+    $url->param('force', $force);
+}
+if ($user !== 0) {
+    $url->param('user', $user);
+}
+$PAGE->set_url($url);
+
+if (! $forum = $DB->get_record("forum", array("id" => $id))) {
+    print_error('invalidforumid', 'forum');
+}
+
+if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
+    print_error('invalidcoursemodule');
+}
+
+if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
+    $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+} else {
+    $cm->id = 0;
+    $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+}
+
+if ($user) {
+    if (!has_capability('mod/forum:managesubscriptions', $context)) {
+        print_error('nopermissiontosubscribe', 'forum');
     }
-
-    if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
-        print_error('invalidcoursemodule');
+    if (!$user = $DB->get_record("user", array("id" => $user))) {
+        print_error('invaliduserid');
     }
-
-    if ($cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
-        $context = get_context_instance(CONTEXT_MODULE, $cm->id);
-    } else {
-        $cm->id = 0;
-        $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+} else {
+    $user = $USER;
+}
+
+if (isset($cm->groupmode) && empty($course->groupmodeforce)) {
+    $groupmode =  $cm->groupmode;
+} else {
+    $groupmode = $course->groupmode;
+}
+if ($groupmode && !forum_is_subscribed($user->id, $forum) && !has_capability('moodle/site:accessallgroups', $context)) {
+    if (!groups_get_all_groups($course->id, $USER->id)) {
+        print_error('cannotsubscribe', 'forum');
     }
+}
 
-    if ($user) {
-        if (!has_capability('mod/forum:managesubscriptions', $context)) {
-            print_error('nopermissiontosubscribe', 'forum');
-        }
-        if (!$user = $DB->get_record("user", array("id" => $user))) {
-            print_error('invaliduserid');
-        }
+require_login($course->id, false, $cm);
+
+if (has_capability('moodle/legacy:guest', get_context_instance(CONTEXT_SYSTEM), 0, false)) {   // Guests can't subscribe
+    $PAGE->set_title($course->shortname);
+    $PAGE->set_heading($course->fullname);
+    echo $OUTPUT->header();
+    echo $OUTPUT->confirm(get_string('noguestsubscribe', 'forum').'<br /><br />'.get_string('liketologin'),
+                 get_login_url(), new moodle_url());
+    echo $OUTPUT->footer();
+    exit;
+}
+
+$returnto = optional_param('backtoindex',0,PARAM_INT)
+    ? "index.php?id=".$course->id
+    : "view.php?f=$id";
+
+if ($force and has_capability('mod/forum:managesubscriptions', $context)) {
+    if (forum_is_forcesubscribed($forum)) {
+        forum_forcesubscribe($forum->id, 0);
+        redirect($returnto, get_string("everyonecannowchoose", "forum"), 1);
     } else {
-        $user = $USER;
+        forum_forcesubscribe($forum->id, 1);
+        redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
     }
+}
 
-    if (groupmode($course, $cm)
-                and !forum_is_subscribed($user->id, $forum)
-                and !has_capability('moodle/site:accessallgroups', $context)) {
-        if (!groups_get_all_groups($course->id, $USER->id)) {
-            print_error('cannotsubscribe', 'forum');
-        }
-    }
+if (forum_is_forcesubscribed($forum)) {
+    redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
+}
 
-    require_login($course->id, false, $cm);
+$info->name  = fullname($user);
+$info->forum = format_string($forum->name);
 
-    if (isguest()) {   // Guests can't subscribe
-        $PAGE->set_title($course->shortname);
-        $PAGE->set_heading($course->fullname);
-        echo $OUTPUT->header();
-        echo $OUTPUT->confirm(get_string('noguestsubscribe', 'forum').'<br /><br />'.get_string('liketologin'),
-                     get_login_url(), new moodle_url());
-        echo $OUTPUT->footer();
-        exit;
+if (forum_is_subscribed($user->id, $forum->id)) {
+    if (forum_unsubscribe($user->id, $forum->id)) {
+        add_to_log($course->id, "forum", "unsubscribe", "view.php?f=$forum->id", $forum->id, $cm->id);
+        redirect($returnto, get_string("nownotsubscribed", "forum", $info), 1);
+    } else {
+        print_error('cannotunsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
     }
 
-    $returnto = optional_param('backtoindex',0,PARAM_INT)
-        ? "index.php?id=".$course->id
-        : "view.php?f=$id";
-
-    if ($force and has_capability('mod/forum:managesubscriptions', $context)) {
-        if (forum_is_forcesubscribed($forum)) {
-            forum_forcesubscribe($forum->id, 0);
-            redirect($returnto, get_string("everyonecannowchoose", "forum"), 1);
-        } else {
-            forum_forcesubscribe($forum->id, 1);
-            redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
-        }
+} else {  // subscribe
+    if ($forum->forcesubscribe == FORUM_DISALLOWSUBSCRIBE &&
+                !has_capability('mod/forum:managesubscriptions', $context)) {
+        print_error('disallowsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
     }
-
-    if (forum_is_forcesubscribed($forum)) {
-        redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
+    if (!has_capability('mod/forum:viewdiscussion', $context)) {
+        print_error('cannotsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
     }
-
-    $info->name  = fullname($user);
-    $info->forum = format_string($forum->name);
-
-    if (forum_is_subscribed($user->id, $forum->id)) {
-        if (forum_unsubscribe($user->id, $forum->id)) {
-            add_to_log($course->id, "forum", "unsubscribe", "view.php?f=$forum->id", $forum->id, $cm->id);
-            redirect($returnto, get_string("nownotsubscribed", "forum", $info), 1);
-        } else {
-            print_error('cannotunsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
-        }
-
-    } else {  // subscribe
-        if ($forum->forcesubscribe == FORUM_DISALLOWSUBSCRIBE &&
-                    !has_capability('mod/forum:managesubscriptions', $context)) {
-            print_error('disallowsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
-        }
-        if (!has_capability('mod/forum:viewdiscussion', $context)) {
-            print_error('cannotsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
-        }
-        if (forum_subscribe($user->id, $forum->id) ) {
-            add_to_log($course->id, "forum", "subscribe", "view.php?f=$forum->id", $forum->id, $cm->id);
-            redirect($returnto, get_string("nowsubscribed", "forum", $info), 1);
-        } else {
-            print_error('cannotsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
-        }
+    if (forum_subscribe($user->id, $forum->id) ) {
+        add_to_log($course->id, "forum", "subscribe", "view.php?f=$forum->id", $forum->id, $cm->id);
+        redirect($returnto, get_string("nowsubscribed", "forum", $info), 1);
+    } else {
+        print_error('cannotsubscribe', 'forum', $_SERVER["HTTP_REFERER"]);
     }
+}
 
-?>
+?>
\ No newline at end of file
index 912430aff4abaa0eb2d16c658ecd67adcd7d91bd..61cf82743be800238a2034e5e69978e2b7985291 100644 (file)
-<?php  // $Id$
+<?php
 
-    require_once("../../config.php");
-    require_once("lib.php");
+require_once("../../config.php");
+require_once("lib.php");
 
-    $id    = required_param('id',PARAM_INT);           // forum
-    $group = optional_param('group',0,PARAM_INT);      // change of group
-    $edit  = optional_param('edit',-1,PARAM_BOOL);     // Turn editing on and off
+$id    = required_param('id',PARAM_INT);           // forum
+$group = optional_param('group',0,PARAM_INT);      // change of group
+$edit  = optional_param('edit',-1,PARAM_BOOL);     // Turn editing on and off
 
-    if (! $forum = $DB->get_record('forum', array('id'=>$id))) {
-        print_error('invalidforumid', 'forum');
-    }
+$url = new moodle_url($CFG->wwwroot.'/mod/forum/subscribers.php', array('id'=>$id));
+if ($group !== 0) {
+    $url->param('group', $group);
+}
+if ($edit !== 0) {
+    $url->param('edit', $edit);
+}
+$PAGE->set_url($url);
 
-    if (! $course = $DB->get_record('course', array('id'=>$forum->course))) {
-        print_error('invalidcourseid');
-    }
+if (! $forum = $DB->get_record('forum', array('id'=>$id))) {
+    print_error('invalidforumid', 'forum');
+}
 
-    if (! $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) {
-        $cm->id = 0;
-    }
+if (! $course = $DB->get_record('course', array('id'=>$forum->course))) {
+    print_error('invalidcourseid');
+}
 
-    require_login($course->id, false, $cm);
+if (! $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) {
+    $cm->id = 0;
+}
 
-    $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+require_login($course->id, false, $cm);
 
-    if (!has_capability('mod/forum:viewsubscribers', $context)) {
-        print_error('nopermissiontosubscribe', 'forum');
-    }
+$context = get_context_instance(CONTEXT_MODULE, $cm->id);
 
-    unset($SESSION->fromdiscussion);
+if (!has_capability('mod/forum:viewsubscribers', $context)) {
+    print_error('nopermissiontosubscribe', 'forum');
+}
 
-    add_to_log($course->id, "forum", "view subscribers", "subscribers.php?id=$forum->id", $forum->id, $cm->id);
+unset($SESSION->fromdiscussion);
 
-    $strsubscribeall = get_string("subscribeall", "forum");
-    $strsubscribenone = get_string("subscribenone", "forum");
-    $strsubscribers = get_string("subscribers", "forum");
-    $strforums = get_string("forums", "forum");
+add_to_log($course->id, "forum", "view subscribers", "subscribers.php?id=$forum->id", $forum->id, $cm->id);
 
-    $PAGE->navbar->add($strsubscribers);
-    $PAGE->set_title($strsubscribers);
-    if (has_capability('mod/forum:managesubscriptions', $context)) {
-        $PAGE->set_button(forum_update_subscriptions_button($course->id, $id));
-        if ($edit != -1) {
-            $USER->subscriptionsediting = $edit;
-        }
-    } else {
-        unset($USER->subscriptionsediting);
+$strsubscribeall = get_string("subscribeall", "forum");
+$strsubscribenone = get_string("subscribenone", "forum");
+$strsubscribers = get_string("subscribers", "forum");
+$strforums = get_string("forums", "forum");
+
+$PAGE->navbar->add($strsubscribers);
+$PAGE->set_title($strsubscribers);
+if (has_capability('mod/forum:managesubscriptions', $context)) {
+    $PAGE->set_button(forum_update_subscriptions_button($course->id, $id));
+    if ($edit != -1) {
+        $USER->subscriptionsediting = $edit;
     }
-    echo $OUTPUT->header();
+} else {
+    unset($USER->subscriptionsediting);
+}
+echo $OUTPUT->header();
 
 /// Check to see if groups are being used in this forum
-    groups_print_activity_menu($cm, "subscribers.php?id=$forum->id");
-    $currentgroup = groups_get_activity_group($cm);
-    $groupmode = groups_get_activity_groupmode($cm);
-
-    if (empty($USER->subscriptionsediting)) {         /// Display an overview of subscribers
+groups_print_activity_menu($cm, "subscribers.php?id=$forum->id");
+$currentgroup = groups_get_activity_group($cm);
+$groupmode = groups_get_activity_groupmode($cm);
 
-        if (! $users = forum_subscribed_users($course, $forum, $currentgroup, $context) ) {
+if (empty($USER->subscriptionsediting)) {         /// Display an overview of subscribers
 
-            echo $OUTPUT->heading(get_string("nosubscribers", "forum"));
+    if (! $users = forum_subscribed_users($course, $forum, $currentgroup, $context) ) {
 
-        } else {
+        echo $OUTPUT->heading(get_string("nosubscribers", "forum"));
 
-            echo $OUTPUT->heading(get_string("subscribersto","forum", "'".format_string($forum->name)."'"));
+    } else {
 
-            echo '<table align="center" cellpadding="5" cellspacing="5">';
-            foreach ($users as $user) {
-                echo '<tr><td>';
-                echo $OUTPUT->user_picture(moodle_user_picture::make($user, $course->id));
-                echo '</td><td>';
-                echo fullname($user);
-                echo '</td><td>';
-                echo $user->email;
-                echo '</td></tr>';
-            }
-            echo "</table>";
+        echo $OUTPUT->heading(get_string("subscribersto","forum", "'".format_string($forum->name)."'"));
+
+        echo '<table align="center" cellpadding="5" cellspacing="5">';
+        foreach ($users as $user) {
+            echo '<tr><td>';
+            echo $OUTPUT->user_picture(moodle_user_picture::make($user, $course->id));
+            echo '</td><td>';
+            echo fullname($user);
+            echo '</td><td>';
+            echo $user->email;
+            echo '</td></tr>';
         }
-
-        echo $OUTPUT->footer();
-        exit;
+        echo "</table>";
     }
 
+    echo $OUTPUT->footer();
+    exit;
+}
+
 /// We are in editing mode.
 
-    $strexistingsubscribers   = get_string("existingsubscribers", 'forum');
-    $strpotentialsubscribers  = get_string("potentialsubscribers", 'forum');
-    $straddsubscriber    = get_string("addsubscriber", 'forum');
-    $strremovesubscriber = get_string("removesubscriber", 'forum');
-    $strsearch        = get_string("search");
-    $strsearchresults  = get_string("searchresults");
-    $strshowall = get_string("showall");
-    $strsubscribers = get_string("subscribers", "forum");
-    $strforums      = get_string("forums", "forum");
+$strexistingsubscribers   = get_string("existingsubscribers", 'forum');
+$strpotentialsubscribers  = get_string("potentialsubscribers", 'forum');
+$straddsubscriber    = get_string("addsubscriber", 'forum');
+$strremovesubscriber = get_string("removesubscriber", 'forum');
+$strsearch        = get_string("search");
+$strsearchresults  = get_string("searchresults");
+$strshowall = get_string("showall");
+$strsubscribers = get_string("subscribers", "forum");
+$strforums      = get_string("forums", "forum");
 
-    $searchtext = optional_param('searchtext', '', PARAM_RAW);
-    if ($frm = data_submitted()) {
+$searchtext = optional_param('searchtext', '', PARAM_RAW);
+if ($frm = data_submitted()) {
 
 /// A form was submitted so process the input
-        if (!empty($frm->add) and !empty($frm->addselect)) {
-            foreach ($frm->addselect as $addsubscriber) {
-                if (! forum_subscribe($addsubscriber, $id)) {
-                    print_error('cannotaddsubscriber', 'forum', '', $addsubscriber);
-                }
+    if (!empty($frm->add) and !empty($frm->addselect)) {
+        foreach ($frm->addselect as $addsubscriber) {
+            if (! forum_subscribe($addsubscriber, $id)) {
+                print_error('cannotaddsubscriber', 'forum', '', $addsubscriber);
             }
-        } else if (!empty($frm->remove) and !empty($frm->removeselect)) {
-            foreach ($frm->removeselect as $removesubscriber) {
-                if (! forum_unsubscribe($removesubscriber, $id)) {
-                    print_error('cannotremovesubscriber', 'forum', '', $removesubscriber);
-                }
+        }
+    } else if (!empty($frm->remove) and !empty($frm->removeselect)) {
+        foreach ($frm->removeselect as $removesubscriber) {
+            if (! forum_unsubscribe($removesubscriber, $id)) {
+                print_error('cannotremovesubscriber', 'forum', '', $removesubscriber);
             }
-        } else if (!empty($frm->showall)) {
-            $searchtext = '';
         }
+    } else if (!empty($frm->showall)) {
+        $searchtext = '';
     }
+}
 
 /// Get all existing subscribers for this forum.
-    if (!$subscribers = forum_subscribed_users($course, $forum, $currentgroup, $context)) {
-        $subscribers = array();
-    }
+if (!$subscribers = forum_subscribed_users($course, $forum, $currentgroup, $context)) {
+    $subscribers = array();
+}
 
 /// Get all the potential subscribers excluding users already subscribed
-    $users = forum_get_potential_subscribers($context, $currentgroup, 'id,email,firstname,lastname', 'firstname ASC, lastname ASC');
-    if (!$users) {
-        $users = array();
-    }
-    foreach ($subscribers as $subscriber) {
-        unset($users[$subscriber->id]);
-    }
+$users = forum_get_potential_subscribers($context, $currentgroup, 'id,email,firstname,lastname', 'firstname ASC, lastname ASC');
+if (!$users) {
+    $users = array();
+}
+foreach ($subscribers as $subscriber) {
+    unset($users[$subscriber->id]);
+}
 
 /// This is yucky, but do the search in PHP, becuase the list we are using comes from get_users_by_capability,
 /// which does not allow searching in the database. Fortunately the list is only this list of users in this
 /// course, which is normally OK, except on the site course of a big site. But before you can enter a search
 /// term, you have already seen a page that lists everyone, since this code never does paging, so you have probably
 /// already crashed your server if you are going to. This will be fixed properly for Moodle 2.0: MDL-17550.
-    if ($searchtext) {
-        $searchusers = array();
-        $lcsearchtext = moodle_strtolower($searchtext);
-        foreach ($users as $userid => $user) {
-            if (strpos(moodle_strtolower($user->email), $lcsearchtext) !== false ||
-                    strpos(moodle_strtolower($user->firstname . ' ' . $user->lastname), $lcsearchtext) !== false) {
-                $searchusers[$userid] = $user;
-            }
-            unset($users[$userid]);
+if ($searchtext) {
+    $searchusers = array();
+    $lcsearchtext = moodle_strtolower($searchtext);
+    foreach ($users as $userid => $user) {
+        if (strpos(moodle_strtolower($user->email), $lcsearchtext) !== false ||
+                strpos(moodle_strtolower($user->firstname . ' ' . $user->lastname), $lcsearchtext) !== false) {
+            $searchusers[$userid] = $user;
         }
+        unset($users[$userid]);
     }
+}
 
-    echo $OUTPUT->box_start('generalbox boxaligncenter');
+echo $OUTPUT->box_start('generalbox boxaligncenter');
 
-    include('subscriber.html');
+include('subscriber.html');
 
-    echo $OUTPUT->box_end();
+echo $OUTPUT->box_end();
 
-    echo $OUTPUT->footer();
+echo $OUTPUT->footer();
 
-?>
+?>
\ No newline at end of file
index 3118536cbaee6aaaacee72ca8e3b9bd17143ca7d..c19b8e71484dc7176e079de34f95fa5b637b21fb 100644 (file)
@@ -1,10 +1,12 @@
-<?php  //$Id$
+<?php
 
 require_once("../../config.php");
 require_once("lib.php");
 
 $confirm = optional_param('confirm', false, PARAM_BOOL);
 
+$PAGE->set_url(new moodle_url($CFG->wwwroot.'/mod/forum/unsubscribeall.php'));
+
 require_login();
 
 $return = $CFG->wwwroot.'/';
index f3cf59503d206b591859dc02ae715959f5ffe598..c06aec86e0339bddcdf1e88ea3f7f655cd2fb547 100644 (file)
@@ -1,4 +1,4 @@
-<?php // $Id$
+<?php
 
 // Display user activity reports for a course
 
@@ -13,6 +13,21 @@ $mode    = optional_param('mode', 'posts', PARAM_ALPHA);
 $page    = optional_param('page', 0, PARAM_INT);
 $perpage = optional_param('perpage', 5, PARAM_INT);
 
+$url = new moodle_url($CFG->wwwroot.'/mod/forum/user.php', array('course'=>$course));
+if ($id !== 0) {
+    $url->param('id', $id);
+}
+if ($mode !== 'posts') {
+    $url->param('mode', $mode);
+}
+if ($page !== 0) {
+    $url->param('page', $page);
+}
+if ($perpage !== 5) {
+    $url->param('perpage', $perpage);
+}
+$PAGE->set_url($url);
+
 if (empty($id)) {         // See your own profile by default
     require_login();
     $id = $USER->id;
@@ -176,4 +191,4 @@ if ($posts = forum_search_posts($searchterms, $searchcourse, $page*$perpage, $pe
 echo '</div>';
 echo $OUTPUT->footer();
 
-?>
+?>
\ No newline at end of file