MediaWiki REL1_30
Block Class Reference
Collaboration diagram for Block:

Public Member Functions

 __construct ( $options=[])
 Create a new block with specified parameters on a user, IP or IP range.
 
 delete ()
 Delete the row from the IP blocks table.
 
 deleteIfExpired ()
 Check if a block has expired.
 
 doAutoblock ( $autoblockIP)
 Autoblocks the given IP, referring to this Block.
 
 equals (Block $block)
 Check if two blocks are effectively equal.
 
 fromMaster ( $x=null)
 Get/set a flag determining whether the master is used for reads.
 
 getBlocker ()
 Get the user who implemented this block.
 
 getBy ()
 Get the user id of the blocking sysop.
 
 getByName ()
 Get the username of the blocking sysop.
 
 getCookieValue ()
 Get the BlockID cookie's value for this block.
 
 getExpiry ()
 
 getId ()
 Get the block ID.
 
 getPermissionsError (IContextSource $context)
 Get the key and parameters for the corresponding error message.
 
 getRangeEnd ()
 Get the IP address at the end of the range in Hex form.
 
 getRangeStart ()
 Get the IP address at the start of the range in Hex form.
 
 getRedactedName ()
 Get the block name, but with autoblocked IPs hidden as per standard privacy policy.
 
 getSystemBlockType ()
 Get the system block type, if any.
 
 getTarget ()
 Get the target for this particular Block.
 
 getTargetAndType ()
 Get the target and target type for this particular Block.
 
 getType ()
 Get the type of target for this particular block.
 
 insert ( $dbw=null)
 Insert a block into the block table.
 
 isAutoblocking ( $x=null)
 
 isExpired ()
 Has the block expired?
 
 isHardblock ( $x=null)
 Get/set whether the Block is a hardblock (affects logged-in users on a given IP/range)
 
 isValid ()
 Is the block address valid (i.e.
 
 prevents ( $action, $x=null)
 Get/set whether the Block prevents a given action.
 
 setBlocker ( $user)
 Set the user who implemented (or will implement) this block.
 
 setCookie (WebResponse $response)
 Set the 'BlockID' cookie to this block's ID and expiry time.
 
 setTarget ( $target)
 Set the target for this block, and update $this->type accordingly.
 
 update ()
 Update a block in the DB with new parameters.
 
 updateTimestamp ()
 Update the timestamp on autoblocks.
 

Static Public Member Functions

static chooseBlock (array $blocks, array $ipChain)
 From a list of multiple blocks, find the most exact and strongest Block.
 
static clearCookie (WebResponse $response)
 Unset the 'BlockID' cookie.
 
static getAutoblockExpiry ( $timestamp)
 Get a timestamp of the expiry for autoblocks.
 
static getBlocksForIPList (array $ipChain, $isAnon, $fromMaster=false)
 Get all blocks that match any IP from an array of IP addresses.
 
static getIdFromCookieValue ( $cookieValue)
 Get the stored ID from the 'BlockID' cookie.
 
static getRangeCond ( $start, $end=null)
 Get a set of SQL conditions which will select rangeblocks encompassing a given range.
 
static isWhitelistedFromAutoblocks ( $ip)
 Checks whether a given IP is on the autoblock whitelist.
 
static newFromID ( $id)
 Load a blocked user from their block id.
 
static newFromRow ( $row)
 Create a new Block object from a database row.
 
static newFromTarget ( $specificTarget, $vagueTarget=null, $fromMaster=false)
 Given a target and the target's type, get an existing Block object if possible.
 
static parseTarget ( $target)
 From an existing Block, get the target and the type of target.
 
static purgeExpired ()
 Purge expired blocks from the ipblocks table.
 
static selectFields ()
 Return the list of ipblocks fields that should be selected to create a new block.
 

Public Attributes

bool $mAuto
 
string $mExpiry
 
bool $mHideName
 
int $mParentBlockId
 
string $mReason
 
string $mTimestamp
 
const TYPE_AUTO = 4
 
const TYPE_ID = 5
 
const TYPE_IP = 2
 
const TYPE_RANGE = 3
 
const TYPE_USER = 1
 

Protected Member Functions

 doRetroactiveAutoblock ()
 Retroactively autoblocks the last IP used by the user (if it is a user) blocked by this Block.
 
 getAutoblockUpdateArray (IDatabase $dbw)
 
 getDatabaseArray (IDatabase $dbw)
 Get an array suitable for passing to $dbw->insert() or $dbw->update()
 
 initFromRow ( $row)
 Given a database row from the ipblocks table, initialize member variables.
 
 newLoad ( $vagueTarget=null)
 Load a block from the database which affects the already-set $this->target: 1) A block directly on the given user or IP 2) A rangeblock encompassing the given IP (smallest first) 3) An autoblock on the given IP.
 

