diff options
author | jenkins-bot <jenkins-bot@gerrit.wikimedia.org> | 2025-03-26 20:25:34 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@wikimedia.org> | 2025-03-26 20:25:34 +0000 |
commit | 3faad14e9eaf6ace2af61e65fde0ecdd806e7e27 (patch) | |
tree | a15961fc64f0b03c80941e8a8b1d38c9790edc6f | |
parent | c35fa378279862e2b71ae0e1c1372697c9059f49 (diff) | |
parent | 032d94b4a6dbf46db9a39028813d920727c6f7ba (diff) | |
download | mediawikicore-3faad14e9eaf6ace2af61e65fde0ecdd806e7e27.tar.gz mediawikicore-3faad14e9eaf6ace2af61e65fde0ecdd806e7e27.zip |
Merge "page: Remove deprecated PageArchive::undeleteAsUser"
-rw-r--r-- | RELEASE-NOTES-1.44 | 1 | ||||
-rw-r--r-- | includes/page/PageArchive.php | 59 | ||||
-rw-r--r-- | tests/phpunit/includes/page/PageArchiveTest.php | 55 |
3 files changed, 1 insertions, 114 deletions
diff --git a/RELEASE-NOTES-1.44 b/RELEASE-NOTES-1.44 index 79797ef6d03d..6e1a1715fc15 100644 --- a/RELEASE-NOTES-1.44 +++ b/RELEASE-NOTES-1.44 @@ -259,6 +259,7 @@ because of Phabricator reports. * The hook OutputPageMakeCategoryLinks, deprecated in 1.43, has been removed. * The methods Skin::getFooterIcons and ::makeFooterIcon are final and overriding is no longer supported. +* PageArchive::undeleteAsUser, deprecated since 1.35, has been removed. * DatabaseBlock::getQueryInfo and ::getRangeCond, deprecated since 1.43, have been removed. * The IDatabase transaction lifecycle callbacks onTransactionResolution(), diff --git a/includes/page/PageArchive.php b/includes/page/PageArchive.php index 3897eb88312f..4427b57663dc 100644 --- a/includes/page/PageArchive.php +++ b/includes/page/PageArchive.php @@ -23,7 +23,6 @@ namespace MediaWiki\Page; use MediaWiki\FileRepo\File\FileSelectQueryBuilder; use MediaWiki\MediaWikiServices; use MediaWiki\Title\Title; -use MediaWiki\User\UserIdentity; use Wikimedia\Rdbms\IExpression; use Wikimedia\Rdbms\IReadableDatabase; use Wikimedia\Rdbms\IResultWrapper; @@ -156,64 +155,6 @@ class PageArchive { return $queryBuilder->caller( __METHOD__ )->fetchResultSet(); } - /** - * Restore the given (or all) text and file revisions for the page. - * Once restored, the items will be removed from the archive tables. - * The deletion log will be updated with an undeletion notice. - * - * @since 1.35 - * @deprecated since 1.38, use UndeletePage instead, hard-deprecated since 1.43 - * - * @param array $timestamps Pass an empty array to restore all revisions, - * otherwise list the ones to undelete. - * @param UserIdentity $user - * @param string $comment - * @param array $fileVersions - * @param bool $unsuppress - * @param string|string[]|null $tags Change tags to add to log entry - * ($user should be able to add the specified tags before this is called) - * @return array|false [ number of file revisions restored, number of image revisions - * restored, log message ] on success, false on failure. - */ - public function undeleteAsUser( - $timestamps, - UserIdentity $user, - $comment = '', - $fileVersions = [], - $unsuppress = false, - $tags = null - ) { - wfDeprecated( __METHOD__, '1.43' ); - $services = MediaWikiServices::getInstance(); - $page = $services->getWikiPageFactory()->newFromTitle( $this->title ); - $user = $services->getUserFactory()->newFromUserIdentity( $user ); - $up = $services->getUndeletePageFactory()->newUndeletePage( $page, $user ); - if ( is_string( $tags ) ) { - $tags = [ $tags ]; - } elseif ( $tags === null ) { - $tags = []; - } - $status = $up - ->setUndeleteOnlyTimestamps( $timestamps ) - ->setUndeleteOnlyFileVersions( $fileVersions ?: [] ) - ->setUnsuppress( $unsuppress ) - ->setTags( $tags ?: [] ) - ->undeleteUnsafe( $comment ); - // BC with old return format - if ( $status->isGood() ) { - $restoredRevs = $status->getValue()[UndeletePage::REVISIONS_RESTORED]; - $restoredFiles = $status->getValue()[UndeletePage::FILES_RESTORED]; - if ( $restoredRevs === 0 && $restoredFiles === 0 ) { - $ret = false; - } else { - $ret = [ $restoredRevs, $restoredFiles, $comment ]; - } - } else { - $ret = false; - } - return $ret; - } - } /** @deprecated class alias since 1.44 */ diff --git a/tests/phpunit/includes/page/PageArchiveTest.php b/tests/phpunit/includes/page/PageArchiveTest.php index 8943fe0c08fe..ba7dd7ae2419 100644 --- a/tests/phpunit/includes/page/PageArchiveTest.php +++ b/tests/phpunit/includes/page/PageArchiveTest.php @@ -10,7 +10,6 @@ use MediaWiki\Revision\SlotRecord; use MediaWiki\Tests\User\TempUser\TempUserTestTrait; use MediaWiki\Title\Title; use MediaWiki\User\UserIdentityValue; -use Wikimedia\IPUtils; /** * @group Database @@ -89,60 +88,6 @@ class PageArchiveTest extends MediaWikiIntegrationTestCase { $this->deletePage( $page, '', $user ); } - /** - * @covers \MediaWiki\Page\PageArchive::undeleteAsUser - */ - public function testUndeleteRevisions() { - $this->hideDeprecated( PageArchive::class . '::undeleteAsUser' ); - - // TODO: MCR: Test undeletion with multiple slots. Check that slots remain untouched. - $revisionStore = $this->getServiceContainer()->getRevisionStore(); - - // First make sure old revisions are archived - $dbr = $this->getDb(); - $row = $revisionStore->newArchiveSelectQueryBuilder( $dbr ) - ->joinComment() - ->where( [ 'ar_rev_id' => $this->ipRev->getId() ] ) - ->caller( __METHOD__ )->fetchRow(); - $this->assertEquals( $this->ipEditor, $row->ar_user_text ); - - // Should not be in revision - $row = $dbr->newSelectQueryBuilder() - ->select( '1' ) - ->from( 'revision' ) - ->where( [ 'rev_id' => $this->ipRev->getId() ] ) - ->fetchRow(); - $this->assertFalse( $row ); - - // Should not be in ip_changes - $row = $dbr->newSelectQueryBuilder() - ->select( '1' ) - ->from( 'ip_changes' ) - ->where( [ 'ipc_rev_id' => $this->ipRev->getId() ] ) - ->fetchRow(); - $this->assertFalse( $row ); - - // Restore the page - $archive = new PageArchive( $this->archivedPage ); - $archive->undeleteAsUser( [], $this->getTestSysop()->getUser() ); - - // Should be back in revision - $row = $revisionStore->newSelectQueryBuilder( $dbr ) - ->where( [ 'rev_id' => $this->ipRev->getId() ] ) - ->caller( __METHOD__ )->fetchRow(); - $this->assertNotFalse( $row, 'row exists in revision table' ); - $this->assertEquals( $this->ipEditor, $row->rev_user_text ); - - // Should be back in ip_changes - $row = $dbr->newSelectQueryBuilder() - ->select( [ 'ipc_hex' ] ) - ->from( 'ip_changes' ) - ->where( [ 'ipc_rev_id' => $this->ipRev->getId() ] ) - ->fetchRow(); - $this->assertNotFalse( $row, 'row exists in ip_changes table' ); - $this->assertEquals( IPUtils::toHex( $this->ipEditor ), $row->ipc_hex ); - } - protected function getExpectedArchiveRows() { return [ [ |