From: tjhunt Date: Wed, 6 May 2009 08:29:22 +0000 (+0000) Subject: moodle_page: MDL-12212 start of new moodle_page class X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=c13a5e71cc9d92681d1f52b821eab585d09c274d;p=moodle.git moodle_page: MDL-12212 start of new moodle_page class * has course and status fields * $PAGE->status updated by print_header and footer * $PAGE->set_course now replace course_setup function * global $PAGE created in setup.php * unit tests for functionality so far * Moodle still seems to work after this commit! --- diff --git a/course/user.php b/course/user.php index d090d99ba8..f4efe00c3d 100644 --- a/course/user.php +++ b/course/user.php @@ -26,7 +26,7 @@ require_login(); if (has_capability('moodle/user:viewuseractivitiesreport', $personalcontext) and !has_capability('moodle/course:view', $coursecontext)) { // do not require parents to be enrolled in courses ;-) - course_setup($course); + $PAGE->set_course($course); } else { require_login($course); } diff --git a/lib/adminlib.php b/lib/adminlib.php index b059168385..0c830faaf9 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -4152,7 +4152,7 @@ function admin_apply_default_settings($node=NULL, $unconditional=true) { * @return int number of changed settings */ function admin_write_settings($formdata) { - global $CFG, $SITE, $COURSE, $DB; + global $CFG, $SITE, $PAGE, $DB; $olddbsessions = !empty($CFG->dbsessions); $formdata = (array)$formdata; @@ -4193,7 +4193,7 @@ function admin_write_settings($formdata) { // now update $SITE - it might have been changed $SITE = $DB->get_record('course', array('id'=>$SITE->id)); - course_setup($SITE); + $PAGE->set_course($SITE); // now reload all settings - some of them might depend on the changed admin_get_root(true); diff --git a/lib/moodlelib.php b/lib/moodlelib.php index eeacb62ad2..7b79909581 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -1864,37 +1864,6 @@ function dayofweek($day, $month, $year) { /// USER AUTHENTICATION AND LOGIN //////////////////////////////////////// -/** - * Setup all global $CFG course variables, set locale and also themes - * This function can be used on pages that do not require login instead of require_login() - * - * @param mixed $courseorid id of the course or course object - */ -function course_setup($courseorid=0) { - global $COURSE, $SITE, $DB; - -/// Redefine global $COURSE if needed - if (empty($courseorid)) { - // no change in global $COURSE - for backwards compatibiltiy - // if require_rogin() used after require_login($courseid); - } else if (is_object($courseorid)) { - $COURSE = clone($courseorid); - } else { - if ($courseorid == SITEID) { - $COURSE = clone($SITE); - } else { - if (!$COURSE = $DB->get_record('course', array('id'=>$courseorid))) { - print_error('invalidcourseid'); - } - } - } - -/// set locale and themes - moodle_setlocale(); - theme_setup(); - -} - /** * Returns full login url. * @@ -1945,10 +1914,22 @@ function get_login_url($loginguest=false) { * in order to keep redirects working properly. MDL-14495 */ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsurltome=true) { - global $CFG, $SESSION, $USER, $COURSE, $FULLME; + global $CFG, $SESSION, $USER, $COURSE, $FULLME, $PAGE, $DB; /// setup global $COURSE, themes, language and locale - course_setup($courseorid); + if (!empty($courseorid)) { + if (is_object($courseorid)) { + $course = $courseorid; + } else if ($courseorid == SITEID) { + $course = clone($SITE); + } else { + $course = $DB->get_record('course', array('id' => $courseorid)); + if (!$course) { + throw new moodle_exception('invalidcourseid'); + } + } + $PAGE->set_course($course); + } /// If the user is not even logged in yet then make sure they are if (!isloggedin()) { diff --git a/lib/pagelib.php b/lib/pagelib.php index 224c047f91..6e4ef01e03 100644 --- a/lib/pagelib.php +++ b/lib/pagelib.php @@ -32,6 +32,118 @@ * @package pages */ +/** + * $PAGE is a central store of information about the current page we are + * generating in response to the user's request. It does not do very much itself + * except keep track of information, however, it serves as the access point to + * some more significant components like $PAGE->theme, $PAGE->requires, + * $PAGE->blocks, etc. + */ +class moodle_page { + /**#@+ Tracks the where we are in the generation of the page. */ + const STATE_BEFORE_HEADER = 0; + const STATE_PRINTING_HEADER = 1; + const STATE_IN_BODY = 2; + const STATE_PRINTING_FOOTER = 3; + const STATE_DONE = 4; + /**#@-*/ + + protected $_state = self::STATE_BEFORE_HEADER; + + protected $_course = null; + + /** + * @return integer one of the STATE_... constants. You should not normally need + * to use this in your code. It is indended for internal use by this class + * and its friends like print_header, to check that everything is working as + * expected. Also accessible as $PAGE->state. + */ + public function get_state() { + return $this->_state; + } + + /** + * @return boolean has the header already been printed? Also accessible as + * $PAGE->headerprinted. + */ + public function get_headerprinted() { + return $this->_state >= self::STATE_IN_BODY; + } + + /** + * @return object the current course that we are inside - a row from the + * course table. (Also available as $COURSE global.) If we are not inside + * an actual course, this will be the site course. You can also access this + * as $PAGE->course. + */ + public function get_course() { + global $SITE; + if (is_null($this->_course)) { + return $SITE; + } + return $this->_course; + } + + /** + * Set the state. The state must be one of that STATE_... constants, and + * the state is only allowed to advance one step at a time. + * @param integer $state the new state. + */ + public function set_state($state) { + if ($state != $this->_state + 1 || $state > self::STATE_DONE) { + throw new coding_exception('Invalid state passed to moodle_page::set_state. We are in state ' . + $this->_state . ' and state ' . $state . ' was requestsed.'); + } + + if ($state == self::STATE_PRINTING_HEADER && !$this->_course) { + global $SITE; + $this->set_course($SITE); + } + + $this->_state = $state; + } + + /** + * Set the current course. This sets both $PAGE->course and $COURSE. It also + * sets the right theme and locale. + * + * Normally you don't need to call this function yourself, require_login will + * call it for you if you pass a $course to it. You can use this function + * on pages that do need to call require_login(). + * + * @param object the course to set as the global course. + */ + public function set_course($course) { + global $COURSE, $SITE; + + if (empty($course->id)) { + throw new coding_exception('$course passed to moodle_page::set_course does not look like a proper course object.'); + } + + if ($this->_state > self::STATE_BEFORE_HEADER) { + throw new coding_exception('Cannot call moodle_page::set_course after output has been started.'); + } + + $this->_course = clone($course); + $COURSE = $this->_course; + + moodle_setlocale(); + theme_setup(); + } + + /** + * PHP overloading magic to make the $PAGE->course syntax work. + */ + public function __get($field) { + $getmethod = 'get_' . $field; + if (method_exists($this, $getmethod)) { + return $this->$getmethod(); + } else { + throw new coding_exception('Unknown field ' . $field . ' of $PAGE.'); + } + } +} + /** * @deprecated since Moodle 2.0 * Load any page_base subclasses from the pagelib.php library in a particular folder. @@ -58,7 +170,7 @@ function page_create_instance($instance) { * its numeric ID. Returns a fully constructed page_base subclass you can work with. */ function page_create_object($type, $id = NULL) { - global $CFG; + global $CFG, $PAGE; $data = new stdClass; $data->pagetype = $type; @@ -75,6 +187,7 @@ function page_create_object($type, $id = NULL) { } $object->init_quick($data); + $object->set_course($PAGE->course); return $object; } @@ -115,7 +228,7 @@ function page_map_class($type, $classname = NULL) { * @package pages * @todo This parent class is very messy still. Please for the moment ignore it and move on to the derived class page_course to see the comments there. */ -class page_base { +class page_base extends moodle_page { /** * The string identifier for the type of page being described. * @var string $type diff --git a/lib/sessionlib.php b/lib/sessionlib.php index d7bb00b1d0..9eadb84f1b 100644 --- a/lib/sessionlib.php +++ b/lib/sessionlib.php @@ -852,7 +852,7 @@ function session_unloginas() { * @return void */ function cron_setup_user($user=null, $course=null) { - global $CFG, $SITE; + global $CFG, $SITE, $PAGE; static $cronuser = null; static $cronsession = null; @@ -882,9 +882,9 @@ function cron_setup_user($user=null, $course=null) { } if ($course) { - course_setup($course); + $PAGE->set_course($course); } else { - course_setup($SITE); + $PAGE->set_course($SITE); } // TODO: it should be possible to improve perf by caching some limited number of users here ;-) diff --git a/lib/setup.php b/lib/setup.php index 8145664398..5f0c5a4511 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -57,6 +57,14 @@ global $SESSION; */ global $USER; +/** + * A central store of information about the current page we are + * generating in response to the user's request. + * + * @global moodle_page $PAGE + */ +global $PAGE; + /** * The current course. An alias for $PAGE->course. * @global object $COURSE @@ -263,6 +271,9 @@ global $SCRIPT; get_system_context(); } +/// Create the $PAGE global. + $PAGE = new moodle_page(); + /// Set error reporting back to normal if ($originaldatabasedebug == -1) { $CFG->debug = DEBUG_MINIMAL; @@ -491,8 +502,11 @@ global $SCRIPT; } } - // set default locale and themes - might be changed again later from require_login() - course_setup(); + // We used to call moodle_setlocale() and theme_setup() here, even though they + // would be called again from require_login or $PAGE->set_course. As an experiment + // I am going to try removing those calls. With luck it will help us find and + // fix a few bugs where scripts do not initialise thigns properly, wihtout causing + // too much grief. if (!empty($CFG->guestloginbutton)) { if ($CFG->theme == 'standard' or $CFG->theme == 'standardwhite') { // Temporary measure to help with XHTML validation diff --git a/lib/upgradelib.php b/lib/upgradelib.php index 04b3413e53..47df59acfb 100644 --- a/lib/upgradelib.php +++ b/lib/upgradelib.php @@ -745,7 +745,7 @@ function upgrade_log($type, $plugin, $info, $details=null, $backtrace=null) { * The upgrade is finished at the end of script or after timeout. */ function upgrade_started($preinstall=false) { - global $CFG, $DB; + global $CFG, $DB, $PAGE; static $started = false; @@ -757,7 +757,7 @@ function upgrade_started($preinstall=false) { upgrade_set_timeout(120); } else { - if (!CLI_SCRIPT and !defined('HEADER_PRINTED')) { + if (!CLI_SCRIPT and !$PAGE->headerprinted) { $strupgrade = get_string('upgradingversion', 'admin'); print_header($strupgrade.' - Moodle '.$CFG->target_release, $strupgrade, diff --git a/lib/weblib.php b/lib/weblib.php index 823444afa5..f9740416ea 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -609,9 +609,9 @@ function close_window_button($name='closewindow', $return=false, $reloadopener = * to reload the parent window before this one closes. */ function close_window($delay = 0, $reloadopener = false) { - global $THEME; + global $THEME, $PAGE; - if (!defined('HEADER_PRINTED')) { + if (!$PAGE->headerprinted) { print_header(get_string('closewindow')); } else { print_container_end_all(false, $THEME->open_header_containers); @@ -2134,13 +2134,15 @@ function print_header ($title='', $heading='', $navigation='', $focus='', $meta='', $cache=true, $button=' ', $menu='', $usexml=false, $bodytags='', $return=false) { - global $USER, $CFG, $THEME, $SESSION, $ME, $SITE, $COURSE; + global $USER, $CFG, $THEME, $SESSION, $ME, $SITE, $COURSE, $PAGE; if (gettype($navigation) == 'string' && strlen($navigation) != 0 && $navigation != 'home') { debugging("print_header() was sent a string as 3rd ($navigation) parameter. " . "This is deprecated in favour of an array built by build_navigation(). Please upgrade your code.", DEBUG_DEVELOPER); } + $PAGE->set_state(moodle_page::STATE_PRINTING_HEADER); + $heading = format_string($heading); // Fix for MDL-8582 if (CLI_SCRIPT) { @@ -2153,14 +2155,6 @@ function print_header ($title='', $heading='', $navigation='', $focus='', } } -/// This makes sure that the header is never repeated twice on a page - if (defined('HEADER_PRINTED')) { - debugging('print_header() was called more than once - this should not happen. Please check the code for this page closely. Note: print_error() and redirect() are now safe to call after print_header().'); - return; - } - define('HEADER_PRINTED', 'true'); - - /// Add the required stylesheets $stylesheetshtml = ''; foreach ($CFG->stylesheets as $stylesheet) { @@ -2390,6 +2384,8 @@ function print_header ($title='', $heading='', $navigation='', $focus='', $output .= require_js('', 2); $output .= print_js_call('moodle_initialise_body', array(), true); + $PAGE->set_state(moodle_page::STATE_IN_BODY); + if ($return) { return $output; } else { @@ -2741,13 +2737,15 @@ function print_header_simple($title='', $heading='', $navigation='', $focus='', * @return mixed string or void */ function print_footer($course=NULL, $usercourse=NULL, $return=false) { - global $USER, $CFG, $THEME, $COURSE, $SITE; + global $USER, $CFG, $THEME, $COURSE, $SITE, $PAGE; if (defined('ADMIN_EXT_HEADER_PRINTED') and !defined('ADMIN_EXT_FOOTER_PRINTED')) { admin_externalpage_print_footer(); return; } + $PAGE->set_state(moodle_page::STATE_PRINTING_FOOTER); + /// Course links or special footer if ($course) { if ($course === 'empty') { @@ -2846,6 +2844,8 @@ function print_footer($course=NULL, $usercourse=NULL, $return=false) { $output = ob_get_contents(); ob_end_clean(); + $PAGE->set_state(moodle_page::STATE_DONE); + if ($return) { return $output; } else { @@ -3000,35 +3000,35 @@ function style_sheet_setup($lastmodified=0, $lifetime=300, $themename='', $force header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $lifetime) . ' GMT'); header('Cache-Control: max-age='. $lifetime); header('Pragma: '); - header('Content-type: text/css'); // Correct MIME type + header('Content-type: text/css'); // Correct MIME type $DEFAULT_SHEET_LIST = array('styles_layout', 'styles_fonts', 'styles_color'); if (empty($themename)) { - $themename = current_theme(); // So we have something. Normally not needed. + $themename = current_theme(); // So we have something. Normally not needed. } else { $themename = clean_param($themename, PARAM_SAFEDIR); } - if (!empty($forceconfig)) { // Page wants to use the config from this theme instead + theme_setup($themename); + + if (!empty($forceconfig)) { // Page wants to use the config from this theme instead unset($THEME); include($CFG->themedir.'/'.$forceconfig.'/'.'config.php'); } /// If this is the standard theme calling us, then find out what sheets we need - if ($themename == 'standard') { if (!isset($THEME->standardsheets) or $THEME->standardsheets === true) { // Use all the sheets we have $THEME->sheets = $DEFAULT_SHEET_LIST; - } else if (empty($THEME->standardsheets)) { // We can stop right now! + } else if (empty($THEME->standardsheets)) { // We can stop right now! echo "/***** Nothing required from this stylesheet by main theme *****/\n\n"; exit; - } else { // Use the provided subset only + } else { // Use the provided subset only $THEME->sheets = $THEME->standardsheets; } /// If we are a parent theme, then check for parent definitions - } else if (!empty($THEME->parent) && $themename == $THEME->parent) { if (!isset($THEME->parentsheets) or $THEME->parentsheets === true) { // Use all the sheets we have $THEME->sheets = $DEFAULT_SHEET_LIST; @@ -3041,7 +3041,6 @@ function style_sheet_setup($lastmodified=0, $lifetime=300, $themename='', $force } /// Work out the last modified date for this theme - foreach ($THEME->sheets as $sheet) { if (file_exists($CFG->themedir.'/'.$themename.'/'.$sheet.'.css')) { $sheetmodified = filemtime($CFG->themedir.'/'.$themename.'/'.$sheet.'.css'); @@ -3051,7 +3050,6 @@ function style_sheet_setup($lastmodified=0, $lifetime=300, $themename='', $force } } - /// Get a list of all the files we want to include $files = array(); @@ -3159,10 +3157,10 @@ function style_sheet_setup($lastmodified=0, $lifetime=300, $themename='', $force function theme_setup($theme = '', $params=NULL) { /// Sets up global variables related to themes - global $CFG, $THEME, $SESSION, $USER, $HTTPSPAGEREQUIRED; + global $CFG, $THEME, $SESSION, $USER, $HTTPSPAGEREQUIRED, $PAGE; /// Do not mess with THEME if header already printed - this would break all the extra stuff in global $THEME from print_header()!! - if (defined('HEADER_PRINTED')) { + if ($PAGE->headerprinted) { return; } @@ -3193,7 +3191,6 @@ function theme_setup($theme = '', $params=NULL) { $params[] = 'lang='.current_language(); } - /// Convert params to string if ($params) { $paramstring = '?'.implode('&', $params); @@ -5597,7 +5594,7 @@ function print_error($errorcode, $module='error', $link='', $a=NULL) { * Internal function - do not use directly!! */ function _print_normal_error($errorcode, $module, $a, $link, $backtrace, $debuginfo=null, $showerrordebugwarning=false) { - global $CFG, $SESSION, $THEME, $DB; + global $CFG, $SESSION, $THEME, $DB, $PAGE; if ($DB) { //if you enable db debugging and exception is thrown, the print footer prints a lot of rubbish @@ -5639,7 +5636,7 @@ function _print_normal_error($errorcode, $module, $a, $link, $backtrace, $debugi $errordocroot = 'http://docs.moodle.org'; } - if (! defined('HEADER_PRINTED')) { + if (!$PAGE->headerprinted) { //header not yet printed @header('HTTP/1.0 404 Not Found'); print_header(get_string('error')); @@ -5949,7 +5946,7 @@ function editorshortcutshelpbutton() { * @todo Finish documenting this function */ function notice ($message, $link='', $course=NULL) { - global $CFG, $SITE, $THEME, $COURSE; + global $CFG, $SITE, $THEME, $COURSE, $PAGE; $message = clean_text($message); // In case nasties are in here @@ -5959,7 +5956,7 @@ function notice ($message, $link='', $course=NULL) { die; } - if (! defined('HEADER_PRINTED')) { + if (!$PAGE->headerprinted) { //header not yet printed print_header(get_string('notice')); } else { @@ -6015,7 +6012,7 @@ function notice_yesno ($message, $linkyes, $linkno, $optionsyes=NULL, $optionsno * echo ""; */ function redirect($url, $message='', $delay=-1) { - global $CFG, $THEME, $SESSION; + global $CFG, $THEME, $SESSION, $PAGE; if (!empty($CFG->usesid) && !isset($_COOKIE[session_name()])) { $url = $SESSION->sid_process_url($url); @@ -6045,7 +6042,7 @@ function redirect($url, $message='', $delay=-1) { } /// when no message and header printed yet, try to redirect - if (empty($message) and !defined('HEADER_PRINTED')) { + if (empty($message) and !$PAGE->headerprinted) { // Technically, HTTP/1.1 requires Location: header to contain // the absolute path. (In practice browsers accept relative @@ -6084,7 +6081,7 @@ function redirect($url, $message='', $delay=-1) { if ($delay == -1) { $delay = 3; // if no delay specified wait 3 seconds } - if (! defined('HEADER_PRINTED')) { + if (!$PAGE->headerprinted) { // this type of redirect might not be working in some browsers - such as lynx :-( print_header('', '', '', '', $errorprinted ? '' : ('')); $delay += 3; // double redirect prevention, it was sometimes breaking upgrades before 1.7 diff --git a/mod/chat/chatd.php b/mod/chat/chatd.php index 41d530e6aa..cd99081af6 100755 --- a/mod/chat/chatd.php +++ b/mod/chat/chatd.php @@ -225,13 +225,12 @@ class ChatDaemon { } function get_user_window($sessionid) { - - global $CFG; + global $CFG, $PAGE; static $str; $info = &$this->sets_info[$sessionid]; - course_setup($info['course'], $info['user']); + $PAGE->set_course($info['course']); $timenow = time(); @@ -702,6 +701,8 @@ EOD; } function message_broadcast($message, $sender) { + global $PAGE; + if(empty($this->conn_sets)) { return true; } @@ -718,7 +719,7 @@ EOD; { // Simply give them the message - course_setup($info['course'], $info['user']); + $PAGE->set_course($info['course']); $output = chat_format_message_manually($message, $info['courseid'], $sender, $info['user']); $this->trace('Delivering message "'.$output->text.'" to '.$this->conn_sets[$sessionid][CHAT_CONNECTION_CHANNEL]); diff --git a/mod/chat/gui_header_js/chatinput.php b/mod/chat/gui_header_js/chatinput.php index cf6e2dc30d..027ee59d42 100644 --- a/mod/chat/gui_header_js/chatinput.php +++ b/mod/chat/gui_header_js/chatinput.php @@ -30,7 +30,7 @@ $USER = $DB->get_record('user', array('id'=>$chatuser->userid)); //Setup course, lang and theme - course_setup($chatuser->course); + $PAGE->set_course($course); ob_start(); ?> diff --git a/mod/chat/gui_header_js/jsupdate.php b/mod/chat/gui_header_js/jsupdate.php index a480ccd390..e26bb12401 100644 --- a/mod/chat/gui_header_js/jsupdate.php +++ b/mod/chat/gui_header_js/jsupdate.php @@ -14,7 +14,7 @@ } //Get the minimal course - if (!$course = $DB->get_record('course', array('id'=>$chatuser->course), 'id,theme,lang')) { + if (!$course = $DB->get_record('course', array('id'=>$chatuser->course))) { print_error('invalidcourseid'); } @@ -25,7 +25,7 @@ $USER->description = ''; //Setup course, lang and theme - course_setup($course); + $PAGE->set_course($course); // force deleting of timed out users if there is a silence in room or just entering if ((time() - $chat_lasttime) > $CFG->chat_old_ping) { diff --git a/mod/chat/gui_header_js/jsupdated.php b/mod/chat/gui_header_js/jsupdated.php index 57421e0bfc..6e198cf16f 100644 --- a/mod/chat/gui_header_js/jsupdated.php +++ b/mod/chat/gui_header_js/jsupdated.php @@ -36,7 +36,7 @@ } //Get the minimal course - if (!$course = $DB->get_record('course', array('id'=>$chatuser->course), 'id,theme,lang')) { + if (!$course = $DB->get_record('course', array('id'=>$chatuser->course))) { print_error('invalidcourseid'); } @@ -48,7 +48,7 @@ $USER->description = ''; //Setup course, lang and theme - course_setup($course); + $PAGE->set_course($course); // force deleting of timed out users if there is a silence in room or just entering if ((time() - $chat_lasttime) > $CFG->chat_old_ping) { diff --git a/mod/chat/gui_header_js/users.php b/mod/chat/gui_header_js/users.php index e623a2fd4a..aaac235355 100644 --- a/mod/chat/gui_header_js/users.php +++ b/mod/chat/gui_header_js/users.php @@ -13,7 +13,7 @@ } //Get the minimal course - if (!$course = $DB->get_record('course', array('id'=>$chatuser->course), 'id,theme,lang')) { + if (!$course = $DB->get_record('course', array('id'=>$chatuser->course))) { print_error('invalidcourseid'); } @@ -24,7 +24,7 @@ $USER->description = ''; //Setup course, lang and theme - course_setup($course); + $PAGE->set_course($course); $courseid = $chatuser->course; diff --git a/mod/chat/gui_sockets/chatinput.php b/mod/chat/gui_sockets/chatinput.php index 8b24a0b172..53dbc5c1b9 100644 --- a/mod/chat/gui_sockets/chatinput.php +++ b/mod/chat/gui_sockets/chatinput.php @@ -15,7 +15,7 @@ $USER = $DB->get_record('user', array('id'=>$chatuser->userid)); //Setup course, lang and theme - course_setup($chatuser->course); + $PAGE->set_course($DB->get_record('course', array('id' => $chatuser->course))); ob_start(); ?> diff --git a/mod/forum/post.php b/mod/forum/post.php index 26eab58c8c..8064b0034a 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -134,8 +134,8 @@ print_error('invalidcoursemodule'); } - // call course_setup to use forced language, MDL-6926 - course_setup($course->id); + // Ensure lang, theme, etc. is set up properly. MDL-6926 + $PAGE->set_course($course); $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); @@ -441,7 +441,7 @@ print_error('invalidcoursemodule'); } $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); - require_login($course->id, false, $cm); + require_login($course, false, $cm); if (isguestuser()) { // just in case @@ -452,9 +452,6 @@ $forum->maxattachments = 3; } - // setup course variable to force form language - // fix for MDL-6926 - course_setup($course->id); require_once('post_form.php'); $mform_post = new mod_forum_post_form('post.php', array('course'=>$course, 'cm'=>$cm, 'coursecontext'=>$coursecontext, 'modcontext'=>$modcontext, 'forum'=>$forum, 'post'=>$post)); diff --git a/theme/chameleon/ui/css.php b/theme/chameleon/ui/css.php index 2cfbcd3765..57ef7a4bd5 100644 --- a/theme/chameleon/ui/css.php +++ b/theme/chameleon/ui/css.php @@ -13,7 +13,7 @@ if (!$course = $DB->get_record('course', array('id'=>$id))) { print_error('invalidcourseid'); } -course_setup($course); // we should not require login here +$PAGE->set_course($course); // we should not require login here if ($id != SITEID and !empty($CFG->allowcoursethemes) and !empty($course->theme) and !empty($THEME->chameleonteachereditenabled)) { if (!has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $id))) {