MediaWiki  master
SpecialBlock Class Reference

A special page that allows users with 'block' right to block users from editing pages and other actions. More...

Inheritance diagram for SpecialBlock:
Collaboration diagram for SpecialBlock:

Public Member Functions

 __construct ()
 
 doesWrites ()
 
 onSubmit (array $data, HTMLForm $form=null)
 Process the form on POST submission. More...
 
 onSuccess ()
 Do something exciting on successful processing of the form, most likely to show a confirmation message. More...
 
 prefixSearchSubpages ( $search, $limit, $offset)
 Return an array of subpages beginning with $search that this special page will accept. More...
 
 requiresUnblock ()
 We allow certain special cases where user is blocked. More...
 
- Public Member Functions inherited from FormSpecialPage
 execute ( $par)
 Basic SpecialPage workflow: get a form, send it to the user; get some data back,. More...
 
 onSubmit (array $data)
 Process the form on POST submission. More...
 
 onSuccess ()
 Do something exciting on successful processing of the form, most likely to show a confirmation message. More...
 
 requiresUnblock ()
 Whether this action cannot be executed by a blocked user. More...
 
 requiresWrite ()
 Whether this action requires the wiki not to be locked. More...
 
- Public Member Functions inherited from SpecialPage
 __construct ( $name='', $restriction='', $listed=true, $function=false, $file='', $includable=false)
 Default constructor for special pages Derivative classes should call this from their constructor Note that if the user does not have the required level, an error message will be displayed by the default execute() method, without the global function ever being called. More...
 
 addHelpLink ( $to, $overrideBaseUrl=false)
 Adds help link with an icon via page indicators. More...
 
 checkPermissions ()
 Checks if userCanExecute, and if not throws a PermissionsError. More...
 
 checkReadOnly ()
 If the wiki is currently in readonly mode, throws a ReadOnlyError. More...
 
 displayRestrictionError ()
 Output an error message telling the user what access level they have to have. More...
 
 doesWrites ()
 Indicates whether this special page may perform database writes. More...
 
 execute ( $subPage)
 Default execute method Checks user permissions. More...
 
 getConfig ()
 Shortcut to get main config object. More...
 
 getContext ()
 Gets the context this SpecialPage is executed in. More...
 
 getDescription ()
 Returns the name that goes in the \<h1\> in the special page itself, and also the name that will be listed in Special:Specialpages. More...
 
 getFinalGroupName ()
 Get the group that the special page belongs in on Special:SpecialPage Use this method, instead of getGroupName to allow customization of the group name from the wiki side. More...
 
 getFullTitle ()
 Return the full title, including $par. More...
 
 getLanguage ()
 Shortcut to get user's language. More...
 
 getLinkRenderer ()
 
 getLocalName ()
 Get the localised name of the special page. More...
 
 getName ()
 Get the name of this Special Page. More...
 
 getOutput ()
 Get the OutputPage being used for this instance. More...
 
 getPageTitle ( $subpage=false)
 Get a self-referential title object. More...
 
 getRequest ()
 Get the WebRequest being used for this instance. More...
 
 getRestriction ()
 Get the permission that a user must have to execute this page. More...
 
 getSkin ()
 Shortcut to get the skin being used for this instance. More...
 
 getUser ()
 Shortcut to get the User executing this instance. More...
 
 including ( $x=null)
 Whether the special page is being evaluated via transclusion. More...
 
 isCached ()
 Is this page cached? Expensive pages are cached or disabled in miser mode. More...
 
 isExpensive ()
 Is this page expensive (for some definition of expensive)? Expensive pages are disabled or cached in miser mode. More...
 
 isIncludable ()
 Whether it's allowed to transclude the special page via {{Special:Foo/params}}. More...
 
 isListed ()
 Whether this special page is listed in Special:SpecialPages. More...
 
 isRestricted ()
 Can be overridden by subclasses with more complicated permissions schemes. More...
 
 listed ( $x=null)
 Get or set whether this special page is listed in Special:SpecialPages. More...
 
 maxIncludeCacheTime ()
 How long to cache page when it is being included. More...
 
 msg ( $key)
 Wrapper around wfMessage that sets the current context. More...
 
 outputHeader ( $summaryMessageKey='')
 Outputs a summary message on top of special pages Per default the message key is the canonical name of the special page May be overridden, i.e. More...
 
 prefixSearchSubpages ( $search, $limit, $offset)
 Return an array of subpages beginning with $search that this special page will accept. More...
 
 requireLogin ( $reasonMsg='exception-nologin-text', $titleMsg='exception-nologin')
 If the user is not logged in, throws UserNotLoggedIn error. More...
 
 run ( $subPage)
 Entry point. More...
 
 setContext ( $context)
 Sets the context this SpecialPage is executed in. More...
 
 setHeaders ()
 Sets headers - this should be called from the execute() method of all derived classes! More...
 
 setLinkRenderer (LinkRenderer $linkRenderer)
 
 setListed ( $listed)
 Set whether this page is listed in Special:Specialpages, at run-time. More...
 
 userCanExecute (User $user)
 Checks if the given user (identified by an object) can execute this special page (as defined by $mRestriction). More...
 