Static Protected Member Functions

static defaultRetroactiveAutoblock (Block $block, array &$blockIds)
 Retroactively autoblocks the last IP used by the user (if it is a user) blocked by this Block.
 
static getIpFragment ( $hex)
 Get the component of an IP address which is certain to be the same between an IP address and a rangeblock containing that IP address.
 

Private Attributes

User $blocker
 
int $forcedTargetID
 Hack for foreign blocking (CentralAuth)
 
bool $isAutoblocking
 
bool $isHardblock
 
bool $mBlockEmail
 
bool $mCreateAccount
 
bool $mDisableUsertalk
 
bool $mFromMaster
 
int $mId
 
string null $systemBlockType
 
User string $target
 
int $type
 Block::TYPE_ constant.
 

Detailed Description

Definition at line 27 of file Block.php.

Constructor & Destructor Documentation

◆ __construct()

Block::__construct ( $options = [])

Create a new block with specified parameters on a user, IP or IP range.

Parameters
array$optionsParameters of the block: address string|User Target user name, User object, IP address or IP range user int Override target user ID (for foreign users) by int User ID of the blocker reason string Reason of the block timestamp string The time at which the block comes into effect auto bool Is this an automatic block? expiry string Timestamp of expiration of the block or 'infinity' anonOnly bool Only disallow anonymous actions createAccount bool Disallow creation of new accounts enableAutoblock bool Enable automatic blocking hideName bool Hide the target user name blockEmail bool Disallow sending emails allowUsertalk bool Allow the target to edit its own talk page byText string Username of the blocker (for foreign users) systemBlock string Indicate that this block is automatically created by MediaWiki rather than being stored in the database. Value is a string to return from self::getSystemBlockType().
Since
1.26 accepts $options array instead of individual parameters; order of parameters above reflects the original order

Definition at line 115 of file Block.php.

References $options, DB_REPLICA, isAutoblocking(), isHardblock(), prevents(), setBlocker(), setTarget(), wfDeprecated(), wfGetDB(), and wfTimestamp().

Member Function Documentation

◆ chooseBlock()

static Block::chooseBlock ( array $blocks,
array $ipChain )
static

From a list of multiple blocks, find the most exact and strongest Block.

The logic for finding the "best" block is:

  • Blocks that match the block's target IP are preferred over ones in a range
  • Hardblocks are chosen over softblocks that prevent account creation
  • Softblocks that prevent account creation are chosen over other softblocks
  • Other softblocks are chosen over autoblocks
  • If there are multiple exact or range blocks at the same level, the one chosen is random This should be used when $blocks where retrieved from the user's IP address and $ipChain is populated from the same IP address information.
Parameters
array$blocksArray of Block objects
array$ipChainList of IPs (strings). This is used to determine how "close" a block is to the server, and if a block matches exactly, or is in a range. The order is furthest from the server to nearest e.g., (Browser, proxy1, proxy2, local-squid, ...)
Exceptions
MWException
Returns
Block|null The "best" block from the list

Definition at line 1232 of file Block.php.

References false.

Referenced by User\getBlockedStatus(), and BlockTest\testBlocksOnXff().

◆ clearCookie()

static Block::clearCookie ( WebResponse $response)
static

Unset the 'BlockID' cookie.

Since
1.29
Parameters
WebResponse$responseThe response on which to unset the cookie.

Definition at line 1481 of file Block.php.

References $response.

Referenced by User\getBlockFromCookieValue().

◆ defaultRetroactiveAutoblock()

static Block::defaultRetroactiveAutoblock ( Block $block,
array & $blockIds )
staticprotected

