MediaWiki master
MediaWiki\Block\DatabaseBlockStore Class Reference

Public Member Functions

 __construct (ServiceOptions $options, LoggerInterface $logger, ActorStoreFactory $actorStoreFactory, BlockRestrictionStore $blockRestrictionStore, CommentStore $commentStore, HookContainer $hookContainer, IConnectionProvider $dbProvider, ReadOnlyMode $readOnlyMode, UserFactory $userFactory, TempUserConfig $tempUserConfig, BlockTargetFactory $blockTargetFactory, AutoblockExemptionList $autoblockExemptionList, string|false $wikiId=DatabaseBlock::LOCAL)
 

Public Attributes

const AUTO_ALL = 'all'
 Load all autoblocks.
 
const AUTO_NONE = 'none'
 Do not load autoblocks.
 
const AUTO_SPECIFIED = 'specified'
 Load only autoblocks specified by ID.
 
const CONSTRUCTOR_OPTIONS
 

Database read methods

 newFromID ( $id, $fromPrimary=false, $includeExpired=false)
 Load a block from the block ID.
 
 getQueryInfo ()
 Return the tables, fields, and join conditions to be selected to create a new block object.
 
 getConditionForRanges (array $ranges)
 Get a set of SQL conditions which select range blocks encompassing the given ranges.
 
 getRangeCond ( $start, $end)
 Get a set of SQL conditions which select range blocks encompassing a given range.
 
 newFromRow (IReadableDatabase $db, $row)
 Create a new DatabaseBlock object from a database row.
 
 newFromTarget ( $specificTarget, $vagueTarget=null, $fromPrimary=false, $auto=self::AUTO_ALL)
 Given a target and the target's type, get an existing block object if possible.
 
 newListFromTarget ( $specificTarget, $vagueTarget=null, $fromPrimary=false, $auto=self::AUTO_ALL)
 This is similar to DatabaseBlockStore::newFromTarget, but it returns all the relevant blocks.
 
 newListFromIPs (array $addresses, $applySoftBlocks, $fromPrimary=false)
 Get all blocks that match any IP from an array of IP addresses.
 
 newListFromConds ( $conds, $fromPrimary=false, $includeExpired=false)
 Construct an array of blocks from database conditions.
 

Database write methods

 newUnsaved (array $options)
 Create a DatabaseBlock representing an unsaved block.
 
 purgeExpiredBlocks ()
 Delete expired blocks from the block table.
 
 deleteBlocksMatchingConds (array $conds, $limit=null)
 Delete all blocks matching the given conditions.
 
 insertBlock (DatabaseBlock $block, $expectedTargetCount=0)
 Insert a block into the block table.
 
 insertBlockWithParams (array $params)
 Create a block with an array of parameters and immediately insert it.
 
 updateBlock (DatabaseBlock $block)
 Update a block in the DB with new parameters.
 
 updateTarget (DatabaseBlock $block, $newTarget)
 Update the target in the specified object and in the database.
 
 deleteBlock (DatabaseBlock $block)
 Delete a DatabaseBlock from the database.
 
 doAutoblock (DatabaseBlock $parentBlock, $autoblockIP)
 Autoblocks the given IP, referring to the specified block.
 
 updateTimestamp (DatabaseBlock $block)
 Update the timestamp on autoblocks.
 
 getAutoblockExpiry ( $timestamp, ?string $parentExpiry=null)
 Get the expiry timestamp for an autoblock created at the given time.
 

Detailed Description

Since
1.36
Author
DannyS712

Definition at line 59 of file DatabaseBlockStore.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\Block\DatabaseBlockStore::__construct ( ServiceOptions $options,
LoggerInterface $logger,
ActorStoreFactory $actorStoreFactory,
BlockRestrictionStore $blockRestrictionStore,
CommentStore $commentStore,
HookContainer $hookContainer,
IConnectionProvider $dbProvider,
ReadOnlyMode $readOnlyMode,
UserFactory $userFactory,
TempUserConfig $tempUserConfig,
BlockTargetFactory $blockTargetFactory,
AutoblockExemptionList $autoblockExemptionList,
string|false $wikiId = DatabaseBlock::LOCAL )

