-<?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.'&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[] = ' ';
}
}
- $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.'&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.'&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[] = ' ';
- }
- }
-
- $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.'&subscribe=1">'.get_string('allsubscribe', 'forum').'</a>';
- echo '</span><br /><span class="helplink">';
- echo '<a href="index.php?id='.$course->id.'&subscribe=0">'.get_string('allunsubscribe', 'forum').'</a>';
- echo '</span>';
- echo $OUTPUT->box_end();
- echo $OUTPUT->box(' ', '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.'&subscribe=1">'.get_string('allsubscribe', 'forum').'</a>';
+ echo '</span><br /><span class="helplink">';
+ echo '<a href="index.php?id='.$course->id.'&subscribe=0">'.get_string('allunsubscribe', 'forum').'</a>';
+ echo '</span>';
+ echo $OUTPUT->box_end();
+ echo $OUTPUT->box(' ', '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
-<?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
// } else {
// print_error("Could not start tracking that forum", $_SERVER["HTTP_REFERER"]);
// }
- }
+}
- redirect($returnto);
+redirect($returnto);
-?>
+?>
\ No newline at end of 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&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&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&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&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
-<?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
-<?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
-<?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\"> </th>";
+ echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&sort=firstname\">$strname</a></th>";
+ echo "<th class=\"header\" scope=\"col\" style=\"width:100%\"><a href=\"report.php?id=$post->id&sort=rating\">$strrating</a></th>";
+ echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&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\"> </th>";
- echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&sort=firstname\">$strname</a></th>";
- echo "<th class=\"header\" scope=\"col\" style=\"width:100%\"><a href=\"report.php?id=$post->id&sort=rating\">$strrating</a></th>";
- echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&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
-<?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&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&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.
- '&user='.urlencode($user).
- '&userid='.$userid.
- '&forumid='.$forumid.
- '&subject='.urlencode($subject).
- '&phrase='.urlencode($phrase).
- '&words='.urlencode($words).
- '&fullwords='.urlencode($fullwords).
- '&notwords='.urlencode($notwords).
- '&dateto='.$dateto.
- '&datefrom='.$datefrom.
- '&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('"','',$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.
+ '&user='.urlencode($user).
+ '&userid='.$userid.
+ '&forumid='.$forumid.
+ '&subject='.urlencode($subject).
+ '&phrase='.urlencode($phrase).
+ '&words='.urlencode($words).
+ '&fullwords='.urlencode($fullwords).
+ '&notwords='.urlencode($notwords).
+ '&dateto='.$dateto.
+ '&datefrom='.$datefrom.
+ '&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('"','',$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&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&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();
return $menu;
}
-?>
+?>
\ No newline at end of file
// 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"]);
}
+}
?>
-<?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
-<?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
-<?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.'/';
-<?php // $Id$
+<?php
// Display user activity reports for a course
$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;
echo '</div>';
echo $OUTPUT->footer();
-?>
+?>
\ No newline at end of file