Retroactively autoblocks the last IP used by the user (if it is a user) blocked by this Block.

This will use the recentchanges table.

Parameters
Block$block
array&$blockIds

Definition at line 666 of file Block.php.

References $dbr, $options, $res, $wgPutIPinRC, DB_REPLICA, doAutoblock(), getTarget(), string, wfDebug(), and wfGetDB().

Referenced by doRetroactiveAutoblock().

◆ delete()

Block::delete ( )

Delete the row from the IP blocks table.

Exceptions
MWException
Returns
bool

Definition at line 453 of file Block.php.

References DB_MASTER, getId(), wfGetDB(), and wfReadOnly().

◆ deleteIfExpired()

Block::deleteIfExpired ( )

Check if a block has expired.

Delete it if it is.

Returns
bool

Definition at line 830 of file Block.php.

References isExpired(), and wfDebug().

◆ doAutoblock()

Block::doAutoblock ( $autoblockIP)

Autoblocks the given IP, referring to this Block.

Parameters
string$autoblockIPThe IP to autoblock.
Returns
int|bool Block ID if an autoblock was inserted, false if not.

Definition at line 753 of file Block.php.

References $mHideName, $mId, getAutoblockExpiry(), getBlocker(), getSystemBlockType(), getTarget(), isAutoblocking(), newFromTarget(), prevents(), wfDebug(), wfMessage(), and wfTimestampNow().

Referenced by defaultRetroactiveAutoblock(), and BlockTest\testSystemBlocks().

◆ doRetroactiveAutoblock()

Block::doRetroactiveAutoblock ( )
protected

Retroactively autoblocks the last IP used by the user (if it is a user) blocked by this Block.

Returns
array Block IDs of retroactive autoblocks made

Definition at line 643 of file Block.php.

References defaultRetroactiveAutoblock(), getTarget(), getType(), isAutoblocking(), and wfDebug().

Referenced by insert(), and update().

◆ equals()

Block::equals ( Block $block)

Check if two blocks are effectively equal.

Doesn't check irrelevant things like the blocking user or the block timestamp, only things which affect the blocked user

Parameters
Block$block
Returns
bool

Definition at line 233 of file Block.php.

References isAutoblocking(), isHardblock(), and prevents().

◆ fromMaster()

Block::fromMaster ( $x = null)

Get/set a flag determining whether the master is used for reads.

Parameters
bool | null$x
Returns
bool

Definition at line 973 of file Block.php.

References wfSetVar().

◆ getAutoblockExpiry()

static Block::getAutoblockExpiry ( $timestamp)
static

Get a timestamp of the expiry for autoblocks.

Parameters
string | int$timestamp
Returns
string

Definition at line 1065 of file Block.php.

References $wgAutoblockExpiry, and wfTimestamp().

Referenced by doAutoblock(), and updateTimestamp().

◆ getAutoblockUpdateArray()

Block::getAutoblockUpdateArray ( IDatabase $dbw)
protected
Parameters
IDatabase$dbw
Returns
array

Definition at line 627 of file Block.php.

References getBy(), getByName(), CommentStore\newKey(), and prevents().

Referenced by update().

◆ getBlocker()

Block::getBlocker ( )

Get the user who implemented this block.

Returns
User|string Local User object or string for a foreign user

Definition at line 1437 of file Block.php.

References $blocker.

Referenced by doAutoblock(), getBy(), getByName(), getPermissionsError(), and BlockTest\testCrappyCrossWikiBlocks().

◆ getBlocksForIPList()

static Block::getBlocksForIPList ( array $ipChain,
$isAnon,
$fromMaster = false )
static

Get all blocks that match any IP from an array of IP addresses.

Parameters
array$ipChainList of IPs (strings), usually retrieved from the X-Forwarded-For header of the request
bool$isAnonExclude anonymous-only blocks if false
bool$fromMasterWhether to query the master or replica DB
Returns
array Array of Blocks
Since
1.22

Definition at line 1151 of file Block.php.

References $rows, DB_MASTER, DB_REPLICA, getRangeCond(), LIST_OR, newFromRow(), and wfGetDB().

