MediaWiki  REL1_34
MediaWiki Class Reference

The MediaWiki class is the helper class for the index.php entry point. More...

Collaboration diagram for MediaWiki:

Classes

class  MediaWikiServices
 MediaWikiServices is the service locator for the application scope of MediaWiki. More...
 
class  OutputHandler
 

Public Member Functions

 __construct (IContextSource $context=null)
 
 doPostOutputShutdown ( $mode='normal')
 This function does work that can be done after the user gets the HTTP response so they don't block on it. More...
 
 doPreOutputCommit (callable $postCommitWork=null)
 
 getAction ()
 Returns the name of the action that will be executed. More...
 
 getTitle ()
 Get the Title object that we'll be acting on, as specified in the WebRequest. More...
 
 restInPeace ( $mode='fast', $blocksHttpClient=true)
 Ends this task peacefully. More...
 
 run ()
 Run the current MediaWiki instance; index.php just calls this. More...
 
 triggerJobs ()
 Potentially open a socket and sent an HTTP request back to the server to run a specified number of jobs. More...
 

Static Public Member Functions

static emitBufferedStatsdData (IBufferingStatsdDataFactory $stats, Config $config)
 Send out any buffered statsd data according to sampling rules. More...
 
static preOutputCommit (IContextSource $context, callable $postCommitWork=null)
 This function commits all DB and session changes as needed before the client can receive a response (in case DB commit fails) and thus also before the response can trigger a subsequent related request by the client. More...
 

Private Member Functions

 initializeArticle ()
 Initialize the main Article object for "standard" actions (view, etc) Create an Article object for the page, following redirects if needed. More...
 
 main ()
 
 maybeDoHttpsRedirect ()
 If the stars are suitably aligned, do an HTTP->HTTPS redirect. More...
 
 parseTitle ()
 Parse the request to get the Title object. More...
 
 performAction (Page $page, Title $requestTitle)
 Perform one of the "standard" actions. More...
 
 performRequest ()
 Performs the request. More...
 
 setDBProfilingAgent ()
 
 shouldDoHttpRedirect ()
 Check if an HTTP->HTTPS redirect should be done. More...
 
 triggerAsyncJobs ( $n, LoggerInterface $runJobsLogger)
 
 triggerSyncJobs ( $n, LoggerInterface $runJobsLogger)
 
 tryNormaliseRedirect (Title $title)
 Handle redirects for uncanonical title requests. More...
 

Static Private Member Functions

static getChronProtStrategy (ILBFactory $lbFactory, OutputPage $output)
 
static getUrlDomainDistance ( $url)
 

Private Attributes

string $action
 Cache what action this request is. More...
 
Config $config
 
IContextSource $context
 

Detailed Description

The MediaWiki class is the helper class for the index.php entry point.

Definition at line 34 of file MediaWiki.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki::__construct ( IContextSource  $context = null)
Parameters
IContextSource | null$context

Definition at line 53 of file MediaWiki.php.

References $context, IContextSource\getConfig(), and RequestContext\getMain().

Member Function Documentation

◆ doPostOutputShutdown()

MediaWiki::doPostOutputShutdown (   $mode = 'normal')

This function does work that can be done after the user gets the HTTP response so they don't block on it.

This manages deferred updates, job insertion, final commit, and the logging of profiling data

Parameters
string$modeUse 'fast' to always skip job running
Since
1.26

Definition at line 745 of file MediaWiki.php.

References WebResponse\disableForPostSend(), Profiler\instance(), MWExceptionHandler\logException(), restInPeace(), and MWExceptionHandler\rollbackMasterChangesAndLog().

Referenced by run().

◆ doPreOutputCommit()

MediaWiki::doPreOutputCommit ( callable  $postCommitWork = null)
See also
MediaWiki::preOutputCommit()
Parameters
callable | null$postCommitWork[default: null]
Since
1.26

Definition at line 581 of file MediaWiki.php.

References preOutputCommit().

Referenced by main(), and run().

◆ emitBufferedStatsdData()