Static Public Member Functions

static canBlockEmail ( $user)
 Can we do an email block? More...
 
static checkUnblockSelf ( $target, User $performer)
 T17810: blocked admins should not be able to block/unblock others, and probably shouldn't be able to unblock themselves either. More...
 
static getSuggestedDurations (Language $lang=null, $includeOther=true)
 Get an array of suggested block durations from MediaWiki:Ipboptions. More...
 
static getTargetAndType ( $par, WebRequest $request=null)
 Determine the target of the block, and the type of target. More...
 
static parseExpiryInput ( $expiry)
 Convert a submitted expiry time, which may be relative ("2 weeks", etc) or absolute ("24 May 2034", etc), into an absolute timestamp we can put into the database. More...
 
static processForm (array $data, IContextSource $context)
 Given the form data, actually implement a block. More...
 
static validateTarget ( $value, User $user)
 Validate a block target. More...
 
static validateTargetField ( $value, $alldata, $form)
 HTMLForm field validation-callback for Target field. More...
 
- Static Public Member Functions inherited from SpecialPage
static getSafeTitleFor ( $name, $subpage=false)
 Get a localised Title object for a page name with a possibly unvalidated subpage. More...
 
static getTitleFor ( $name, $subpage=false, $fragment='')
 Get a localised Title object for a specified special page name If you don't need a full Title object, consider using TitleValue through getTitleValueFor() below. More...
 
static getTitleValueFor ( $name, $subpage=false, $fragment='')
 Get a localised TitleValue object for a specified special page name. More...
 

Protected Member Functions

 alterForm (HTMLForm $form)
 Customizes the HTMLForm a bit. More...
 
 checkExecutePermissions (User $user)
 Checks that the user can unblock themselves if they are trying to do so. More...
 
 getDisplayFormat ()
 
 getFormFields ()
 Get the HTMLForm descriptor array for the block form. More...
 
 getGroupName ()
 
 maybeAlterFormDefaults (&$fields)
 If the user has already been blocked with similar settings, load that block and change the defaults for the form fields to match the existing settings. More...
 
 postText ()
 Add footer elements to the form. More...
 
 preText ()
 Add header elements like block log entries, etc. More...
 
 setParameter ( $par)
 Handle some magic here. More...
 
- Protected Member Functions inherited from FormSpecialPage
 alterForm (HTMLForm $form)
 Play with the HTMLForm if you need to more substantially. More...
 
 checkExecutePermissions (User $user)
 Called from execute() to check if the given user can perform this action. More...
 
 getDisplayFormat ()
 Get display format for the form. More...
 
 getForm ()
 Get the HTMLForm to control behavior. More...
 
 getFormFields ()
 Get an HTMLForm descriptor array. More...
 
 getMessagePrefix ()
 Get message prefix for HTMLForm. More...
 
 postText ()
 Add post-text to the form. More...
 
 preText ()
 Add pre-text to the form. More...
 
 setParameter ( $par)
 Maybe do something interesting with the subpage parameter. More...
 
 setReauthPostData (array $data)
 Preserve POST data across reauthentication. More...
 