Referenced by User\getBlockedStatus(), and BlockTest\testBlocksOnXff().

◆ getBy()

Block::getBy ( )

Get the user id of the blocking sysop.

Returns
int (0 for foreign users)

Definition at line 931 of file Block.php.

References $blocker, getBlocker(), and User\getId().

Referenced by getAutoblockUpdateArray(), ApiQueryUserInfo\getBlockInfo(), getDatabaseArray(), and BlockTest\testCrappyCrossWikiBlocks().

◆ getByName()

Block::getByName ( )

Get the username of the blocking sysop.

Returns
string

Definition at line 943 of file Block.php.

References $blocker, getBlocker(), User\getName(), and string.

Referenced by getAutoblockUpdateArray(), ApiQueryUserInfo\getBlockInfo(), getDatabaseArray(), getPermissionsError(), and BlockTest\testCrappyCrossWikiBlocks().

◆ getCookieValue()

Block::getCookieValue ( )

Get the BlockID cookie's value for this block.

This is usually the block ID concatenated with an HMAC in order to avoid spoofing (T152951), but if wgSecretKey is not set will just be the block ID.

Since
1.29
Returns
string The block ID, probably concatenated with "!" and the HMAC.

Definition at line 1494 of file Block.php.

References getId(), RequestContext\getMain(), and MWCryptHash\hmac().

Referenced by setCookie().

◆ getDatabaseArray()

Block::getDatabaseArray ( IDatabase $dbw)
protected

Get an array suitable for passing to $dbw->insert() or $dbw->update()

Parameters
IDatabase$dbw
Returns
array

Definition at line 592 of file Block.php.

References $forcedTargetID, $mAuto, $mParentBlockId, Wikimedia\Rdbms\IDatabase\encodeExpiry(), getBy(), getByName(), User\getId(), getRangeEnd(), getRangeStart(), isAutoblocking(), isHardblock(), CommentStore\newKey(), prevents(), string, and Wikimedia\Rdbms\IDatabase\timestamp().

Referenced by insert(), and update().

◆ getExpiry()

Block::getExpiry ( )
Since
1.19
Returns
mixed|string

Definition at line 1421 of file Block.php.

References $mExpiry.

Referenced by ApiQueryUserInfo\getBlockInfo(), and setCookie().

◆ getId()

Block::getId ( )

Get the block ID.

Returns
int

Definition at line 954 of file Block.php.

References $mId.

Referenced by delete(), ApiQueryUserInfo\getBlockInfo(), getCookieValue(), getPermissionsError(), and update().

◆ getIdFromCookieValue()

static Block::getIdFromCookieValue ( $cookieValue)
static

Get the stored ID from the 'BlockID' cookie.

The cookie's value is usually a combination of the ID and a HMAC (see Block::setCookie), but will sometimes only be the ID.

Since
1.29
Parameters
string$cookieValueThe string in which to find the ID.
Returns
int|null The block ID, or null if the HMAC is present and invalid.

Definition at line 1517 of file Block.php.

References false, RequestContext\getMain(), and MWCryptHash\hmac().

Referenced by User\getBlockFromCookieValue(), and UserTest\testAutoblockCookies().

◆ getIpFragment()

static Block::getIpFragment ( $hex)
staticprotected

Get the component of an IP address which is certain to be the same between an IP address and a rangeblock containing that IP address.

Parameters
string$hexHexadecimal IP representation
Returns
string

Definition at line 393 of file Block.php.

References $wgBlockCIDRLimit.

Referenced by getRangeCond().

◆ getPermissionsError()

Block::getPermissionsError ( IContextSource $context)

Get the key and parameters for the corresponding error message.

Since
1.22
Parameters
IContextSource$context
Returns
array

Definition at line 1544 of file Block.php.

References $blocker, $context, $lang, $link, $mReason, $systemBlockType, getBlocker(), getByName(), getId(), IContextSource\getLanguage(), getSystemBlockType(), getTarget(), User\getUserPage(), and string.

Referenced by UserBlockedError\__construct().

◆ getRangeCond()

static Block::getRangeCond ( $start,
$end = null )
static

Get a set of SQL conditions which will select rangeblocks encompassing a given range.

