MediaWiki  master
RequestContext Class Reference

Group all the pieces relevant to the context of a request into one instance. More...

Inheritance diagram for RequestContext:
Collaboration diagram for RequestContext:

Public Member Functions

 canUseWikiPage ()
 Check whether a WikiPage object can be get with getWikiPage(). More...
 
 exportSession ()
 Export the resolved user IP, HTTP headers, user ID, and session ID. More...
 
 getActionName ()
 Get the action name for the current web request. More...
 
 getAuthority ()
 
 getConfig ()
 
 getCsrfTokenSet ()
 Get a set of CSRF tokens to obtain and match specific tokens. More...
 
 getLanguage ()
 Get the Language object. More...
 
 getOutput ()
 
 getRequest ()
 
 getSkin ()
 
 getStats ()
 
 getTiming ()
 
 getTitle ()
 
 getUser ()
 
 getWikiPage ()
 Get the WikiPage object. More...
 
 hasTitle ()
 Check, if a Title object is set. More...
 
 msg ( $key,... $params)
 Get a Message object with context set Parameters are the same as wfMessage() More...
 
 setActionName (string $action)
 
 setAuthority (Authority $authority)
 
 setConfig (Config $config)
 
 setLanguage ( $language)
 
 setOutput (OutputPage $output)
 
 setRequest (WebRequest $request)
 
 setSkin (Skin $skin)
 
 setTitle (Title $title=null)
 
 setUser (User $user)
 
 setWikiPage (WikiPage $wikiPage)
 

Static Public Member Functions

static getMain ()
 Get the RequestContext object associated with the main request. More...
 
static getMainAndWarn ( $func=__METHOD__)
 Get the RequestContext object associated with the main request and gives a warning to the log, to find places, where a context maybe is missing. More...
 
static importScopedSession (array $params)
 Import an client IP address, HTTP headers, user ID, and session ID. More...
 
static newExtraneousContext (Title $title, $request=[])
 Create a new extraneous context. More...
 
static resetMain ()
 Resets singleton returned by getMain(). More...
 
static sanitizeLangCode ( $code)
 Accepts a language code and ensures it's sensible. More...
 

Private Member Functions

 clearActionName ()
 

Private Attributes

null string $action
 
Authority $authority
 
Config $config
 
Language null $lang
 
bool $languageRecursion = false
 Boolean flag to guard against recursion in getLanguage. More...
 
OutputPage $output
 
WebRequest $request
 
Skin $skin
 
Timing $timing
 
Title $title
 
User $user
 
WikiPage null $wikipage
 

Static Private Attributes

static RequestContext null $instance = null
 

Detailed Description

Group all the pieces relevant to the context of a request into one instance.

Stability: newable
Note
marked as newable in 1.35 for lack of a better alternative, but should use a factory in the future and should be narrowed down to not expose heavy weight objects.

Definition at line 42 of file RequestContext.php.

Member Function Documentation

◆ canUseWikiPage()

RequestContext::canUseWikiPage ( )

Check whether a WikiPage object can be get with getWikiPage().

Callers should expect that an exception is thrown from getWikiPage() if this method returns false.

Since
1.19
Returns
bool

Implements IContextSource.

Definition at line 221 of file RequestContext.php.

References $title, Title\canExist(), and getTitle().

◆ clearActionName()

RequestContext::clearActionName ( )
private

Definition at line 309 of file RequestContext.php.

Referenced by setTitle(), and setWikiPage().

◆ exportSession()

RequestContext::exportSession ( )

Export the resolved user IP, HTTP headers, user ID, and session ID.

The result will be reasonably sized to allow for serialization.

Returns
array
Since
1.21

Implements IContextSource.

Definition at line 596 of file RequestContext.php.

References MediaWiki\Session\SessionManager\getGlobalSession(), and getUser().

◆ getActionName()

RequestContext::getActionName ( )

Get the action name for the current web request.

This generally returns "view" if the current request or process is not for a skinned index.php web request (e.g. load.php, thumb.php, job runner, CLI, API).

Warning
This must not be called before or during the Setup.php phase, and may cause an error or warning if called too early.
Since
1.38
Returns
string Action

Implements IContextSource.

Definition at line 290 of file RequestContext.php.

◆ getAuthority()

RequestContext::getAuthority ( )
Since
1.36
Returns
Authority

Implements IContextSource.

Definition at line 384 of file RequestContext.php.

◆ getConfig()

RequestContext::getConfig ( )
Returns
Config

Implements IContextSource.

