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