. /** * Set tracking option for the forum. * * @package mod_forum * @copyright 2005 mchurch * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once("../../config.php"); require_once("lib.php"); $f = required_param('f',PARAM_INT); // The forum to mark $mark = required_param('mark',PARAM_ALPHA); // Read or unread? $d = optional_param('d',0,PARAM_INT); // Discussion to mark. $returnpage = optional_param('returnpage', 'index.php', PARAM_FILE); // Page to return to. $url = new moodle_url('/mod/forum/markposts.php', array('f'=>$f, 'mark'=>$mark)); if ($d !== 0) { $url->param('d', $d); } if ($returnpage !== 'index.php') { $url->param('returnpage', $returnpage); } $PAGE->set_url($url); if (! $forum = $DB->get_record("forum", array("id" => $f))) { print_error('invalidforumid', 'forum'); } if (! $course = $DB->get_record("course", array("id" => $forum->course))) { print_error('invalidcourseid'); } if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) { print_error('invalidcoursemodule'); } $user = $USER; require_login($course, false, $cm); if ($returnpage == 'index.php') { $returnto = forum_go_back_to($returnpage.'?id='.$course->id); } else { $returnto = forum_go_back_to($returnpage.'?f='.$forum->id); } if (isguestuser()) { // 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').'

'.get_string('liketologin'), get_login_url(), $returnto); echo $OUTPUT->footer(); exit; } $info = new stdClass(); $info->name = fullname($user); $info->forum = format_string($forum->name); if ($mark == 'read') { if (!empty($d)) { if (! $discussion = $DB->get_record('forum_discussions', array('id'=> $d, 'forum'=> $forum->id))) { print_error('invaliddiscussionid', 'forum'); } forum_tp_mark_discussion_read($user, $d); } 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; } forum_tp_mark_forum_read($user, $forum->id, $currentgroup); } /// FUTURE - Add ability to mark them as unread. // } else { // subscribe // if (forum_tp_start_tracking($forum->id, $user->id)) { // redirect($returnto, get_string("nowtracking", "forum", $info), 1); // } else { // print_error("Could not start tracking that forum", $_SERVER["HTTP_REFERER"]); // } } redirect($returnto);