- Protected Member Functions inherited from SpecialPage
 addFeedLinks ( $params)
 Adds RSS/atom links. More...
 
 afterExecute ( $subPage)
 Gets called after. More...
 
 beforeExecute ( $subPage)
 Gets called before. More...
 
 buildPrevNextNavigation ( $offset, $limit, array $query=[], $atend=false, $subpage=false)
 Generate (prev x| next x) (20|50|100...) type links for paging. More...
 
 checkLoginSecurityLevel ( $level=null)
 Verifies that the user meets the security level, possibly reauthenticating them in the process. More...
 
 getCacheTTL ()
 
 getGroupName ()
 Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-group-*' for valid names This method defaults to group 'other'. More...
 
 getLoginSecurityLevel ()
 Tells if the special page does something security-sensitive and needs extra defense against a stolen account (e.g. More...
 
 getRobotPolicy ()
 Return the robot policy. More...
 
 getSubpagesForPrefixSearch ()
 Return an array of subpages that this special page will accept for prefix searches. More...
 
 prefixSearchString ( $search, $limit, $offset)
 Perform a regular substring search for prefixSearchSubpages. More...
 
 setReauthPostData (array $data)
 Record preserved POST data after a reauthentication. More...
 
 useTransactionalTimeLimit ()
 Call wfTransactionalTimeLimit() if this request was POSTed. More...
 

Static Protected Member Functions

static blockLogFlags (array $data, $type)
 Return a comma-delimited list of "flags" to be passed to the log reader for this block, to provide more information in the logs. More...
 
static getTargetUserTitle ( $target)
 Get a user page target for things like logs. More...
 
- Static Protected Member Functions inherited from SpecialPage
static prefixSearchArray ( $search, $limit, array $subpages, $offset)
 Helper function for implementations of prefixSearchSubpages() that filter the values in memory (as opposed to making a query). More...
 

Protected Attributes

bool $alreadyBlocked
 
array $preErrors = []
 
User string $previousTarget
 The previous block target. More...
 
bool $requestedHideUser
 Whether the previous submission of the form asked for HideUser. More...
 
User string null $target
 User to be blocked, as passed either by parameter (url?wpTarget=Foo) or as subpage (Special:Block/Foo) More...
 
int $type
 DatabaseBlock::TYPE_ constant. More...
 
- Protected Attributes inherited from FormSpecialPage
string null $par = null
 The sub-page of the special page. More...
 
array null $reauthPostData = null
 POST data preserved across re-authentication. More...
 
- Protected Attributes inherited from SpecialPage
IContextSource $mContext
 Current request context. More...
 
 $mIncludable
 
 $mIncluding
 
 $mName
 
 $mRestriction
 

Detailed Description

A special page that allows users with 'block' right to block users from editing pages and other actions.

Definition at line 35 of file SpecialBlock.php.

Constructor & Destructor Documentation

◆ __construct()

SpecialBlock::__construct ( )

Definition at line 55 of file SpecialBlock.php.

Member Function Documentation

◆ alterForm()

◆ blockLogFlags()

static SpecialBlock::blockLogFlags ( array  $data,
  $type 
)
staticprotected

Return a comma-delimited list of "flags" to be passed to the log reader for this block, to provide more information in the logs.

Parameters
array$dataFrom HTMLForm data
int$typeDatabaseBlock::TYPE_ constant (USER, RANGE, or IP)
Returns
string

Definition at line 1172 of file SpecialBlock.php.

References RequestContext\getMain().

◆ canBlockEmail()

static SpecialBlock::canBlockEmail (   $user)
static

Can we do an email block?

Parameters
User$userThe sysop wanting to make a block
Returns
bool

Definition at line 1104 of file SpecialBlock.php.

References $user, $wgEnableUserEmail, and $wgSysopEmailBans.

Referenced by ApiBlock\execute().

◆ checkExecutePermissions()

SpecialBlock::checkExecutePermissions ( User  $user)
protected

Checks that the user can unblock themselves if they are trying to do so.

Parameters
User$user
Exceptions
ErrorPageError

Definition at line 69 of file SpecialBlock.php.

◆ checkUnblockSelf()

static SpecialBlock::checkUnblockSelf (   $target,
User  $performer 
)
static

T17810: blocked admins should not be able to block/unblock others, and probably shouldn't be able to unblock themselves either.

Exception: Users can block the user who blocked them, to reduce advantage of a malicious account blocking all admins (T150826)

Parameters
User | int | string | null$targetTarget to block or unblock; could be a User object, or a user ID or username, or null when the target is not known yet (e.g. when displaying Special:Block)
User$performerUser doing the request
Returns
bool|string True or error message key

Definition at line 1124 of file SpecialBlock.php.

References User\blockedBy(), User\getBlock(), User\getId(), User\getName(), User\isAllowed(), User\newFromId(), and User\newFromName().

Referenced by ApiUnblock\execute(), ApiBlock\execute(), SpecialUnblock\processUnblock(), and SpecialBlockTest\testCheckUnblockSelf().

◆ doesWrites()

SpecialBlock::doesWrites ( )

Definition at line 59 of file SpecialBlock.php.

◆ getDisplayFormat()

SpecialBlock::getDisplayFormat ( )
protected

Definition at line 136 of file SpecialBlock.php.

◆ getFormFields()

SpecialBlock::getFormFields ( )
protected

◆ getGroupName()

SpecialBlock::getGroupName ( )
protected

Definition at line 1260 of file SpecialBlock.php.

◆ getSuggestedDurations()

static SpecialBlock::getSuggestedDurations ( Language  $lang = null,
  $includeOther = true 
)
static

Get an array of suggested block durations from MediaWiki:Ipboptions.

Todo:
FIXME: This uses a rather odd syntax for the options, should it be converted to the standard "**<duration>|<displayname>" format?
Parameters
Language | null$langThe language to get the durations in, or null to use the wiki's content language
bool$includeOtherWhether to include the 'other' option in the list of suggestions
Returns
array

Definition at line 1046 of file SpecialBlock.php.

References $lang, $value, as, list, null, and wfMessage().

Referenced by Language\translateBlockExpiry().

◆ getTargetAndType()

static SpecialBlock::getTargetAndType (   $par,
WebRequest  $request = null 
)
static

Determine the target of the block, and the type of target.

Todo:
Should be in DatabaseBlock.php?
Parameters
string$parSubpage parameter passed to setup, or data value from the HTMLForm
WebRequest | null$requestOptionally try and get data from a request too
Returns
array [ User|string|null, DatabaseBlock::TYPE_ constant|null ] -return array{0:User|string|null,1:int|null}

Definition at line 625 of file SpecialBlock.php.

References FormSpecialPage\$par, $request, $target, $type, list, and null.

Referenced by ApiBlock\execute(), SpecialUnblock\execute(), and SpecialUnblock\processUnblock().

◆ getTargetUserTitle()

static SpecialBlock::getTargetUserTitle (   $target)
staticprotected

Get a user page target for things like logs.

This handles account and IP range targets.

Parameters
User | string$target
Returns
Title|null

Definition at line 606 of file SpecialBlock.php.

References IP\isIPAddress(), Title\makeTitleSafe(), NS_USER, and null.

◆ maybeAlterFormDefaults()

SpecialBlock::maybeAlterFormDefaults ( $fields)
protected

If the user has already been blocked with similar settings, load that block and change the defaults for the form fields to match the existing settings.

Parameters
array&$fieldsHTMLForm descriptor array

Definition at line 324 of file SpecialBlock.php.

References $target, as, SpecialPage\getConfig(), SpecialPage\getName(), SpecialPage\getOutput(), SpecialPage\getRequest(), MediaWiki\Block\DatabaseBlock\getType(), SpecialPage\getUser(), MediaWiki\Block\AbstractBlock\isSitewide(), string, type, wfEscapeWikiText(), and wfTimestamp().

Referenced by getFormFields().

◆ onSubmit()

SpecialBlock::onSubmit ( array  $data,
HTMLForm  $form = null 
)

Process the form on POST submission.

Parameters
array$data
HTMLForm | null$form
Returns
bool|array True for success, false for didn't-try, array of errors on failure

Definition at line 1221 of file SpecialBlock.php.

◆ onSuccess()

SpecialBlock::onSuccess ( )

Do something exciting on successful processing of the form, most likely to show a confirmation message.

Definition at line 1236 of file SpecialBlock.php.

References $out, SpecialPage\getOutput(), SpecialPage\msg(), and wfEscapeWikiText().

◆ parseExpiryInput()

static SpecialBlock::parseExpiryInput (   $expiry)
static

Convert a submitted expiry time, which may be relative ("2 weeks", etc) or absolute ("24 May 2034", etc), into an absolute timestamp we can put into the database.

Todo:
strtotime() only accepts English strings. This means the expiry input can only be specified in English.
See also
https://www.php.net/manual/en/function.strtotime.php
Parameters
string$expiryWhatever was typed into the form
Returns
string|bool Timestamp or 'infinity' or false on error.

Definition at line 1085 of file SpecialBlock.php.

References wfIsInfinity(), and wfTimestamp().

◆ postText()

◆ prefixSearchSubpages()

SpecialBlock::prefixSearchSubpages (   $search,
  $limit,
  $offset 
)

Return an array of subpages beginning with $search that this special page will accept.

Parameters
string$searchPrefix to search for
int$limitMaximum number of results to return (usually 10)
int$offsetNumber of results to skip (usually 0)
Returns
string[] Matching subpages

Definition at line 1250 of file SpecialBlock.php.

References $user, User\newFromName(), and UserNamePrefixSearch\search().

◆ preText()

SpecialBlock::preText ( )
protected

Add header elements like block log entries, etc.

Returns
string

Definition at line 456 of file SpecialBlock.php.

References $link, $s, $target, as, SpecialPage\getConfig(), User\getName(), SpecialPage\getOutput(), SpecialPage\msg(), null, Html\rawElement(), and Hooks\run().

◆ processForm()

◆ requiresUnblock()

SpecialBlock::requiresUnblock ( )

We allow certain special cases where user is blocked.

Returns
bool

Definition at line 83 of file SpecialBlock.php.

◆ setParameter()

SpecialBlock::setParameter (   $par)
protected

Handle some magic here.

Parameters
string$par

Definition at line 92 of file SpecialBlock.php.

References FormSpecialPage\$par, $request, SpecialPage\getRequest(), SpecialPage\getSkin(), list, and type.

◆ validateTarget()

static SpecialBlock::validateTarget (   $value,
User  $user 
)
static

Validate a block target.

Since
1.21
Parameters
string$valueBlock target to check
User$userPerformer of the block
Returns
Status

Definition at line 695 of file SpecialBlock.php.

References $value, $wgBlockCIDRLimit, IP\isIPv4(), IP\isIPv6(), list, StatusValue\newGood(), and wfEscapeWikiText().

Referenced by ApiBlock\execute().

◆ validateTargetField()

static SpecialBlock::validateTargetField (   $value,
  $alldata,
  $form 
)
static

HTMLForm field validation-callback for Target field.

Since
1.18
Parameters
string$value
array$alldata
HTMLForm$form
Returns
Message

Definition at line 676 of file SpecialBlock.php.

References $value.

Member Data Documentation

◆ $alreadyBlocked

bool SpecialBlock::$alreadyBlocked
protected

Definition at line 50 of file SpecialBlock.php.

◆ $preErrors

array SpecialBlock::$preErrors = []
protected

Definition at line 53 of file SpecialBlock.php.

◆ $previousTarget

User string SpecialBlock::$previousTarget
protected

The previous block target.

Definition at line 44 of file SpecialBlock.php.

◆ $requestedHideUser

bool SpecialBlock::$requestedHideUser
protected

Whether the previous submission of the form asked for HideUser.

Definition at line 47 of file SpecialBlock.php.

◆ $target

User string null SpecialBlock::$target
protected

User to be blocked, as passed either by parameter (url?wpTarget=Foo) or as subpage (Special:Block/Foo)

Definition at line 38 of file SpecialBlock.php.

Referenced by getTargetAndType(), maybeAlterFormDefaults(), preText(), and processForm().

◆ $type

int SpecialBlock::$type
protected

DatabaseBlock::TYPE_ constant.

Definition at line 41 of file SpecialBlock.php.

Referenced by getTargetAndType().


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