/** @var bool Whether to queue jobs for recursive updates */
public $mRecursive;
- /** @var bool Whether this job was triggered by a recursive update job */
- private $mTriggeredRecursive;
-
/** @var Revision Revision for which this update has been triggered */
private $mRevision;
public function doUpdate() {
Hooks::run( 'LinksUpdate', array( &$this ) );
$this->doIncrementalUpdate();
- Hooks::run( 'LinksUpdateComplete', array( &$this ) );
+
+ $that = $this;
+ $this->mDb->onTransactionIdle( function() use ( $that ) {
+ Hooks::run( 'LinksUpdateComplete', array( &$that ) );
+ } );
}
protected function doIncrementalUpdate() {
- global $wgRCWatchCategoryMembership;
-
# Page links
$existing = $this->getExistingLinks();
$this->linkDeletions = $this->getLinkDeletions( $existing );
$this->invalidateCategories( $categoryUpdates );
$this->updateCategoryCounts( $categoryInserts, $categoryDeletes );
- # Category membership changes
- if (
- $wgRCWatchCategoryMembership &&
- !$this->mTriggeredRecursive && ( $categoryInserts || $categoryDeletes )
- ) {
- $this->triggerCategoryChanges( $categoryInserts, $categoryDeletes );
- }
-
# Page properties
$existing = $this->getExistingProperties();
}
- private function triggerCategoryChanges( $categoryInserts, $categoryDeletes ) {
- $catMembChange = new CategoryMembershipChange( $this->mTitle, $this->mRevision );
-
- if ( $this->mRecursive ) {
- $catMembChange->checkTemplateLinks();
- }
-
- foreach ( $categoryInserts as $categoryName => $value ) {
- $categoryTitle = Title::newFromText( $categoryName, NS_CATEGORY );
- $catMembChange->triggerCategoryAddedNotification( $categoryTitle );
- }
-
- foreach ( $categoryDeletes as $categoryName => $value ) {
- $categoryTitle = Title::newFromText( $categoryName, NS_CATEGORY );
- $catMembChange->triggerCategoryRemovedNotification( $categoryTitle );
- }
- }
-
/**
* Queue recursive jobs for this page
*
return $this->mImages;
}
- /**
- * Set this object as being triggered by a recursive LinksUpdate
- *
- * @since 1.27
- */
- public function setTriggeredRecursive() {
- $this->mTriggeredRecursive = true;
- }
-
/**
* Set the revision corresponding to this LinksUpdate
*
$inv = array( $inv );
}
foreach ( $inv as $table ) {
- $update = new HTMLCacheUpdate( $this->mTitle, $table );
- $update->doUpdate();
+ DeferredUpdates::addUpdate( new HTMLCacheUpdate( $this->mTitle, $table ) );
}
}
}
} else {
$userInfo = false;
}
+
+ if ( $this->mRevision ) {
+ $triggeringRevisionId = $this->mRevision->getId();
+ } else {
+ $triggeringRevisionId = false;
+ }
+
return array(
'wiki' => $this->mDb->getWikiID(),
'job' => new JobSpecification(
'rootJobTimestamp' => $this->mParserOutput->getCacheTime(),
'useRecursiveLinksUpdate' => $this->mRecursive,
'triggeringUser' => $userInfo,
+ 'triggeringRevisionId' => $triggeringRevisionId,
),
array( 'removeDuplicates' => true ),
$this->getTitle()