mod-forum MDL-19808 Added set_url calls, replaced deprecated functions
This commit is contained in:
+314
-308
@@ -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.'&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[] = ' ';
|
||||
}
|
||||
}
|
||||
|
||||
$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.'&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.'&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');
|
||||
}
|
||||
|
||||
$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.'&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();
|
||||
|
||||
?>
|
||||
?>
|
||||
+66
-57
@@ -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
File diff suppressed because it is too large
Load Diff
+87
-85
@@ -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
@@ -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
@@ -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\"> </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 />";
|
||||
}
|
||||
|
||||
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\"> </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();
|
||||
?>
|
||||
?>
|
||||
+218
-218
@@ -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&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&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.
|
||||
'&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(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('"','',$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&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.
|
||||
'&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
|
||||
|
||||
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&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
@@ -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
@@ -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
@@ -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();
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -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
@@ -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();
|
||||
|
||||
?>
|
||||
?>
|
||||
Reference in New Issue
Block a user