From e65a5b58821873fdfdd15a4de6c1590fbea9a5fd Mon Sep 17 00:00:00 2001 From: Thalia Date: Mon, 13 May 2019 15:18:07 +0100 Subject: [PATCH] Rename Block to MediaWiki\Block\DatabaseBlock Keep Block as a deprecated class alias for DatabaseBlock. Update calls to the Block constructor and Block static methods from external classes. Also update documentation in several places that refer to blocks as Blocks. Bug: T222737 Change-Id: I6d96b63ca0a84bee19486471e0a16a53a79d768a --- RELEASE-NOTES-1.34 | 7 +- autoload.php | 2 +- includes/EditPage.php | 5 +- includes/api/ApiBase.php | 3 +- includes/api/ApiBlock.php | 8 +- includes/api/ApiUnblock.php | 6 +- includes/auth/AuthManager.php | 3 +- ...kBlocksSecondaryAuthenticationProvider.php | 3 +- includes/block/AbstractBlock.php | 33 ++-- includes/block/BlockManager.php | 45 +++--- includes/block/BlockRestrictionStore.php | 4 +- .../{Block.php => block/DatabaseBlock.php} | 116 ++++++++------ .../Restriction/NamespaceRestriction.php | 2 +- .../block/Restriction/PageRestriction.php | 2 +- includes/page/Article.php | 7 +- includes/specials/SpecialBlock.php | 51 +++--- includes/specials/SpecialBlockList.php | 16 +- includes/specials/SpecialContributions.php | 14 +- .../specials/SpecialDeletedContributions.php | 7 +- includes/specials/SpecialUnblock.php | 34 ++-- includes/specials/pagers/BlockListPager.php | 9 +- includes/user/User.php | 9 +- maintenance/cleanupBlocks.php | 8 +- .../Permissions/PermissionManagerTest.php | 18 +-- .../phpunit/includes/TitlePermissionTest.php | 9 +- tests/phpunit/includes/actions/ActionTest.php | 3 +- tests/phpunit/includes/api/ApiBaseTest.php | 5 +- .../includes/api/ApiBlockInfoTraitTest.php | 5 +- tests/phpunit/includes/api/ApiBlockTest.php | 9 +- .../phpunit/includes/api/ApiEditPageTest.php | 8 +- tests/phpunit/includes/api/ApiMoveTest.php | 8 +- .../includes/api/ApiQueryBlocksTest.php | 7 +- .../phpunit/includes/api/ApiQueryInfoTest.php | 4 +- .../includes/api/ApiQueryUserInfoTest.php | 6 +- tests/phpunit/includes/api/ApiUnblockTest.php | 18 ++- .../includes/api/ApiUserrightsTest.php | 6 +- .../phpunit/includes/auth/AuthManagerTest.php | 7 +- ...cksSecondaryAuthenticationProviderTest.php | 7 +- .../includes/block/BlockManagerTest.php | 3 +- .../block/BlockRestrictionStoreTest.php | 3 +- .../DatabaseBlockTest.php} | 148 +++++++++--------- .../specialpage/FormSpecialPageTestCase.php | 7 +- .../includes/specials/SpecialBlockTest.php | 27 ++-- .../specials/pagers/BlockListPagerTest.php | 3 +- .../includes/user/LocalIdLookupTest.php | 6 +- .../includes/user/PasswordResetTest.php | 5 +- tests/phpunit/includes/user/UserTest.php | 47 +++--- 47 files changed, 422 insertions(+), 341 deletions(-) rename includes/{Block.php => block/DatabaseBlock.php} (94%) rename tests/phpunit/includes/{BlockTest.php => block/DatabaseBlockTest.php} (85%) diff --git a/RELEASE-NOTES-1.34 b/RELEASE-NOTES-1.34 index 7ad34fe9b9..0a9db22ef7 100644 --- a/RELEASE-NOTES-1.34 +++ b/RELEASE-NOTES-1.34 @@ -222,9 +222,10 @@ because of Phabricator reports. * The getSubjectPage, getTalkPage, and getOtherPage of Title are deprecated. Use NamespaceInfo's getSubjectPage, getTalkPage, and getAssociatedPage. * MWMessagePack class, no longer used, has been deprecated in 1.34. -* The Block class is separated into Block (for blocks stored in the database), - and SystemBlock (for temporary blocks created by the system). SystemBlock - should be used when creating any temporary blocks. +* The Block class is separated into DatabaseBlock (for blocks stored in the + database), and SystemBlock (for temporary blocks created by the system). + SystemBlock should be used when creating any temporary blocks. Block is + a deprecated alias for DatabaseBlock. * Parser::$mConf is deprecated. It will be removed entirely in a later version. Some context can be found at T224165. * Constructing Parser directly is deprecated. Obtain one from ParserFactory. diff --git a/autoload.php b/autoload.php index 486239d8cd..a289aaf7b1 100644 --- a/autoload.php +++ b/autoload.php @@ -208,7 +208,7 @@ $wgAutoloadLocalClasses = [ 'BitmapHandler_ClientOnly' => __DIR__ . '/includes/media/BitmapHandler_ClientOnly.php', 'BitmapMetadataHandler' => __DIR__ . '/includes/media/BitmapMetadataHandler.php', 'Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php', - 'Block' => __DIR__ . '/includes/Block.php', + 'Block' => __DIR__ . '/includes/block/DatabaseBlock.php', 'BlockLevelPass' => __DIR__ . '/includes/parser/BlockLevelPass.php', 'BlockListPager' => __DIR__ . '/includes/specials/pagers/BlockListPager.php', 'BlockLogFormatter' => __DIR__ . '/includes/logging/BlockLogFormatter.php', diff --git a/includes/EditPage.php b/includes/EditPage.php index 47a8b5b87f..a42e2432b3 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -20,6 +20,7 @@ * @file */ +use MediaWiki\Block\DatabaseBlock; use MediaWiki\EditPage\TextboxBuilder; use MediaWiki\EditPage\TextConflictHelper; use MediaWiki\Logger\LoggerFactory; @@ -2622,13 +2623,13 @@ ERROR; $username = explode( '/', $this->mTitle->getText(), 2 )[0]; $user = User::newFromName( $username, false /* allow IP users */ ); $ip = User::isIP( $username ); - $block = Block::newFromTarget( $user, $user ); + $block = DatabaseBlock::newFromTarget( $user, $user ); if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist $out->wrapWikiMsg( "
\n$1\n
", [ 'userpage-userdoesnotexist', wfEscapeWikiText( $username ) ] ); } elseif ( !is_null( $block ) && - $block->getType() != Block::TYPE_AUTO && + $block->getType() != DatabaseBlock::TYPE_AUTO && ( $block->isSitewide() || $user->isBlockedFrom( $this->mTitle ) ) ) { // Show log extract if the user is sitewide blocked or is partially diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php index 7cb2dbff41..dd1a6db08a 100644 --- a/includes/api/ApiBase.php +++ b/includes/api/ApiBase.php @@ -21,6 +21,7 @@ */ use MediaWiki\Block\AbstractBlock; +use MediaWiki\Block\DatabaseBlock; use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\IDatabase; @@ -2034,7 +2035,7 @@ abstract class ApiBase extends ContextSource { */ public function dieBlocked( AbstractBlock $block ) { // Die using the appropriate message depending on block type - if ( $block->getType() == Block::TYPE_AUTO ) { + if ( $block->getType() == DatabaseBlock::TYPE_AUTO ) { $this->dieWithError( 'apierror-autoblocked', 'autoblocked', diff --git a/includes/api/ApiBlock.php b/includes/api/ApiBlock.php index f7c2bcef01..c71de40f08 100644 --- a/includes/api/ApiBlock.php +++ b/includes/api/ApiBlock.php @@ -20,6 +20,8 @@ * @file */ +use MediaWiki\Block\DatabaseBlock; + /** * API module that facilitates the blocking of users. Requires API write mode * to be enabled. @@ -82,7 +84,7 @@ class ApiBlock extends ApiBase { // T40633 - if the target is a user (not an IP address), but it // doesn't exist or is unusable, error. - if ( $type === Block::TYPE_USER && + if ( $type === DatabaseBlock::TYPE_USER && ( $target->isAnon() /* doesn't exist */ || !User::isUsableName( $params['user'] ) ) ) { $this->dieWithError( [ 'nosuchusershort', $params['user'] ], 'nosuchuser' ); @@ -136,8 +138,8 @@ class ApiBlock extends ApiBase { $res['user'] = $params['user']; $res['userID'] = $target instanceof User ? $target->getId() : 0; - $block = Block::newFromTarget( $target, null, true ); - if ( $block instanceof Block ) { + $block = DatabaseBlock::newFromTarget( $target, null, true ); + if ( $block instanceof DatabaseBlock ) { $res['expiry'] = ApiResult::formatExpiry( $block->getExpiry(), 'infinite' ); $res['id'] = $block->getId(); } else { diff --git a/includes/api/ApiUnblock.php b/includes/api/ApiUnblock.php index 1c72b67280..5cef194f36 100644 --- a/includes/api/ApiUnblock.php +++ b/includes/api/ApiUnblock.php @@ -20,6 +20,8 @@ * @file */ +use MediaWiki\Block\DatabaseBlock; + /** * API module that facilitates the unblocking of users. Requires API write mode * to be enabled. @@ -78,14 +80,14 @@ class ApiUnblock extends ApiBase { 'Reason' => $params['reason'], 'Tags' => $params['tags'] ]; - $block = Block::newFromTarget( $data['Target'] ); + $block = DatabaseBlock::newFromTarget( $data['Target'] ); $retval = SpecialUnblock::processUnblock( $data, $this->getContext() ); if ( $retval !== true ) { $this->dieStatus( $this->errorArrayToStatus( $retval ) ); } $res['id'] = $block->getId(); - $target = $block->getType() == Block::TYPE_AUTO ? '' : $block->getTarget(); + $target = $block->getType() == DatabaseBlock::TYPE_AUTO ? '' : $block->getTarget(); $res['user'] = $target instanceof User ? $target->getName() : $target; $res['userid'] = $target instanceof User ? $target->getId() : 0; $res['reason'] = $params['reason']; diff --git a/includes/auth/AuthManager.php b/includes/auth/AuthManager.php index 5915d35c96..e03c5901bf 100644 --- a/includes/auth/AuthManager.php +++ b/includes/auth/AuthManager.php @@ -24,6 +24,7 @@ namespace MediaWiki\Auth; use Config; +use MediaWiki\Block\DatabaseBlock; use MediaWiki\MediaWikiServices; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; @@ -1010,7 +1011,7 @@ class AuthManager implements LoggerAwareInterface { $block->getByName() ]; - if ( $block->getType() === \Block::TYPE_RANGE ) { + if ( $block->getType() === DatabaseBlock::TYPE_RANGE ) { $errorMessage = 'cantcreateaccount-range-text'; $errorParams[] = $this->getRequest()->getIP(); } else { diff --git a/includes/auth/CheckBlocksSecondaryAuthenticationProvider.php b/includes/auth/CheckBlocksSecondaryAuthenticationProvider.php index 3e260974b6..92b06a4e7d 100644 --- a/includes/auth/CheckBlocksSecondaryAuthenticationProvider.php +++ b/includes/auth/CheckBlocksSecondaryAuthenticationProvider.php @@ -22,6 +22,7 @@ namespace MediaWiki\Auth; use Config; +use MediaWiki\Block\DatabaseBlock; use StatusValue; /** @@ -95,7 +96,7 @@ class CheckBlocksSecondaryAuthenticationProvider extends AbstractSecondaryAuthen $block->getByName() ]; - if ( $block->getType() === \Block::TYPE_RANGE ) { + if ( $block->getType() === DatabaseBlock::TYPE_RANGE ) { $errorMessage = 'cantcreateaccount-range-text'; $errorParams[] = $this->manager->getRequest()->getIP(); } else { diff --git a/includes/block/AbstractBlock.php b/includes/block/AbstractBlock.php index a931d7a711..fb49dfcf72 100644 --- a/includes/block/AbstractBlock.php +++ b/includes/block/AbstractBlock.php @@ -28,7 +28,7 @@ use Title; use User; /** - * @since 1.34 Factored out from Block. + * @since 1.34 Factored out from DatabaseBlock (previously Block). */ abstract class AbstractBlock { /** @var string */ @@ -56,7 +56,7 @@ abstract class AbstractBlock { protected $target; /** - * @var int Block::TYPE_ constant. After the block has been loaded + * @var int AbstractBlock::TYPE_ constant. After the block has been loaded * from the database, this can only be USER, IP or RANGE. */ protected $type; @@ -228,9 +228,9 @@ abstract class AbstractBlock { } /** - * Determine whether the Block prevents a given right. A right + * Determine whether the block prevents a given right. A right * may be blacklisted or whitelisted, or determined from a - * property on the Block object. For certain rights, the property + * property on the block object. For certain rights, the property * may be overridden according to global configs. * * @since 1.33 @@ -275,7 +275,7 @@ abstract class AbstractBlock { } /** - * Get/set whether the Block prevents a given action + * Get/set whether the block prevents a given action * * @deprecated since 1.33, use appliesToRight to determine block * behaviour, and specific methods to get/set properties @@ -335,13 +335,13 @@ abstract class AbstractBlock { } /** - * From an existing Block, get the target and the type of target. + * 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(). * * @param string|int|User|null $target - * @return array [ User|String|null, Block::TYPE_ constant|null ] + * @return array [ User|String|null, AbstractBlock::TYPE_ constant|null ] */ public static function parseTarget( $target ) { # We may have been through this before @@ -395,25 +395,25 @@ abstract class AbstractBlock { /** * Get the type of target for this particular block. - * @return int Block::TYPE_ constant, will never be TYPE_ID + * @return int AbstractBlock::TYPE_ constant, will never be TYPE_ID */ public function getType() { return $this->type; } /** - * Get the target and target type for this particular Block. Note that for autoblocks, + * 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. - * @return array [ User|String, Block::TYPE_ constant ] - * @todo FIXME: This should be an integral part of the Block member variables + * @return array [ User|String, AbstractBlock::TYPE_ constant ] + * @todo FIXME: This should be an integral part of the block member variables */ public function getTargetAndType() { return [ $this->getTarget(), $this->getType() ]; } /** - * Get the target for this particular Block. Note that for autoblocks, + * 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. * @return User|string @@ -547,10 +547,11 @@ abstract class AbstractBlock { /** * Determine whether the block allows the user to edit their own - * user talk page. This is done separately from Block::appliesToRight - * because there is no right for editing one's own user talk page - * and because the user's talk page needs to be passed into the - * Block object, which is unaware of the user. + * user talk page. This is done separately from + * AbstractBlock::appliesToRight because there is no right for + * editing one's own user talk page and because the user's talk + * page needs to be passed into the block object, which is unaware + * of the user. * * The ipb_allow_usertalk flag (which corresponds to the property * allowUsertalk) is used on sitewide blocks and partial blocks diff --git a/includes/block/BlockManager.php b/includes/block/BlockManager.php index 9823b3c950..8d2fe0c8cd 100644 --- a/includes/block/BlockManager.php +++ b/includes/block/BlockManager.php @@ -20,7 +20,6 @@ namespace MediaWiki\Block; -use Block; use IP; use MediaWiki\User\UserIdentity; use User; @@ -120,7 +119,7 @@ class BlockManager { // we should not look for XFF or cookie blocks. $request = $user->getRequest(); - # We only need to worry about passing the IP address to the Block generator if the + # We only need to worry about passing the IP address to the block generator if the # user is not immune to autoblocks/hardblocks, and they are the current user so we # know which IP address they're actually coming from $ip = null; @@ -135,8 +134,8 @@ class BlockManager { } // User/IP blocking - // TODO: remove dependency on Block - $block = Block::newFromTarget( $user, $ip, !$fromReplica ); + // TODO: remove dependency on DatabaseBlock + $block = DatabaseBlock::newFromTarget( $user, $ip, !$fromReplica ); // Cookie blocking if ( !$block instanceof AbstractBlock ) { @@ -175,10 +174,10 @@ class BlockManager { $xff = $request->getHeader( 'X-Forwarded-For' ); $xff = array_map( 'trim', explode( ',', $xff ) ); $xff = array_diff( $xff, [ $ip ] ); - // TODO: remove dependency on Block - $xffblocks = Block::getBlocksForIPList( $xff, $isAnon, !$fromReplica ); - // TODO: remove dependency on Block - $block = Block::chooseBlock( $xffblocks, $xff ); + // TODO: remove dependency on DatabaseBlock + $xffblocks = DatabaseBlock::getBlocksForIPList( $xff, $isAnon, !$fromReplica ); + // TODO: remove dependency on DatabaseBlock + $block = DatabaseBlock::chooseBlock( $xffblocks, $xff ); if ( $block instanceof AbstractBlock ) { # Mangle the reason to alert the user that the block # originated from matching the X-Forwarded-For header. @@ -204,11 +203,11 @@ class BlockManager { } /** - * Try to load a Block from an ID given in a cookie value. + * Try to load a block from an ID given in a cookie value. * * @param UserIdentity $user * @param WebRequest $request - * @return Block|bool The Block object, or false if none could be loaded. + * @return DatabaseBlock|bool The block object, or false if none could be loaded. */ private function getBlockFromCookieValue( UserIdentity $user, @@ -221,21 +220,21 @@ class BlockManager { if ( strlen( $blockCookieVal ) < 1 || !is_numeric( substr( $blockCookieVal, 0, 1 ) ) ) { return false; } - // Load the Block from the ID in the cookie. - // TODO: remove dependency on Block - $blockCookieId = Block::getIdFromCookieValue( $blockCookieVal ); + // Load the block from the ID in the cookie. + // TODO: remove dependency on DatabaseBlock + $blockCookieId = DatabaseBlock::getIdFromCookieValue( $blockCookieVal ); if ( $blockCookieId !== null ) { // An ID was found in the cookie. - // TODO: remove dependency on Block - $tmpBlock = Block::newFromID( $blockCookieId ); - if ( $tmpBlock instanceof Block ) { + // TODO: remove dependency on DatabaseBlock + $tmpBlock = DatabaseBlock::newFromID( $blockCookieId ); + if ( $tmpBlock instanceof DatabaseBlock ) { switch ( $tmpBlock->getType() ) { - case Block::TYPE_USER: + case DatabaseBlock::TYPE_USER: $blockIsValid = !$tmpBlock->isExpired() && $tmpBlock->isAutoblocking(); $useBlockCookie = ( $this->cookieSetOnAutoblock === true ); break; - case Block::TYPE_IP: - case Block::TYPE_RANGE: + case DatabaseBlock::TYPE_IP: + case DatabaseBlock::TYPE_RANGE: // If block is type IP or IP range, load only if user is not logged in (T152462) $blockIsValid = !$tmpBlock->isExpired() && $user->getId() === 0; $useBlockCookie = ( $this->cookieSetOnIpBlock === true ); @@ -251,12 +250,12 @@ class BlockManager { } // If the block is not valid, remove the cookie. - // TODO: remove dependency on Block - Block::clearCookie( $response ); + // TODO: remove dependency on DatabaseBlock + DatabaseBlock::clearCookie( $response ); } else { // If the block doesn't exist, remove the cookie. - // TODO: remove dependency on Block - Block::clearCookie( $response ); + // TODO: remove dependency on DatabaseBlock + DatabaseBlock::clearCookie( $response ); } } return false; diff --git a/includes/block/BlockRestrictionStore.php b/includes/block/BlockRestrictionStore.php index d242c87e2d..88c0951b03 100644 --- a/includes/block/BlockRestrictionStore.php +++ b/includes/block/BlockRestrictionStore.php @@ -251,7 +251,7 @@ class BlockRestrictionStore { } /** - * Delete the restrictions by Block ID. + * Delete the restrictions by block ID. * * @since 1.33 * @param int|array $blockId @@ -268,7 +268,7 @@ class BlockRestrictionStore { } /** - * Delete the restrictions by Parent Block ID. + * Delete the restrictions by parent block ID. * * @since 1.33 * @param int|array $parentBlockId diff --git a/includes/Block.php b/includes/block/DatabaseBlock.php similarity index 94% rename from includes/Block.php rename to includes/block/DatabaseBlock.php index 0f5e8dd316..6d9dd13c21 100644 --- a/includes/Block.php +++ b/includes/block/DatabaseBlock.php @@ -20,22 +20,41 @@ * @file */ -use Wikimedia\Rdbms\Database; -use Wikimedia\Rdbms\IDatabase; -use MediaWiki\Block\AbstractBlock; -use MediaWiki\Block\BlockRestrictionStore; -use MediaWiki\Block\Restriction\Restriction; +namespace MediaWiki\Block; + +use ActorMigration; +use AutoCommitUpdate; +use BadMethodCallException; +use CommentStore; +use DateTime; +use DeferredUpdates; +use Hooks; +use Html; +use IContextSource; +use IP; use MediaWiki\Block\Restriction\NamespaceRestriction; use MediaWiki\Block\Restriction\PageRestriction; +use MediaWiki\Block\Restriction\Restriction; use MediaWiki\MediaWikiServices; +use MWCryptHash; +use MWException; +use RequestContext; +use stdClass; +use Title; +use User; +use WebResponse; +use Wikimedia\Rdbms\Database; +use Wikimedia\Rdbms\IDatabase; /** - * Blocks (as opposed to system blocks) are stored in the database, may - * give rise to autoblocks and may be tracked with cookies. Blocks are - * more customizable than system blocks: they may be hardblocks, and + * A DatabaseBlock (unlike a SystemBlock) is stored in the database, may + * give rise to autoblocks and may be tracked with cookies. Such blocks + * are more customizable than system blocks: they may be hardblocks, and * they may be sitewide or partial. + * + * @since 1.34 Renamed from Block. */ -class Block extends AbstractBlock { +class DatabaseBlock extends AbstractBlock { /** @var bool */ public $mAuto; @@ -120,8 +139,8 @@ class Block extends AbstractBlock { /** * Load a block from the block id. * - * @param int $id Block id to search for - * @return Block|null + * @param int $id id to search for + * @return DatabaseBlock|null */ public static function newFromID( $id ) { $dbr = wfGetDB( DB_REPLICA ); @@ -219,11 +238,10 @@ class Block extends AbstractBlock { * 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 * - * @param Block $block - * + * @param DatabaseBlock $block * @return bool */ - public function equals( Block $block ) { + public function equals( DatabaseBlock $block ) { return ( (string)$this->target == (string)$block->target && $this->type == $block->type @@ -237,8 +255,8 @@ class Block extends AbstractBlock { && $this->isUsertalkEditAllowed() == $block->isUsertalkEditAllowed() && $this->getReason() == $block->getReason() && $this->isSitewide() == $block->isSitewide() - // Block::getRestrictions() may perform a database query, so keep it at - // the end. + // DatabaseBlock::getRestrictions() may perform a database query, so + // keep it at the end. && $this->getBlockRestrictionStore()->equals( $this->getRestrictions(), $block->getRestrictions() ) @@ -432,12 +450,12 @@ class Block extends AbstractBlock { } /** - * Create a new Block object from a database row + * Create a new DatabaseBlock object from a database row * @param stdClass $row Row from the ipblocks table - * @return Block + * @return DatabaseBlock */ public static function newFromRow( $row ) { - $block = new Block; + $block = new DatabaseBlock; $block->initFromRow( $row ); return $block; } @@ -454,7 +472,9 @@ class Block extends AbstractBlock { } if ( !$this->getId() ) { - throw new MWException( "Block::delete() requires that the mId member be filled\n" ); + throw new MWException( + __METHOD__ . " requires that the mId member be filled\n" + ); } $dbw = wfGetDB( DB_MASTER ); @@ -483,7 +503,7 @@ class Block extends AbstractBlock { throw new MWException( 'Cannot insert a block without a blocker set' ); } - wfDebug( "Block::insert; timestamp {$this->mTimestamp}\n" ); + wfDebug( __METHOD__ . "; timestamp {$this->mTimestamp}\n" ); if ( $dbw === null ) { $dbw = wfGetDB( DB_MASTER ); @@ -551,7 +571,7 @@ class Block extends AbstractBlock { * ('id' => block ID, 'autoIds' => array of autoblock IDs) */ public function update() { - wfDebug( "Block::update; timestamp {$this->mTimestamp}\n" ); + wfDebug( __METHOD__ . "; timestamp {$this->mTimestamp}\n" ); $dbw = wfGetDB( DB_MASTER ); $dbw->startAtomic( __METHOD__ ); @@ -660,9 +680,9 @@ class Block extends AbstractBlock { /** * Retroactively autoblocks the last IP used by the user (if it is a user) - * blocked by this Block. + * blocked by this block. * - * @return array Block IDs of retroactive autoblocks made + * @return array IDs of retroactive autoblocks made */ protected function doRetroactiveAutoblock() { $blockIds = []; @@ -682,12 +702,12 @@ class Block extends AbstractBlock { /** * Retroactively autoblocks the last IP used by the user (if it is a user) - * blocked by this Block. This will use the recentchanges table. + * blocked by this block. This will use the recentchanges table. * - * @param Block $block + * @param DatabaseBlock $block * @param array &$blockIds */ - protected static function defaultRetroactiveAutoblock( Block $block, array &$blockIds ) { + protected static function defaultRetroactiveAutoblock( DatabaseBlock $block, array &$blockIds ) { global $wgPutIPinRC; // No IPs are in recentchanges table, so nothing to select @@ -781,10 +801,10 @@ class Block extends AbstractBlock { } /** - * Autoblocks the given IP, referring to this Block. + * Autoblocks the given IP, referring to this block. * * @param string $autoblockIP The IP to autoblock. - * @return int|bool Block ID if an autoblock was inserted, false if not. + * @return int|bool ID if an autoblock was inserted, false if not. */ public function doAutoblock( $autoblockIP ) { # If autoblocks are disabled, go away. @@ -823,7 +843,7 @@ class Block extends AbstractBlock { } # Make a new block object with the desired properties. - $autoblock = new Block; + $autoblock = new DatabaseBlock; wfDebug( "Autoblocking {$this->getTarget()}@" . $autoblockIP . "\n" ); $autoblock->setTarget( $autoblockIP ); $autoblock->setBlocker( $this->getBlocker() ); @@ -864,11 +884,11 @@ class Block extends AbstractBlock { */ public function deleteIfExpired() { if ( $this->isExpired() ) { - wfDebug( "Block::deleteIfExpired() -- deleting\n" ); + wfDebug( __METHOD__ . " -- deleting\n" ); $this->delete(); $retVal = true; } else { - wfDebug( "Block::deleteIfExpired() -- not expired\n" ); + wfDebug( __METHOD__ . " -- not expired\n" ); $retVal = false; } @@ -881,7 +901,7 @@ class Block extends AbstractBlock { */ public function isExpired() { $timestamp = wfTimestampNow(); - wfDebug( "Block::isExpired() checking current " . $timestamp . " vs $this->mExpiry\n" ); + wfDebug( __METHOD__ . " checking current " . $timestamp . " vs $this->mExpiry\n" ); if ( !$this->getExpiry() ) { return false; @@ -997,7 +1017,7 @@ class Block extends AbstractBlock { } /** - * Get/set whether the Block is a hardblock (affects logged-in users on a given IP/range) + * Get/set whether the block is a hardblock (affects logged-in users on a given IP/range) * @param bool|null $x * @return bool */ @@ -1080,7 +1100,7 @@ class Block extends AbstractBlock { } /** - * Given a target and the target's type, get an existing Block object if possible. + * Given a target and the target's type, get an existing block object if possible. * @param string|User|int $specificTarget A 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 @@ -1095,8 +1115,8 @@ class Block extends AbstractBlock { * 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. * @param bool $fromMaster Whether to use the DB_MASTER database - * @return 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 + * @return 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! */ public static function newFromTarget( $specificTarget, $vagueTarget = null, $fromMaster = false ) { @@ -1114,7 +1134,7 @@ class Block extends AbstractBlock { $type, [ self::TYPE_USER, self::TYPE_IP, self::TYPE_RANGE, null ] ) ) { - $block = new Block(); + $block = new DatabaseBlock(); $block->fromMaster( $fromMaster ); if ( $type !== null ) { @@ -1199,7 +1219,7 @@ class Block extends AbstractBlock { } /** - * From a list of multiple blocks, find the most exact and strongest Block. + * 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 @@ -1211,13 +1231,13 @@ class Block extends AbstractBlock { * This should be used when $blocks were retrieved from the user's IP address * and $ipChain is populated from the same IP address information. * - * @param array $blocks Array of Block objects + * @param array $blocks Array of DatabaseBlock objects * @param array $ipChain List 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-cdn, ...) * @throws MWException - * @return Block|null The "best" block from the list + * @return DatabaseBlock|null The "best" block from the list */ public static function chooseBlock( array $blocks, array $ipChain ) { if ( $blocks === [] ) { @@ -1228,7 +1248,7 @@ class Block extends AbstractBlock { // Sort hard blocks before soft ones and secondarily sort blocks // that disable account creation before those that don't. - usort( $blocks, function ( Block $a, Block $b ) { + usort( $blocks, function ( DatabaseBlock $a, DatabaseBlock $b ) { $aWeight = (int)$a->isHardblock() . (int)$a->appliesToRight( 'createaccount' ); $bWeight = (int)$b->isHardblock() . (int)$b->appliesToRight( 'createaccount' ); return strcmp( $bWeight, $aWeight ); // highest weight first @@ -1248,7 +1268,6 @@ class Block extends AbstractBlock { ]; $ipChain = array_reverse( $ipChain ); - /** @var Block $block */ foreach ( $blocks as $block ) { // Stop searching if we have already have a "better" block. This // is why the order of the blocks matters @@ -1270,7 +1289,7 @@ class Block extends AbstractBlock { } else { $blocksListExact['other'] = $blocksListExact['other'] ?: $block; } - // We found closest exact match in the ip list, so go to the next Block + // We found closest exact match in the ip list, so go to the next block break; } elseif ( array_filter( $blocksListExact ) == [] && $block->getRangeStart() <= $checkipHex @@ -1336,7 +1355,7 @@ class Block extends AbstractBlock { // Calculate the default expiry time. $maxExpiryTime = wfTimestamp( TS_MW, wfTimestamp() + ( 24 * 60 * 60 ) ); - // Use the Block's expiry time only if it's less than the default. + // Use the block's expiry time only if it's less than the default. $expiryTime = $this->getExpiry(); if ( $expiryTime === 'infinity' || $expiryTime > $maxExpiryTime ) { $expiryTime = $maxExpiryTime; @@ -1384,7 +1403,7 @@ class Block extends AbstractBlock { /** * 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. + * the ID and a HMAC (see DatabaseBlock::setCookie), but will sometimes only be the ID. * * @since 1.29 * @@ -1570,3 +1589,8 @@ class Block extends AbstractBlock { return MediaWikiServices::getInstance()->getBlockRestrictionStore(); } } + +/** + * @deprecated since 1.34 + */ +class_alias( DatabaseBlock::class, 'Block' ); diff --git a/includes/block/Restriction/NamespaceRestriction.php b/includes/block/Restriction/NamespaceRestriction.php index 8d86853435..a18185c878 100644 --- a/includes/block/Restriction/NamespaceRestriction.php +++ b/includes/block/Restriction/NamespaceRestriction.php @@ -1,6 +1,6 @@ 'noindex', 'follow' => 'nofollow' @@ -1361,14 +1362,14 @@ class Article implements Page { $rootPart = explode( '/', $title->getText() )[0]; $user = User::newFromName( $rootPart, false /* allow IP users */ ); $ip = User::isIP( $rootPart ); - $block = Block::newFromTarget( $user, $user ); + $block = DatabaseBlock::newFromTarget( $user, $user ); if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist $outputPage->wrapWikiMsg( "
\n\$1\n
", [ 'userpage-userdoesnotexist-view', wfEscapeWikiText( $rootPart ) ] ); } elseif ( !is_null( $block ) && - $block->getType() != Block::TYPE_AUTO && + $block->getType() != DatabaseBlock::TYPE_AUTO && ( $block->isSitewide() || $user->isBlockedFrom( $title ) ) ) { // Show log extract if the user is sitewide blocked or is partially diff --git a/includes/specials/SpecialBlock.php b/includes/specials/SpecialBlock.php index b79a4827f7..810fbd2c7e 100644 --- a/includes/specials/SpecialBlock.php +++ b/includes/specials/SpecialBlock.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Block\DatabaseBlock; use MediaWiki\Block\Restriction\PageRestriction; use MediaWiki\Block\Restriction\NamespaceRestriction; use MediaWiki\MediaWikiServices; @@ -36,7 +37,7 @@ class SpecialBlock extends FormSpecialPage { * or as subpage (Special:Block/Foo) */ protected $target; - /** @var int Block::TYPE_ constant */ + /** @var int DatabaseBlock::TYPE_ constant */ protected $type; /** @var User|string The previous block target */ @@ -101,7 +102,7 @@ class SpecialBlock extends FormSpecialPage { } list( $this->previousTarget, /*...*/ ) = - Block::parseTarget( $request->getVal( 'wpPreviousTarget' ) ); + DatabaseBlock::parseTarget( $request->getVal( 'wpPreviousTarget' ) ); $this->requestedHideUser = $request->getBool( 'wpHideUser' ); } @@ -335,12 +336,12 @@ class SpecialBlock extends FormSpecialPage { # This won't be $fields['PreviousTarget']['default'] = (string)$this->target; - $block = Block::newFromTarget( $this->target ); + $block = DatabaseBlock::newFromTarget( $this->target ); // Populate fields if there is a block that is not an autoblock; if it is a range // block, only populate the fields if the range is the same as $this->target - if ( $block instanceof Block && $block->getType() !== Block::TYPE_AUTO - && ( $this->type != Block::TYPE_RANGE + if ( $block instanceof DatabaseBlock && $block->getType() !== DatabaseBlock::TYPE_AUTO + && ( $this->type != DatabaseBlock::TYPE_RANGE || $block->getTarget() == $this->target ) ) { $fields['HardBlock']['default'] = $block->isHardblock(); @@ -409,13 +410,13 @@ class SpecialBlock extends FormSpecialPage { } if ( $this->getConfig()->get( 'EnablePartialBlocks' ) ) { - if ( $block instanceof Block && !$block->isSitewide() ) { + if ( $block instanceof DatabaseBlock && !$block->isSitewide() ) { $fields['EditingRestriction']['default'] = 'partial'; } else { $fields['EditingRestriction']['default'] = 'sitewide'; } - if ( $block instanceof Block ) { + if ( $block instanceof DatabaseBlock ) { $pageRestrictions = []; $namespaceRestrictions = []; foreach ( $block->getRestrictions() as $restriction ) { @@ -614,11 +615,11 @@ class SpecialBlock extends FormSpecialPage { /** * Determine the target of the block, and the type of target - * @todo Should be in Block.php? + * @todo Should be in DatabaseBlock.php? * @param string $par Subpage parameter passed to setup, or data value from * the HTMLForm * @param WebRequest|null $request Optionally try and get data from a request too - * @return array [ User|string|null, Block::TYPE_ constant|null ] + * @return array [ User|string|null, DatabaseBlock::TYPE_ constant|null ] * @phan-return array{0:User|string|null,1:int|null} */ public static function getTargetAndType( $par, WebRequest $request = null ) { @@ -654,7 +655,7 @@ class SpecialBlock extends FormSpecialPage { break 2; } - list( $target, $type ) = Block::parseTarget( $target ); + list( $target, $type ) = DatabaseBlock::parseTarget( $target ); if ( $type !== null ) { return [ $target, $type ]; @@ -698,7 +699,7 @@ class SpecialBlock extends FormSpecialPage { list( $target, $type ) = self::getTargetAndType( $value ); $status = Status::newGood( $target ); - if ( $type == Block::TYPE_USER ) { + if ( $type == DatabaseBlock::TYPE_USER ) { if ( $target->isAnon() ) { $status->fatal( 'nosuchusershort', @@ -710,7 +711,7 @@ class SpecialBlock extends FormSpecialPage { if ( $unblockStatus !== true ) { $status->fatal( 'badaccess', $unblockStatus ); } - } elseif ( $type == Block::TYPE_RANGE ) { + } elseif ( $type == DatabaseBlock::TYPE_RANGE ) { list( $ip, $range ) = explode( '/', $target, 2 ); if ( @@ -736,7 +737,7 @@ class SpecialBlock extends FormSpecialPage { if ( IP::isIPv6( $ip ) && $range < $wgBlockCIDRLimit['IPv6'] ) { $status->fatal( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv6'] ); } - } elseif ( $type == Block::TYPE_IP ) { + } elseif ( $type == DatabaseBlock::TYPE_IP ) { # All is well } else { $status->fatal( 'badipaddress' ); @@ -770,7 +771,7 @@ class SpecialBlock extends FormSpecialPage { /** @var User $target */ list( $target, $type ) = self::getTargetAndType( $data['Target'] ); - if ( $type == Block::TYPE_USER ) { + if ( $type == DatabaseBlock::TYPE_USER ) { $user = $target; $target = $user->getName(); $userId = $user->getId(); @@ -787,10 +788,10 @@ class SpecialBlock extends FormSpecialPage { ) { return [ 'ipb-blockingself', 'ipb-confirmaction' ]; } - } elseif ( $type == Block::TYPE_RANGE ) { + } elseif ( $type == DatabaseBlock::TYPE_RANGE ) { $user = null; $userId = 0; - } elseif ( $type == Block::TYPE_IP ) { + } elseif ( $type == DatabaseBlock::TYPE_IP ) { $user = null; $target = $target->getName(); $userId = 0; @@ -842,7 +843,7 @@ class SpecialBlock extends FormSpecialPage { } # Recheck params here... - if ( $type != Block::TYPE_USER ) { + if ( $type != DatabaseBlock::TYPE_USER ) { $data['HideUser'] = false; # IP users should not be hidden } elseif ( !wfIsInfinity( $data['Expiry'] ) ) { # Bad expiry. @@ -860,7 +861,7 @@ class SpecialBlock extends FormSpecialPage { } # Create block object. - $block = new Block(); + $block = new DatabaseBlock(); $block->setTarget( $target ); $block->setBlocker( $performer ); $block->setReason( $data['Reason'][0] ); @@ -923,7 +924,7 @@ class SpecialBlock extends FormSpecialPage { } else { # This returns direct blocks before autoblocks/rangeblocks, since we should # be sure the user is blocked by now it should work for our purposes - $currentBlock = Block::newFromTarget( $target ); + $currentBlock = DatabaseBlock::newFromTarget( $target ); if ( $block->equals( $currentBlock ) ) { return [ [ 'ipb_already_blocked', $block->getTarget() ] ]; } @@ -984,7 +985,7 @@ class SpecialBlock extends FormSpecialPage { } # Can't watch a rangeblock - if ( $type != Block::TYPE_RANGE && $data['Watch'] ) { + if ( $type != DatabaseBlock::TYPE_RANGE && $data['Watch'] ) { WatchAction::doWatch( Title::makeTitle( NS_USER, $target ), $performer, @@ -992,7 +993,7 @@ class SpecialBlock extends FormSpecialPage { ); } - # Block constructor sanitizes certain block options on insert + # DatabaseBlock constructor sanitizes certain block options on insert $data['BlockEmail'] = $block->isEmailBlocked(); $data['AutoBlock'] = $block->isAutoblocking(); @@ -1141,7 +1142,7 @@ class SpecialBlock extends FormSpecialPage { } } elseif ( $target instanceof User && - $performer->getBlock() instanceof Block && + $performer->getBlock() instanceof DatabaseBlock && $performer->getBlock()->getBy() && $performer->getBlock()->getBy() === $target->getId() ) { @@ -1165,7 +1166,7 @@ class SpecialBlock extends FormSpecialPage { * Return a comma-delimited list of "flags" to be passed to the log * reader for this block, to provide more information in the logs * @param array $data From HTMLForm data - * @param int $type Block::TYPE_ constant (USER, RANGE, or IP) + * @param int $type DatabaseBlock::TYPE_ constant (USER, RANGE, or IP) * @return string */ protected static function blockLogFlags( array $data, $type ) { @@ -1177,7 +1178,7 @@ class SpecialBlock extends FormSpecialPage { # when blocking a user the option 'anononly' is not available/has no effect # -> do not write this into log - if ( !$data['HardBlock'] && $type != Block::TYPE_USER ) { + if ( !$data['HardBlock'] && $type != DatabaseBlock::TYPE_USER ) { // For grepping: message block-log-flags-anononly $flags[] = 'anononly'; } @@ -1188,7 +1189,7 @@ class SpecialBlock extends FormSpecialPage { } # Same as anononly, this is not displayed when blocking an IP address - if ( !$data['AutoBlock'] && $type == Block::TYPE_USER ) { + if ( !$data['AutoBlock'] && $type == DatabaseBlock::TYPE_USER ) { // For grepping: message block-log-flags-noautoblock $flags[] = 'noautoblock'; } diff --git a/includes/specials/SpecialBlockList.php b/includes/specials/SpecialBlockList.php index 8c6ad2d074..9f7381c4cb 100644 --- a/includes/specials/SpecialBlockList.php +++ b/includes/specials/SpecialBlockList.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use MediaWiki\Block\DatabaseBlock; + /** * A special page that lists existing blocks * @@ -139,28 +141,28 @@ class SpecialBlockList extends SpecialPage { } if ( $this->target !== '' ) { - list( $target, $type ) = Block::parseTarget( $this->target ); + list( $target, $type ) = DatabaseBlock::parseTarget( $this->target ); switch ( $type ) { - case Block::TYPE_ID: - case Block::TYPE_AUTO: + case DatabaseBlock::TYPE_ID: + case DatabaseBlock::TYPE_AUTO: $conds['ipb_id'] = $target; break; - case Block::TYPE_IP: - case Block::TYPE_RANGE: + case DatabaseBlock::TYPE_IP: + case DatabaseBlock::TYPE_RANGE: list( $start, $end ) = IP::parseRange( $target ); $conds[] = wfGetDB( DB_REPLICA )->makeList( [ 'ipb_address' => $target, - Block::getRangeCond( $start, $end ) + DatabaseBlock::getRangeCond( $start, $end ) ], LIST_OR ); $conds['ipb_auto'] = 0; break; - case Block::TYPE_USER: + case DatabaseBlock::TYPE_USER: $conds['ipb_address'] = $target->getName(); $conds['ipb_auto'] = 0; break; diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php index ce083928a7..d83853af7a 100644 --- a/includes/specials/SpecialContributions.php +++ b/includes/specials/SpecialContributions.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Block\DatabaseBlock; use MediaWiki\MediaWikiServices; use MediaWiki\Widget\DateInputWidget; @@ -320,15 +321,16 @@ class SpecialContributions extends IncludableSpecialPage { // Do not expose the autoblocks, since that may lead to a leak of accounts' IPs, // and also this will display a totally irrelevant log entry as a current block. if ( !$this->including() ) { - // For IP ranges you must give Block::newFromTarget the CIDR string and not a user object. + // For IP ranges you must give DatabaseBlock::newFromTarget the CIDR string + // and not a user object. if ( $userObj->isIPRange() ) { - $block = Block::newFromTarget( $userObj->getName(), $userObj->getName() ); + $block = DatabaseBlock::newFromTarget( $userObj->getName(), $userObj->getName() ); } else { - $block = Block::newFromTarget( $userObj, $userObj ); + $block = DatabaseBlock::newFromTarget( $userObj, $userObj ); } - if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { - if ( $block->getType() == Block::TYPE_RANGE ) { + if ( !is_null( $block ) && $block->getType() != DatabaseBlock::TYPE_AUTO ) { + if ( $block->getType() == DatabaseBlock::TYPE_RANGE ) { $nt = MediaWikiServices::getInstance()->getNamespaceInfo()-> getCanonicalName( NS_USER ) . ':' . $block->getTarget(); } @@ -388,7 +390,7 @@ class SpecialContributions extends IncludableSpecialPage { } if ( $sp->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links - if ( $target->getBlock() && $target->getBlock()->getType() != Block::TYPE_AUTO ) { + if ( $target->getBlock() && $target->getBlock()->getType() != DatabaseBlock::TYPE_AUTO ) { $tools['block'] = $linkRenderer->makeKnownLink( # Change block link SpecialPage::getTitleFor( 'Block', $username ), $sp->msg( 'change-blocklink' )->text() diff --git a/includes/specials/SpecialDeletedContributions.php b/includes/specials/SpecialDeletedContributions.php index 73b438c28d..8817ba3de4 100644 --- a/includes/specials/SpecialDeletedContributions.php +++ b/includes/specials/SpecialDeletedContributions.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage */ +use MediaWiki\Block\DatabaseBlock; use MediaWiki\MediaWikiServices; /** @@ -159,9 +160,9 @@ class DeletedContributionsPage extends SpecialPage { $links = $this->getLanguage()->pipeList( $tools ); // Show a note if the user is blocked and display the last block log entry. - $block = Block::newFromTarget( $userObj, $userObj ); - if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { - if ( $block->getType() == Block::TYPE_RANGE ) { + $block = DatabaseBlock::newFromTarget( $userObj, $userObj ); + if ( !is_null( $block ) && $block->getType() != DatabaseBlock::TYPE_AUTO ) { + if ( $block->getType() == DatabaseBlock::TYPE_RANGE ) { $nt = MediaWikiServices::getInstance()->getNamespaceInfo()-> getCanonicalName( NS_USER ) . ':' . $block->getTarget(); } diff --git a/includes/specials/SpecialUnblock.php b/includes/specials/SpecialUnblock.php index a04fe4e16d..bedd2c58e5 100644 --- a/includes/specials/SpecialUnblock.php +++ b/includes/specials/SpecialUnblock.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use MediaWiki\Block\DatabaseBlock; + /** * A special page for unblocking users * @@ -45,7 +47,7 @@ class SpecialUnblock extends SpecialPage { $this->checkReadOnly(); list( $this->target, $this->type ) = SpecialBlock::getTargetAndType( $par, $this->getRequest() ); - $this->block = Block::newFromTarget( $this->target ); + $this->block = DatabaseBlock::newFromTarget( $this->target ); if ( $this->target instanceof User ) { # Set the 'relevant user' in the skin, so it displays links like Contributions, # User logs, UserRights, etc. @@ -67,17 +69,17 @@ class SpecialUnblock extends SpecialPage { if ( $form->show() ) { switch ( $this->type ) { - case Block::TYPE_IP: + case DatabaseBlock::TYPE_IP: $out->addWikiMsg( 'unblocked-ip', wfEscapeWikiText( $this->target ) ); break; - case Block::TYPE_USER: + case DatabaseBlock::TYPE_USER: $out->addWikiMsg( 'unblocked', wfEscapeWikiText( $this->target ) ); break; - case Block::TYPE_RANGE: + case DatabaseBlock::TYPE_RANGE: $out->addWikiMsg( 'unblocked-range', wfEscapeWikiText( $this->target ) ); break; - case Block::TYPE_ID: - case Block::TYPE_AUTO: + case DatabaseBlock::TYPE_ID: + case DatabaseBlock::TYPE_AUTO: $out->addWikiMsg( 'unblocked-id', wfEscapeWikiText( $this->target ) ); break; } @@ -104,28 +106,28 @@ class SpecialUnblock extends SpecialPage { ] ]; - if ( $this->block instanceof Block ) { + if ( $this->block instanceof DatabaseBlock ) { list( $target, $type ) = $this->block->getTargetAndType(); # Autoblocks are logged as "autoblock #123 because the IP was recently used by # User:Foo, and we've just got any block, auto or not, that applies to a target # the user has specified. Someone could be fishing to connect IPs to autoblocks, # so don't show any distinction between unblocked IPs and autoblocked IPs - if ( $type == Block::TYPE_AUTO && $this->type == Block::TYPE_IP ) { + if ( $type == DatabaseBlock::TYPE_AUTO && $this->type == DatabaseBlock::TYPE_IP ) { $fields['Target']['default'] = $this->target; unset( $fields['Name'] ); } else { $fields['Target']['default'] = $target; $fields['Target']['type'] = 'hidden'; switch ( $type ) { - case Block::TYPE_IP: + case DatabaseBlock::TYPE_IP: $fields['Name']['default'] = $this->getLinkRenderer()->makeKnownLink( SpecialPage::getTitleFor( 'Contributions', $target->getName() ), $target->getName() ); $fields['Name']['raw'] = true; break; - case Block::TYPE_USER: + case DatabaseBlock::TYPE_USER: $fields['Name']['default'] = $this->getLinkRenderer()->makeLink( $target->getUserPage(), $target->getName() @@ -133,11 +135,11 @@ class SpecialUnblock extends SpecialPage { $fields['Name']['raw'] = true; break; - case Block::TYPE_RANGE: + case DatabaseBlock::TYPE_RANGE: $fields['Name']['default'] = $target; break; - case Block::TYPE_AUTO: + case DatabaseBlock::TYPE_AUTO: $fields['Name']['default'] = $this->block->getRedactedName(); $fields['Name']['raw'] = true; # Don't expose the real target of the autoblock @@ -180,9 +182,9 @@ class SpecialUnblock extends SpecialPage { public static function processUnblock( array $data, IContextSource $context ) { $performer = $context->getUser(); $target = $data['Target']; - $block = Block::newFromTarget( $data['Target'] ); + $block = DatabaseBlock::newFromTarget( $data['Target'] ); - if ( !$block instanceof Block ) { + if ( !$block instanceof DatabaseBlock ) { return [ [ 'ipb_cant_unblock', $target ] ]; } @@ -197,7 +199,7 @@ class SpecialUnblock extends SpecialPage { # If the specified IP is a single address, and the block is a range block, don't # unblock the whole range. list( $target, $type ) = SpecialBlock::getTargetAndType( $target ); - if ( $block->getType() == Block::TYPE_RANGE && $type == Block::TYPE_IP ) { + if ( $block->getType() == DatabaseBlock::TYPE_RANGE && $type == DatabaseBlock::TYPE_IP ) { $range = $block->getTarget(); return [ [ 'ipb_blocked_as_range', $target, $range ] ]; @@ -232,7 +234,7 @@ class SpecialUnblock extends SpecialPage { } # Redact the name (IP address) for autoblocks - if ( $block->getType() == Block::TYPE_AUTO ) { + if ( $block->getType() == DatabaseBlock::TYPE_AUTO ) { $page = Title::makeTitle( NS_USER, '#' . $block->getId() ); } else { $page = $block->getTarget() instanceof User diff --git a/includes/specials/pagers/BlockListPager.php b/includes/specials/pagers/BlockListPager.php index a2dbb72f99..f7ad80cb8b 100644 --- a/includes/specials/pagers/BlockListPager.php +++ b/includes/specials/pagers/BlockListPager.php @@ -22,6 +22,7 @@ /** * @ingroup Pager */ +use MediaWiki\Block\DatabaseBlock; use MediaWiki\Block\Restriction\Restriction; use MediaWiki\Block\Restriction\PageRestriction; use MediaWiki\Block\Restriction\NamespaceRestriction; @@ -107,10 +108,10 @@ class BlockListPager extends TablePager { if ( $row->ipb_auto ) { $formatted = $this->msg( 'autoblockid', $row->ipb_id )->parse(); } else { - list( $target, $type ) = Block::parseTarget( $row->ipb_address ); + list( $target, $type ) = DatabaseBlock::parseTarget( $row->ipb_address ); switch ( $type ) { - case Block::TYPE_USER: - case Block::TYPE_IP: + case DatabaseBlock::TYPE_USER: + case DatabaseBlock::TYPE_IP: $formatted = Linker::userLink( $target->getId(), $target ); $formatted .= Linker::userToolLinks( $target->getId(), @@ -119,7 +120,7 @@ class BlockListPager extends TablePager { Linker::TOOL_LINKS_NOBLOCK ); break; - case Block::TYPE_RANGE: + case DatabaseBlock::TYPE_RANGE: $formatted = htmlspecialchars( $target ); } } diff --git a/includes/user/User.php b/includes/user/User.php index 18d62f5a38..e8ca7ce95e 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -21,6 +21,7 @@ */ use MediaWiki\Block\AbstractBlock; +use MediaWiki\Block\DatabaseBlock; use MediaWiki\Block\SystemBlock; use MediaWiki\MediaWikiServices; use MediaWiki\Session\SessionManager; @@ -1355,7 +1356,7 @@ class User implements IDBAccessObject, UserIdentity { if ( $user->isLoggedIn() ) { $this->loadFromUserObject( $user ); if ( $user->getBlock() ) { - // If this user is autoblocked, set a cookie to track the Block. This has to be done on + // If this user is autoblocked, set a cookie to track the block. This has to be done on // every session load, because an autoblocked editor might not edit again from the same // IP address after being blocked. $this->trackBlockWithCookie(); @@ -4355,7 +4356,7 @@ class User implements IDBAccessObject, UserIdentity { return false; } - $userblock = Block::newFromTarget( $this->getName() ); + $userblock = DatabaseBlock::newFromTarget( $this->getName() ); if ( !$userblock ) { return false; } @@ -4377,7 +4378,9 @@ class User implements IDBAccessObject, UserIdentity { # blocked with createaccount disabled, prevent new account creation there even # when the user is logged in if ( $this->mBlockedFromCreateAccount === false && !$this->isAllowed( 'ipblock-exempt' ) ) { - $this->mBlockedFromCreateAccount = Block::newFromTarget( null, $this->getRequest()->getIP() ); + $this->mBlockedFromCreateAccount = DatabaseBlock::newFromTarget( + null, $this->getRequest()->getIP() + ); } return $this->mBlockedFromCreateAccount instanceof AbstractBlock && $this->mBlockedFromCreateAccount->appliesToRight( 'createaccount' ) diff --git a/maintenance/cleanupBlocks.php b/maintenance/cleanupBlocks.php index 15bb4f3ede..db51e4b3d4 100644 --- a/maintenance/cleanupBlocks.php +++ b/maintenance/cleanupBlocks.php @@ -23,6 +23,8 @@ require_once __DIR__ . '/Maintenance.php'; +use MediaWiki\Block\DatabaseBlock; + /** * Maintenance script to clean up user blocks with user names not matching the * 'user' table. @@ -39,7 +41,7 @@ class CleanupBlocks extends Maintenance { public function execute() { $db = $this->getDB( DB_MASTER ); - $blockQuery = Block::getQueryInfo(); + $blockQuery = DatabaseBlock::getQueryInfo(); $max = $db->selectField( 'ipblocks', 'MAX(ipb_user)' ); @@ -77,14 +79,14 @@ class CleanupBlocks extends Maintenance { $blockQuery['joins'] ); foreach ( $res2 as $row2 ) { - $block = Block::newFromRow( $row2 ); + $block = DatabaseBlock::newFromRow( $row2 ); if ( !$bestBlock ) { $bestBlock = $block; continue; } // Find the most-restrictive block. Can't use - // Block::chooseBlock because that's for IP blocks, not + // DatabaseBlock::chooseBlock because that's for IP blocks, not // user blocks. $keep = null; if ( $keep === null && $block->getExpiry() !== $bestBlock->getExpiry() ) { diff --git a/tests/phpunit/includes/Permissions/PermissionManagerTest.php b/tests/phpunit/includes/Permissions/PermissionManagerTest.php index 4676fc545e..2ce50b7e9d 100644 --- a/tests/phpunit/includes/Permissions/PermissionManagerTest.php +++ b/tests/phpunit/includes/Permissions/PermissionManagerTest.php @@ -3,11 +3,11 @@ namespace MediaWiki\Tests\Permissions; use Action; -use Block; use MediaWikiLangTestCase; use RequestContext; use Title; use User; +use MediaWiki\Block\DatabaseBlock; use MediaWiki\Block\Restriction\NamespaceRestriction; use MediaWiki\Block\Restriction\PageRestriction; use MediaWiki\Block\SystemBlock; @@ -1036,7 +1036,7 @@ class PermissionManagerTest extends MediaWikiLangTestCase { $prev = time(); $now = time() + 120; $this->user->mBlockedby = $this->user->getId(); - $this->user->mBlock = new Block( [ + $this->user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $this->user->getId(), 'reason' => 'no reason given', @@ -1062,7 +1062,7 @@ class PermissionManagerTest extends MediaWikiLangTestCase { global $wgLocalTZoffset; $wgLocalTZoffset = -60; $this->user->mBlockedby = $this->user->getName(); - $this->user->mBlock = new Block( [ + $this->user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $this->user->getId(), 'reason' => 'no reason given', @@ -1116,7 +1116,7 @@ class PermissionManagerTest extends MediaWikiLangTestCase { // partial block message test $this->user->mBlockedby = $this->user->getName(); - $this->user->mBlock = new Block( [ + $this->user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $this->user->getId(), 'reason' => 'no reason given', @@ -1213,7 +1213,7 @@ class PermissionManagerTest extends MediaWikiLangTestCase { $now = time(); $this->user->mBlockedby = $this->user->getName(); - $this->user->mBlock = new Block( [ + $this->user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $this->user->getId(), 'reason' => 'no reason given', @@ -1248,7 +1248,7 @@ class PermissionManagerTest extends MediaWikiLangTestCase { // Block the user $blocker = $this->getTestSysop()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'hideName' => true, 'allowUsertalk' => false, 'reason' => 'Because', @@ -1260,7 +1260,7 @@ class PermissionManagerTest extends MediaWikiLangTestCase { // Clear cache and confirm it loaded the block properly $user->clearInstanceCache(); - $this->assertInstanceOf( Block::class, $user->getBlock( false ) ); + $this->assertInstanceOf( DatabaseBlock::class, $user->getBlock( false ) ); //$this->assertSame( $blocker->getName(), $user->blockedBy() ); //$this->assertSame( 'Because', $user->blockedFor() ); //$this->assertTrue( (bool)$user->isHidden() ); @@ -1285,7 +1285,7 @@ class PermissionManagerTest extends MediaWikiLangTestCase { * @param bool $expect Expected result from User::isBlockedFrom() * @param array $options Additional test options: * - 'blockAllowsUTEdit': (bool, default true) Value for $wgBlockAllowsUTEdit - * - 'allowUsertalk': (bool, default false) Passed to Block::__construct() + * - 'allowUsertalk': (bool, default false) Passed to DatabaseBlock::__construct() * - 'pageRestrictions': (array|null) If non-empty, page restriction titles for the block. */ public function testIsBlockedFrom( $title, $expect, array $options = [] ) { @@ -1312,7 +1312,7 @@ class PermissionManagerTest extends MediaWikiLangTestCase { $restrictions[] = new NamespaceRestriction( 0, $ns ); } - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ), 'allowUsertalk' => $options['allowUsertalk'] ?? false, 'sitewide' => !$restrictions, diff --git a/tests/phpunit/includes/TitlePermissionTest.php b/tests/phpunit/includes/TitlePermissionTest.php index 1f8011d463..e09546e7ee 100644 --- a/tests/phpunit/includes/TitlePermissionTest.php +++ b/tests/phpunit/includes/TitlePermissionTest.php @@ -1,5 +1,6 @@ user->mBlockedby = $this->user->getId(); - $this->user->mBlock = new Block( [ + $this->user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $this->user->getId(), 'reason' => 'no reason given', @@ -943,7 +944,7 @@ class TitlePermissionTest extends MediaWikiLangTestCase { global $wgLocalTZoffset; $wgLocalTZoffset = -60; $this->user->mBlockedby = $this->user->getName(); - $this->user->mBlock = new Block( [ + $this->user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $this->user->getId(), 'reason' => 'no reason given', @@ -989,7 +990,7 @@ class TitlePermissionTest extends MediaWikiLangTestCase { // partial block message test $this->user->mBlockedby = $this->user->getName(); - $this->user->mBlock = new Block( [ + $this->user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $this->user->getId(), 'reason' => 'no reason given', @@ -1073,7 +1074,7 @@ class TitlePermissionTest extends MediaWikiLangTestCase { $now = time(); $this->user->mBlockedby = $this->user->getName(); - $this->user->mBlock = new Block( [ + $this->user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $this->user->getId(), 'reason' => 'no reason given', diff --git a/tests/phpunit/includes/actions/ActionTest.php b/tests/phpunit/includes/actions/ActionTest.php index d80d627b4f..5ad773681d 100644 --- a/tests/phpunit/includes/actions/ActionTest.php +++ b/tests/phpunit/includes/actions/ActionTest.php @@ -1,5 +1,6 @@ getExistingTestPage(); $action = Action::factory( 'unblock', $page, $this->getContext() ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $user, 'by' => $this->getTestSysop()->getUser()->getId(), 'expiry' => 'infinity', diff --git a/tests/phpunit/includes/api/ApiBaseTest.php b/tests/phpunit/includes/api/ApiBaseTest.php index 64b2cd651c..6a44ff3594 100644 --- a/tests/phpunit/includes/api/ApiBaseTest.php +++ b/tests/phpunit/includes/api/ApiBaseTest.php @@ -1,5 +1,6 @@ getMutableTestUser()->getUser(); - $block = new \Block( [ + $block = new DatabaseBlock( [ 'address' => $user->getName(), 'user' => $user->getID(), 'by' => $this->getTestSysop()->getUser()->getId(), @@ -1383,7 +1384,7 @@ class ApiBaseTest extends ApiTestCase { // Has a blocked $user, so special block handling $user = $this->getMutableTestUser()->getUser(); - $block = new \Block( [ + $block = new DatabaseBlock( [ 'address' => $user->getName(), 'user' => $user->getID(), 'by' => $this->getTestSysop()->getUser()->getId(), diff --git a/tests/phpunit/includes/api/ApiBlockInfoTraitTest.php b/tests/phpunit/includes/api/ApiBlockInfoTraitTest.php index a6e2d0de0b..ba5c003776 100644 --- a/tests/phpunit/includes/api/ApiBlockInfoTraitTest.php +++ b/tests/phpunit/includes/api/ApiBlockInfoTraitTest.php @@ -1,6 +1,7 @@ [ - new Block(), + new DatabaseBlock(), [ 'blockpartial' => false ], ], 'Partial block' => [ - new Block( [ 'sitewide' => false ] ), + new DatabaseBlock( [ 'sitewide' => false ] ), [ 'blockpartial' => true ], ], 'System block' => [ diff --git a/tests/phpunit/includes/api/ApiBlockTest.php b/tests/phpunit/includes/api/ApiBlockTest.php index 1c5314773a..060834fef0 100644 --- a/tests/phpunit/includes/api/ApiBlockTest.php +++ b/tests/phpunit/includes/api/ApiBlockTest.php @@ -1,5 +1,6 @@ doApiRequest( array_merge( $params, $extraParams ), null, false, $blocker ); - $block = Block::newFromTarget( $this->mUser->getName() ); + $block = DatabaseBlock::newFromTarget( $this->mUser->getName() ); $this->assertTrue( !is_null( $block ), 'Block is valid' ); @@ -89,7 +90,7 @@ class ApiBlockTest extends ApiTestCase { 'You cannot block or unblock other users because you are yourself blocked.' ); $blocked = $this->getMutableTestUser( [ 'sysop' ] )->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $blocked->getName(), 'by' => self::$users['sysop']->getUser()->getId(), 'reason' => 'Capriciousness', @@ -237,7 +238,7 @@ class ApiBlockTest extends ApiTestCase { $this->doBlock(); - $block = Block::newFromTarget( $this->mUser->getName() ); + $block = DatabaseBlock::newFromTarget( $this->mUser->getName() ); $this->assertTrue( $block->isSitewide() ); $this->assertCount( 0, $block->getRestrictions() ); @@ -258,7 +259,7 @@ class ApiBlockTest extends ApiTestCase { 'namespacerestrictions' => $namespace, ] ); - $block = Block::newFromTarget( $this->mUser->getName() ); + $block = DatabaseBlock::newFromTarget( $this->mUser->getName() ); $this->assertFalse( $block->isSitewide() ); $this->assertCount( 2, $block->getRestrictions() ); diff --git a/tests/phpunit/includes/api/ApiEditPageTest.php b/tests/phpunit/includes/api/ApiEditPageTest.php index aeb829dd62..2045a1317b 100644 --- a/tests/phpunit/includes/api/ApiEditPageTest.php +++ b/tests/phpunit/includes/api/ApiEditPageTest.php @@ -1,5 +1,7 @@ assertNull( Block::newFromTarget( '127.0.0.1' ), 'Sanity check' ); + $this->assertNull( DatabaseBlock::newFromTarget( '127.0.0.1' ), 'Sanity check' ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => self::$users['sysop']->getUser()->getName(), 'by' => self::$users['sysop']->getUser()->getId(), 'reason' => 'Capriciousness', @@ -1495,7 +1497,7 @@ class ApiEditPageTest extends ApiTestCase { $this->fail( 'Expected exception not thrown' ); } catch ( ApiUsageException $ex ) { $this->assertSame( 'You have been blocked from editing.', $ex->getMessage() ); - $this->assertNotNull( Block::newFromTarget( '127.0.0.1' ), 'Autoblock spread' ); + $this->assertNotNull( DatabaseBlock::newFromTarget( '127.0.0.1' ), 'Autoblock spread' ); } finally { $block->delete(); self::$users['sysop']->getUser()->clearInstanceCache(); diff --git a/tests/phpunit/includes/api/ApiMoveTest.php b/tests/phpunit/includes/api/ApiMoveTest.php index d437a525a0..d880923d3f 100644 --- a/tests/phpunit/includes/api/ApiMoveTest.php +++ b/tests/phpunit/includes/api/ApiMoveTest.php @@ -1,5 +1,7 @@ assertNull( Block::newFromTarget( '127.0.0.1' ), 'Sanity check' ); + $this->assertNull( DatabaseBlock::newFromTarget( '127.0.0.1' ), 'Sanity check' ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => self::$users['sysop']->getUser()->getName(), 'by' => self::$users['sysop']->getUser()->getId(), 'reason' => 'Capriciousness', @@ -156,7 +158,7 @@ class ApiMoveTest extends ApiTestCase { $this->fail( 'Expected exception not thrown' ); } catch ( ApiUsageException $ex ) { $this->assertSame( 'You have been blocked from editing.', $ex->getMessage() ); - $this->assertNotNull( Block::newFromTarget( '127.0.0.1' ), 'Autoblock spread' ); + $this->assertNotNull( DatabaseBlock::newFromTarget( '127.0.0.1' ), 'Autoblock spread' ); } finally { $block->delete(); self::$users['sysop']->getUser()->clearInstanceCache(); diff --git a/tests/phpunit/includes/api/ApiQueryBlocksTest.php b/tests/phpunit/includes/api/ApiQueryBlocksTest.php index 6e0084276f..e281679926 100644 --- a/tests/phpunit/includes/api/ApiQueryBlocksTest.php +++ b/tests/phpunit/includes/api/ApiQueryBlocksTest.php @@ -1,5 +1,6 @@ getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), @@ -57,7 +58,7 @@ class ApiQueryBlocksTest extends ApiTestCase { $badActor = $this->getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), @@ -87,7 +88,7 @@ class ApiQueryBlocksTest extends ApiTestCase { $badActor = $this->getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), diff --git a/tests/phpunit/includes/api/ApiQueryInfoTest.php b/tests/phpunit/includes/api/ApiQueryInfoTest.php index 3aaad486e9..5da618e563 100644 --- a/tests/phpunit/includes/api/ApiQueryInfoTest.php +++ b/tests/phpunit/includes/api/ApiQueryInfoTest.php @@ -1,5 +1,7 @@ getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new \Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), diff --git a/tests/phpunit/includes/api/ApiQueryUserInfoTest.php b/tests/phpunit/includes/api/ApiQueryUserInfoTest.php index 703c1508d9..556818e85e 100644 --- a/tests/phpunit/includes/api/ApiQueryUserInfoTest.php +++ b/tests/phpunit/includes/api/ApiQueryUserInfoTest.php @@ -1,5 +1,7 @@ getBlockInfo( $block ); $subset = [ 'blockid' => null, @@ -34,7 +36,7 @@ class ApiQueryUserInfoTest extends ApiTestCase { 'userinfo' ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'sitewide' => false, ] ); $info = $apiQueryUserInfo->getBlockInfo( $block ); diff --git a/tests/phpunit/includes/api/ApiUnblockTest.php b/tests/phpunit/includes/api/ApiUnblockTest.php index ea39da70b2..a1754faa58 100644 --- a/tests/phpunit/includes/api/ApiUnblockTest.php +++ b/tests/phpunit/includes/api/ApiUnblockTest.php @@ -1,5 +1,7 @@ blockee = $this->getMutableTestUser()->getUser(); // Initialize a blocked user (used by most tests, although not all) - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $this->blockee->getName(), 'by' => $this->blocker->getId(), ] ); $result = $block->insert(); $this->assertNotFalse( $result, 'Could not insert block' ); - $blockFromDB = Block::newFromID( $result['id'] ); + $blockFromDB = DatabaseBlock::newFromID( $result['id'] ); $this->assertTrue( !is_null( $blockFromDB ), 'Could not retrieve block' ); } private function getBlockFromParams( array $params ) { if ( array_key_exists( 'user', $params ) ) { - return Block::newFromTarget( $params['user'] ); + return DatabaseBlock::newFromTarget( $params['user'] ); } if ( array_key_exists( 'userid', $params ) ) { - return Block::newFromTarget( User::newFromId( $params['userid'] ) ); + return DatabaseBlock::newFromTarget( User::newFromId( $params['userid'] ) ); } - return Block::newFromId( $params['id'] ); + return DatabaseBlock::newFromId( $params['id'] ); } /** @@ -64,7 +66,7 @@ class ApiUnblockTest extends ApiTestCase { // We only check later on whether the block existed to begin with, because maybe the caller // expects doApiRequestWithToken to throw, in which case the block might not be expected to // exist to begin with. - $this->assertInstanceOf( Block::class, $originalBlock, 'Block should initially exist' ); + $this->assertInstanceOf( DatabaseBlock::class, $originalBlock, 'Block should initially exist' ); $this->assertNull( $this->getBlockFromParams( $params ), 'Block should have been removed' ); } @@ -94,7 +96,7 @@ class ApiUnblockTest extends ApiTestCase { public function testUnblockWhenBlocked() { $this->setExpectedApiException( 'ipbblocked' ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $this->blocker->getName(), 'by' => $this->getTestUser( 'sysop' )->getUser()->getId(), ] ); @@ -104,7 +106,7 @@ class ApiUnblockTest extends ApiTestCase { } public function testUnblockSelfWhenBlocked() { - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $this->blocker->getName(), 'by' => $this->getTestUser( 'sysop' )->getUser()->getId(), ] ); diff --git a/tests/phpunit/includes/api/ApiUserrightsTest.php b/tests/phpunit/includes/api/ApiUserrightsTest.php index 5889f8265a..a1bafed78c 100644 --- a/tests/phpunit/includes/api/ApiUserrightsTest.php +++ b/tests/phpunit/includes/api/ApiUserrightsTest.php @@ -1,5 +1,7 @@ $wgUser, 'by' => $wgUser->getId(), ] ); + $block = new DatabaseBlock( [ 'address' => $wgUser, 'by' => $wgUser->getId(), ] ); $block->insert(); try { @@ -144,7 +146,7 @@ class ApiUserrightsTest extends ApiTestCase { $this->setPermissions( true, true ); - $block = new Block( [ 'address' => $user, 'by' => $user->getId() ] ); + $block = new DatabaseBlock( [ 'address' => $user, 'by' => $user->getId() ] ); $block->insert(); try { diff --git a/tests/phpunit/includes/auth/AuthManagerTest.php b/tests/phpunit/includes/auth/AuthManagerTest.php index 5cf93c9e2b..e6a1d3886c 100644 --- a/tests/phpunit/includes/auth/AuthManagerTest.php +++ b/tests/phpunit/includes/auth/AuthManagerTest.php @@ -3,6 +3,7 @@ namespace MediaWiki\Auth; use Config; +use MediaWiki\Block\DatabaseBlock; use MediaWiki\Session\SessionInfo; use MediaWiki\Session\UserInfo; use Psr\Log\LoggerInterface; @@ -1430,7 +1431,7 @@ class AuthManagerTest extends \MediaWikiTestCase { \TestUser::setPasswordForUser( $user, 'UTBlockeePassword' ); $user->saveSettings(); } - $oldBlock = \Block::newFromTarget( 'UTBlockee' ); + $oldBlock = DatabaseBlock::newFromTarget( 'UTBlockee' ); if ( $oldBlock ) { // An old block will prevent our new one from saving. $oldBlock->delete(); @@ -1443,7 +1444,7 @@ class AuthManagerTest extends \MediaWikiTestCase { 'expiry' => time() + 100500, 'createAccount' => true, ]; - $block = new \Block( $blockOptions ); + $block = new DatabaseBlock( $blockOptions ); $block->insert(); $status = $this->manager->checkAccountCreatePermissions( $user ); $this->assertFalse( $status->isOK() ); @@ -1456,7 +1457,7 @@ class AuthManagerTest extends \MediaWikiTestCase { 'expiry' => time() + 100500, 'createAccount' => true, ]; - $block = new \Block( $blockOptions ); + $block = new DatabaseBlock( $blockOptions ); $block->insert(); $scopeVariable = new ScopedCallback( [ $block, 'delete' ] ); $status = $this->manager->checkAccountCreatePermissions( new \User ); diff --git a/tests/phpunit/includes/auth/CheckBlocksSecondaryAuthenticationProviderTest.php b/tests/phpunit/includes/auth/CheckBlocksSecondaryAuthenticationProviderTest.php index 14d7f09b96..c38003660a 100644 --- a/tests/phpunit/includes/auth/CheckBlocksSecondaryAuthenticationProviderTest.php +++ b/tests/phpunit/includes/auth/CheckBlocksSecondaryAuthenticationProviderTest.php @@ -2,6 +2,7 @@ namespace MediaWiki\Auth; +use MediaWiki\Block\DatabaseBlock; use Wikimedia\TestingAccessWrapper; /** @@ -68,7 +69,7 @@ class CheckBlocksSecondaryAuthenticationProviderTest extends \MediaWikiTestCase \TestUser::setPasswordForUser( $user, 'UTBlockeePassword' ); $user->saveSettings(); } - $oldBlock = \Block::newFromTarget( 'UTBlockee' ); + $oldBlock = DatabaseBlock::newFromTarget( 'UTBlockee' ); if ( $oldBlock ) { // An old block will prevent our new one from saving. $oldBlock->delete(); @@ -81,7 +82,7 @@ class CheckBlocksSecondaryAuthenticationProviderTest extends \MediaWikiTestCase 'expiry' => time() + 100500, 'createAccount' => true, ]; - $block = new \Block( $blockOptions ); + $block = new DatabaseBlock( $blockOptions ); $block->insert(); return $user; } @@ -154,7 +155,7 @@ class CheckBlocksSecondaryAuthenticationProviderTest extends \MediaWikiTestCase 'expiry' => time() + 100500, 'createAccount' => true, ]; - $block = new \Block( $blockOptions ); + $block = new DatabaseBlock( $blockOptions ); $block->insert(); $scopeVariable = new \Wikimedia\ScopedCallback( [ $block, 'delete' ] ); diff --git a/tests/phpunit/includes/block/BlockManagerTest.php b/tests/phpunit/includes/block/BlockManagerTest.php index ec6eea99c9..aec25c18c0 100644 --- a/tests/phpunit/includes/block/BlockManagerTest.php +++ b/tests/phpunit/includes/block/BlockManagerTest.php @@ -1,6 +1,7 @@ true, ] ); - $block = new Block( array_merge( [ + $block = new DatabaseBlock( array_merge( [ 'address' => $options[ 'target' ] ?: $this->user, 'by' => $this->sysopId, ], $options[ 'blockOptions' ] ) ); diff --git a/tests/phpunit/includes/block/BlockRestrictionStoreTest.php b/tests/phpunit/includes/block/BlockRestrictionStoreTest.php index 4eef457339..ebbfde27c0 100644 --- a/tests/phpunit/includes/block/BlockRestrictionStoreTest.php +++ b/tests/phpunit/includes/block/BlockRestrictionStoreTest.php @@ -3,6 +3,7 @@ namespace MediaWiki\Tests\Block; use MediaWiki\Block\BlockRestrictionStore; +use MediaWiki\Block\DatabaseBlock; use MediaWiki\Block\Restriction\NamespaceRestriction; use MediaWiki\Block\Restriction\PageRestriction; use MediaWiki\Block\Restriction\Restriction; @@ -583,7 +584,7 @@ class BlockRestrictionStoreTest extends \MediaWikiLangTestCase { $badActor = $this->getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new \Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), diff --git a/tests/phpunit/includes/BlockTest.php b/tests/phpunit/includes/block/DatabaseBlockTest.php similarity index 85% rename from tests/phpunit/includes/BlockTest.php rename to tests/phpunit/includes/block/DatabaseBlockTest.php index 3dc5e78433..0ef571db73 100644 --- a/tests/phpunit/includes/BlockTest.php +++ b/tests/phpunit/includes/block/DatabaseBlockTest.php @@ -1,6 +1,7 @@ getName() ); + $oldBlock = DatabaseBlock::newFromTarget( $user->getName() ); if ( $oldBlock ) { // An old block will prevent our new one from saving. $oldBlock->delete(); @@ -44,7 +46,7 @@ class BlockTest extends MediaWikiLangTestCase { 'reason' => 'Parce que', 'expiry' => time() + 100500, ]; - $block = new Block( $blockOptions ); + $block = new DatabaseBlock( $blockOptions ); $block->insert(); // save up ID for use in assertion. Since ID is an autoincrement, @@ -60,34 +62,34 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::newFromTarget + * @covers ::newFromTarget */ public function testINewFromTargetReturnsCorrectBlock() { $user = $this->getUserForBlocking(); $block = $this->addBlockForUser( $user ); $this->assertTrue( - $block->equals( Block::newFromTarget( $user->getName() ) ), + $block->equals( DatabaseBlock::newFromTarget( $user->getName() ) ), "newFromTarget() returns the same block as the one that was made" ); } /** - * @covers Block::newFromID + * @covers ::newFromID */ public function testINewFromIDReturnsCorrectBlock() { $user = $this->getUserForBlocking(); $block = $this->addBlockForUser( $user ); $this->assertTrue( - $block->equals( Block::newFromID( $block->getId() ) ), + $block->equals( DatabaseBlock::newFromID( $block->getId() ) ), "newFromID() returns the same block as the one that was made" ); } /** * per T28425 - * @covers Block::__construct + * @covers ::__construct */ public function testT28425BlockTimestampDefaultsToTime() { $user = $this->getUserForBlocking(); @@ -104,17 +106,17 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * CheckUser since being changed to use Block::newFromTarget started failing - * because the new function didn't accept empty strings like Block::load() + * CheckUser since being changed to use DatabaseBlock::newFromTarget started failing + * because the new function didn't accept empty strings like DatabaseBlock::load() * had. Regression T31116. * * @dataProvider provideT31116Data - * @covers Block::newFromTarget + * @covers ::newFromTarget */ public function testT31116NewFromTargetWithEmptyIp( $vagueTarget ) { $user = $this->getUserForBlocking(); $initialBlock = $this->addBlockForUser( $user ); - $block = Block::newFromTarget( $user->getName(), $vagueTarget ); + $block = DatabaseBlock::newFromTarget( $user->getName(), $vagueTarget ); $this->assertTrue( $initialBlock->equals( $block ), @@ -133,27 +135,27 @@ class BlockTest extends MediaWikiLangTestCase { /** * @dataProvider provideNewFromTargetRangeBlocks - * @covers Block::newFromTarget + * @covers ::newFromTarget */ public function testNewFromTargetRangeBlocks( $targets, $ip, $expectedTarget ) { $blocker = $this->getTestSysop()->getUser(); foreach ( $targets as $target ) { - $block = new Block(); + $block = new DatabaseBlock(); $block->setTarget( $target ); $block->setBlocker( $blocker ); $block->insert(); } // Should find the block with the narrowest range - $blockTarget = Block::newFromTarget( $this->getTestUser()->getUser(), $ip )->getTarget(); + $blockTarget = DatabaseBlock::newFromTarget( $this->getTestUser()->getUser(), $ip )->getTarget(); $this->assertSame( $blockTarget instanceof User ? $blockTarget->getName() : $blockTarget, $expectedTarget ); foreach ( $targets as $target ) { - $block = Block::newFromTarget( $target ); + $block = DatabaseBlock::newFromTarget( $target ); $block->delete(); } } @@ -204,7 +206,7 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::appliesToRight + * @covers ::appliesToRight */ public function testBlockedUserCanNotCreateAccount() { $username = 'BlockedUserToCreateAccountWith'; @@ -217,7 +219,7 @@ class BlockTest extends MediaWikiLangTestCase { // Sanity check $this->assertNull( - Block::newFromTarget( $username ), + DatabaseBlock::newFromTarget( $username ), "$username should not be blocked" ); @@ -241,18 +243,18 @@ class BlockTest extends MediaWikiLangTestCase { 'blockEmail' => true, 'byText' => 'm>MetaWikiUser', ]; - $block = new Block( $blockOptions ); + $block = new DatabaseBlock( $blockOptions ); $block->insert(); // Reload block from DB - $userBlock = Block::newFromTarget( $username ); + $userBlock = DatabaseBlock::newFromTarget( $username ); $this->assertTrue( (bool)$block->appliesToRight( 'createaccount' ), "Block object in DB should block right 'createaccount'" ); $this->assertInstanceOf( - Block::class, + DatabaseBlock::class, $userBlock, "'$username' block block object should be existent" ); @@ -266,11 +268,11 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::insert + * @covers ::insert */ public function testCrappyCrossWikiBlocks() { // Delete the last round's block if it's still there - $oldBlock = Block::newFromTarget( 'UserOnForeignWiki' ); + $oldBlock = DatabaseBlock::newFromTarget( 'UserOnForeignWiki' ); if ( $oldBlock ) { // An old block will prevent our new one from saving. $oldBlock->delete(); @@ -295,14 +297,14 @@ class BlockTest extends MediaWikiLangTestCase { 'blockEmail' => true, 'byText' => 'Meta>MetaWikiUser', ]; - $block = new Block( $blockOptions ); + $block = new DatabaseBlock( $blockOptions ); $res = $block->insert( $this->db ); $this->assertTrue( (bool)$res['id'], 'Block succeeded' ); $user = null; // clear - $block = Block::newFromID( $res['id'] ); + $block = DatabaseBlock::newFromID( $res['id'] ); $this->assertEquals( 'UserOnForeignWiki', $block->getTarget()->getName(), @@ -326,35 +328,35 @@ class BlockTest extends MediaWikiLangTestCase { $blockList = [ [ 'target' => '70.2.0.0/16', - 'type' => Block::TYPE_RANGE, + 'type' => DatabaseBlock::TYPE_RANGE, 'desc' => 'Range Hardblock', 'ACDisable' => false, 'isHardblock' => true, 'isAutoBlocking' => false, ], [ 'target' => '2001:4860:4001::/48', - 'type' => Block::TYPE_RANGE, + 'type' => DatabaseBlock::TYPE_RANGE, 'desc' => 'Range6 Hardblock', 'ACDisable' => false, 'isHardblock' => true, 'isAutoBlocking' => false, ], [ 'target' => '60.2.0.0/16', - 'type' => Block::TYPE_RANGE, + 'type' => DatabaseBlock::TYPE_RANGE, 'desc' => 'Range Softblock with AC Disabled', 'ACDisable' => true, 'isHardblock' => false, 'isAutoBlocking' => false, ], [ 'target' => '50.2.0.0/16', - 'type' => Block::TYPE_RANGE, + 'type' => DatabaseBlock::TYPE_RANGE, 'desc' => 'Range Softblock', 'ACDisable' => false, 'isHardblock' => false, 'isAutoBlocking' => false, ], [ 'target' => '50.1.1.1', - 'type' => Block::TYPE_IP, + 'type' => DatabaseBlock::TYPE_IP, 'desc' => 'Exact Softblock', 'ACDisable' => false, 'isHardblock' => false, @@ -366,13 +368,13 @@ class BlockTest extends MediaWikiLangTestCase { foreach ( $blockList as $insBlock ) { $target = $insBlock['target']; - if ( $insBlock['type'] === Block::TYPE_IP ) { + if ( $insBlock['type'] === DatabaseBlock::TYPE_IP ) { $target = User::newFromName( IP::sanitizeIP( $target ), false )->getName(); - } elseif ( $insBlock['type'] === Block::TYPE_RANGE ) { + } elseif ( $insBlock['type'] === DatabaseBlock::TYPE_RANGE ) { $target = IP::sanitizeRange( $target ); } - $block = new Block(); + $block = new DatabaseBlock(); $block->setTarget( $target ); $block->setBlocker( $blocker ); $block->setReason( $insBlock['desc'] ); @@ -431,30 +433,30 @@ class BlockTest extends MediaWikiLangTestCase { /** * @dataProvider providerXff - * @covers Block::getBlocksForIPList - * @covers Block::chooseBlock + * @covers ::getBlocksForIPList + * @covers ::chooseBlock */ public function testBlocksOnXff( $xff, $exCount, $exResult ) { $user = $this->getUserForBlocking(); $this->addBlockForUser( $user ); $list = array_map( 'trim', explode( ',', $xff ) ); - $xffblocks = Block::getBlocksForIPList( $list, true ); + $xffblocks = DatabaseBlock::getBlocksForIPList( $list, true ); $this->assertEquals( $exCount, count( $xffblocks ), 'Number of blocks for ' . $xff ); - $block = Block::chooseBlock( $xffblocks, $list ); + $block = DatabaseBlock::chooseBlock( $xffblocks, $list ); $this->assertEquals( $exResult, $block->getReason(), 'Correct block type for XFF header ' . $xff ); } /** - * @covers Block::newFromRow + * @covers ::newFromRow */ public function testNewFromRow() { $badActor = $this->getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), @@ -462,7 +464,7 @@ class BlockTest extends MediaWikiLangTestCase { ] ); $block->insert(); - $blockQuery = Block::getQueryInfo(); + $blockQuery = DatabaseBlock::getQueryInfo(); $row = $this->db->select( $blockQuery['tables'], $blockQuery['fields'], @@ -474,45 +476,45 @@ class BlockTest extends MediaWikiLangTestCase { $blockQuery['joins'] )->fetchObject(); - $block = Block::newFromRow( $row ); - $this->assertInstanceOf( Block::class, $block ); + $block = DatabaseBlock::newFromRow( $row ); + $this->assertInstanceOf( DatabaseBlock::class, $block ); $this->assertEquals( $block->getBy(), $sysop->getId() ); $this->assertEquals( $block->getTarget()->getName(), $badActor->getName() ); $block->delete(); } /** - * @covers Block::equals + * @covers ::equals */ public function testEquals() { - $block = new Block(); + $block = new DatabaseBlock(); $this->assertTrue( $block->equals( $block ) ); - $partial = new Block( [ + $partial = new DatabaseBlock( [ 'sitewide' => false, ] ); $this->assertFalse( $block->equals( $partial ) ); } /** - * @covers Block::isSitewide + * @covers ::isSitewide */ public function testIsSitewide() { - $block = new Block(); + $block = new DatabaseBlock(); $this->assertTrue( $block->isSitewide() ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'sitewide' => true, ] ); $this->assertTrue( $block->isSitewide() ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'sitewide' => false, ] ); $this->assertFalse( $block->isSitewide() ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'sitewide' => false, ] ); $block->isSitewide( true ); @@ -520,11 +522,11 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::getRestrictions - * @covers Block::setRestrictions + * @covers ::getRestrictions + * @covers ::setRestrictions */ public function testRestrictions() { - $block = new Block(); + $block = new DatabaseBlock(); $restrictions = [ new PageRestriction( 0, 1 ) ]; @@ -534,14 +536,14 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::getRestrictions - * @covers Block::insert + * @covers ::getRestrictions + * @covers ::insert */ public function testRestrictionsFromDatabase() { $badActor = $this->getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), @@ -553,7 +555,7 @@ class BlockTest extends MediaWikiLangTestCase { $block->insert(); // Refresh the block from the database. - $block = Block::newFromID( $block->getId() ); + $block = DatabaseBlock::newFromID( $block->getId() ); $restrictions = $block->getRestrictions(); $this->assertCount( 1, $restrictions ); $this->assertTrue( $restriction->equals( $restrictions[0] ) ); @@ -561,13 +563,13 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::insert + * @covers ::insert */ public function testInsertExistingBlock() { $badActor = $this->getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), @@ -596,14 +598,14 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::appliesToTitle + * @covers ::appliesToTitle */ public function testAppliesToTitleReturnsTrueOnSitewideBlock() { $this->setMwGlobals( [ 'wgBlockDisablesLogin' => false, ] ); $user = $this->getTestUser()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ), 'allowUsertalk' => true, 'sitewide' => true @@ -625,14 +627,14 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::appliesToTitle + * @covers ::appliesToTitle */ public function testAppliesToTitleOnPartialBlock() { $this->setMwGlobals( [ 'wgBlockDisablesLogin' => false, ] ); $user = $this->getTestUser()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ), 'allowUsertalk' => true, 'sitewide' => false @@ -658,15 +660,15 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::appliesToNamespace - * @covers Block::appliesToPage + * @covers ::appliesToNamespace + * @covers ::appliesToPage */ public function testAppliesToReturnsTrueOnSitewideBlock() { $this->setMwGlobals( [ 'wgBlockDisablesLogin' => false, ] ); $user = $this->getTestUser()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ), 'allowUsertalk' => true, 'sitewide' => true @@ -686,14 +688,14 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::appliesToPage + * @covers ::appliesToPage */ public function testAppliesToPageOnPartialPageBlock() { $this->setMwGlobals( [ 'wgBlockDisablesLogin' => false, ] ); $user = $this->getTestUser()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ), 'allowUsertalk' => true, 'sitewide' => false @@ -717,14 +719,14 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::appliesToNamespace + * @covers ::appliesToNamespace */ public function testAppliesToNamespaceOnPartialNamespaceBlock() { $this->setMwGlobals( [ 'wgBlockDisablesLogin' => false, ] ); $user = $this->getTestUser()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ), 'allowUsertalk' => true, 'sitewide' => false @@ -744,13 +746,13 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * @covers Block::appliesToRight + * @covers ::appliesToRight */ public function testBlockAllowsPurge() { $this->setMwGlobals( [ 'wgBlockDisablesLogin' => false, ] ); - $block = new Block(); + $block = new DatabaseBlock(); $this->assertFalse( $block->appliesToRight( 'purge' ) ); } diff --git a/tests/phpunit/includes/specialpage/FormSpecialPageTestCase.php b/tests/phpunit/includes/specialpage/FormSpecialPageTestCase.php index a3b5adb858..a09fd7c693 100644 --- a/tests/phpunit/includes/specialpage/FormSpecialPageTestCase.php +++ b/tests/phpunit/includes/specialpage/FormSpecialPageTestCase.php @@ -1,4 +1,7 @@ getTestUser()->getUser(); $user->mBlockedby = $user->getName(); - $user->mBlock = new Block( [ + $user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $user->getId(), 'reason' => 'sitewide block', @@ -52,7 +55,7 @@ abstract class FormSpecialPageTestCase extends SpecialPageTestBase { $user = clone $this->getTestUser()->getUser(); $user->mBlockedby = $user->getName(); - $user->mBlock = new Block( [ + $user->mBlock = new DatabaseBlock( [ 'address' => '127.0.8.1', 'by' => $user->getId(), 'reason' => 'partial block', diff --git a/tests/phpunit/includes/specials/SpecialBlockTest.php b/tests/phpunit/includes/specials/SpecialBlockTest.php index c1f2e42064..86e3295eb8 100644 --- a/tests/phpunit/includes/specials/SpecialBlockTest.php +++ b/tests/phpunit/includes/specials/SpecialBlockTest.php @@ -1,6 +1,7 @@ insertBlock(); // Refresh the block from the database. - $block = Block::newFromTarget( $block->getTarget() ); + $block = DatabaseBlock::newFromTarget( $block->getTarget() ); $page = $this->newSpecialPage(); @@ -109,7 +110,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $pageSaturn = $this->getExistingTestPage( 'Saturn' ); $pageMars = $this->getExistingTestPage( 'Mars' ); - $block = new \Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), @@ -129,7 +130,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $block->insert(); // Refresh the block from the database. - $block = Block::newFromTarget( $block->getTarget() ); + $block = DatabaseBlock::newFromTarget( $block->getTarget() ); $page = $this->newSpecialPage(); @@ -179,7 +180,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $this->assertTrue( $result ); - $block = Block::newFromTarget( $badActor ); + $block = DatabaseBlock::newFromTarget( $badActor ); $this->assertSame( $reason, $block->getReason() ); $this->assertSame( $expiry, $block->getExpiry() ); } @@ -196,7 +197,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $context = RequestContext::getMain(); // Create a block that will be updated. - $block = new \Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), @@ -228,7 +229,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $this->assertTrue( $result ); - $block = Block::newFromTarget( $badActor ); + $block = DatabaseBlock::newFromTarget( $badActor ); $this->assertSame( $reason, $block->getReason() ); $this->assertSame( $expiry, $block->getExpiry() ); $this->assertSame( '1', $block->isAutoblocking() ); @@ -277,7 +278,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $this->assertTrue( $result ); - $block = Block::newFromTarget( $badActor ); + $block = DatabaseBlock::newFromTarget( $badActor ); $this->assertSame( $reason, $block->getReason() ); $this->assertSame( $expiry, $block->getExpiry() ); $this->assertCount( 2, $block->getRestrictions() ); @@ -331,7 +332,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $this->assertTrue( $result ); - $block = Block::newFromTarget( $badActor ); + $block = DatabaseBlock::newFromTarget( $badActor ); $this->assertSame( $reason, $block->getReason() ); $this->assertSame( $expiry, $block->getExpiry() ); $this->assertFalse( $block->isSitewide() ); @@ -347,7 +348,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $this->assertTrue( $result ); - $block = Block::newFromTarget( $badActor ); + $block = DatabaseBlock::newFromTarget( $badActor ); $this->assertSame( $reason, $block->getReason() ); $this->assertSame( $expiry, $block->getExpiry() ); $this->assertFalse( $block->isSitewide() ); @@ -362,7 +363,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $this->assertTrue( $result ); - $block = Block::newFromTarget( $badActor ); + $block = DatabaseBlock::newFromTarget( $badActor ); $this->assertSame( $reason, $block->getReason() ); $this->assertSame( $expiry, $block->getExpiry() ); $this->assertFalse( $block->isSitewide() ); @@ -374,7 +375,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $this->assertTrue( $result ); - $block = Block::newFromTarget( $badActor ); + $block = DatabaseBlock::newFromTarget( $badActor ); $this->assertSame( $reason, $block->getReason() ); $this->assertSame( $expiry, $block->getExpiry() ); $this->assertTrue( $block->isSitewide() ); @@ -420,7 +421,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $$var = $users[$$var]; } - $block = new \Block( [ + $block = new DatabaseBlock( [ 'address' => $blockedUser->getName(), 'user' => $blockedUser->getId(), 'by' => $blockPerformer->getId(), @@ -454,7 +455,7 @@ class SpecialBlockTest extends SpecialPageTestBase { $badActor = $this->getTestUser()->getUser(); $sysop = $this->getTestSysop()->getUser(); - $block = new \Block( [ + $block = new DatabaseBlock( [ 'address' => $badActor->getName(), 'user' => $badActor->getId(), 'by' => $sysop->getId(), diff --git a/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php b/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php index bd37c04cd5..c0eadac56e 100644 --- a/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php +++ b/tests/phpunit/includes/specials/pagers/BlockListPagerTest.php @@ -1,5 +1,6 @@ $target, 'by' => $this->getTestSysop()->getUser()->getId(), 'reason' => 'Parce que', diff --git a/tests/phpunit/includes/user/LocalIdLookupTest.php b/tests/phpunit/includes/user/LocalIdLookupTest.php index 58441f095f..e38d77b72b 100644 --- a/tests/phpunit/includes/user/LocalIdLookupTest.php +++ b/tests/phpunit/includes/user/LocalIdLookupTest.php @@ -1,5 +1,7 @@ getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $this->localUsers[2]->getName(), 'by' => $sysop->getId(), 'reason' => __METHOD__, @@ -29,7 +31,7 @@ class LocalIdLookupTest extends MediaWikiTestCase { ] ); $block->insert(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'address' => $this->localUsers[3]->getName(), 'by' => $sysop->getId(), 'reason' => __METHOD__, diff --git a/tests/phpunit/includes/user/PasswordResetTest.php b/tests/phpunit/includes/user/PasswordResetTest.php index ca57c10b6f..55a29e364e 100644 --- a/tests/phpunit/includes/user/PasswordResetTest.php +++ b/tests/phpunit/includes/user/PasswordResetTest.php @@ -1,6 +1,7 @@ true, 'allowsAuthenticationDataChange' => true, 'canEditPrivate' => true, - 'block' => new Block( [ 'createAccount' => true ] ), + 'block' => new DatabaseBlock( [ 'createAccount' => true ] ), 'globalBlock' => null, 'isAllowed' => false, ], @@ -94,7 +95,7 @@ class PasswordResetTest extends MediaWikiTestCase { 'enableEmail' => true, 'allowsAuthenticationDataChange' => true, 'canEditPrivate' => true, - 'block' => new Block( [] ), + 'block' => new DatabaseBlock( [] ), 'globalBlock' => null, 'isAllowed' => true, ], diff --git a/tests/phpunit/includes/user/UserTest.php b/tests/phpunit/includes/user/UserTest.php index c90e98890e..aa6ae48ca1 100644 --- a/tests/phpunit/includes/user/UserTest.php +++ b/tests/phpunit/includes/user/UserTest.php @@ -3,6 +3,7 @@ define( 'NS_UNITTEST', 5600 ); define( 'NS_UNITTEST_TALK', 5601 ); +use MediaWiki\Block\DatabaseBlock; use MediaWiki\Block\Restriction\PageRestriction; use MediaWiki\Block\Restriction\NamespaceRestriction; use MediaWiki\Block\SystemBlock; @@ -602,7 +603,7 @@ class UserTest extends MediaWikiTestCase { $request1 = new FauxRequest(); $request1->getSession()->setUser( $user1tmp ); $expiryFiveHours = wfTimestamp() + ( 5 * 60 * 60 ); - $block = new Block( [ + $block = new DatabaseBlock( [ 'enableAutoblock' => true, 'expiry' => wfTimestamp( TS_MW, $expiryFiveHours ), ] ); @@ -616,8 +617,8 @@ class UserTest extends MediaWikiTestCase { // Confirm that the block has been applied as required. $this->assertTrue( $user1->isLoggedIn() ); - $this->assertInstanceOf( Block::class, $user1->getBlock() ); - $this->assertEquals( Block::TYPE_USER, $block->getType() ); + $this->assertInstanceOf( DatabaseBlock::class, $user1->getBlock() ); + $this->assertEquals( DatabaseBlock::TYPE_USER, $block->getType() ); $this->assertTrue( $block->isAutoblocking() ); $this->assertGreaterThanOrEqual( 1, $block->getId() ); @@ -625,7 +626,7 @@ class UserTest extends MediaWikiTestCase { $cookies = $request1->response()->getCookies(); $this->assertArrayHasKey( 'wmsitetitleBlockID', $cookies ); $this->assertEquals( $expiryFiveHours, $cookies['wmsitetitleBlockID']['expire'] ); - $cookieValue = Block::getIdFromCookieValue( $cookies['wmsitetitleBlockID']['value'] ); + $cookieValue = DatabaseBlock::getIdFromCookieValue( $cookies['wmsitetitleBlockID']['value'] ); $this->assertEquals( $block->getId(), $cookieValue ); // 2. Create a new request, set the cookies, and see if the (anon) user is blocked. @@ -637,7 +638,7 @@ class UserTest extends MediaWikiTestCase { $this->assertNotEquals( $user1->getToken(), $user2->getToken() ); $this->assertTrue( $user2->isAnon() ); $this->assertFalse( $user2->isLoggedIn() ); - $this->assertInstanceOf( Block::class, $user2->getBlock() ); + $this->assertInstanceOf( DatabaseBlock::class, $user2->getBlock() ); // Non-strict type-check. $this->assertEquals( true, $user2->getBlock()->isAutoblocking(), 'Autoblock does not work' ); // Can't directly compare the objects because of member type differences. @@ -653,7 +654,7 @@ class UserTest extends MediaWikiTestCase { $user3 = User::newFromSession( $request3 ); $user3->load(); $this->assertTrue( $user3->isLoggedIn() ); - $this->assertInstanceOf( Block::class, $user3->getBlock() ); + $this->assertInstanceOf( DatabaseBlock::class, $user3->getBlock() ); $this->assertEquals( true, $user3->getBlock()->isAutoblocking() ); // Non-strict type-check. // Clean up. @@ -682,7 +683,7 @@ class UserTest extends MediaWikiTestCase { $testUser = $this->getTestUser()->getUser(); $request1 = new FauxRequest(); $request1->getSession()->setUser( $testUser ); - $block = new Block( [ 'enableAutoblock' => true ] ); + $block = new DatabaseBlock( [ 'enableAutoblock' => true ] ); $block->setBlocker( $this->getTestSysop()->getUser() ); $block->setTarget( $testUser ); $res = $block->insert(); @@ -693,8 +694,8 @@ class UserTest extends MediaWikiTestCase { // 2. Test that the cookie IS NOT present. $this->assertTrue( $user->isLoggedIn() ); - $this->assertInstanceOf( Block::class, $user->getBlock() ); - $this->assertEquals( Block::TYPE_USER, $block->getType() ); + $this->assertInstanceOf( DatabaseBlock::class, $user->getBlock() ); + $this->assertEquals( DatabaseBlock::TYPE_USER, $block->getType() ); $this->assertTrue( $block->isAutoblocking() ); $this->assertGreaterThanOrEqual( 1, $user->getBlockId() ); $this->assertGreaterThanOrEqual( $block->getId(), $user->getBlockId() ); @@ -727,7 +728,7 @@ class UserTest extends MediaWikiTestCase { $user1Tmp = $this->getTestUser()->getUser(); $request1 = new FauxRequest(); $request1->getSession()->setUser( $user1Tmp ); - $block = new Block( [ 'enableAutoblock' => true, 'expiry' => 'infinity' ] ); + $block = new DatabaseBlock( [ 'enableAutoblock' => true, 'expiry' => 'infinity' ] ); $block->setBlocker( $this->getTestSysop()->getUser() ); $block->setTarget( $user1Tmp ); $res = $block->insert(); @@ -738,8 +739,8 @@ class UserTest extends MediaWikiTestCase { // 2. Test the cookie's expiry timestamp. $this->assertTrue( $user1->isLoggedIn() ); - $this->assertInstanceOf( Block::class, $user1->getBlock() ); - $this->assertEquals( Block::TYPE_USER, $block->getType() ); + $this->assertInstanceOf( DatabaseBlock::class, $user1->getBlock() ); + $this->assertEquals( DatabaseBlock::TYPE_USER, $block->getType() ); $this->assertTrue( $block->isAutoblocking() ); $this->assertGreaterThanOrEqual( 1, $user1->getBlockId() ); $cookies = $request1->response()->getCookies(); @@ -832,7 +833,7 @@ class UserTest extends MediaWikiTestCase { $user1tmp = $this->getTestUser()->getUser(); $request1 = new FauxRequest(); $request1->getSession()->setUser( $user1tmp ); - $block = new Block( [ 'enableAutoblock' => true ] ); + $block = new DatabaseBlock( [ 'enableAutoblock' => true ] ); $block->setBlocker( $this->getTestSysop()->getUser() ); $block->setTarget( $user1tmp ); $res = $block->insert(); @@ -877,7 +878,7 @@ class UserTest extends MediaWikiTestCase { $user1tmp = $this->getTestUser()->getUser(); $request1 = new FauxRequest(); $request1->getSession()->setUser( $user1tmp ); - $block = new Block( [ 'enableAutoblock' => true ] ); + $block = new DatabaseBlock( [ 'enableAutoblock' => true ] ); $block->setBlocker( $this->getTestSysop()->getUser() ); $block->setTarget( $user1tmp ); $res = $block->insert(); @@ -885,7 +886,7 @@ class UserTest extends MediaWikiTestCase { $user1 = User::newFromSession( $request1 ); $user1->mBlock = $block; $user1->load(); - $this->assertInstanceOf( Block::class, $user1->getBlock() ); + $this->assertInstanceOf( DatabaseBlock::class, $user1->getBlock() ); // 2. Create a new request, set the cookie to just the block ID, and the user should // still get blocked when they log in again. @@ -897,7 +898,7 @@ class UserTest extends MediaWikiTestCase { $this->assertNotEquals( $user1->getToken(), $user2->getToken() ); $this->assertTrue( $user2->isAnon() ); $this->assertFalse( $user2->isLoggedIn() ); - $this->assertInstanceOf( Block::class, $user2->getBlock() ); + $this->assertInstanceOf( DatabaseBlock::class, $user2->getBlock() ); $this->assertEquals( true, $user2->getBlock()->isAutoblocking() ); // Non-strict type-check. // Clean up. @@ -1283,7 +1284,7 @@ class UserTest extends MediaWikiTestCase { // Block the user $blocker = $this->getTestSysop()->getUser(); - $block = new Block( [ + $block = new DatabaseBlock( [ 'hideName' => true, 'allowUsertalk' => false, 'reason' => 'Because', @@ -1295,7 +1296,7 @@ class UserTest extends MediaWikiTestCase { // Clear cache and confirm it loaded the block properly $user->clearInstanceCache(); - $this->assertInstanceOf( Block::class, $user->getBlock( false ) ); + $this->assertInstanceOf( DatabaseBlock::class, $user->getBlock( false ) ); $this->assertSame( $blocker->getName(), $user->blockedBy() ); $this->assertSame( 'Because', $user->blockedFor() ); $this->assertTrue( (bool)$user->isHidden() ); @@ -1320,7 +1321,7 @@ class UserTest extends MediaWikiTestCase { * @param bool $expect Expected result from User::isBlockedFrom() * @param array $options Additional test options: * - 'blockAllowsUTEdit': (bool, default true) Value for $wgBlockAllowsUTEdit - * - 'allowUsertalk': (bool, default false) Passed to Block::__construct() + * - 'allowUsertalk': (bool, default false) Passed to DatabaseBlock::__construct() * - 'pageRestrictions': (array|null) If non-empty, page restriction titles for the block. */ public function testIsBlockedFrom( $title, $expect, array $options = [] ) { @@ -1347,7 +1348,7 @@ class UserTest extends MediaWikiTestCase { $restrictions[] = new NamespaceRestriction( 0, $ns ); } - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ), 'allowUsertalk' => $options['allowUsertalk'] ?? false, 'sitewide' => !$restrictions, @@ -1456,7 +1457,7 @@ class UserTest extends MediaWikiTestCase { ] ); // setup block - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 5 * 60 * 60 ) ), ] ); $block->setTarget( '1.2.3.4' ); @@ -1492,7 +1493,7 @@ class UserTest extends MediaWikiTestCase { ] ); // setup block - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 5 * 60 * 60 ) ), ] ); $block->setTarget( '1.2.3.4' ); @@ -1529,7 +1530,7 @@ class UserTest extends MediaWikiTestCase { ] ); // setup block - $block = new Block( [ + $block = new DatabaseBlock( [ 'expiry' => wfTimestamp( TS_MW, wfTimestamp() + ( 40 * 60 * 60 ) ), ] ); $block->setTarget( '1.2.3.4' ); -- 2.20.1