From f14eb05489edaf4f8a2966bcb0d825dd4120ea3b Mon Sep 17 00:00:00 2001 From: Daniel Friesen Date: Sun, 3 Apr 2011 11:09:49 +0000 Subject: [PATCH] Followup r85240; Commit the additional file that was part of that change. ;) this wouldn't have happened if we were using git... seriously! --- includes/RequestContext.php | 167 ++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 includes/RequestContext.php diff --git a/includes/RequestContext.php b/includes/RequestContext.php new file mode 100644 index 0000000000..0f1488e129 --- /dev/null +++ b/includes/RequestContext.php @@ -0,0 +1,167 @@ +request = $r; + } + + /** + * Get the WebRequest object + * + * @return WebRequest + */ + public function getRequest() { + if ( !isset($this->request) ) { + global $wgRequest; # fallback to $wg till we can improve this + $this->request = $wgRequest; + } + return $this->request; + } + + /** + * Set the Title object + * + * @param $t Title object + */ + public function setTitle( Title $t ) { + $this->title = $t; + } + + /** + * Get the Title object + * + * @return Title + */ + public function getTitle() { + if ( !isset($this->title) ) { + global $wgTitle; # fallback to $wg till we can improve this + $this->title = $wgTitle; + } + return $this->title; + } + + /** + * Get the OutputPage object + * + * @return OutputPage object + */ + public function getOutput() { + if ( !isset($this->output) ) { + $this->output = new OutputPage; + $this->output->setContext( $this ); + } + return $this->output; + } + + /** + * Set the User object + * + * @param $u User + */ + public function setUser( User $u ) { + $this->user = $u; + } + + /** + * Get the User object + * + * @return User + */ + public function getUser() { + if ( !isset($this->user) ) { + global $wgCommandLineMode; + $this->user = $wgCommandLineMode ? new User : User::newFromSession( $this->getRequest() ); + } + return $this->user; + } + + /** + * Get the Language object + * + * @return Language + */ + public function getLang() { + if ( !isset($this->lang) ) { + global $wgLanguageCode, $wgContLang; + $code = $this->getRequest()->getVal( 'uselang', $this->getUser()->getOption( 'language' ) ); + // BCP 47 - letter case MUST NOT carry meaning + $code = strtolower( $code ); + + # Validate $code + if( empty( $code ) || !Language::isValidCode( $code ) || ( $code === 'qqq' ) ) { + wfDebug( "Invalid user language code\n" ); + $code = $wgLanguageCode; + } + + wfRunHooks( 'UserGetLanguageObject', array( $this->getUser(), &$code ) ); + + if( $code === $wgLanguageCode ) { + $this->lang = $wgContLang; + } else { + $obj = Language::factory( $code ); + $this->lang = $obj; + } + } + return $this->lang; + } + + /** + * Get the Skin object + * + * @return Skin + */ + public function getSkin() { + // For now we'll just proxy to the user. In the future a saner location for + // organizing what skin to use may be chosen + return $this->getUser()->getSkin(); + } + + /** Helpful methods **/ + + /** + * Get a Message object with context set + * Parameters are the same as wfMessage() + * + * @return Message object + */ + public function msg() { + $args = function_get_args(); + return call_user_func_array( 'wfMessage', $args )->inLanguage( $this->getLang() )->outputPage( $this->getOut() ); + } + + /** Static methods **/ + + /** + * Get the RequestContext object associated with the main request + * + * @return RequestContext object + */ + public static function getMain() { + static $instance = null; + if ( !isset($instance) ) { + $instance = new self; + } + return $instance; + } + +} + -- 2.20.1