Parameters
string$startHexadecimal IP representation
string$endHexadecimal IP representation, or null to use $start = $end
Returns
string

Definition at line 360 of file Block.php.

References $dbr, DB_REPLICA, getIpFragment(), LIST_AND, and wfGetDB().

Referenced by SpecialBlockList\getBlockListPager(), getBlocksForIPList(), and newLoad().

◆ getRangeEnd()

Block::getRangeEnd ( )

Get the IP address at the end of the range in Hex form.

Exceptions
MWException
Returns
string IP in Hex form

Definition at line 912 of file Block.php.

References list, type, TYPE_IP, TYPE_RANGE, and TYPE_USER.

Referenced by getDatabaseArray().

◆ getRangeStart()

Block::getRangeStart ( )

Get the IP address at the start of the range in Hex form.

Exceptions
MWException
Returns
string IP in Hex form

Definition at line 893 of file Block.php.

References list, type, TYPE_IP, TYPE_RANGE, and TYPE_USER.

Referenced by getDatabaseArray().

◆ getRedactedName()

Block::getRedactedName ( )

Get the block name, but with autoblocked IPs hidden as per standard privacy policy.

Returns
string Text is escaped

Definition at line 1047 of file Block.php.

References getTarget(), and wfMessage().

◆ getSystemBlockType()

Block::getSystemBlockType ( )

Get the system block type, if any.

Since
1.29
Returns
string|null

Definition at line 963 of file Block.php.

References $systemBlockType.

Referenced by doAutoblock(), ApiQueryUserInfo\getBlockInfo(), getPermissionsError(), insert(), and BlockTest\testSystemBlocks().

◆ getTarget()

Block::getTarget ( )

Get the target for this particular Block.

Note that for autoblocks, this returns the unredacted name; frontend functions need to call $block->getRedactedName() in this situation.

Returns
User|string

Definition at line 1412 of file Block.php.

References $target.

Referenced by defaultRetroactiveAutoblock(), doAutoblock(), doRetroactiveAutoblock(), getPermissionsError(), getRedactedName(), getTargetAndType(), isValid(), BlockTest\testCrappyCrossWikiBlocks(), and BlockTest\testDeprecatedConstructor().

◆ getTargetAndType()

Block::getTargetAndType ( )

Get the target and target type for this particular Block.

Note that for autoblocks, this returns the unredacted name; frontend functions need to call $block->getRedactedName() in this situation.

Returns
array [ User|String, Block::TYPE_ constant ]
Todo
FIXME: This should be an integral part of the Block member variables

Definition at line 1402 of file Block.php.

References getTarget(), and getType().

◆ getType()

Block::getType ( )

Get the type of target for this particular block.

Returns
int Block::TYPE_ constant, will never be TYPE_ID

Definition at line 1389 of file Block.php.

References $type, and TYPE_AUTO.

Referenced by ApiBase\dieBlocked(), doRetroactiveAutoblock(), getTargetAndType(), isAutoblocking(), and isHardblock().

◆ initFromRow()

Block::initFromRow ( $row)
protected

Given a database row from the ipblocks table, initialize member variables.

Parameters
stdClass$rowA row from the ipblocks table

Definition at line 407 of file Block.php.

References DB_REPLICA, isAutoblocking(), isHardblock(), CommentStore\newKey(), prevents(), setBlocker(), setTarget(), wfGetDB(), and wfTimestamp().

Referenced by newFromRow(), and newLoad().

◆ insert()

Block::insert ( $dbw = null)

Insert a block into the block table.

Will fail if there is a conflicting block (same name and options) already in the database.

Parameters
IDatabase$dbwIf you have one available
Returns
bool|array False on failure, assoc array on success: ('id' => block ID, 'autoIds' => array of autoblock IDs)

Definition at line 477 of file Block.php.

References $mId, $wgBlockDisablesLogin, DB_MASTER, doRetroactiveAutoblock(), getDatabaseArray(), getSystemBlockType(), purgeExpired(), wfDebug(), and wfGetDB().

Referenced by BlockTest\addXffBlocks(), BlockTest\testBlockedUserCanNotCreateAccount(), BlockTest\testCrappyCrossWikiBlocks(), BlockTest\testDeprecatedConstructor(), and BlockTest\testSystemBlocks().