Member Function Documentation

◆ deleteBlock()

MediaWiki\Block\DatabaseBlockStore::deleteBlock ( DatabaseBlock $block)

Delete a DatabaseBlock from the database.

Parameters
DatabaseBlock$block
Returns
bool whether it was deleted

Definition at line 1307 of file DatabaseBlockStore.php.

◆ deleteBlocksMatchingConds()

MediaWiki\Block\DatabaseBlockStore::deleteBlocksMatchingConds ( array $conds,
$limit = null )

Delete all blocks matching the given conditions.

Since
1.42
Parameters
array$condsAn associative array mapping the field name to the matched value.
int | null$limitThe maximum number of blocks to delete
Returns
int The number of blocks deleted

Definition at line 699 of file DatabaseBlockStore.php.

◆ doAutoblock()

MediaWiki\Block\DatabaseBlockStore::doAutoblock ( DatabaseBlock $parentBlock,
$autoblockIP )

◆ getAutoblockExpiry()

MediaWiki\Block\DatabaseBlockStore::getAutoblockExpiry ( $timestamp,
?string $parentExpiry = null )

Get the expiry timestamp for an autoblock created at the given time.

If the parent block expiry is specified, the return value will be earlier than or equal to the parent block expiry.

Access: internal
Public to support deprecated DatabaseBlock method
Parameters
string | int$timestamp
string | null$parentExpiry
Returns
string

Definition at line 1643 of file DatabaseBlockStore.php.

References wfTimestamp().

◆ getConditionForRanges()

MediaWiki\Block\DatabaseBlockStore::getConditionForRanges ( array $ranges)

Get a set of SQL conditions which select range blocks encompassing the given ranges.

For each range that is really a single IP (start=end), it will also select single IP blocks with that IP.

Since
1.44
Parameters
string[][]$rangesList of elements with [ start, end ], where start and end are hexadecimal IP representation, and end can be null to use end = start.
Returns
string[] List of conditions to be ORed.

Definition at line 370 of file DatabaseBlockStore.php.

◆ getQueryInfo()

MediaWiki\Block\DatabaseBlockStore::getQueryInfo ( )

Return the tables, fields, and join conditions to be selected to create a new block object.

Since
1.42
Access: internal
Prefer newListFromConds() and deleteBlocksMatchingConds().
Returns
array[] With three keys:
  • tables: (string[]) to include in the $table to IDatabase->select() or SelectQueryBuilder::tables
  • fields: (string[]) to include in the $vars to IDatabase->select() or SelectQueryBuilder::fields
  • joins: (array) to include in the $join_conds to IDatabase->select() or SelectQueryBuilder::joinConds

Definition at line 160 of file DatabaseBlockStore.php.

◆ getRangeCond()

MediaWiki\Block\DatabaseBlockStore::getRangeCond ( $start,
$end )

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

If the given range is a single IP with start=end, it will also select single IP blocks with that IP.

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

Definition at line 414 of file DatabaseBlockStore.php.

◆ insertBlock()

MediaWiki\Block\DatabaseBlockStore::insertBlock ( DatabaseBlock $block,
$expectedTargetCount = 0 )

Insert a block into the block table.

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

Parameters
DatabaseBlock$block
int | null$expectedTargetCountThe expected number of existing blocks on the specified target. If this is zero but there is an existing block, the insertion will fail.
Returns
bool|array False on failure, assoc array on success:
  • id: block ID
  • autoIds: array of autoblock IDs
  • finalTargetCount: The updated number of blocks for the specified target.

Definition at line 853 of file DatabaseBlockStore.php.

References MediaWiki\DAO\WikiAwareEntity\assertWiki(), MediaWiki\Block\DatabaseBlock\getBlocker(), MediaWiki\Block\DatabaseBlock\getId(), MediaWiki\Block\AbstractBlock\getTargetUserIdentity(), and MediaWiki\Block\AbstractBlock\getTimestamp().

◆ insertBlockWithParams()

MediaWiki\Block\DatabaseBlockStore::insertBlockWithParams ( array $params)

Create a block with an array of parameters and immediately insert it.

Throw an exception on failure. This is a convenience method for testing.

