Migrate WikiPage::doEditUpdates() to using PageUpdaterFactory
WikiPage::doEditUpdates() has been deprecated. Using the PageUpdaterFactory's newDerivedPageDataUpdater() is the new way forward. Also, I made sure to have the `$options` array with the `causeAction` and `causeAgent` key/value pairs. Change-Id: I9f2c212d7c83a46799f9f947dc372dc364289680
This commit is contained in:
parent
b83f718f59
commit
6407361b46
6 changed files with 81 additions and 29 deletions
|
|
@ -34,6 +34,7 @@ use MediaWiki\Permissions\PermissionStatus;
|
|||
use MediaWiki\Revision\RevisionRecord;
|
||||
use MediaWiki\Revision\RevisionStore;
|
||||
use MediaWiki\Revision\SlotRecord;
|
||||
use MediaWiki\Storage\PageUpdaterFactory;
|
||||
use MediaWiki\User\UserEditTracker;
|
||||
use MediaWiki\User\UserFactory;
|
||||
use MediaWiki\User\UserIdentity;
|
||||
|
|
@ -130,7 +131,12 @@ class MovePage {
|
|||
'MaximumMovedPages',
|
||||
];
|
||||
|
||||
/** @var PageUpdaterFactory */
|
||||
private $pageUpdaterFactory;
|
||||
|
||||
/**
|
||||
* @internal Extensions should use the MovePageFactory.
|
||||
*
|
||||
* @param Title $oldTitle
|
||||
* @param Title $newTitle
|
||||
* @param ServiceOptions|null $options
|
||||
|
|
@ -147,6 +153,7 @@ class MovePage {
|
|||
* @param UserEditTracker|null $userEditTracker
|
||||
* @param MovePageFactory|null $movePageFactory
|
||||
* @param CollationFactory|null $collationFactory
|
||||
* @param PageUpdaterFactory|null $pageUpdaterFactory
|
||||
* @deprecated since 1.34, hard deprecated since 1.37. Use MovePageFactory instead.
|
||||
*/
|
||||
public function __construct(
|
||||
|
|
@ -165,7 +172,8 @@ class MovePage {
|
|||
UserFactory $userFactory = null,
|
||||
UserEditTracker $userEditTracker = null,
|
||||
MovePageFactory $movePageFactory = null,
|
||||
CollationFactory $collationFactory = null
|
||||
CollationFactory $collationFactory = null,
|
||||
PageUpdaterFactory $pageUpdaterFactory = null
|
||||
) {
|
||||
if ( !$options ) {
|
||||
wfDeprecatedMsg(
|
||||
|
|
@ -201,6 +209,7 @@ class MovePage {
|
|||
$this->userEditTracker = $userEditTracker ?? $services()->getUserEditTracker();
|
||||
$this->movePageFactory = $movePageFactory ?? $services()->getMovePageFactory();
|
||||
$this->collationFactory = $collationFactory ?? $services()->getCollationFactory();
|
||||
$this->pageUpdaterFactory = $pageUpdaterFactory ?? $services()->getPageUpdaterFactory();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1017,8 +1026,17 @@ class MovePage {
|
|||
$this->hookRunner->onRevisionFromEditComplete(
|
||||
$newpage, $nullRevision, $nullRevision->getParentId(), $user, $fakeTags );
|
||||
|
||||
$newpage->doEditUpdates( $nullRevision, $user,
|
||||
[ 'changed' => false, 'moved' => true, 'oldcountable' => $oldcountable ] );
|
||||
$options = [
|
||||
'changed' => false,
|
||||
'moved' => true,
|
||||
'oldcountable' => $oldcountable,
|
||||
'causeAction' => 'edit-page',
|
||||
'causeAgent' => $user->getName(),
|
||||
];
|
||||
|
||||
$updater = $this->pageUpdaterFactory->newDerivedPageDataUpdater( $newpage );
|
||||
$updater->prepareUpdate( $nullRevision, $options );
|
||||
$updater->doUpdates();
|
||||
|
||||
WikiPage::onArticleCreate( $nt );
|
||||
|
||||
|
|
|
|||
|
|
@ -1070,7 +1070,8 @@ return [
|
|||
$services->getDBLoadBalancer(),
|
||||
$services->getRevisionStore(),
|
||||
$services->getSlotRoleRegistry(),
|
||||
$services->getWikiPageFactory()
|
||||
$services->getWikiPageFactory(),
|
||||
$services->getPageUpdaterFactory()
|
||||
);
|
||||
},
|
||||
|
||||
|
|
@ -1912,7 +1913,8 @@ return [
|
|||
$services->getDBLoadBalancer(),
|
||||
$services->getRevisionStore(),
|
||||
$services->getSlotRoleRegistry(),
|
||||
$services->getWikiPageFactory()
|
||||
$services->getWikiPageFactory(),
|
||||
$services->getPageUpdaterFactory()
|
||||
);
|
||||
},
|
||||
|
||||
|
|
@ -1986,7 +1988,8 @@ return [
|
|||
WikiMap::getCurrentWikiDbDomain()->getId(),
|
||||
WebRequest::getRequestId(),
|
||||
$services->getBacklinkCacheFactory(),
|
||||
LoggerFactory::getInstance( 'UndeletePage' )
|
||||
LoggerFactory::getInstance( 'UndeletePage' ),
|
||||
$services->getPageUpdaterFactory()
|
||||
);
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ use MediaWiki\Page\WikiPageFactory;
|
|||
use MediaWiki\Revision\MutableRevisionRecord;
|
||||
use MediaWiki\Revision\RevisionStore;
|
||||
use MediaWiki\Revision\SlotRoleRegistry;
|
||||
use MediaWiki\Storage\PageUpdaterFactory;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Wikimedia\Rdbms\ILoadBalancer;
|
||||
|
||||
|
|
@ -43,6 +44,9 @@ class ImportableOldRevisionImporter implements OldRevisionImporter {
|
|||
*/
|
||||
private $wikiPageFactory;
|
||||
|
||||
/** @var PageUpdaterFactory */
|
||||
private $pageUpdaterFactory;
|
||||
|
||||
/**
|
||||
* @param bool $doUpdates
|
||||
* @param LoggerInterface $logger
|
||||
|
|
@ -50,6 +54,7 @@ class ImportableOldRevisionImporter implements OldRevisionImporter {
|
|||
* @param RevisionStore $revisionStore
|
||||
* @param SlotRoleRegistry $slotRoleRegistry
|
||||
* @param WikiPageFactory|null $wikiPageFactory
|
||||
* @param PageUpdaterFactory|null $pageUpdaterFactory
|
||||
*/
|
||||
public function __construct(
|
||||
$doUpdates,
|
||||
|
|
@ -57,15 +62,19 @@ class ImportableOldRevisionImporter implements OldRevisionImporter {
|
|||
ILoadBalancer $loadBalancer,
|
||||
RevisionStore $revisionStore,
|
||||
SlotRoleRegistry $slotRoleRegistry,
|
||||
WikiPageFactory $wikiPageFactory = null
|
||||
WikiPageFactory $wikiPageFactory = null,
|
||||
PageUpdaterFactory $pageUpdaterFactory = null
|
||||
) {
|
||||
$this->doUpdates = $doUpdates;
|
||||
$this->logger = $logger;
|
||||
$this->loadBalancer = $loadBalancer;
|
||||
$this->revisionStore = $revisionStore;
|
||||
$this->slotRoleRegistry = $slotRoleRegistry;
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
// @todo: temporary - remove when FileImporter extension is updated
|
||||
$this->wikiPageFactory = $wikiPageFactory ?? MediaWikiServices::getInstance()->getWikiPageFactory();
|
||||
$this->wikiPageFactory = $wikiPageFactory ?? $services->getWikiPageFactory();
|
||||
$this->pageUpdaterFactory = $pageUpdaterFactory ?? $services->getPageUpdaterFactory();
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
|
|
@ -219,12 +228,17 @@ class ImportableOldRevisionImporter implements OldRevisionImporter {
|
|||
if ( $changed !== false && $this->doUpdates ) {
|
||||
$this->logger->debug( __METHOD__ . ": running updates" );
|
||||
// countable/oldcountable stuff is handled in WikiImporter::finishImportPage
|
||||
// @todo replace deprecated function
|
||||
$page->doEditUpdates(
|
||||
$inserted,
|
||||
$user,
|
||||
[ 'created' => $created, 'oldcountable' => 'no-change' ]
|
||||
);
|
||||
|
||||
$options = [
|
||||
'created' => $created,
|
||||
'oldcountable' => 'no-change',
|
||||
'causeAction' => 'edit-page',
|
||||
'causeAgent' => $user->getName(),
|
||||
];
|
||||
|
||||
$updater = $this->pageUpdaterFactory->newDerivedPageDataUpdater( $page );
|
||||
$updater->prepareUpdate( $inserted, $options );
|
||||
$updater->doUpdates();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ use MediaWiki\EditPage\SpamChecker;
|
|||
use MediaWiki\HookContainer\HookContainer;
|
||||
use MediaWiki\Permissions\Authority;
|
||||
use MediaWiki\Revision\RevisionStore;
|
||||
use MediaWiki\Storage\PageUpdaterFactory;
|
||||
use MediaWiki\User\ActorNormalization;
|
||||
use MediaWiki\User\UserEditTracker;
|
||||
use MediaWiki\User\UserFactory;
|
||||
|
|
@ -142,6 +143,9 @@ class PageCommandFactory implements
|
|||
/** @var LoggerInterface */
|
||||
private $undeletePageLogger;
|
||||
|
||||
/** @var PageUpdaterFactory */
|
||||
private $pageUpdaterFactory;
|
||||
|
||||
public function __construct(
|
||||
Config $config,
|
||||
LBFactory $lbFactory,
|
||||
|
|
@ -167,7 +171,8 @@ class PageCommandFactory implements
|
|||
string $localWikiID,
|
||||
string $webRequestID,
|
||||
BacklinkCacheFactory $backlinkCacheFactory,
|
||||
LoggerInterface $undeletePageLogger
|
||||
LoggerInterface $undeletePageLogger,
|
||||
PageUpdaterFactory $pageUpdaterFactory
|
||||
) {
|
||||
$this->config = $config;
|
||||
$this->lbFactory = $lbFactory;
|
||||
|
|
@ -194,6 +199,7 @@ class PageCommandFactory implements
|
|||
$this->webRequestID = $webRequestID;
|
||||
$this->backlinkCacheFactory = $backlinkCacheFactory;
|
||||
$this->undeletePageLogger = $undeletePageLogger;
|
||||
$this->pageUpdaterFactory = $pageUpdaterFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -289,7 +295,8 @@ class PageCommandFactory implements
|
|||
$this->userFactory,
|
||||
$this->userEditTracker,
|
||||
$this,
|
||||
$this->collationFactory
|
||||
$this->collationFactory,
|
||||
$this->pageUpdaterFactory
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -338,7 +345,8 @@ class PageCommandFactory implements
|
|||
$this->userFactory,
|
||||
$this->wikiPageFactory,
|
||||
$page,
|
||||
$authority
|
||||
$authority,
|
||||
$this->pageUpdaterFactory
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ use MediaWiki\Permissions\Authority;
|
|||
use MediaWiki\Permissions\PermissionStatus;
|
||||
use MediaWiki\Revision\RevisionRecord;
|
||||
use MediaWiki\Revision\RevisionStore;
|
||||
use MediaWiki\Storage\PageUpdaterFactory;
|
||||
use MediaWiki\User\UserFactory;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use ReadOnlyError;
|
||||
|
|
@ -88,6 +89,8 @@ class UndeletePage {
|
|||
private $unsuppress = false;
|
||||
/** @var string[] */
|
||||
private $tags = [];
|
||||
/** @var PageUpdaterFactory */
|
||||
private $pageUpdaterFactory;
|
||||
|
||||
/**
|
||||
* @param HookContainer $hookContainer
|
||||
|
|
@ -101,6 +104,7 @@ class UndeletePage {
|
|||
* @param WikiPageFactory $wikiPageFactory
|
||||
* @param ProperPageIdentity $page
|
||||
* @param Authority $performer
|
||||
* @param PageUpdaterFactory $pageUpdaterFactory
|
||||
*/
|
||||
public function __construct(
|
||||
HookContainer $hookContainer,
|
||||
|
|
@ -113,7 +117,8 @@ class UndeletePage {
|
|||
UserFactory $userFactory,
|
||||
WikiPageFactory $wikiPageFactory,
|
||||
ProperPageIdentity $page,
|
||||
Authority $performer
|
||||
Authority $performer,
|
||||
PageUpdaterFactory $pageUpdaterFactory
|
||||
) {
|
||||
$this->hookRunner = new HookRunner( $hookContainer );
|
||||
$this->jobQueueGroup = $jobQueueGroup;
|
||||
|
|
@ -127,6 +132,7 @@ class UndeletePage {
|
|||
|
||||
$this->page = $page;
|
||||
$this->performer = $performer;
|
||||
$this->pageUpdaterFactory = $pageUpdaterFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -536,16 +542,18 @@ class UndeletePage {
|
|||
|
||||
if ( $created || $wasnew ) {
|
||||
// Update site stats, link tables, etc
|
||||
// TODO: use DerivedPageDataUpdater from If610c68f4912e!
|
||||
$wikiPage->doEditUpdates(
|
||||
$revision,
|
||||
$revision->getUser( RevisionRecord::RAW ),
|
||||
[
|
||||
'created' => $created,
|
||||
'oldcountable' => $oldcountable,
|
||||
'restored' => true
|
||||
]
|
||||
);
|
||||
$user = $revision->getUser( RevisionRecord::RAW );
|
||||
$options = [
|
||||
'created' => $created,
|
||||
'oldcountable' => $oldcountable,
|
||||
'restored' => true,
|
||||
'causeAction' => 'edit-page',
|
||||
'causeAgent' => $user->getName(),
|
||||
];
|
||||
|
||||
$updater = $this->pageUpdaterFactory->newDerivedPageDataUpdater( $wikiPage );
|
||||
$updater->prepareUpdate( $revision, $options );
|
||||
$updater->doUpdates();
|
||||
}
|
||||
|
||||
$this->hookRunner->onArticleUndelete(
|
||||
|
|
|
|||
|
|
@ -44,7 +44,8 @@ class ImportableOldRevisionImporterTest extends MediaWikiIntegrationTestCase {
|
|||
$services->getDBLoadBalancer(),
|
||||
$services->getRevisionStore(),
|
||||
$services->getSlotRoleRegistry(),
|
||||
$services->getWikiPageFactory()
|
||||
$services->getWikiPageFactory(),
|
||||
$services->getPageUpdaterFactory()
|
||||
);
|
||||
$result = $importer->import( $revision );
|
||||
$this->assertTrue( $result );
|
||||
|
|
|
|||
Loading…
Reference in a new issue