static MediaWiki::emitBufferedStatsdData ( IBufferingStatsdDataFactory  $stats,
Config  $config 
)
static

◆ getAction()

MediaWiki::getAction ( )

Returns the name of the action that will be executed.

Returns
string Action

Definition at line 153 of file MediaWiki.php.

References $action, and Action\getActionName().

Referenced by main(), and performAction().

◆ getChronProtStrategy()

static MediaWiki::getChronProtStrategy ( ILBFactory  $lbFactory,
OutputPage  $output 
)
staticprivate
Parameters
ILBFactory$lbFactory
OutputPage$output
Returns
array

Definition at line 692 of file MediaWiki.php.

References OutputPage\getRedirect(), getUrlDomainDistance(), Wikimedia\Rdbms\ILBFactory\hasOrMadeRecentMasterChanges(), and OutputPage\isDisabled().

Referenced by preOutputCommit().

◆ getTitle()

MediaWiki::getTitle ( )

Get the Title object that we'll be acting on, as specified in the WebRequest.

Returns
Title

Definition at line 137 of file MediaWiki.php.

References SpecialPage\getTitleFor(), and parseTitle().

Referenced by main(), and triggerJobs().

◆ getUrlDomainDistance()

static MediaWiki::getUrlDomainDistance (   $url)
staticprivate
Parameters
string$url
Returns
string Either "local", "remote" if in the farm, "external" otherwise

Definition at line 723 of file MediaWiki.php.

References WikiMap\getWikiFromUrl(), and WikiMap\isCurrentWikiId().

Referenced by getChronProtStrategy().

◆ initializeArticle()

MediaWiki::initializeArticle ( )
private

Initialize the main Article object for "standard" actions (view, etc) Create an Article object for the page, following redirects if needed.

Returns
Article|string An Article, or a string to redirect to another URL

Definition at line 395 of file MediaWiki.php.

References $action, $file, $title, WikiPage\factory(), ContentHandler\getForTitle(), Article\newFromWikiPage(), Hooks\run(), and wfWarn().

Referenced by performRequest().

◆ main()

◆ maybeDoHttpsRedirect()

MediaWiki::maybeDoHttpsRedirect ( )
private

If the stars are suitably aligned, do an HTTP->HTTPS redirect.

Note: Do this after $wgTitle is setup, otherwise the hooks run from isLoggedIn() will do all sorts of weird stuff.

Returns
bool True if the redirect was done. Handling of the request should be aborted. False if no redirect was done.

Definition at line 926 of file MediaWiki.php.

References $title, Title\newFromText(), NS_MAIN, Hooks\run(), shouldDoHttpRedirect(), and wfDebugLog().

Referenced by main().

◆ parseTitle()

MediaWiki::parseTitle ( )
private

Parse the request to get the Title object.

Exceptions
MalformedTitleExceptionIf a title has been provided by the user, but is invalid.
Returns
Title Title object to be $wgTitle

Definition at line 68 of file MediaWiki.php.

References $action, $title, MediaWiki\MediaWikiServices\getInstance(), SpecialPage\getTitleFor(), Title\makeTitle(), Revision\newFromId(), Title\newFromID(), Title\newFromTextThrow(), Title\newFromURL(), Title\newMainPage(), NS_FILE, and NS_MEDIA.

Referenced by getTitle(), and performRequest().

◆ performAction()

MediaWiki::performAction ( Page  $page,
Title  $requestTitle 
)
private

Perform one of the "standard" actions.

Parameters
Page$page
Title$requestTitleThe original title, before any redirects were applied

Definition at line 476 of file MediaWiki.php.

References $action, $title, Action\factory(), getAction(), Title\getCdnUrls(), Profiler\instance(), PROTO_INTERNAL, Hooks\run(), and wfExpandUrl().

Referenced by performRequest().

◆ performRequest()

MediaWiki::performRequest ( )
private

Performs the request.

  • bad titles
  • read restriction
  • local interwiki redirects
  • redirect loop
  • special pages
  • normal pages
Exceptions
MWException|PermissionsError|BadTitleError|HttpError
Returns
void

Definition at line 173 of file MediaWiki.php.