Definition at line 121 of file RequestContext.php.

References $config.

◆ getCsrfTokenSet()

RequestContext::getCsrfTokenSet ( )

Get a set of CSRF tokens to obtain and match specific tokens.

Returns
CsrfTokenSet

Implements MediaWiki\Session\CsrfTokenSetProvider.

Definition at line 606 of file RequestContext.php.

◆ getLanguage()

RequestContext::getLanguage ( )

Get the Language object.

Initialization of user or request objects can depend on this.

Returns
Language
Exceptions
LogicException
Since
1.19

Implements IContextSource.

Definition at line 436 of file RequestContext.php.

References $lang, $userOptionsLookup, getUser(), and Hooks\runner().

◆ getMain()

static RequestContext::getMain ( )
static

Get the RequestContext object associated with the main request.

Returns
RequestContext

Definition at line 556 of file RequestContext.php.

Referenced by ApiMain\__construct(), PermissionsError\__construct(), CliInstaller\__construct(), UserBlockedError\__construct(), UploadStash\__construct(), MediaWiki\__construct(), LogFormatter\__construct(), StubUserLang\_newObject(), Linker\buildRollbackLink(), ChangeTags\buildTagFilterSelector(), MediaWiki\SpecialPage\SpecialPageFactory\capturePath(), UploadBase\checkWarnings(), Parser\cleanSig(), Language\dateFormat(), TextSlotDiffRenderer\diff(), DeferredUpdates\doUpdates(), RebuildFileCache\execute(), UpdateMediaWiki\execute(), Parser\extractSections(), FileRepo\findFiles(), LocalRepo\findFiles(), WikiImporter\finishImportPage(), ChangesList\flag(), FeedUtils\formatDiffRow2(), ChangeTags\formatSummaryRow(), Linker\generateRollback(), MediaWiki\Rest\Handler\ActionModuleBasedHandler\getApiMain(), MediaWiki\Auth\AuthManager\getAuthenticationRequestsInternal(), ContextSource\getContext(), Article\getContext(), Profiler\getContext(), SpecialPage\getContext(), Linker\getContextFromMain(), MediaWiki\Revision\ContributionsLookup\getContributionTags(), EditPage\getCopyrightWarning(), LocalFile\getDescriptionText(), Parser\getFlatSectionInfo(), GenderCache\getGenderOf(), UserGroupMembership\getGroupMemberName(), UserGroupMembership\getGroupName(), MWTimestamp\getHumanTimestamp(), Language\getHumanTimestamp(), Message\getLanguage(), MessageCache\getParserOptions(), LanguageConverter\getPreferredVariant(), MediaWiki\Block\AbstractBlock\getReason(), MWTimestamp\getRelativeTimestamp(), User\getRequest(), ParserOutput\getText(), MediaWiki\SpecialPage\SpecialPageFactory\getUsablePages(), ApiMain\handleApiBeforeMainException(), ImportableOldRevisionImporter\import(), importScopedSession(), HTMLButtonField\isBadIE(), WikitextContent\isCountable(), UploadFromUrl\isValidRequest(), MediaWiki\Rest\EntryPoint\main(), User\newFatalPermissionDeniedStatus(), WikiImporter\processTitle(), UserNotLoggedIn\report(), MWExceptionRenderer\reportHTML(), Installer\resetMediaWikiServices(), ChangeTags\restrictedTagError(), Linker\revComment(), Linker\revUserLink(), Linker\revUserTools(), AssembleUploadChunksJob\run(), PublishStashedFileJob\run(), MediaWiki\Auth\AuthManager\setDefaultUserOptions(), LoginSignupSpecialPage\setSessionUserForCurrentRequest(), WebInstaller\setupLanguage(), ChangesList\showCharacterDifference(), LogEventsList\showLogExtract(), MediaWiki\Auth\CheckBlocksSecondaryAuthenticationProvider\testUserForCreation(), Linker\tocList(), LocalFile\upload(), MWExceptionRenderer\useOutputPage(), Language\userAdjust(), ChangesList\userCan(), Linker\userToolLinks(), ContentHandler\validateSave(), wfApiMain(), wfImageAuthMain(), wfInstallerMain(), and wfStreamThumb().

◆ getMainAndWarn()

static RequestContext::getMainAndWarn (   $func = __METHOD__)
static

Get the RequestContext object associated with the main request and gives a warning to the log, to find places, where a context maybe is missing.

Parameters
string$func
Returns
RequestContext
Since
1.24

Definition at line 572 of file RequestContext.php.

References wfDebug().

