From: jenkins-bot Date: Wed, 28 Oct 2015 04:31:33 +0000 (+0000) Subject: Merge "objectcache: Introduce IExpiringStore for convenient TTL constants" X-Git-Tag: 1.31.0-rc.0~9200 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=31cd8cd486ca2573ae56949f9eb0c575985d985c;hp=e8275758fec2a2f1195e528dff43dec5311322a1;p=lhc%2Fweb%2Fwiklou.git Merge "objectcache: Introduce IExpiringStore for convenient TTL constants" --- diff --git a/includes/deferred/LinksUpdate.php b/includes/deferred/LinksUpdate.php index 93c75ee31f..9a24b96366 100644 --- a/includes/deferred/LinksUpdate.php +++ b/includes/deferred/LinksUpdate.php @@ -77,6 +77,11 @@ class LinksUpdate extends SqlDataUpdate implements EnqueueableDataUpdate { */ private $linkDeletions = null; + /** + * @var User|null + */ + private $user; + /** * Constructor * @@ -907,6 +912,24 @@ class LinksUpdate extends SqlDataUpdate implements EnqueueableDataUpdate { $this->mRevision = $revision; } + /** + * Set the User who triggered this LinksUpdate + * + * @since 1.27 + * @param User $user + */ + public function setTriggeringUser( User $user ) { + $this->user = $user; + } + + /** + * @since 1.27 + * @return null|User + */ + public function getTriggeringUser() { + return $this->user; + } + /** * Invalidate any necessary link lists related to page property changes * @param array $changed @@ -980,6 +1003,14 @@ class LinksUpdate extends SqlDataUpdate implements EnqueueableDataUpdate { } public function getAsJobSpecification() { + if ( $this->user ) { + $userInfo = array( + 'userId' => $this->user->getId(), + 'userName' => $this->user->getName(), + ); + } else { + $userInfo = false; + } return array( 'wiki' => $this->mDb->getWikiID(), 'job' => new JobSpecification( @@ -987,7 +1018,8 @@ class LinksUpdate extends SqlDataUpdate implements EnqueueableDataUpdate { array( // Reuse the parser cache if it was saved 'rootJobTimestamp' => $this->mParserOutput->getCacheTime(), - 'useRecursiveLinksUpdate' => $this->mRecursive + 'useRecursiveLinksUpdate' => $this->mRecursive, + 'triggeringUser' => $userInfo, ), array( 'removeDuplicates' => true ), $this->getTitle() diff --git a/includes/jobqueue/jobs/RefreshLinksJob.php b/includes/jobqueue/jobs/RefreshLinksJob.php index 915ee232fd..26f452067b 100644 --- a/includes/jobqueue/jobs/RefreshLinksJob.php +++ b/includes/jobqueue/jobs/RefreshLinksJob.php @@ -215,8 +215,20 @@ class RefreshLinksJob extends Job { $updates = $content->getSecondaryDataUpdates( $title, null, !empty( $this->params['useRecursiveLinksUpdate'] ), $parserOutput ); foreach ( $updates as $key => $update ) { - if ( $update instanceof LinksUpdate && isset( $this->params['triggeredRecursive'] ) ) { - $update->setTriggeredRecursive(); + if ( $update instanceof LinksUpdate ) { + if ( isset( $this->params['triggeredRecursive'] ) ) { + $update->setTriggeredRecursive(); + } + if ( isset( $this->params['triggeringUser'] ) && $this->params['triggeringUser'] ) { + $userInfo = $this->params['triggeringUser']; + if ( $userInfo['userId'] ) { + $user = User::newFromId( $userInfo['userId'] ); + } else { + // Anonymous, use the username + $user = User::newFromName( $userInfo['userName'], false ); + } + $update->setTriggeringUser( $user ); + } } } diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index 3c6109bf49..e71c0ec238 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -2186,6 +2186,7 @@ class WikiPage implements Page, IDBAccessObject { foreach ( $updates as $update ) { if ( $update instanceof LinksUpdate ) { $update->setRevision( $revision ); + $update->setTriggeringUser( $user ); } DeferredUpdates::addUpdate( $update ); } diff --git a/tests/phpunit/phpunit.php b/tests/phpunit/phpunit.php index fab6dfb5eb..aaa77514f6 100755 --- a/tests/phpunit/phpunit.php +++ b/tests/phpunit/phpunit.php @@ -117,7 +117,7 @@ class PHPUnitMaintClass extends Maintenance { // Bug T116683 serialize_precision of 100 // may break testing against floating point values // treated with PHP's serialize() - ini_set( 'serialize_precision', 14 ); + ini_set( 'serialize_precision', 17 ); } public function execute() {