summaryrefslogtreecommitdiff
path: root/includes/RequestContext.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/RequestContext.php')
-rw-r--r--includes/RequestContext.php424
1 files changed, 0 insertions, 424 deletions
diff --git a/includes/RequestContext.php b/includes/RequestContext.php
deleted file mode 100644
index 441a9aec..00000000
--- a/includes/RequestContext.php
+++ /dev/null
@@ -1,424 +0,0 @@
-<?php
-/**
- * Request-dependant objects containers.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @since 1.18
- *
- * @author Alexandre Emsenhuber
- * @author Daniel Friesen
- * @file
- */
-
-/**
- * Interface for objects which can provide a context on request.
- */
-interface IContextSource {
-
- /**
- * Get the WebRequest object
- *
- * @return WebRequest
- */
- public function getRequest();
-
- /**
- * Get the Title object
- *
- * @return Title
- */
- public function getTitle();
-
- /**
- * Get the OutputPage object
- *
- * @return OutputPage object
- */
- public function getOutput();
-
- /**
- * Get the User object
- *
- * @return User
- */
- public function getUser();
-
- /**
- * Get the Language object
- *
- * @return Language
- */
- public function getLang();
-
- /**
- * Get the Language object
- *
- * @return Language
- */
- public function getLanguage();
-
- /**
- * Get the Skin object
- *
- * @return Skin
- */
- public function getSkin();
-}
-
-/**
- * Group all the pieces relevant to the context of a request into one instance
- */
-class RequestContext implements IContextSource {
-
- /**
- * @var WebRequest
- */
- private $request;
-
- /**
- * @var Title
- */
- private $title;
-
- /**
- * @var OutputPage
- */
- private $output;
-
- /**
- * @var User
- */
- private $user;
-
- /**
- * @var Language
- */
- private $lang;
-
- /**
- * @var Skin
- */
- private $skin;
-
- /**
- * Set the WebRequest object
- *
- * @param $r WebRequest object
- */
- public function setRequest( WebRequest $r ) {
- $this->request = $r;
- }
-
- /**
- * Get the WebRequest object
- *
- * @return WebRequest
- */
- public function getRequest() {
- if ( $this->request === null ) {
- 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 ( $this->title === null ) {
- global $wgTitle; # fallback to $wg till we can improve this
- $this->title = $wgTitle;
- }
- return $this->title;
- }
-
- /**
- * @param $o OutputPage
- */
- public function setOutput( OutputPage $o ) {
- $this->output = $o;
- }
-
- /**
- * Get the OutputPage object
- *
- * @return OutputPage object
- */
- public function getOutput() {
- if ( $this->output === null ) {
- $this->output = new OutputPage( $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 ( $this->user === null ) {
- $this->user = User::newFromSession( $this->getRequest() );
- }
- return $this->user;
- }
-
- /**
- * Set the Language object
- *
- * @param $l Language
- */
- public function setLang( Language $l ) {
- $this->lang = $l;
- }
-
- /**
- * Get the Language object
- *
- * @return Language
- */
- public function getLang() {
- if ( $this->lang === null ) {
- 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 Language object
- *
- * @return Language
- */
- public function getLanguage() {
- return $this->getLang();
- }
-
- /**
- * Set the Skin object
- *
- * @param $s Skin
- */
- public function setSkin( Skin $s ) {
- $this->skin = clone $s;
- $this->skin->setContext( $this );
- }
-
- /**
- * Get the Skin object
- *
- * @return Skin
- */
- public function getSkin() {
- if ( $this->skin === null ) {
- wfProfileIn( __METHOD__ . '-createskin' );
-
- global $wgHiddenPrefs;
- if( !in_array( 'skin', $wgHiddenPrefs ) ) {
- # get the user skin
- $userSkin = $this->getUser()->getOption( 'skin' );
- $userSkin = $this->getRequest()->getVal( 'useskin', $userSkin );
- } else {
- # if we're not allowing users to override, then use the default
- global $wgDefaultSkin;
- $userSkin = $wgDefaultSkin;
- }
-
- $this->skin = Skin::newFromKey( $userSkin );
- $this->skin->setContext( $this );
- wfProfileOut( __METHOD__ . '-createskin' );
- }
- return $this->skin;
- }
-
- /** Helpful methods **/
-
- /**
- * Get a Message object with context set
- * Parameters are the same as wfMessage()
- *
- * @return Message object
- */
- public function msg() {
- $args = func_get_args();
- return call_user_func_array( 'wfMessage', $args )->inLanguage( $this->getLang() )->title( $this->getTitle() );
- }
-
- /** Static methods **/
-
- /**
- * Get the RequestContext object associated with the main request
- *
- * @return RequestContext object
- */
- public static function getMain() {
- static $instance = null;
- if ( $instance === null ) {
- $instance = new self;
- }
- return $instance;
- }
-}
-
-/**
- * The simplest way of implementing IContextSource is to hold a RequestContext as a
- * member variable and provide accessors to it.
- */
-abstract class ContextSource implements IContextSource {
-
- /**
- * @var IContextSource
- */
- private $context;
-
- /**
- * Get the IContextSource object
- *
- * @return IContextSource
- */
- public function getContext() {
- if ( $this->context === null ) {
- $class = get_class( $this );
- wfDebug( __METHOD__ . " ($class): called and \$context is null. Using RequestContext::getMain() for sanity\n" );
- $this->context = RequestContext::getMain();
- }
- return $this->context;
- }
-
- /**
- * Set the IContextSource object
- *
- * @param $context IContextSource
- */
- public function setContext( IContextSource $context ) {
- $this->context = $context;
- }
-
- /**
- * Get the WebRequest object
- *
- * @return WebRequest
- */
- public function getRequest() {
- return $this->getContext()->getRequest();
- }
-
- /**
- * Get the Title object
- *
- * @return Title
- */
- public function getTitle() {
- return $this->getContext()->getTitle();
- }
-
- /**
- * Get the OutputPage object
- *
- * @return OutputPage object
- */
- public function getOutput() {
- return $this->getContext()->getOutput();
- }
-
- /**
- * Get the User object
- *
- * @return User
- */
- public function getUser() {
- return $this->getContext()->getUser();
- }
-
- /**
- * Get the Language object
- *
- * @return Language
- */
- public function getLang() {
- return $this->getContext()->getLang();
- }
-
- /**
- * Get the Language object
- *
- * @return Language
- */
- public function getLanguage() {
- return $this->getContext()->getLang();
- }
-
- /**
- * Get the Skin object
- *
- * @return Skin
- */
- public function getSkin() {
- return $this->getContext()->getSkin();
- }
-
- /**
- * Get a Message object with context set
- * Parameters are the same as wfMessage()
- *
- * @return Message object
- */
- public function msg( /* $args */ ) {
- return call_user_func_array( array( $this->getContext(), 'msg' ), func_get_args() );
- }
-}