◆ isAutoblocking()

Block::isAutoblocking ( $x = null)
Parameters
null | bool$x
Returns
bool

Definition at line 995 of file Block.php.

References getType(), isAutoblocking(), and wfSetVar().

Referenced by __construct(), BlockTest\addXffBlocks(), doAutoblock(), doRetroactiveAutoblock(), equals(), getDatabaseArray(), initFromRow(), isAutoblocking(), and update().

◆ isExpired()

Block::isExpired ( )

Has the block expired?

Returns
bool

Definition at line 847 of file Block.php.

References $mExpiry, wfDebug(), and wfTimestampNow().

Referenced by deleteIfExpired().

◆ isHardblock()

Block::isHardblock ( $x = null)

Get/set whether the Block is a hardblock (affects logged-in users on a given IP/range)

Parameters
bool | null$x
Returns
bool

Definition at line 982 of file Block.php.

References $isHardblock, getType(), isHardblock(), true, and wfSetVar().

Referenced by __construct(), BlockTest\addXffBlocks(), equals(), getDatabaseArray(), initFromRow(), and isHardblock().

◆ isValid()

Block::isValid ( )

Is the block address valid (i.e.

not a null string?)

Returns
bool

Definition at line 862 of file Block.php.

References getTarget().

◆ isWhitelistedFromAutoblocks()

static Block::isWhitelistedFromAutoblocks ( $ip)
static

Checks whether a given IP is on the autoblock whitelist.

TODO: this probably belongs somewhere else, but not sure where...

Parameters
string$ipThe IP to check
Returns
bool

Definition at line 707 of file Block.php.

References $cache, $line, $lines, DB_REPLICA, function, plain, wfDebug(), wfGetDB(), and wfMessage().

◆ newFromID()

static Block::newFromID ( $id)
static

Load a blocked user from their block id.

Parameters
int$idBlock id to search for
Returns
Block|null

Definition at line 184 of file Block.php.

References $dbr, $res, DB_REPLICA, newFromRow(), and wfGetDB().

Referenced by User\getBlockFromCookieValue(), newFromTarget(), BlockTest\testCrappyCrossWikiBlocks(), and BlockTest\testINewFromIDReturnsCorrectBlock().

◆ newFromRow()

static Block::newFromRow ( $row)
static

Create a new Block object from a database row.

Parameters
stdClass$rowRow from the ipblocks table
Returns
Block

Definition at line 441 of file Block.php.

References initFromRow().

Referenced by CleanupBlocks\execute(), getBlocksForIPList(), newFromID(), and newLoad().

◆ newFromTarget()

static Block::newFromTarget ( $specificTarget,
$vagueTarget = null,
$fromMaster = false )
static

Given a target and the target's type, get an existing Block object if possible.

Parameters
string | User | int$specificTargetA block target, which may be one of several types:
  • A user to block, in which case $target will be a User
  • An IP to block, in which case $target will be a User generated by using User::newFromName( $ip, false ) to turn off name validation
  • An IP range, in which case $target will be a String "123.123.123.123/18" etc
  • The ID of an existing block, in the format "#12345" (since pure numbers are valid usernames Calling this with a user, IP address or range will not select autoblocks, and will only select a block where the targets match exactly (so looking for blocks on 1.2.3.4 will not select 1.2.0.0/16 or even 1.2.3.4/32)
string | User | int$vagueTargetAs above, but we will search for any block which affects that target (so for an IP address, get ranges containing that IP; and also get any relevant autoblocks). Leave empty or blank to skip IP-based lookups.
bool$fromMasterWhether to use the DB_MASTER database
Returns
Block|null (null if no relevant block could be found). The target and type of the returned Block will refer to the actual block which was found, which might not be the same as the target you gave if you used $vagueTarget!

Definition at line 1112 of file Block.php.

References $target, $type, list, newFromID(), and parseTarget().

Referenced by BlockTest\addDBData(), SpecialContributions\contributionsSub(), doAutoblock(), SpecialUnblock\execute(), ApiBlock\execute(), ApiUnblock\execute(), User\getBlockedStatus(), Article\getRobotPolicy(), DeletedContributionsPage\getSubTitle(), User\isBlockedFromCreateAccount(), SpecialBlock\maybeAlterFormDefaults(), SpecialBlock\processForm(), EditPage\showIntro(), Article\showMissingArticle(), User\spreadBlock(), ApiBlockTest\tearDown(), BlockTest\testBlockedUserCanNotCreateAccount(), BlockTest\testBug29116NewFromTargetWithEmptyIp(), BlockTest\testCrappyCrossWikiBlocks(), BlockTest\testDeprecatedConstructor(), BlockTest\testINewFromTargetReturnsCorrectBlock(), ApiBlockTest\testMakeNormalBlock(), and ApiBlockTest\testMakeNormalBlockId().

◆ newLoad()

Block::newLoad ( $vagueTarget = null)
protected

Load a block from the database which affects the already-set $this->target: 1) A block directly on the given user or IP 2) A rangeblock encompassing the given IP (smallest first) 3) An autoblock on the given IP.

