*
* DerivedPageDataUpdater instances are designed to be cached inside a WikiPage instance,
* and re-used by callback code over the course of an update operation. It's a stepping stone
- * one the way to a more complete refactoring of WikiPage.
+ * on the way to a more complete refactoring of WikiPage.
*
* When using a DerivedPageDataUpdater, the following life cycle must be observed:
* grabCurrentRevision (optional), prepareContent (optional), prepareUpdate (required
}
}
- /**
- * @return bool|string
- */
- private function getWikiId() {
- // TODO: get from RevisionStore
- return false;
- }
-
/**
* Checks whether this DerivedPageDataUpdater can be re-used for running updates targeting
* the given revision.
*/
public function isContentDeleted() {
if ( $this->revision ) {
- // XXX: if that revision is the current revision, this should be skipped
return $this->revision->isDeleted( RevisionRecord::DELETED_TEXT );
} else {
// If the content has not been saved yet, it cannot have been deleted yet.
$hasLinks = (bool)count( $this->getCanonicalParserOutput()->getLinks() );
}
- foreach ( $this->getModifiedSlotRoles() as $role ) {
+ foreach ( $this->getSlots()->getSlotRoles() as $role ) {
$roleHandler = $this->slotRoleRegistry->getRoleHandler( $role );
if ( $roleHandler->supportsArticleCount() ) {
$content = $this->getRawContent( $role );
}
// "created" is forced here
- $this->options['created'] = ( $this->pageState['oldId'] === 0 );
+ $this->options['created'] = ( $this->options['created'] ||
+ ( $this->pageState['oldId'] === 0 ) );
$this->revision = $revision;
$id = $this->getPageId();
$title = $this->getTitle();
- $dbKey = $title->getPrefixedDBkey();
$shortTitle = $title->getDBkey();
if ( !$title->exists() ) {
// TODO: make search infrastructure aware of slots!
$mainSlot = $this->revision->getSlot( SlotRecord::MAIN );
if ( !$mainSlot->isInherited() && !$this->isContentDeleted() ) {
- DeferredUpdates::addUpdate( new SearchUpdate( $id, $dbKey, $mainSlot->getContent() ) );
+ DeferredUpdates::addUpdate( new SearchUpdate( $id, $title, $mainSlot->getContent() ) );
}
// If this is another user's talk page, update newtalk.
if ( $this->options['changed']
&& $title->getNamespace() == NS_USER_TALK
&& $shortTitle != $legacyUser->getTitleKey()
- && !( $this->revision->isMinor() && $legacyUser->isAllowed( 'nominornewtalk' ) )
+ && !( $this->revision->isMinor() && MediaWikiServices::getInstance()
+ ->getPermissionManager()
+ ->userHasRight( $legacyUser, 'nominornewtalk' ) )
) {
$recipient = User::newFromName( $shortTitle, false );
if ( !$recipient ) {
// TODO: In the wiring, register a listener for this on the new PageEventEmitter
ResourceLoaderWikiModule::invalidateModuleCache(
- $title, $oldLegacyRevision, $legacyRevision, $this->getWikiId() ?: wfWikiID()
+ $title,
+ $oldLegacyRevision,
+ $legacyRevision,
+ $this->loadbalancerFactory->getLocalDomainID()
);
$this->doTransition( 'done' );