References $title, $wgTitle, MediaWiki\MediaWikiServices\getInstance(), SpecialPage\getTitleFor(), initializeArticle(), parseTitle(), performAction(), Hooks\run(), and tryNormaliseRedirect().

Referenced by main().

◆ preOutputCommit()

static MediaWiki::preOutputCommit ( IContextSource  $context,
callable  $postCommitWork = null 
)
static

This function commits all DB and session changes as needed before the client can receive a response (in case DB commit fails) and thus also before the response can trigger a subsequent related request by the client.

If there is a significant amount of content to flush, it can be done in $postCommitWork

Parameters
IContextSource$context
callable | null$postCommitWork[default: null]
Since
1.27

Definition at line 596 of file MediaWiki.php.

References $config, $context, DeferredUpdates\doUpdates(), Config\get(), getChronProtStrategy(), IContextSource\getConfig(), MediaWiki\MediaWikiServices\getInstance(), IContextSource\getOutput(), IContextSource\getRequest(), MWExceptionHandler\logException(), DeferredUpdates\PRESEND, MessageCache\singleton(), wfDebug(), and wfDebugLog().

Referenced by doPreOutputCommit(), MediaWiki\Rest\EntryPoint\execute(), and ApiMain\executeActionWithErrorHandling().

◆ restInPeace()

MediaWiki::restInPeace (   $mode = 'fast',
  $blocksHttpClient = true 
)

Ends this task peacefully.

Parameters
string$modeUse 'fast' to always skip job running
bool$blocksHttpClientWhether this blocks an HTTP response to a client

Definition at line 968 of file MediaWiki.php.

References DeferredUpdates\doUpdates(), MediaWiki\MediaWikiServices\getInstance(), Profiler\instance(), triggerJobs(), wfDebug(), and wfLogProfilingData().

Referenced by doPostOutputShutdown().

◆ run()

◆ setDBProfilingAgent()

MediaWiki::setDBProfilingAgent ( )
private

Definition at line 567 of file MediaWiki.php.

References MediaWiki\MediaWikiServices\getInstance().

Referenced by run().

◆ shouldDoHttpRedirect()

MediaWiki::shouldDoHttpRedirect ( )
private

Check if an HTTP->HTTPS redirect should be done.

It may still be aborted by a hook, so this is not the final word.

Returns
bool

Definition at line 882 of file MediaWiki.php.

References PROTO_HTTPS, and wfExpandUrl().

Referenced by maybeDoHttpsRedirect().

◆ triggerAsyncJobs()

MediaWiki::triggerAsyncJobs (   $n,
LoggerInterface  $runJobsLogger 
)
private
Parameters
int$nNumber of jobs to try to run
LoggerInterface$runJobsLogger
Returns
bool Success

Definition at line 1092 of file MediaWiki.php.

References MediaWiki\MediaWikiServices\getInstance(), SpecialRunJobs\getQuerySignature(), JobQueueGroup\singleton(), JobQueueGroup\TYPE_DEFAULT, and wfParseUrl().

Referenced by triggerJobs().

◆ triggerJobs()

MediaWiki::triggerJobs ( )

Potentially open a socket and sent an HTTP request back to the server to run a specified number of jobs.

This registers a callback to cleanup the socket once it's done.

Definition at line 1034 of file MediaWiki.php.

References getTitle(), MWExceptionHandler\logException(), triggerAsyncJobs(), triggerSyncJobs(), and wfReadOnly().

Referenced by restInPeace().

◆ triggerSyncJobs()

MediaWiki::triggerSyncJobs (   $n,
LoggerInterface  $runJobsLogger 
)
private
Parameters
int$nNumber of jobs to try to run
LoggerInterface$runJobsLogger

Definition at line 1076 of file MediaWiki.php.

References Profiler\instance().

Referenced by triggerJobs().

◆ tryNormaliseRedirect()

MediaWiki::tryNormaliseRedirect ( Title  $title)
private

Handle redirects for uncanonical title requests.

Handles:

  • Redirect loops.
  • No title in URL.
  • $wgUsePathInfo URLs.
  • URLs with a variant.
  • Other non-standard URLs (as long as they have no extra query parameters).

Behaviour:

  • Normalise title values: /wiki/Foo%20Bar -> /wiki/Foo_Bar
  • Normalise empty title: /wiki/ -> /wiki/Main /w/index.php?title= -> /wiki/Main
  • Don't redirect anything with query parameters other than 'title' or 'action=view'.
Parameters
Title$title
Returns
bool True if a redirect was set.
Exceptions
HttpError

Definition at line 335 of file MediaWiki.php.

References $title, MediaWiki\MediaWikiServices\getInstance(), SpecialPage\getTitleFor(), PROTO_CURRENT, Hooks\run(), and wfExpandUrl().

Referenced by performRequest().

Member Data Documentation

◆ $action

string MediaWiki::$action
private

Cache what action this request is.

Definition at line 48 of file MediaWiki.php.

Referenced by MediaWiki\Permissions\PermissionManager\checkActionPermissions(), MediaWiki\Permissions\PermissionManager\checkCascadingSourcesRestrictions(), MediaWiki\Permissions\PermissionManager\checkPageRestrictions(), MediaWiki\Permissions\PermissionManager\checkPermissionHooks(), MediaWiki\Permissions\PermissionManager\checkQuickPermissions(), MediaWiki\Permissions\PermissionManager\checkReadPermissions(), MediaWiki\Permissions\PermissionManager\checkSiteConfigPermissions(), MediaWiki\Permissions\PermissionManager\checkSpecialsAndNSPermissions(), MediaWiki\Permissions\PermissionManager\checkUserBlock(), MediaWiki\Permissions\PermissionManager\checkUserConfigPermissions(), MediaWiki\Auth\AuthManager\fillRequests(), getAction(), MediaWiki\Auth\AbstractPasswordPrimaryAuthenticationProvider\getAuthenticationRequests(), MediaWiki\Auth\TemporaryPasswordPrimaryAuthenticationProvider\getAuthenticationRequests(), MediaWiki\Auth\AuthManager\getAuthenticationRequests(), MediaWiki\Permissions\PermissionManager\getPermissionErrors(), MediaWiki\Permissions\PermissionManager\getPermissionErrorsInternal(), initializeArticle(), MediaWiki\Rest\BasicAccess\MWBasicRequestAuthorizer\isAllowed(), main(), MediaWiki\Permissions\PermissionManager\missingPermissionError(), parseTitle(), performAction(), MediaWiki\Block\AbstractBlock\prevents(), MediaWiki\Permissions\PermissionManager\quickUserCan(), run(), MediaWiki\Permissions\PermissionManager\userCan(), MediaWiki\Permissions\PermissionManager\userHasAllRights(), MediaWiki\Permissions\PermissionManager\userHasAnyRight(), MediaWiki\Permissions\PermissionManager\userHasRight(), and MediaWiki\Preferences\DefaultPreferencesFactory\watchlistPreferences().

◆ $config

Config MediaWiki::$config
private

Definition at line 43 of file MediaWiki.php.

Referenced by MediaWiki\Auth\Throttler\__construct(), MediaWiki\Widget\CheckMatrixWidget\__construct(), MediaWiki\Widget\DateInputWidget\__construct(), MediaWiki\Widget\DateTimeInputWidget\__construct(), MediaWiki\Widget\NamespaceInputWidget\__construct(), MediaWiki\Widget\NamespacesMultiselectWidget\__construct(), MediaWiki\Widget\PendingTextInputWidget\__construct(), MediaWiki\Widget\SearchInputWidget\__construct(), MediaWiki\Widget\TagMultiselectWidget\__construct(), MediaWiki\Widget\TitleInputWidget\__construct(), MediaWiki\Widget\TitlesMultiselectWidget\__construct(), MediaWiki\Widget\UserInputWidget\__construct(), MediaWiki\Widget\UsersMultiselectWidget\__construct(), MediaWiki\Config\ConfigRepository\add(), MediaWiki\Block\AbstractBlock\appliesToRight(), MediaWiki\Block\AbstractBlock\appliesToUsertalk(), emitBufferedStatsdData(), MediaWiki\Widget\CheckMatrixWidget\getConfig(), MediaWiki\Widget\DateInputWidget\getConfig(), MediaWiki\Widget\DateTimeInputWidget\getConfig(), MediaWiki\Widget\ExpiryInputWidget\getConfig(), MediaWiki\Widget\NamespaceInputWidget\getConfig(), MediaWiki\Widget\NamespacesMultiselectWidget\getConfig(), MediaWiki\Widget\SearchInputWidget\getConfig(), MediaWiki\Widget\TagMultiselectWidget\getConfig(), MediaWiki\Widget\TitleInputWidget\getConfig(), MediaWiki\Widget\TitlesMultiselectWidget\getConfig(), MediaWiki\Widget\UserInputWidget\getConfig(), MediaWiki\Widget\UsersMultiselectWidget\getConfig(), MediaWiki\Config\ConfigRepository\getDescriptionOf(), MediaWiki\Auth\UserDataAuthenticationRequest\getFieldInfo(), MediaWiki\Widget\DateInputWidget\getInputElement(), MediaWiki\Widget\NamespaceInputWidget\getNamespaceDropdownOptions(), MediaWiki\Config\ConfigRepository\getValueOf(), MediaWiki\Auth\TemporaryPasswordAuthenticationRequest\newRandom(), preOutputCommit(), MediaWiki\Block\AbstractBlock\prevents(), and MediaWiki\Block\DatabaseBlock\shouldTrackWithCookie().

◆ $context

IContextSource MediaWiki::$context
private

Definition at line 38 of file MediaWiki.php.

Referenced by __construct(), MediaWiki\Shell\Command\__destruct(), MediaWiki\Special\SpecialPageFactory\capturePath(), MediaWiki\Storage\PageEditStash\checkCache(), MediaWiki\Logger\LogCapturingSpi\createLogger(), MediaWiki\Preferences\DefaultPreferencesFactory\datetimePreferences(), MediaWiki\Logger\LegacyLogger\destination(), MediaWiki\Special\SpecialPageFactory\executePath(), MediaWiki\Logger\Monolog\LogstashFormatter\fixKeyConflicts(), MediaWiki\Logger\LegacyLogger\format(), MediaWiki\Logger\LegacyLogger\formatAsWfDebug(), MediaWiki\Logger\Monolog\LogstashFormatter\formatV0(), MediaWiki\Logger\Monolog\LogstashFormatter\formatV1(), MediaWiki\Preferences\DefaultPreferencesFactory\generateSkinOptions(), MediaWiki\Block\AbstractBlock\getBlockErrorParams(), MediaWiki\Preferences\DefaultPreferencesFactory\getDateOptions(), MediaWiki\Preferences\DefaultPreferencesFactory\getForm(), MediaWiki\Preferences\DefaultPreferencesFactory\getFormDescriptor(), MediaWiki\Block\CompositeBlock\getPermissionsError(), MediaWiki\Preferences\DefaultPreferencesFactory\getTimezoneOptions(), MediaWiki\Logger\LegacyLogger\interpolate(), MediaWiki\Preferences\DefaultPreferencesFactory\loadPreferenceValues(), MediaWiki\Logger\ConsoleLogger\log(), MediaWiki\Logger\LegacyLogger\log(), MediaWiki\Auth\Throttler\logRejection(), Revision\RenderedRevision\outputVariesOnRevisionMetaData(), MediaWiki\Storage\PageEditStash\parseAndCache(), preOutputCommit(), MediaWiki\Preferences\DefaultPreferencesFactory\profilePreferences(), run(), MediaWiki\Logger\LegacyLogger\shouldEmit(), MediaWiki\Preferences\DefaultPreferencesFactory\skinPreferences(), MediaWiki\Preferences\DefaultPreferencesFactory\submitForm(), MediaWiki\Logger\Monolog\KafkaHandler\warning(), and MediaWiki\Preferences\DefaultPreferencesFactory\watchlistPreferences().


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