Parameters
User | string$vagueTargetAlso search for blocks affecting this target. Doesn't make any sense to use TYPE_AUTO / TYPE_ID here. Leave blank to skip IP lookups.
Exceptions
MWException
Returns
bool Whether a relevant block was found

Definition at line 259 of file Block.php.

References $res, $target, $type, DB_MASTER, DB_REPLICA, getRangeCond(), initFromRow(), list, LIST_OR, newFromRow(), parseTarget(), prevents(), string, type, TYPE_IP, TYPE_RANGE, TYPE_USER, and wfGetDB().

◆ parseTarget()

static Block::parseTarget ( $target)
static

From an existing Block, get the target and the type of target.

Note that, except for null, it is always safe to treat the target as a string; for User objects this will return User::__toString() which in turn gives User::getName().

Parameters
string | int | User | null$target
Returns
array [ User|String|null, Block::TYPE_ constant|null ]

Definition at line 1334 of file Block.php.

References $target, User\getName(), TYPE_AUTO, TYPE_IP, TYPE_RANGE, and TYPE_USER.

Referenced by BlockListPager\formatValue(), SpecialBlockList\getBlockListPager(), SpecialBlock\getTargetAndType(), newFromTarget(), newLoad(), SpecialBlock\setParameter(), and setTarget().

◆ prevents()

Block::prevents ( $action,
$x = null )

Get/set whether the Block prevents a given action.

Parameters
string$actionAction to check
bool | null$xValue for set, or null to just get value
Returns
bool|null Null for unrecognized rights.

Definition at line 1012 of file Block.php.

References $res, $wgBlockDisablesLogin, User\isAllowed(), and wfSetVar().

Referenced by __construct(), BlockTest\addXffBlocks(), doAutoblock(), equals(), getAutoblockUpdateArray(), getDatabaseArray(), initFromRow(), User\isBlockedFromCreateAccount(), newLoad(), BlockTest\testBlockedUserCanNotCreateAccount(), and BlockTest\testDeprecatedConstructor().

◆ purgeExpired()

static Block::purgeExpired ( )
static

Purge expired blocks from the ipblocks table.

Definition at line 1074 of file Block.php.

References $fname, Wikimedia\Rdbms\IDatabase\addQuotes(), DB_MASTER, Wikimedia\Rdbms\IDatabase\delete(), Wikimedia\Rdbms\IDatabase\timestamp(), wfGetDB(), and wfReadOnly().

Referenced by insert().

◆ selectFields()

static Block::selectFields ( )
static

Return the list of ipblocks fields that should be selected to create a new block.

Todo
Deprecate this in favor of a method that returns tables and joins as well, and use CommentStore::getJoin().
Returns
array

Definition at line 206 of file Block.php.

References CommentStore\newKey().

◆ setBlocker()

Block::setBlocker ( $user)

Set the user who implemented (or will implement) this block.

Parameters
User | string$userLocal User object or username string for foreign users

Definition at line 1445 of file Block.php.

References $user.

Referenced by __construct(), BlockTest\addXffBlocks(), and initFromRow().

◆ setCookie()

Block::setCookie ( WebResponse $response)

Set the 'BlockID' cookie to this block's ID and expiry time.