Duplicate blocks for a given target are allowed by default.

Since
1.44
Parameters
array$paramsParameters for newUnsaved(), and also:
  • expectedTargetCount: Use this to override conflict checking
Returns
DatabaseBlock The inserted Block

Definition at line 934 of file DatabaseBlockStore.php.

◆ newFromID()

MediaWiki\Block\DatabaseBlockStore::newFromID ( $id,
$fromPrimary = false,
$includeExpired = false )

Load a block from the block ID.

Since
1.42
Parameters
int$idID to search for
bool$fromPrimaryWhether to use the DB_PRIMARY database (since 1.44)
bool$includeExpiredWhether to include expired blocks (since 1.44)
Returns
DatabaseBlock|null

Definition at line 139 of file DatabaseBlockStore.php.

References MediaWiki\Block\DatabaseBlockStore\newListFromConds().

◆ newFromRow()

MediaWiki\Block\DatabaseBlockStore::newFromRow ( IReadableDatabase $db,
$row )

Create a new DatabaseBlock object from a database row.

Since
1.42
Parameters
IReadableDatabase$dbThe database you got the row from
stdClass$rowRow from the block table
Returns
DatabaseBlock

Definition at line 444 of file DatabaseBlockStore.php.

References Wikimedia\Rdbms\Platform\ISQLPlatform\decodeExpiry().

◆ newFromTarget()

MediaWiki\Block\DatabaseBlockStore::newFromTarget ( $specificTarget,
$vagueTarget = null,
$fromPrimary = false,
$auto = self::AUTO_ALL )

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

Since
1.42
Parameters
BlockTarget | string | UserIdentity | int | null$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)
BlockTarget | string | UserIdentity | int | null$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$fromPrimaryWhether to use the DB_PRIMARY database
string$autoSince 1.44. One of the self::AUTO_* constants:
  • AUTO_ALL: always load autoblocks
  • AUTO_SPECIFIED: load only autoblocks specified in the input by ID
  • AUTO_NONE: do not load autoblocks
Returns
DatabaseBlock|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 497 of file DatabaseBlockStore.php.

◆ newListFromConds()

MediaWiki\Block\DatabaseBlockStore::newListFromConds ( $conds,
$fromPrimary = false,
$includeExpired = false )

Construct an array of blocks from database conditions.

Since
1.42
Parameters
array$condsQuery conditions, given as an associative array mapping field names to values.
bool$fromPrimary
bool$includeExpired
Returns
DatabaseBlock[]

Definition at line 606 of file DatabaseBlockStore.php.

Referenced by MediaWiki\Block\DatabaseBlockStore\newFromID().

◆ newListFromIPs()

MediaWiki\Block\DatabaseBlockStore::newListFromIPs ( array $addresses,
$applySoftBlocks,
$fromPrimary = false )

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

Since
1.42
Parameters
string[]$addressesValidated list of IP addresses
bool$applySoftBlocksInclude soft blocks (anonymous-only blocks). These should only block anonymous and temporary users.
bool$fromPrimaryWhether to query the primary or replica DB
Returns
DatabaseBlock[]

Definition at line 556 of file DatabaseBlockStore.php.

References LIST_OR.

◆ newListFromTarget()

MediaWiki\Block\DatabaseBlockStore::newListFromTarget ( $specificTarget,
$vagueTarget = null,
$fromPrimary = false,
$auto = self::AUTO_ALL )

This is similar to DatabaseBlockStore::newFromTarget, but it returns all the relevant blocks.

Since
1.42
Parameters
BlockTarget | string | UserIdentity | int | null$specificTarget
BlockTarget | string | UserIdentity | int | null$vagueTarget
bool$fromPrimary
string$autoSince 1.44. One of the self::AUTO_* constants:
  • AUTO_ALL: always load autoblocks
  • AUTO_SPECIFIED: load only autoblocks specified in the input by ID
  • AUTO_NONE: do not load autoblocks
Returns
DatabaseBlock[] Any relevant blocks

Definition at line 520 of file DatabaseBlockStore.php.

Referenced by MediaWiki\Logging\LogEventsList\getBlockLogWarningBox().

◆ newUnsaved()