Referenced by ImageGalleryBase\factory().

◆ getOutput()

RequestContext::getOutput ( )
Returns
OutputPage

Implements IContextSource.

Definition at line 337 of file RequestContext.php.

◆ getRequest()

RequestContext::getRequest ( )
Returns
WebRequest

Implements IContextSource.

Definition at line 141 of file RequestContext.php.

References $request, and $wgCommandLineMode.

◆ getSkin()

RequestContext::getSkin ( )
Returns
Skin

Implements IContextSource.

Definition at line 497 of file RequestContext.php.

References $userOptionsLookup, getUser(), Skin\normalizeKey(), and Hooks\runner().

◆ getStats()

RequestContext::getStats ( )
Deprecated:
since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
Returns
IBufferingStatsdDataFactory

Implements IContextSource.

Definition at line 160 of file RequestContext.php.

◆ getTiming()

RequestContext::getTiming ( )
Returns
Timing

Implements IContextSource.

Definition at line 167 of file RequestContext.php.

References $timing.

◆ getTitle()

RequestContext::getTitle ( )
Returns
Title|null

Implements IContextSource.

Definition at line 189 of file RequestContext.php.

References $title, and $wgTitle.

Referenced by canUseWikiPage(), and getWikiPage().

◆ getUser()

RequestContext::getUser ( )
Returns
User

Implements IContextSource.

Definition at line 359 of file RequestContext.php.

References User\newFromSession().

◆ getWikiPage()

RequestContext::getWikiPage ( )

Get the WikiPage object.

May throw an exception if there's no Title object set or the Title object belongs to a special namespace that doesn't have WikiPage, so use first canUseWikiPage() to check whether this method can be called safely.

Since
1.19
Exceptions
MWException
Returns
WikiPage

Implements IContextSource.

Definition at line 257 of file RequestContext.php.

References $title, $wikipage, and getTitle().

◆ hasTitle()

RequestContext::hasTitle ( )

Check, if a Title object is set.

Since
1.25
Returns
bool

Definition at line 209 of file RequestContext.php.

Referenced by setWikiPage().

◆ importScopedSession()

static RequestContext::importScopedSession ( array  $params)
static

Import an client IP address, HTTP headers, user ID, and session ID.

This sets the current session, $wgUser, and $wgRequest from $params. Once the return value falls out of scope, the old context is restored. This method should only be called in contexts where there is no session ID or end user receiving the response (CLI or HTTP job runners). This is partly enforced, and is done so to avoid leaking cookies if certain error conditions arise.

This is useful when background scripts inherit context when acting on behalf of a user. In general the 'sessionId' parameter should be set to an empty string unless session importing is truly needed. This feature is somewhat deprecated.

Note
suhosin.session.encrypt may interfere with this method.
Parameters
array$paramsResult of RequestContext::exportSession()
Returns
ScopedCallback
Exceptions
MWException
Since
1.21

Definition at line 632 of file RequestContext.php.

References $wgRequest, getMain(), User\newFromId(), User\newFromName(), StubGlobalUser\setUser(), and MediaWiki\Session\SessionManager\singleton().

Referenced by AssembleUploadChunksJob\run(), and PublishStashedFileJob\run().

◆ msg()

RequestContext::msg (   $key,
  $params 
)

Get a Message object with context set Parameters are the same as wfMessage()

Parameters
string | string[] | MessageSpecifier$keyMessage key, or array of keys, or a MessageSpecifier.
mixed...$params
Returns
Message

Implements MessageLocalizer.

Definition at line 547 of file RequestContext.php.

References wfMessage().

◆ newExtraneousContext()

static RequestContext::newExtraneousContext ( Title  $title,
  $request = [] 
)
static

Create a new extraneous context.

The context is filled with information external to the current session.

  • Title is specified by argument
  • Request is a FauxRequest, or a FauxRequest can be specified by argument
  • User is an anonymous user, for separation IPv4 localhost is used
  • Language will be based on the anonymous user and request, may be content language or a uselang param in the fauxrequest data may change the lang
  • Skin will be based on the anonymous user, should be the wiki's default skin
Parameters
Title$titleTitle to use for the extraneous request
WebRequest | array$requestA WebRequest or data to use for a FauxRequest
Returns
RequestContext

Definition at line 730 of file RequestContext.php.

References $title, and User\newFromName().

Referenced by LogPage\addEntry(), ContentModelChange\doContentModelChange(), and ManualLogEntry\getRecentChange().

◆ resetMain()

static RequestContext::resetMain ( )
static