The cookie's expiry will be the same as the block's, to a maximum of 24 hours.

Since
1.29
Parameters
WebResponse$responseThe response on which to set the cookie.

Definition at line 1457 of file Block.php.

References $expiryTime, false, getCookieValue(), getExpiry(), WebResponse\setCookie(), and wfTimestamp().

◆ setTarget()

Block::setTarget ( $target)

Set the target for this block, and update $this->type accordingly.

Parameters
mixed$target

Definition at line 1429 of file Block.php.

References list, parseTarget(), and type.

Referenced by __construct(), BlockTest\addXffBlocks(), and initFromRow().

◆ update()

Block::update ( )

Update a block in the DB with new parameters.

The ID field needs to be loaded first.

Returns
bool|array False on failure, array on success: ('id' => block ID, 'autoIds' => array of autoblock IDs)

Definition at line 545 of file Block.php.

References $mId, DB_MASTER, doRetroactiveAutoblock(), getAutoblockUpdateArray(), getDatabaseArray(), getId(), isAutoblocking(), wfDebug(), and wfGetDB().

◆ updateTimestamp()

Block::updateTimestamp ( )

Update the timestamp on autoblocks.

Definition at line 869 of file Block.php.

References DB_MASTER, getAutoblockExpiry(), wfGetDB(), and wfTimestamp().

Member Data Documentation

◆ $blocker

User Block::$blocker
private

Definition at line 71 of file Block.php.

Referenced by getBlocker(), getBy(), getByName(), and getPermissionsError().

◆ $forcedTargetID

int Block::$forcedTargetID
private

Hack for foreign blocking (CentralAuth)

Definition at line 65 of file Block.php.

Referenced by getDatabaseArray().

◆ $isAutoblocking

bool Block::$isAutoblocking
private

Definition at line 77 of file Block.php.

◆ $isHardblock

bool Block::$isHardblock
private

Definition at line 74 of file Block.php.

Referenced by isHardblock().

◆ $mAuto

bool Block::$mAuto

Definition at line 35 of file Block.php.

Referenced by getDatabaseArray().

◆ $mBlockEmail

bool Block::$mBlockEmail
private

Definition at line 53 of file Block.php.

◆ $mCreateAccount

bool Block::$mCreateAccount
private

Definition at line 59 of file Block.php.

◆ $mDisableUsertalk

bool Block::$mDisableUsertalk
private

Definition at line 56 of file Block.php.

◆ $mExpiry

string Block::$mExpiry

Definition at line 38 of file Block.php.

Referenced by getExpiry(), and isExpired().

◆ $mFromMaster

bool Block::$mFromMaster
private

Definition at line 50 of file Block.php.

◆ $mHideName

bool Block::$mHideName

Definition at line 41 of file Block.php.

Referenced by doAutoblock().

◆ $mId

int Block::$mId
private

Definition at line 47 of file Block.php.

Referenced by doAutoblock(), getId(), insert(), and update().

◆ $mParentBlockId

int Block::$mParentBlockId

Definition at line 44 of file Block.php.

Referenced by getDatabaseArray().

◆ $mReason

string Block::$mReason

Definition at line 29 of file Block.php.

Referenced by getPermissionsError().

◆ $mTimestamp

string Block::$mTimestamp

Definition at line 32 of file Block.php.

◆ $systemBlockType

string null Block::$systemBlockType
private

Definition at line 80 of file Block.php.

Referenced by getPermissionsError(), and getSystemBlockType().

◆ $target

User string Block::$target
private

Definition at line 62 of file Block.php.

Referenced by getTarget(), newFromTarget(), newLoad(), and parseTarget().

◆ $type

int Block::$type
private

Block::TYPE_ constant.

Can only be USER, IP or RANGE internally

Definition at line 68 of file Block.php.

Referenced by getType(), newFromTarget(), and newLoad().

◆ TYPE_AUTO

◆ TYPE_ID

const Block::TYPE_ID = 5

Definition at line 87 of file Block.php.

Referenced by SpecialUnblock\execute(), and SpecialBlockList\getBlockListPager().

◆ TYPE_IP

◆ TYPE_RANGE

◆ TYPE_USER


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