MediaWiki\Block\DatabaseBlockStore::newUnsaved ( array $options)

Create a DatabaseBlock representing an unsaved block.

Pass the returned object to insertBlock().

Since
1.44
Parameters
array$optionsOptions as documented in DatabaseBlock and AbstractBlock, and additionally:
  • address: (string) A string specifying the block target. This is not the same as the legacy address parameter which allows UserIdentity.
  • targetUser: (UserIdentity) The UserIdentity to block
Returns
DatabaseBlock

Definition at line 643 of file DatabaseBlockStore.php.

◆ purgeExpiredBlocks()

MediaWiki\Block\DatabaseBlockStore::purgeExpiredBlocks ( )

Delete expired blocks from the block table.

Access: internal
only public for use in DatabaseBlock

Definition at line 666 of file DatabaseBlockStore.php.

References Wikimedia\Rdbms\IReadableDatabase\expr(), Wikimedia\Rdbms\IReadableDatabase\newSelectQueryBuilder(), and Wikimedia\Rdbms\Platform\ISQLPlatform\timestamp().

◆ updateBlock()

MediaWiki\Block\DatabaseBlockStore::updateBlock ( DatabaseBlock $block)

Update a block in the DB with new parameters.

The ID field needs to be loaded first. The target must stay the same.

TODO: remove the possibility of false return. The cases where this happens are exotic enough that they should just be exceptions.

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

Definition at line 1179 of file DatabaseBlockStore.php.

References MediaWiki\DAO\WikiAwareEntity\assertWiki(), MediaWiki\Block\DatabaseBlock\getId(), MediaWiki\Block\DatabaseBlock\getRawRestrictions(), MediaWiki\Block\AbstractBlock\getTimestamp(), MediaWiki\Block\DatabaseBlock\isAutoblocking(), MediaWiki\Block\AbstractBlock\setTimestamp(), and wfTimestamp().

◆ updateTarget()

MediaWiki\Block\DatabaseBlockStore::updateTarget ( DatabaseBlock $block,
$newTarget )

Update the target in the specified object and in the database.

The block ID must be set.

This is an unusual operation, currently used only by the UserMerge extension.

Since
1.42
Parameters
DatabaseBlock$block
BlockTarget | UserIdentity | string$newTarget
Returns
bool True if the update was successful, false if there was no match for the block ID.

Definition at line 1260 of file DatabaseBlockStore.php.

References MediaWiki\Block\DatabaseBlock\getId(), MediaWiki\Block\AbstractBlock\getTarget(), and MediaWiki\Block\AbstractBlock\setTarget().

◆ updateTimestamp()

MediaWiki\Block\DatabaseBlockStore::updateTimestamp ( DatabaseBlock $block)

Member Data Documentation

◆ AUTO_ALL

const MediaWiki\Block\DatabaseBlockStore::AUTO_ALL = 'all'

Load all autoblocks.

Definition at line 61 of file DatabaseBlockStore.php.

◆ AUTO_NONE

const MediaWiki\Block\DatabaseBlockStore::AUTO_NONE = 'none'

Do not load autoblocks.

Definition at line 65 of file DatabaseBlockStore.php.

◆ AUTO_SPECIFIED

const MediaWiki\Block\DatabaseBlockStore::AUTO_SPECIFIED = 'specified'

Load only autoblocks specified by ID.

Definition at line 63 of file DatabaseBlockStore.php.

◆ CONSTRUCTOR_OPTIONS

const MediaWiki\Block\DatabaseBlockStore::CONSTRUCTOR_OPTIONS
Initial value:
= [
]
const UpdateRowsPerQuery
Name constant for the UpdateRowsPerQuery setting, for use with Config::get()
const BlockDisablesLogin
Name constant for the BlockDisablesLogin setting, for use with Config::get()
const AutoblockExpiry
Name constant for the AutoblockExpiry setting, for use with Config::get()
const BlockCIDRLimit
Name constant for the BlockCIDRLimit setting, for use with Config::get()
const PutIPinRC
Name constant for the PutIPinRC setting, for use with Config::get()
Access: internal
For use by ServiceWiring

Definition at line 70 of file DatabaseBlockStore.php.


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