Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/mod/forum/view.php
Go to the documentation of this file.
00001 <?php
00002 
00003 // This file is part of Moodle - http://moodle.org/
00004 //
00005 // Moodle is free software: you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation, either version 3 of the License, or
00008 // (at your option) any later version.
00009 //
00010 // Moodle is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 // GNU General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License
00016 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
00017 
00024     require_once('../../config.php');
00025     require_once('lib.php');
00026     require_once($CFG->libdir.'/completionlib.php');
00027 
00028     $id          = optional_param('id', 0, PARAM_INT);       // Course Module ID
00029     $f           = optional_param('f', 0, PARAM_INT);        // Forum ID
00030     $mode        = optional_param('mode', 0, PARAM_INT);     // Display mode (for single forum)
00031     $showall     = optional_param('showall', '', PARAM_INT); // show all discussions on one page
00032     $changegroup = optional_param('group', -1, PARAM_INT);   // choose the current group
00033     $page        = optional_param('page', 0, PARAM_INT);     // which page to show
00034     $search      = optional_param('search', '', PARAM_CLEAN);// search string
00035 
00036     $params = array();
00037     if ($id) {
00038         $params['id'] = $id;
00039     } else {
00040         $params['f'] = $f;
00041     }
00042     if ($page) {
00043         $params['page'] = $page;
00044     }
00045     if ($search) {
00046         $params['search'] = $search;
00047     }
00048     $PAGE->set_url('/mod/forum/view.php', $params);
00049 
00050     if ($id) {
00051         if (! $cm = get_coursemodule_from_id('forum', $id)) {
00052             print_error('invalidcoursemodule');
00053         }
00054         if (! $course = $DB->get_record("course", array("id" => $cm->course))) {
00055             print_error('coursemisconf');
00056         }
00057         if (! $forum = $DB->get_record("forum", array("id" => $cm->instance))) {
00058             print_error('invalidforumid', 'forum');
00059         }
00060         if ($forum->type == 'single') {
00061             $PAGE->set_pagetype('mod-forum-discuss');
00062         }
00063         // move require_course_login here to use forced language for course
00064         // fix for MDL-6926
00065         require_course_login($course, true, $cm);
00066         $strforums = get_string("modulenameplural", "forum");
00067         $strforum = get_string("modulename", "forum");
00068     } else if ($f) {
00069 
00070         if (! $forum = $DB->get_record("forum", array("id" => $f))) {
00071             print_error('invalidforumid', 'forum');
00072         }
00073         if (! $course = $DB->get_record("course", array("id" => $forum->course))) {
00074             print_error('coursemisconf');
00075         }
00076 
00077         if (!$cm = get_coursemodule_from_instance("forum", $forum->id, $course->id)) {
00078             print_error('missingparameter');
00079         }
00080         // move require_course_login here to use forced language for course
00081         // fix for MDL-6926
00082         require_course_login($course, true, $cm);
00083         $strforums = get_string("modulenameplural", "forum");
00084         $strforum = get_string("modulename", "forum");
00085     } else {
00086         print_error('missingparameter');
00087     }
00088 
00089     if (!$PAGE->button) {
00090         $PAGE->set_button(forum_search_form($course, $search));
00091     }
00092 
00093     $context = get_context_instance(CONTEXT_MODULE, $cm->id);
00094     $PAGE->set_context($context);
00095 
00096     if (!empty($CFG->enablerssfeeds) && !empty($CFG->forum_enablerssfeeds) && $forum->rsstype && $forum->rssarticles) {
00097         require_once("$CFG->libdir/rsslib.php");
00098 
00099         $rsstitle = format_string($course->shortname, true, array('context' => get_context_instance(CONTEXT_COURSE, $course->id))) . ': %fullname%';
00100         rss_add_http_header($context, 'mod_forum', $forum, $rsstitle);
00101     }
00102 
00103     // Mark viewed if required
00104     $completion = new completion_info($course);
00105     $completion->set_module_viewed($cm);
00106 
00108 
00109     $PAGE->set_title(format_string($forum->name));
00110     $PAGE->add_body_class('forumtype-'.$forum->type);
00111     $PAGE->set_heading(format_string($course->fullname));
00112 
00113     echo $OUTPUT->header();
00114 
00116     if (empty($cm->visible) and !has_capability('moodle/course:viewhiddenactivities', $context)) {
00117         notice(get_string("activityiscurrentlyhidden"));
00118     }
00119 
00120     if (!has_capability('mod/forum:viewdiscussion', $context)) {
00121         notice(get_string('noviewdiscussionspermission', 'forum'));
00122     }
00123 
00125     groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/forum/view.php?id=' . $cm->id);
00126     $currentgroup = groups_get_activity_group($cm);
00127     $groupmode = groups_get_activity_groupmode($cm);
00128 
00130     if ($cm->id) {
00131         add_to_log($course->id, "forum", "view forum", "view.php?id=$cm->id", "$forum->id", $cm->id);
00132     } else {
00133         add_to_log($course->id, "forum", "view forum", "view.php?f=$forum->id", "$forum->id");
00134     }
00135 
00136     $SESSION->fromdiscussion = $FULLME;   // Return here if we post or set subscription etc
00137 
00138 
00140 
00141     // If it's a simple single discussion forum, we need to print the display
00142     // mode control.
00143     if ($forum->type == 'single') {
00144         $discussion = NULL;
00145         $discussions = $DB->get_records('forum_discussions', array('forum'=>$forum->id), 'timemodified ASC');
00146         if (!empty($discussions)) {
00147             $discussion = array_pop($discussions);
00148         }
00149         if ($discussion) {
00150             if ($mode) {
00151                 set_user_preference("forum_displaymode", $mode);
00152             }
00153             $displaymode = get_user_preferences("forum_displaymode", $CFG->forum_displaymode);
00154             forum_print_mode_form($forum->id, $displaymode, $forum->type);
00155         }
00156     }
00157 
00158     if (!empty($forum->blockafter) && !empty($forum->blockperiod)) {
00159         $a->blockafter = $forum->blockafter;
00160         $a->blockperiod = get_string('secondstotime'.$forum->blockperiod);
00161         echo $OUTPUT->notification(get_string('thisforumisthrottled','forum',$a));
00162     }
00163 
00164     if ($forum->type == 'qanda' && !has_capability('moodle/course:manageactivities', $context)) {
00165         echo $OUTPUT->notification(get_string('qandanotify','forum'));
00166     }
00167 
00168     switch ($forum->type) {
00169         case 'single':
00170             if (!empty($discussions) && count($discussions) > 1) {
00171                 echo $OUTPUT->notification(get_string('warnformorepost', 'forum'));
00172             }
00173             if (! $post = forum_get_post_full($discussion->firstpost)) {
00174                 print_error('cannotfindfirstpost', 'forum');
00175             }
00176             if ($mode) {
00177                 set_user_preference("forum_displaymode", $mode);
00178             }
00179 
00180             $canreply    = forum_user_can_post($forum, $discussion, $USER, $cm, $course, $context);
00181             $canrate     = has_capability('mod/forum:rate', $context);
00182             $displaymode = get_user_preferences("forum_displaymode", $CFG->forum_displaymode);
00183 
00184             echo '&nbsp;'; // this should fix the floating in FF
00185             forum_print_discussion($course, $cm, $forum, $discussion, $post, $displaymode, $canreply, $canrate);
00186             break;
00187 
00188         case 'eachuser':
00189             if (!empty($forum->intro)) {
00190                 echo $OUTPUT->box(format_module_intro('forum', $forum, $cm->id), 'generalbox', 'intro');
00191             }
00192             echo '<p class="mdl-align">';
00193             if (forum_user_can_post_discussion($forum, null, -1, $cm)) {
00194                 print_string("allowsdiscussions", "forum");
00195             } else {
00196                 echo '&nbsp;';
00197             }
00198             echo '</p>';
00199             if (!empty($showall)) {
00200                 forum_print_latest_discussions($course, $forum, 0, 'header', '', -1, -1, -1, 0, $cm);
00201             } else {
00202                 forum_print_latest_discussions($course, $forum, -1, 'header', '', -1, -1, $page, $CFG->forum_manydiscussions, $cm);
00203             }
00204             break;
00205 
00206         case 'teacher':
00207             if (!empty($showall)) {
00208                 forum_print_latest_discussions($course, $forum, 0, 'header', '', -1, -1, -1, 0, $cm);
00209             } else {
00210                 forum_print_latest_discussions($course, $forum, -1, 'header', '', -1, -1, $page, $CFG->forum_manydiscussions, $cm);
00211             }
00212             break;
00213 
00214         case 'blog':
00215             if (!empty($forum->intro)) {
00216                 echo $OUTPUT->box(format_module_intro('forum', $forum, $cm->id), 'generalbox', 'intro');
00217             }
00218             echo '<br />';
00219             if (!empty($showall)) {
00220                 forum_print_latest_discussions($course, $forum, 0, 'plain', '', -1, -1, -1, 0, $cm);
00221             } else {
00222                 forum_print_latest_discussions($course, $forum, -1, 'plain', '', -1, -1, $page, $CFG->forum_manydiscussions, $cm);
00223             }
00224             break;
00225 
00226         default:
00227             if (!empty($forum->intro)) {
00228                 echo $OUTPUT->box(format_module_intro('forum', $forum, $cm->id), 'generalbox', 'intro');
00229             }
00230             echo '<br />';
00231             if (!empty($showall)) {
00232                 forum_print_latest_discussions($course, $forum, 0, 'header', '', -1, -1, -1, 0, $cm);
00233             } else {
00234                 forum_print_latest_discussions($course, $forum, -1, 'header', '', -1, -1, $page, $CFG->forum_manydiscussions, $cm);
00235             }
00236 
00237 
00238             break;
00239     }
00240 
00241     echo $OUTPUT->footer($course);
00242 
00243 
 All Data Structures Namespaces Files Functions Variables Enumerations