mod-forum MDL-19808 Added set_url calls, replaced deprecated functions

This commit is contained in:
samhemelryk
2009-09-24 06:41:04 +00:00
parent d5d5ba1a97
commit cd4e6b1769
12 changed files with 1895 additions and 1821 deletions
+314 -308
View File
@@ -1,162 +1,295 @@
<?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
$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);
unset($SESSION->fromdiscussion);
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');
$searchform = forum_search_form($course);
// Start of the table for General Forums
$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);
$generaltable->head[] = $strunreadposts;
$generaltable->align[] = 'center';
$generaltable->head[] = $strtracking;
$generaltable->align[] = 'center';
}
$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';
}
// 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];
if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) {
continue; // Shouldn't happen
}
if (!has_capability('mod/forum:viewdiscussion', $context)) {
continue;
}
// 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;
} else if ($course->id == SITEID or empty($cm->sectionnum)) {
$generalforums[$forum->id] = $forum;
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);
unset($SESSION->fromdiscussion);
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');
$searchform = forum_search_form($course);
// Start of the table for General Forums
$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);
$generaltable->head[] = $strunreadposts;
$generaltable->align[] = 'center';
$generaltable->head[] = $strtracking;
$generaltable->align[] = 'center';
}
$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';
}
// 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();
$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;
}
// 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;
} else if ($course->id == SITEID or empty($cm->sectionnum)) {
$generalforums[$forum->id] = $forum;
} else {
$learningforums[$forum->id] = $forum;
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);
}
}
/// 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;
/// First, let's process the general forums and build up a display
if (has_capability('mod/forum:viewdiscussion', $modcontext)) {
$cansub = true;
}
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);
if ($generalforums) {
foreach ($generalforums as $forum) {
$cm = $modinfo->instances['forum'][$forum->id];
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$count = forum_count_discussions($forum, $cm, $course);
if ($usetracking) {
if ($forum->trackingtype == FORUM_TRACKING_OFF) {
$unreadlink = '-';
$trackedlink = '-';
} else {
if (isset($untracked[$forum->id])) {
$unreadlink = '-';
} else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
$unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
$unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
$forum->id.'&amp;mark=read"><img src="'.$OUTPUT->old_icon_url('t/clear') . '" alt="'.$strmarkallread.'" /></a></span>';
} else {
$unreadlink = '<span class="read">0</span>';
}
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);
}
}
}
}
$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);
$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 {
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);
$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 ($forumlink, $forum->intro, $discussionlink);
if ($usetracking) {
$row[] = $unreadlink;
$row[] = $trackedlink; // Tracking.
}
if ($can_subscribe) {
if ($forum->forcesubscribe != FORUM_DISALLOWSUBSCRIBE) {
$row[] = forum_get_subscribe_link($forum, $context, array('subscribed' => $stryes,
'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
'cantsubscribe' => '-'), false, false, true, $subscribed_forums);
} else {
$row[] = '-';
}
}
//If this forum has RSS activated, calculate it
if ($show_rss) {
if ($forum->rsstype and $forum->rssarticles) {
//Calculate the tolltip text
if ($forum->rsstype == 1) {
$tooltiptext = get_string('rsssubscriberssdiscussions', 'forum', format_string($forum->name));
} else {
$tooltiptext = get_string('rsssubscriberssposts', 'forum', format_string($forum->name));
}
//Get html code for RSS link
$row[] = rss_get_link($course->id, $USER->id, 'forum', $forum->id, $tooltiptext);
} else {
$row[] = '&nbsp;';
}
}
$generaltable->data[] = $row;
}
}
/// First, let's process the general forums and build up a display
if ($generalforums) {
foreach ($generalforums as $forum) {
// 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);
@@ -169,9 +302,9 @@
} else {
if (isset($untracked[$forum->id])) {
$unreadlink = '-';
$unreadlink = '-';
} else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
$unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
$unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
$unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
$forum->id.'&amp;mark=read"><img src="'.$OUTPUT->old_icon_url('t/clear') . '" alt="'.$strmarkallread.'" /></a></span>';
} else {
@@ -197,7 +330,18 @@
}
$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 = '';
@@ -207,7 +351,7 @@
$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.
@@ -216,8 +360,8 @@
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[] = '-';
}
@@ -239,178 +383,40 @@
}
}
$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');
/// 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 ($usetracking) {
$learningtable->head[] = $strunreadposts;
$learningtable->align[] = 'center';
if (!isguest()) {
echo $OUTPUT->box_start('subscription');
echo '<span class="helplink">';
echo '<a href="index.php?id='.$course->id.'&amp;subscribe=1">'.get_string('allsubscribe', 'forum').'</a>';
echo '</span><br /><span class="helplink">';
echo '<a href="index.php?id='.$course->id.'&amp;subscribe=0">'.get_string('allunsubscribe', 'forum').'</a>';
echo '</span>';
echo $OUTPUT->box_end();
echo $OUTPUT->box('&nbsp;', 'clearer');
}
$learningtable->head[] = $strtracking;
$learningtable->align[] = 'center';
}
if ($generalforums) {
echo $OUTPUT->heading(get_string('generalforums', 'forum'));
echo $OUTPUT->table($generaltable);
}
if ($can_subscribe) {
$learningtable->head[] = $strsubscribed;
$learningtable->align[] = 'center';
}
if ($learningforums) {
echo $OUTPUT->heading(get_string('learningforums', 'forum'));
echo $OUTPUT->table($learningtable);
}
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';
}
echo $OUTPUT->footer();
/// Now let's process the learning forums
if ($course->id != SITEID) { // Only real courses have learning forums
// Add extra field for section number, at the front
if ($course->format == 'weeks' or $course->format == 'weekscss') {
array_unshift($learningtable->head, $strweek);
} else {
array_unshift($learningtable->head, $strsection);
}
array_unshift($learningtable->align, 'center');
if ($learningforums) {
$currentsection = '';
foreach ($learningforums as $forum) {
$cm = $modinfo->instances['forum'][$forum->id];
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$count = forum_count_discussions($forum, $cm, $course);
if ($usetracking) {
if ($forum->trackingtype == FORUM_TRACKING_OFF) {
$unreadlink = '-';
$trackedlink = '-';
} else {
if (isset($untracked[$forum->id])) {
$unreadlink = '-';
} else if ($unread = forum_tp_count_forum_unread_posts($cm, $course)) {
$unreadlink = '<span class="unread"><a href="view.php?f='.$forum->id.'">'.$unread.'</a>';
$unreadlink .= '<a title="'.$strmarkallread.'" href="markposts.php?f='.
$forum->id.'&amp;mark=read"><img src="'.$OUTPUT->old_icon_url('t/clear') . '" alt="'.$strmarkallread.'" /></a></span>';
} else {
$unreadlink = '<span class="read">0</span>';
}
if ($forum->trackingtype == FORUM_TRACKING_ON) {
$trackedlink = $stryes;
} else {
$options = array('id'=>$forum->id);
if (!isset($untracked[$forum->id])) {
$form = html_form::make_button($CFG->wwwroot.'/mod/forum/settracking.php', $options, $stryes);
$form->button->title = $strnotrackforum;
$trackedlink = $OUTPUT->button($form);
} else {
$form = html_form::make_button($CFG->wwwroot.'/mod/forum/settracking.php', $options, $strno);
$form->button->title = $strtrackforum;
$trackedlink = $OUTPUT->button($form);
}
}
}
}
$forum->intro = shorten_text(format_module_intro('forum', $forum, $cm->id), $CFG->forum_shortpost);
if ($cm->sectionnum != $currentsection) {
$printsection = $cm->sectionnum;
if ($currentsection) {
$learningtable->data[] = 'hr';
}
$currentsection = $cm->sectionnum;
} else {
$printsection = '';
}
$forumname = format_string($forum->name,true);;
if ($cm->visible) {
$style = '';
} else {
$style = 'class="dimmed"';
}
$forumlink = "<a href=\"view.php?f=$forum->id\" $style>".format_string($forum->name,true)."</a>";
$discussionlink = "<a href=\"view.php?f=$forum->id\" $style>".$count."</a>";
$row = array ($printsection, $forumlink, $forum->intro, $discussionlink);
if ($usetracking) {
$row[] = $unreadlink;
$row[] = $trackedlink; // Tracking.
}
if ($can_subscribe) {
if ($forum->forcesubscribe != FORUM_DISALLOWSUBSCRIBE) {
$row[] = forum_get_subscribe_link($forum, $context, array('subscribed' => $stryes,
'unsubscribed' => $strno, 'forcesubscribed' => $stryes,
'cantsubscribe' => '-'), false, false, true, $subscribed_forums);
} else {
$row[] = '-';
}
}
//If this forum has RSS activated, calculate it
if ($show_rss) {
if ($forum->rsstype and $forum->rssarticles) {
//Calculate the tolltip text
if ($forum->rsstype == 1) {
$tooltiptext = get_string('rsssubscriberssdiscussions', 'forum', format_string($forum->name));
} else {
$tooltiptext = get_string('rsssubscriberssposts', 'forum', format_string($forum->name));
}
//Get html code for RSS link
$row[] = rss_get_link($course->id, $USER->id, 'forum', $forum->id, $tooltiptext);
} else {
$row[] = '&nbsp;';
}
}
$learningtable->data[] = $row;
}
}
}
/// Output the page
$PAGE->navbar->add($strforums);
$PAGE->set_title("$course->shortname: $strforums");
$PAGE->set_heading($course->fullname);
$PAGE->set_button($searchform);
echo $OUTPUT->header();
if (!isguest()) {
echo $OUTPUT->box_start('subscription');
echo '<span class="helplink">';
echo '<a href="index.php?id='.$course->id.'&amp;subscribe=1">'.get_string('allsubscribe', 'forum').'</a>';
echo '</span><br /><span class="helplink">';
echo '<a href="index.php?id='.$course->id.'&amp;subscribe=0">'.get_string('allunsubscribe', 'forum').'</a>';
echo '</span>';
echo $OUTPUT->box_end();
echo $OUTPUT->box('&nbsp;', 'clearer');
}
if ($generalforums) {
echo $OUTPUT->heading(get_string('generalforums', 'forum'));
echo $OUTPUT->table($generaltable);
}
if ($learningforums) {
echo $OUTPUT->heading(get_string('learningforums', 'forum'));
echo $OUTPUT->table($learningtable);
}
echo $OUTPUT->footer();
?>
?>
+66 -57
View File
@@ -1,72 +1,81 @@
<?php // $Id$
<?php
// Set tracking option for the forum.
// Set tracking option for the forum.
require_once("../../config.php");
require_once("lib.php");
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.
$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');
}
$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 (! $course = $DB->get_record("course", array("id" => $forum->course))) {
print_error('invalidcourseid');
}
if (! $forum = $DB->get_record("forum", array("id" => $f))) {
print_error('invalidforumid', 'forum');
}
if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
print_error('invalidcoursemodule');
}
if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
print_error('invalidcourseid');
}
$user = $USER;
if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
print_error('invalidcoursemodule');
}
require_course_login($course, false, $cm);
$user = $USER;
if ($returnpage == 'index.php') {
$returnto = forum_go_back_to($returnpage.'?id='.$course->id);
} else {
$returnto = forum_go_back_to($returnpage.'?f='.$forum->id);
}
require_course_login($course, false, $cm);
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;
}
if ($returnpage == 'index.php') {
$returnto = forum_go_back_to($returnpage.'?id='.$course->id);
} else {
$returnto = forum_go_back_to($returnpage.'?f='.$forum->id);
}
$info = new object();
$info->name = fullname($user);
$info->forum = format_string($forum->name);
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;
}
if ($mark == 'read') {
if (!empty($d)) {
if (! $discussion = $DB->get_record('forum_discussions', array('id'=> $d, 'forum'=> $forum->id))) {
print_error('invaliddiscussionid', 'forum');
}
$info = new object();
$info->name = fullname($user);
$info->forum = format_string($forum->name);
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);
}
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);
}
}
/// FUTURE - Add ability to mark them as unread.
// } else { // subscribe
// if (forum_tp_start_tracking($forum->id, $user->id)) {
@@ -75,8 +84,8 @@
// } else {
// print_error("Could not start tracking that forum", $_SERVER["HTTP_REFERER"]);
// }
}
}
redirect($returnto);
redirect($returnto);
?>
?>
+758 -754
View File
File diff suppressed because it is too large Load Diff
+87 -85
View File
@@ -1,108 +1,110 @@
<?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');
$PAGE->set_url(new moodle_url($CFG->wwwroot.'/mod/forum/rate.php', array('forumid'=>$forumid)));
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');
}
if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
print_error('invalidcoursemodule');
} else {
$forum->cmidnumber = $cm->id; //MDL-12961
}
if (!$course = $DB->get_record('course', array('id' => $forum->course))) {
print_error('invalidcourseid');
}
require_login($course, false, $cm);
if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
print_error('invalidcoursemodule');
} else {
$forum->cmidnumber = $cm->id; //MDL-12961
if (isguestuser()) {
print_error('noguestrate', 'forum');
}
if (!$forum->assessed) {
print_error('norate', 'forum');
}
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
require_capability('mod/forum:rate', $context);
if ($data = data_submitted()) {
$discussionid = false;
/// Calculate scale values
$scale_values = make_grades_menu($forum->scale);
foreach ((array)$data as $postid => $rating) {
if (!is_numeric($postid)) {
continue;
}
require_login($course, false, $cm);
// 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 (isguestuser()) {
print_error('noguestrate', 'forum');
}
if (!$post = $DB->get_record_sql($sql, array($postid, $forum->id))) {
print_error('invalidpostid', 'forum', '', $postid);
}
if (!$forum->assessed) {
print_error('norate', 'forum');
}
$discussionid = $post->discussion;
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
require_capability('mod/forum:rate', $context);
if ($data = data_submitted()) {
$discussionid = false;
/// Calculate scale values
$scale_values = make_grades_menu($forum->scale);
foreach ((array)$data as $postid => $rating) {
if (!is_numeric($postid)) {
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;
}
// 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 (!$post = $DB->get_record_sql($sql, array($postid, $forum->id))) {
print_error('invalidpostid', 'forum', '', $postid);
}
$discussionid = $post->discussion;
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;
}
}
/// 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);
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'));
/// 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 {
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;
} else {
print_error('invalidaccess', 'forum');
$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 {
redirect("$CFG->wwwroot/mod/forum/discuss.php?d=$discussionid", get_string('ratingssaved', 'forum'));
}
} else {
print_error('invalidaccess', 'forum');
}
?>
+82 -80
View File
@@ -1,4 +1,4 @@
<?php // $Id$
<?php
///////////////////////////////////////////////////////////////////////////
// //
@@ -28,128 +28,130 @@
/// 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);
?>
?>
+86 -79
View File
@@ -1,87 +1,94 @@
<?php // $Id$
<?php
// For a given post, shows a report of all the ratings it has
require_once("../../config.php");
require_once("lib.php");
require_once("../../config.php");
require_once("lib.php");
$id = required_param('id', PARAM_INT);
$sort = optional_param('sort', '', PARAM_ALPHA);
$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');
$url = new moodle_url($CFG->wwwroot.'/mod/forum/report.php', array('id'=>$id));
if ($sort !== 0) {
$url->param('sort', $sort);
}
$PAGE->set_url($url);
if (! $post = $DB->get_record('forum_posts', array('id' => $id))) {
print_error('invalidpostid','forum');
}
if (! $discussion = $DB->get_record('forum_discussions', array('id' => $post->discussion))) {
print_error('invaliddiscussion', 'forum');
}
if (! $forum = $DB->get_record('forum', array('id' => $discussion->forum))) {
print_error('invalidforumid', 'forum');
}
if (! $course = $DB->get_record('course', array('id' => $forum->course))) {
print_error('invalidcourseid');
}
if (! $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) {
print_error('invalidcoursemodule');
}
require_login($course, false, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
if (!$forum->assessed) {
print_error('norate', 'forum');
}
if (!has_capability('mod/forum:viewrating', $context)) {
print_error('noviewrate', 'forum');
}
if (!has_capability('mod/forum:viewanyrating', $context) and $USER->id != $post->userid) {
print_error('noviewanyrate', 'forum');
}
switch ($sort) {
case 'firstname': $sqlsort = "u.firstname ASC"; break;
case 'rating': $sqlsort = "r.rating ASC"; break;
default: $sqlsort = "r.time ASC";
}
$scalemenu = make_grades_menu($forum->scale);
$strratings = get_string('ratings', 'forum');
$strrating = get_string('rating', 'forum');
$strname = get_string('name');
$strtime = get_string('time');
$PAGE->set_title("$strratings: ".format_string($post->subject));
echo $OUTPUT->header();
if (!$ratings = forum_get_ratings($post->id, $sqlsort)) {
print_error('noresult', 'forum', '', format_string($post->subject));
} else {
echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"3\" class=\"generalbox\" style=\"width:100%\">";
echo "<tr>";
echo "<th class=\"header\" scope=\"col\">&nbsp;</th>";
echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&amp;sort=firstname\">$strname</a></th>";
echo "<th class=\"header\" scope=\"col\" style=\"width:100%\"><a href=\"report.php?id=$post->id&amp;sort=rating\">$strrating</a></th>";
echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&amp;sort=time\">$strtime</a></th>";
echo "</tr>";
foreach ($ratings as $rating) {
echo '<tr class="forumpostheader">';
echo "<td>";
echo $OUTPUT->user_picture(moodle_user_picture::make($rating, $forum->course));
echo '</td><td>'.fullname($rating).'</td>';
echo '<td style="white-space:nowrap" align="center" class="rating">'.$scalemenu[$rating->rating]."</td>";
echo '<td style="white-space:nowrap" align="center" class="time">'.userdate($rating->time)."</td>";
echo "</tr>\n";
}
echo "</table>";
echo "<br />";
}
if (! $discussion = $DB->get_record('forum_discussions', array('id' => $post->discussion))) {
print_error('invaliddiscussion', 'forum');
}
echo $OUTPUT->close_window_button();
echo $OUTPUT->footer();
if (! $forum = $DB->get_record('forum', array('id' => $discussion->forum))) {
print_error('invalidforumid', 'forum');
}
if (! $course = $DB->get_record('course', array('id' => $forum->course))) {
print_error('invalidcourseid');
}
if (! $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) {
print_error('invalidcoursemodule');
}
require_login($course, false, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
if (!$forum->assessed) {
print_error('norate', 'forum');
}
if (!has_capability('mod/forum:viewrating', $context)) {
print_error('noviewrate', 'forum');
}
if (!has_capability('mod/forum:viewanyrating', $context) and $USER->id != $post->userid) {
print_error('noviewanyrate', 'forum');
}
switch ($sort) {
case 'firstname': $sqlsort = "u.firstname ASC"; break;
case 'rating': $sqlsort = "r.rating ASC"; break;
default: $sqlsort = "r.time ASC";
}
$scalemenu = make_grades_menu($forum->scale);
$strratings = get_string('ratings', 'forum');
$strrating = get_string('rating', 'forum');
$strname = get_string('name');
$strtime = get_string('time');
$PAGE->set_title("$strratings: ".format_string($post->subject));
echo $OUTPUT->header();
if (!$ratings = forum_get_ratings($post->id, $sqlsort)) {
print_error('noresult', 'forum', '', format_string($post->subject));
} else {
echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"3\" class=\"generalbox\" style=\"width:100%\">";
echo "<tr>";
echo "<th class=\"header\" scope=\"col\">&nbsp;</th>";
echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&amp;sort=firstname\">$strname</a></th>";
echo "<th class=\"header\" scope=\"col\" style=\"width:100%\"><a href=\"report.php?id=$post->id&amp;sort=rating\">$strrating</a></th>";
echo "<th class=\"header\" scope=\"col\"><a href=\"report.php?id=$post->id&amp;sort=time\">$strtime</a></th>";
echo "</tr>";
foreach ($ratings as $rating) {
echo '<tr class="forumpostheader">';
echo "<td>";
echo $OUTPUT->user_picture(moodle_user_picture::make($rating, $forum->course));
echo '</td><td>'.fullname($rating).'</td>';
echo '<td style="white-space:nowrap" align="center" class="rating">'.$scalemenu[$rating->rating]."</td>";
echo '<td style="white-space:nowrap" align="center" class="time">'.userdate($rating->time)."</td>";
echo "</tr>\n";
}
echo "</table>";
echo "<br />";
}
echo $OUTPUT->close_window_button();
echo $OUTPUT->footer();
?>
?>
+218 -218
View File
@@ -1,242 +1,242 @@
<?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); // 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
$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
$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
$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;
}
$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
if (!empty($userid)) {
$search .= ' userid:'.$userid;
}
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($forumid)) {
$search .= ' forumid:'.$forumid;
}
if ($search) {
$search = forum_clean_search_terms($search);
if (!empty($user)) {
$search .= ' '.forum_clean_search_terms($user, 'user:');
}
if (!$course = $DB->get_record('course', array('id'=>$id))) {
print_error('invalidcourseid');
if (!empty($subject)) {
$search .= ' '.forum_clean_search_terms($subject, 'subject:');
}
require_course_login($course);
add_to_log($course->id, "forum", "search", "search.php?id=$course->id&amp;search=".urlencode($search), $search);
$strforums = get_string("modulenameplural", "forum");
$strsearch = get_string("search", "forum");
$strsearchresults = get_string("searchresults", "forum");
$strpage = get_string("page");
if (!$search || $showform) {
$PAGE->navbar->add($strforums, new moodle_url($CFG->wwwroot.'/mod/forum/index.php', array('id'=>$course->id)));
$PAGE->navbar->add($strsearch);
$PAGE->set_title($strsearch);
$PAGE->set_focuscontrol('search.words');
echo $OUTPUT->header();
forum_print_big_search_form($course);
echo $OUTPUT->footer();
exit;
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 ($search) {
$search = forum_clean_search_terms($search);
}
if (!$course = $DB->get_record('course', array('id'=>$id))) {
print_error('invalidcourseid');
}
require_course_login($course);
add_to_log($course->id, "forum", "search", "search.php?id=$course->id&amp;search=".urlencode($search), $search);
$strforums = get_string("modulenameplural", "forum");
$strsearch = get_string("search", "forum");
$strsearchresults = get_string("searchresults", "forum");
$strpage = get_string("page");
if (!$search || $showform) {
$PAGE->navbar->add($strforums, new moodle_url($CFG->wwwroot.'/mod/forum/index.php', array('id'=>$course->id)));
$PAGE->navbar->add($strsearch);
$PAGE->set_title($strsearch);
$PAGE->set_focuscontrol('search.words');
echo $OUTPUT->header();
forum_print_big_search_form($course);
echo $OUTPUT->footer();
exit;
}
/// We need to do a search now and print results
$searchterms = str_replace('forumid:', 'instance:', $search);
$searchterms = explode(' ', $searchterms);
$searchterms = str_replace('forumid:', 'instance:', $search);
$searchterms = explode(' ', $searchterms);
$searchform = forum_search_form($course, $search);
$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));
if (!$individualparams) {
$words = $search;
}
forum_print_big_search_form($course);
echo $OUTPUT->footer();
exit;
}
$searchform = forum_search_form($course, $search);
$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_button($searchform);
$PAGE->set_focuscontrol('search.words');
echo $OUTPUT->header();
echo '<div class="reportlink">';
echo '<a href="search.php?id='.$course->id.
'&amp;user='.urlencode($user).
'&amp;userid='.$userid.
'&amp;forumid='.$forumid.
'&amp;subject='.urlencode($subject).
'&amp;phrase='.urlencode($phrase).
'&amp;words='.urlencode($words).
'&amp;fullwords='.urlencode($fullwords).
'&amp;notwords='.urlencode($notwords).
'&amp;dateto='.$dateto.
'&amp;datefrom='.$datefrom.
'&amp;showform=1'.
'">'.get_string('advancedsearch','forum').'...</a>';
echo '</div>';
echo $OUTPUT->heading(get_string("nopostscontaining", "forum", $search));
echo $OUTPUT->heading("$strsearchresults: $totalcount");
$url = new moodle_url('search.php', array('search' => urlencode($search), 'id' => $course->id, 'perpage' => $perpage));
echo $OUTPUT->paging_bar(moodle_paging_bar::make($totalcount, $page, $perpage, $url));
//added to implement highlighting of search terms found only in HTML markup
//fiedorow - 9/2/2005
$strippedsearch = str_replace('user:','',$search);
$strippedsearch = str_replace('subject:','',$strippedsearch);
$strippedsearch = str_replace('&quot;','',$strippedsearch);
$searchterms = explode(' ', $strippedsearch); // Search for words independently
foreach ($searchterms as $key => $searchterm) {
if (preg_match('/^\-/',$searchterm)) {
unset($searchterms[$key]);
} else {
$searchterms[$key] = preg_replace('/^\+/','',$searchterm);
}
}
$strippedsearch = implode(' ', $searchterms); // Rebuild the string
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');
}
if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
print_error('invalidcoursemodule');
}
$post->subject = highlight($strippedsearch, $post->subject);
$discussion->name = highlight($strippedsearch, $discussion->name);
$fullsubject = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
if ($forum->type != 'single') {
$fullsubject .= " -> <a href=\"discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a>";
if ($post->parent != 0) {
$fullsubject .= " -> <a href=\"discuss.php?d=$post->discussion&amp;parent=$post->id\">".format_string($post->subject,true)."</a>";
}
}
$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 = "";
$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";
}
}
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>";
// Now pring the post.
forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false, false,
$fulllink, $strippedsearch, -99, false);
if (!$individualparams) {
$words = $search;
}
echo $OUTPUT->paging_bar(moodle_paging_bar::make($totalcount, $page, $perpage, $url));
forum_print_big_search_form($course);
echo $OUTPUT->footer();
exit;
}
$PAGE->set_title($strsearchresults);
$PAGE->set_button($searchform);
echo $OUTPUT->header();
echo '<div class="reportlink">';
echo '<a href="search.php?id='.$course->id.
'&amp;user='.urlencode($user).
'&amp;userid='.$userid.
'&amp;forumid='.$forumid.
'&amp;subject='.urlencode($subject).
'&amp;phrase='.urlencode($phrase).
'&amp;words='.urlencode($words).
'&amp;fullwords='.urlencode($fullwords).
'&amp;notwords='.urlencode($notwords).
'&amp;dateto='.$dateto.
'&amp;datefrom='.$datefrom.
'&amp;showform=1'.
'">'.get_string('advancedsearch','forum').'...</a>';
echo '</div>';
echo $OUTPUT->heading("$strsearchresults: $totalcount");
$url = new moodle_url('search.php', array('search' => urlencode($search), 'id' => $course->id, 'perpage' => $perpage));
echo $OUTPUT->paging_bar(moodle_paging_bar::make($totalcount, $page, $perpage, $url));
//added to implement highlighting of search terms found only in HTML markup
//fiedorow - 9/2/2005
$strippedsearch = str_replace('user:','',$search);
$strippedsearch = str_replace('subject:','',$strippedsearch);
$strippedsearch = str_replace('&quot;','',$strippedsearch);
$searchterms = explode(' ', $strippedsearch); // Search for words independently
foreach ($searchterms as $key => $searchterm) {
if (preg_match('/^\-/',$searchterm)) {
unset($searchterms[$key]);
} else {
$searchterms[$key] = preg_replace('/^\+/','',$searchterm);
}
}
$strippedsearch = implode(' ', $searchterms); // Rebuild the string
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');
}
if (!$cm = get_coursemodule_from_instance('forum', $forum->id)) {
print_error('invalidcoursemodule');
}
$post->subject = highlight($strippedsearch, $post->subject);
$discussion->name = highlight($strippedsearch, $discussion->name);
$fullsubject = "<a href=\"view.php?f=$forum->id\">".format_string($forum->name,true)."</a>";
if ($forum->type != 'single') {
$fullsubject .= " -> <a href=\"discuss.php?d=$discussion->id\">".format_string($discussion->name,true)."</a>";
if ($post->parent != 0) {
$fullsubject .= " -> <a href=\"discuss.php?d=$post->discussion&amp;parent=$post->id\">".format_string($post->subject,true)."</a>";
}
}
$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 = "";
$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";
}
}
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>";
// 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->footer();
@@ -406,4 +406,4 @@ function forum_menu_list($course) {
return $menu;
}
?>
?>
+46 -40
View File
@@ -2,50 +2,56 @@
// Set tracking option for the forum.
require_once("../../config.php");
require_once("lib.php");
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.
$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');
$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"]);
}
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"]);
}
} 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"]);
}
}
?>
+94 -82
View File
@@ -1,103 +1,115 @@
<?php // $Id$
<?php
// Subscribe to or unsubscribe from a forum.
require_once("../../config.php");
require_once("lib.php");
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);
$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');
$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');
}
} else {
$user = $USER;
}
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 (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');
}
} else {
$user = $USER;
}
require_login($course->id, false, $cm);
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 (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;
}
require_login($course->id, false, $cm);
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;
}
$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);
}
}
$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);
}
}
$info->name = fullname($user);
$info->forum = format_string($forum->name);
if (forum_is_forcesubscribed($forum)) {
redirect($returnto, get_string("everyoneisnowsubscribed", "forum"), 1);
}
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"]);
}
$info->name = fullname($user);
$info->forum = format_string($forum->name);
} 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_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"]);
}
}
?>
+124 -115
View File
@@ -1,155 +1,164 @@
<?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 (! $forum = $DB->get_record('forum', array('id'=>$id))) {
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)) {
$cm->id = 0;
}
require_login($course->id, false, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
if (!has_capability('mod/forum:viewsubscribers', $context)) {
print_error('nopermissiontosubscribe', 'forum');
}
unset($SESSION->fromdiscussion);
add_to_log($course->id, "forum", "view subscribers", "subscribers.php?id=$forum->id", $forum->id, $cm->id);
$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;
}
if (! $course = $DB->get_record('course', array('id'=>$forum->course))) {
print_error('invalidcourseid');
}
if (! $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) {
$cm->id = 0;
}
require_login($course->id, false, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
if (!has_capability('mod/forum:viewsubscribers', $context)) {
print_error('nopermissiontosubscribe', 'forum');
}
unset($SESSION->fromdiscussion);
add_to_log($course->id, "forum", "view subscribers", "subscribers.php?id=$forum->id", $forum->id, $cm->id);
$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;
}
} else {
unset($USER->subscriptionsediting);
}
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);
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
if (empty($USER->subscriptionsediting)) { /// Display an overview of subscribers
if (! $users = forum_subscribed_users($course, $forum, $currentgroup, $context) ) {
if (! $users = forum_subscribed_users($course, $forum, $currentgroup, $context) ) {
echo $OUTPUT->heading(get_string("nosubscribers", "forum"));
echo $OUTPUT->heading(get_string("nosubscribers", "forum"));
} else {
} else {
echo $OUTPUT->heading(get_string("subscribersto","forum", "'".format_string($forum->name)."'"));
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 "</table>";
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->showall)) {
$searchtext = '';
}
} 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 = '';
}
}
/// 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();
?>
?>
+3 -1
View File
@@ -1,10 +1,12 @@
<?php //$Id$
<?php
require_once("../../config.php");
require_once("lib.php");
$confirm = optional_param('confirm', false, PARAM_BOOL);
$PAGE->set_url(new moodle_url($CFG->wwwroot.'/mod/forum/unsubscribeall.php'));
require_login();
$return = $CFG->wwwroot.'/';
+17 -2
View File
@@ -1,4 +1,4 @@
<?php // $Id$
<?php
// Display user activity reports for a course
@@ -13,6 +13,21 @@ $mode = optional_param('mode', 'posts', PARAM_ALPHA);
$page = optional_param('page', 0, PARAM_INT);
$perpage = optional_param('perpage', 5, PARAM_INT);
$url = new moodle_url($CFG->wwwroot.'/mod/forum/user.php', array('course'=>$course));
if ($id !== 0) {
$url->param('id', $id);
}
if ($mode !== 'posts') {
$url->param('mode', $mode);
}
if ($page !== 0) {
$url->param('page', $page);
}
if ($perpage !== 5) {
$url->param('perpage', $perpage);
}
$PAGE->set_url($url);
if (empty($id)) { // See your own profile by default
require_login();
$id = $USER->id;
@@ -176,4 +191,4 @@ if ($posts = forum_search_posts($searchterms, $searchcourse, $page*$perpage, $pe
echo '</div>';
echo $OUTPUT->footer();
?>
?>