Resets singleton returned by getMain().

Should be called only from unit tests.

Definition at line 582 of file RequestContext.php.

◆ sanitizeLangCode()

static RequestContext::sanitizeLangCode (   $code)
static

Accepts a language code and ensures it's sensible.

Outputs a cleaned up language code and replaces with $wgLanguageCode if not sensible.

Parameters
string$codeLanguage code
Returns
string

Definition at line 394 of file RequestContext.php.

References $wgLanguageCode.

Referenced by ApiMain\__construct(), and DerivativeContext\setLanguage().

◆ setActionName()

RequestContext::setActionName ( string  $action)
Since
1.38
Parameters
string$action

Implements MutableContext.

Definition at line 273 of file RequestContext.php.

◆ setAuthority()

RequestContext::setAuthority ( Authority  $authority)
Parameters
Authority$authority

Implements MutableContext.

Definition at line 370 of file RequestContext.php.

◆ setConfig()

RequestContext::setConfig ( Config  $config)
Parameters
Config$config

Implements MutableContext.

Definition at line 114 of file RequestContext.php.

References $config.

◆ setLanguage()

RequestContext::setLanguage (   $language)
Parameters
Language | string$languageLanguage instance or language code
Exceptions
MWException
Since
1.19

Implements MutableContext.

Definition at line 417 of file RequestContext.php.

◆ setOutput()

RequestContext::setOutput ( OutputPage  $output)
Parameters
OutputPage$output

Implements MutableContext.

Definition at line 330 of file RequestContext.php.

◆ setRequest()

RequestContext::setRequest ( WebRequest  $request)
Parameters
WebRequest$request

Implements MutableContext.

Definition at line 134 of file RequestContext.php.

References $request.

Referenced by ApiEditPage\execute().

◆ setSkin()

RequestContext::setSkin ( Skin  $skin)
Parameters
Skin$skin

Implements MutableContext.

Definition at line 489 of file RequestContext.php.

References ContextSource\setContext().

◆ setTitle()

RequestContext::setTitle ( Title  $title = null)
Parameters
Title | null$title

Implements MutableContext.

Definition at line 179 of file RequestContext.php.

References $title, and clearActionName().

Referenced by Parser\braceSubstitution(), and setWikiPage().

◆ setUser()

RequestContext::setUser ( User  $user)
Parameters
User$user

Implements MutableContext.

Definition at line 348 of file RequestContext.php.

Referenced by ApiParamInfo\execute().

◆ setWikiPage()

RequestContext::setWikiPage ( WikiPage  $wikiPage)
Since
1.19
Parameters
WikiPage$wikiPage

Implements MutableContext.

Definition at line 236 of file RequestContext.php.

References clearActionName(), WikiPage\getTitle(), hasTitle(), and setTitle().

Member Data Documentation

◆ $action

null string RequestContext::$action
private

Definition at line 63 of file RequestContext.php.

◆ $authority

Authority RequestContext::$authority
private

Definition at line 78 of file RequestContext.php.

◆ $config

Config RequestContext::$config
private

Definition at line 98 of file RequestContext.php.

Referenced by getConfig(), and setConfig().

◆ $instance

RequestContext null RequestContext::$instance = null
staticprivate

Definition at line 103 of file RequestContext.php.

◆ $lang

Language null RequestContext::$lang
private

Definition at line 83 of file RequestContext.php.

◆ $languageRecursion

bool RequestContext::$languageRecursion = false
private

Boolean flag to guard against recursion in getLanguage.

Definition at line 109 of file RequestContext.php.

◆ $output

OutputPage RequestContext::$output
private

Definition at line 68 of file RequestContext.php.

◆ $request

WebRequest RequestContext::$request
private

Definition at line 48 of file RequestContext.php.

Referenced by getRequest(), and setRequest().

◆ $skin

Skin RequestContext::$skin
private

Definition at line 88 of file RequestContext.php.

◆ $timing

Timing RequestContext::$timing
private

Definition at line 93 of file RequestContext.php.

Referenced by getTiming().

◆ $title

Title RequestContext::$title
private

Definition at line 53 of file RequestContext.php.

Referenced by canUseWikiPage(), getTitle(), getWikiPage(), and setTitle().

◆ $user

User RequestContext::$user
private

Definition at line 73 of file RequestContext.php.

◆ $wikipage

WikiPage null RequestContext::$wikipage
private

Definition at line 58 of file RequestContext.php.

Referenced by getWikiPage().


The documentation for this class was generated from the following file: