MediaWiki  1.28.0
SpecialPageFactory Class Reference

Factory for handling the special page list and generating SpecialPage objects. More...

Static Public Member Functions

static capturePath (Title $title, IContextSource $context, LinkRenderer $linkRenderer=null)
 Just like executePath() but will override global variables and execute the page in "inclusion" mode. More...
 
static executePath (Title &$title, IContextSource &$context, $including=false, LinkRenderer $linkRenderer=null)
 Execute a special page path. More...
 
static exists ($name)
 Check if a given name exist as a special page or as a special page alias. More...
 
static getList ()
 Get the special page list as an array. More...
 
static getLocalNameFor ($name, $subpage=false)
 Get the local name for a specified canonical name. More...
 
static getNames ()
 Returns a list of canonical special page names. More...
 
static getPage ($name)
 Find the object with a given name and return it (or NULL) More...
 
static getRegularPages ()
 Return categorised listable special pages for all users. More...
 
static getRestrictedPages (User $user=null)
 Return categorised listable special pages which are available for the current user, but not for everyone. More...
 
static getTitleForAlias ($alias)
 Get a title for a given alias. More...
 
static getUsablePages (User $user=null)
 Return categorised listable special pages which are available for the current user, and everyone. More...
 
static resetList ()
 Reset the internal list of special pages. More...
 
static resolveAlias ($alias)
 Given a special page name with a possible subpage, return an array where the first element is the special page name and the second is the subpage. More...
 

Static Private Member Functions

static getAliasList ()
 Initialise and return the list of special page aliases. More...
 
static getPageList ()
 Get the special page list as an array. More...
 

Static Private Attributes

static $aliases
 
static $coreList
 List of special page names to the subclass of SpecialPage which handles them. More...
 
static static $list
 

Detailed Description

Factory for handling the special page list and generating SpecialPage objects.

To add a special page in an extension, add to $wgSpecialPages either an object instance or an array containing the name and constructor parameters. The latter is preferred for performance reasons.

The object instantiated must be either an instance of SpecialPage or a sub-class thereof. It must have an execute() method, which sends the HTML for the special page to $wgOut. The parent class has an execute() method which distributes the call to the historical global functions. Additionally, execute() also checks if the user has the necessary access privileges and bails out if not.

To add a core special page, use the similar static list in SpecialPageFactory::$list. To remove a core static special page at runtime, use a SpecialPage_initList hook.

Since
1.17

Definition at line 47 of file SpecialPageFactory.php.

Member Function Documentation

static SpecialPageFactory::capturePath ( Title  $title,
IContextSource  $context,
LinkRenderer  $linkRenderer = null 
)
static

Just like executePath() but will override global variables and execute the page in "inclusion" mode.

Returns true if the execution was successful or false if there was no such special page, or a title object if it was a redirect.

Also saves the current $wgTitle, $wgOut, $wgRequest, $wgUser and $wgLang variables so that the special page will get the context it'd expect on a normal request, and then restores them to their previous values after.

Parameters
Title$title
IContextSource$context
LinkRenderer | null$linkRenderer(since 1.28)
Returns
string HTML fragment

Definition at line 596 of file SpecialPageFactory.php.

References $linkRenderer, $ret, $title, $wgLang, $wgOut, $wgRequest, $wgTitle, $wgUser, IContextSource\getLanguage(), RequestContext\getMain(), IContextSource\getOutput(), IContextSource\getRequest(), IContextSource\getUser(), and global.

Referenced by Parser\braceSubstitution().

static SpecialPageFactory::executePath ( Title $title,
IContextSource $context,
  $including = false,
LinkRenderer  $linkRenderer = null 
)
static

Execute a special page path.

The path may contain parameters, e.g. Special:Name/Params Extracts the special page name and call the execute method, passing the parameters

Returns a title object if the page is redirected, false if there was no such special page, and true if it was successful.

Parameters
Title$title
IContextSource$context
bool$includingBool output is being captured for use in {{special:whatever}}
LinkRenderer | null$linkRenderer(since 1.28)
Returns
bool

Definition at line 509 of file SpecialPageFactory.php.

References $linkRenderer, $name, $page, $query, $title, $wgSend404Code, IContextSource\getConfig(), Title\getDBkey(), Title\getFullURL(), IContextSource\getOutput(), IContextSource\getRequest(), global, and Profiler\instance().

Referenced by MediaWiki\performRequest(), and SpecialSearchText\testSubPageRedirect().

static SpecialPageFactory::exists (   $name)
static

Check if a given name exist as a special page or as a special page alias.

Parameters
string$nameName of a special page
Returns
bool True if a special page exists with this name

Definition at line 364 of file SpecialPageFactory.php.

References $name, $title, and list.

Referenced by Title\isAlwaysKnown().

static SpecialPageFactory::getAliasList ( )
staticprivate

Initialise and return the list of special page aliases.

Returns an array where the key is an alias, and the value is the canonical name of the special page. All registered special pages are guaranteed to map to themselves.

Returns
array

Definition at line 279 of file SpecialPageFactory.php.

References $aliases, $name, $wgContLang, as, global, and wfWarn().

static SpecialPageFactory::getList ( )
static

Get the special page list as an array.

Deprecated:
since 1.24, use getNames() instead.
Returns
array

Definition at line 217 of file SpecialPageFactory.php.

References wfDeprecated().

static SpecialPageFactory::getLocalNameFor (   $name,
  $subpage = false 
)
static
static SpecialPageFactory::getNames ( )
static

Returns a list of canonical special page names.

May be used to iterate over all registered special pages.

Returns
string[]

Definition at line 207 of file SpecialPageFactory.php.

Referenced by ApiQuerySiteinfo\appendSpecialPageAliases(), PrefixSearch\specialSearch(), SpecialPageFactoryTest\testGetNames(), SpecialPageFactoryTest\testHookNotCalledTwice(), and SpecialPageFactoryTest\testResetList().

static SpecialPageFactory::getPage (   $name)
static

Find the object with a given name and return it (or NULL)

Parameters
string$nameSpecial page name, may be localised and/or an alias
Returns
SpecialPage|null SpecialPage object or null if the page doesn't exist

Definition at line 377 of file SpecialPageFactory.php.

References $name, $page, ObjectFactory\getObjectFromSpec(), list, wfDeprecated(), and wfLogWarning().

Referenced by Parser\braceSubstitution(), UpdateSpecialPages\execute(), SpecialPageAction\getSpecialPage(), MediaWiki\performRequest(), RevisiondeleteAction\show(), PrefixSearch\specialSearch(), SpecialPageFactoryTest\testGetPage(), and MediaWiki\triggerJobs().

static SpecialPageFactory::getPageList ( )
staticprivate

Get the special page list as an array.

Returns
array

Definition at line 227 of file SpecialPageFactory.php.

References $wgEmailAuthentication, $wgEnableEmail, global, and Hooks\run().

static SpecialPageFactory::getRegularPages ( )
static

Return categorised listable special pages for all users.

Returns
array ( string => Specialpage )

Definition at line 455 of file SpecialPageFactory.php.

References $name, $page, and as.

static SpecialPageFactory::getRestrictedPages ( User  $user = null)
static

Return categorised listable special pages which are available for the current user, but not for everyone.

Parameters
User | null$userUser object to use or null for $wgUser
Returns
array ( string => Specialpage )

Definition at line 474 of file SpecialPageFactory.php.

References $name, $page, $user, $wgUser, as, and global.

static SpecialPageFactory::getTitleForAlias (   $alias)
static

Get a title for a given alias.

Parameters
string$alias
Returns
Title|null Title or null if there is no such alias

Definition at line 709 of file SpecialPageFactory.php.

References $name, SpecialPage\getTitleFor(), and list.

Referenced by SpecialPageFactoryTest\testGetTitleForAlias().

static SpecialPageFactory::getUsablePages ( User  $user = null)
static

Return categorised listable special pages which are available for the current user, and everyone.

Parameters
User$userUser object to check permissions, $wgUser will be used if not provided
Returns
array ( string => Specialpage )

Definition at line 429 of file SpecialPageFactory.php.

References $name, $page, $user, $wgUser, as, RequestContext\getMain(), and global.

Referenced by SpecialSpecialpages\getPageGroups().

static SpecialPageFactory::resolveAlias (   $alias)
static

Given a special page name with a possible subpage, return an array where the first element is the special page name and the second is the subpage.

Parameters
string$alias
Returns
array Array( String, String|null ), or array( null, null ) if the page is invalid

Definition at line 336 of file SpecialPageFactory.php.

References $aliases, $name, $wgContLang, and global.

Referenced by SkinTemplate\buildPersonalUrls(), Title\checkReadPermissions(), Title\fixSpecialName(), OldChangesList\formatChangeLine(), OutputPage\getJSVars(), Skin\getPageClasses(), LogPage\getTitleLink(), Title\isSpecial(), Linker\normaliseSpecialPage(), MediaWiki\performRequest(), CoreParserFunctions\special(), SpecialPageFactoryTest\testConflictResolution(), SpecialPageFactoryTest\testResolveAlias(), and MediaWiki\tryNormaliseRedirect().

Member Data Documentation

SpecialPageFactory::$aliases
staticprivate

Definition at line 190 of file SpecialPageFactory.php.

Referenced by getAliasList(), getLocalNameFor(), and resolveAlias().

SpecialPageFactory::$coreList
staticprivate
Initial value:
= [
'BrokenRedirects' => 'BrokenRedirectsPage'

List of special page names to the subclass of SpecialPage which handles them.

Definition at line 51 of file SpecialPageFactory.php.

static SpecialPageFactory::$list
staticprivate

Definition at line 54 of file SpecialPageFactory.php.


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