Replace remaining uses and hard deprecate Revision::newFromArchiveRow
Bug: T248772 Change-Id: I44d0573b8af14d55e1c7423197dfae3cd55d7417
This commit is contained in:
parent
507501d6ee
commit
fda65e7a27
8 changed files with 55 additions and 21 deletions
|
|
@ -697,6 +697,7 @@ because of Phabricator reports.
|
|||
- ::userWasLastToEdit - use RevisionStore::userWasLastToEdit instead
|
||||
- ::userCan and userCanBitfield - use RevisionRecord::userCanBitfield instead
|
||||
- ::newFromPageId - use RevisionStore::getRevisionByPageId instead
|
||||
- ::newFromArchiveRow - use RevisionFactory::newRevisionFromArchiveRow
|
||||
- ::loadFromTitle - use RevisionStore::getRevisionByTitle instead
|
||||
- ::loadFromPageId - use RevisionStore::getRevisionByPageId instead
|
||||
- ::getTimestampFromId - use RevisionStore::getTimestampFromId instead
|
||||
|
|
|
|||
|
|
@ -166,6 +166,8 @@ class Revision implements IDBAccessObject {
|
|||
* Make a fake revision object from an archive table row. This is queried
|
||||
* for permissions or even inserted (as in Special:Undelete)
|
||||
*
|
||||
* @deprecated since 1.31 (soft), 1.35 (hard)
|
||||
*
|
||||
* @param object $row
|
||||
* @param array $overrides
|
||||
*
|
||||
|
|
@ -173,6 +175,8 @@ class Revision implements IDBAccessObject {
|
|||
* @return Revision
|
||||
*/
|
||||
public static function newFromArchiveRow( $row, $overrides = [] ) {
|
||||
wfDeprecated( __METHOD__, '1.31' );
|
||||
|
||||
/**
|
||||
* MCR Migration: https://phabricator.wikimedia.org/T183564
|
||||
* This method used to overwrite attributes, then passed to Revision::__construct
|
||||
|
|
|
|||
|
|
@ -436,7 +436,8 @@ class DifferenceEngine extends ContextSource {
|
|||
$permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
|
||||
if ( $permissionManager->userHasRight( $this->getUser(), 'deletedhistory' ) ) {
|
||||
$dbr = wfGetDB( DB_REPLICA );
|
||||
$arQuery = $this->revisionStore->getArchiveQueryInfo();
|
||||
$revStore = $this->revisionStore;
|
||||
$arQuery = $revStore->getArchiveQueryInfo();
|
||||
$row = $dbr->selectRow(
|
||||
$arQuery['tables'],
|
||||
array_merge( $arQuery['fields'], [ 'ar_namespace', 'ar_title' ] ),
|
||||
|
|
@ -446,12 +447,12 @@ class DifferenceEngine extends ContextSource {
|
|||
$arQuery['joins']
|
||||
);
|
||||
if ( $row ) {
|
||||
$rev = Revision::newFromArchiveRow( $row );
|
||||
$revRecord = $revStore->newRevisionFromArchiveRow( $row );
|
||||
$title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
|
||||
|
||||
return SpecialPage::getTitleFor( 'Undelete' )->getFullURL( [
|
||||
'target' => $title->getPrefixedText(),
|
||||
'timestamp' => $rev->getTimestamp()
|
||||
'timestamp' => $revRecord->getTimestamp()
|
||||
] );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,13 +19,25 @@
|
|||
* @ingroup RevisionDelete
|
||||
*/
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Revision\RevisionFactory;
|
||||
|
||||
/**
|
||||
* Item class for a archive table row
|
||||
*/
|
||||
class RevDelArchiveItem extends RevDelRevisionItem {
|
||||
protected static function initRevision( $list, $row ) {
|
||||
return Revision::newFromArchiveRow( $row,
|
||||
[ 'page' => $list->title->getArticleID() ] );
|
||||
$revRecord = MediaWikiServices::getInstance()
|
||||
->getRevisionFactory()
|
||||
->newRevisionFromArchiveRow(
|
||||
$row,
|
||||
RevisionFactory::READ_NORMAL,
|
||||
null,
|
||||
[ 'page_id' => $list->title->getArticleID() ]
|
||||
);
|
||||
|
||||
// TODO return a RevisionRecord instead
|
||||
return new Revision( $revRecord );
|
||||
}
|
||||
|
||||
public function getIdField() {
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Revision\RevisionFactory;
|
||||
use MediaWiki\Revision\RevisionRecord;
|
||||
use MediaWiki\Storage\NameTableAccessException;
|
||||
use Wikimedia\Rdbms\IResultWrapper;
|
||||
|
|
@ -958,10 +959,14 @@ class SpecialUndelete extends SpecialPage {
|
|||
}
|
||||
|
||||
protected function formatRevisionRow( $row, $earliestLiveTime, $remaining ) {
|
||||
$rev = Revision::newFromArchiveRow( $row,
|
||||
[
|
||||
'title' => $this->mTargetObj
|
||||
] );
|
||||
$revRecord = MediaWikiServices::getInstance()
|
||||
->getRevisionFactory()
|
||||
->newRevisionFromArchiveRow(
|
||||
$row,
|
||||
RevisionFactory::READ_NORMAL,
|
||||
$this->mTargetObj
|
||||
);
|
||||
$revObject = new Revision( $revRecord );
|
||||
|
||||
$revTextSize = '';
|
||||
$ts = wfTimestamp( TS_MW, $row->ar_timestamp );
|
||||
|
|
@ -986,14 +991,14 @@ class SpecialUndelete extends SpecialPage {
|
|||
$titleObj = $this->getPageTitle();
|
||||
# Last link
|
||||
if ( !RevisionRecord::userCanBitfield(
|
||||
$rev->getVisibility(),
|
||||
$revRecord->getVisibility(),
|
||||
RevisionRecord::DELETED_TEXT,
|
||||
$this->getUser()
|
||||
) ) {
|
||||
$pageLink = htmlspecialchars( $this->getLanguage()->userTimeAndDate( $ts, $user ) );
|
||||
$last = $this->msg( 'diff' )->escaped();
|
||||
} elseif ( $remaining > 0 || ( $earliestLiveTime && $ts > $earliestLiveTime ) ) {
|
||||
$pageLink = $this->getPageLink( $rev, $titleObj, $ts );
|
||||
$pageLink = $this->getPageLink( $revObject, $titleObj, $ts );
|
||||
$last = $this->getLinkRenderer()->makeKnownLink(
|
||||
$titleObj,
|
||||
$this->msg( 'diff' )->text(),
|
||||
|
|
@ -1005,7 +1010,7 @@ class SpecialUndelete extends SpecialPage {
|
|||
]
|
||||
);
|
||||
} else {
|
||||
$pageLink = $this->getPageLink( $rev, $titleObj, $ts );
|
||||
$pageLink = $this->getPageLink( $revObject, $titleObj, $ts );
|
||||
$last = $this->msg( 'diff' )->escaped();
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1014,10 +1019,10 @@ class SpecialUndelete extends SpecialPage {
|
|||
}
|
||||
|
||||
// User links
|
||||
$userLink = Linker::revUserTools( $rev );
|
||||
$userLink = Linker::revUserTools( $revObject );
|
||||
|
||||
// Minor edit
|
||||
$minor = $rev->isMinor() ? ChangesList::flag( 'minor' ) : '';
|
||||
$minor = $revRecord->isMinor() ? ChangesList::flag( 'minor' ) : '';
|
||||
|
||||
// Revision text size
|
||||
$size = $row->ar_len;
|
||||
|
|
@ -1026,7 +1031,7 @@ class SpecialUndelete extends SpecialPage {
|
|||
}
|
||||
|
||||
// Edit summary
|
||||
$comment = Linker::revComment( $rev );
|
||||
$comment = Linker::revComment( $revObject );
|
||||
|
||||
// Tags
|
||||
$attribs = [];
|
||||
|
|
|
|||
|
|
@ -236,6 +236,8 @@ class DeletedContribsPager extends IndexPager {
|
|||
$classes = [];
|
||||
$attribs = [];
|
||||
|
||||
$revFactory = MediaWikiServices::getInstance()->getRevisionFactory();
|
||||
|
||||
/*
|
||||
* There may be more than just revision rows. To make sure that we'll only be processing
|
||||
* revisions here, let's _try_ to build a revision out of our row (without displaying
|
||||
|
|
@ -245,15 +247,15 @@ class DeletedContribsPager extends IndexPager {
|
|||
*/
|
||||
Wikimedia\suppressWarnings();
|
||||
try {
|
||||
$rev = Revision::newFromArchiveRow( $row );
|
||||
$validRevision = (bool)$rev->getId();
|
||||
$revRecord = $revFactory->newRevisionFromArchiveRow( $row );
|
||||
$validRevision = (bool)$revRecord->getId();
|
||||
} catch ( Exception $e ) {
|
||||
$validRevision = false;
|
||||
}
|
||||
Wikimedia\restoreWarnings();
|
||||
|
||||
if ( $validRevision ) {
|
||||
$attribs['data-mw-revid'] = $rev->getId();
|
||||
$attribs['data-mw-revid'] = $revRecord->getId();
|
||||
$ret = $this->formatRevisionRow( $row );
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -154,9 +154,14 @@ class PopulateRevisionLength extends LoggedUpdateMaintenance {
|
|||
protected function upgradeRow( $row, $table, $idCol, $prefix ) {
|
||||
$dbw = $this->getDB( DB_MASTER );
|
||||
|
||||
$rev = ( $table === 'archive' )
|
||||
? Revision::newFromArchiveRow( $row )
|
||||
: new Revision( $row );
|
||||
if ( $table === 'archive' ) {
|
||||
$revRecord = MediaWikiServices::getInstance()
|
||||
->getRevisionFactory()
|
||||
->newRevisionFromArchiveRow( $row );
|
||||
$rev = new Revision( $revRecord );
|
||||
} else {
|
||||
$rev = new Revision( $row );
|
||||
}
|
||||
|
||||
$content = $rev->getContent( RevisionRecord::RAW );
|
||||
if ( !$content ) {
|
||||
|
|
|
|||
|
|
@ -440,6 +440,8 @@ class RevisionDbTest extends MediaWikiIntegrationTestCase {
|
|||
* @covers Revision::newFromArchiveRow
|
||||
*/
|
||||
public function testNewFromArchiveRow( $selectModifier ) {
|
||||
$this->hideDeprecated( 'Revision::newFromArchiveRow' );
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
|
||||
$store = new RevisionStore(
|
||||
|
|
@ -490,6 +492,8 @@ class RevisionDbTest extends MediaWikiIntegrationTestCase {
|
|||
* @covers Revision::newFromArchiveRow
|
||||
*/
|
||||
public function testNewFromArchiveRowOverrides() {
|
||||
$this->hideDeprecated( 'Revision::newFromArchiveRow' );
|
||||
|
||||
$page = $this->createPage(
|
||||
'RevisionStorageTest_testNewFromArchiveRow',
|
||||
'Lorem Ipsum',
|
||||
|
|
|
|||
Loading…
Reference in a new issue