Daniel Kinzler has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/197663

Change subject: New hook: OpportunisticLinksUpdate
......................................................................

New hook: OpportunisticLinksUpdate

Change-Id: I8b9238cd6b0010ad91fae24d4eb1e7cd0c201931
---
M RELEASE-NOTES-1.25
M docs/hooks.txt
M includes/page/WikiPage.php
3 files changed, 21 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/63/197663/1

diff --git a/RELEASE-NOTES-1.25 b/RELEASE-NOTES-1.25
index d1745d2..472e77a 100644
--- a/RELEASE-NOTES-1.25
+++ b/RELEASE-NOTES-1.25
@@ -400,6 +400,8 @@
   addSecondaryDataUpdate throwing an exception. These functions will be 
removed in 1.26,
   since they interfere with caching of ParserOutput objects.
 * Introduced new hook 'SecondaryDataUpdates' that allows extensions to inject 
custom updates.
+* Introduced new hook 'OpportunisticLinksUpdate' that allows extensions to 
perform
+  updates when a page is re-rendered.
 * EditPage::attemptSave has been modified not to call handleStatus itself and
   instead just returns the Status object. Extension calling it should be aware 
of
   this.
diff --git a/docs/hooks.txt b/docs/hooks.txt
index 62285df..7384c99 100644
--- a/docs/hooks.txt
+++ b/docs/hooks.txt
@@ -1994,6 +1994,17 @@
 can alter or append to the array of URLs for search & suggestion formats.
 &$urls: array of associative arrays with Url element attributes
 
+'OpportunisticLinksUpdate': Called by WikiPage::triggerOpportunisticLinksUpdate
+when a page view triggers a re-rendering of the page. This may happen
+particularly if the parser cache is split by user language, and no cached
+rendering of the page exists in the user's language. The hook is called
+before checking whether page_links_updated indicates that the links are up
+to date. Returning false will cause triggerOpportunisticLinksUpdate() to abort
+without triggering any updates.
+$page: the Page that was rendered.
+$title: the Title of the rendered page.
+$output: ParserOutput resulting from rendering the page.
+
 'OtherBlockLogLink': Get links to the block log from extensions which blocks
 users and/or IP addresses too.
 $otherBlockLink: An array with links to other block logs
diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php
index b1e4f2d..492384e 100644
--- a/includes/page/WikiPage.php
+++ b/includes/page/WikiPage.php
@@ -3381,12 +3381,15 @@
         * Opportunistically enqueue link update jobs given fresh parser output 
if useful
         *
         * @param ParserOutput $parserOutput Current version page output
-        * @return bool Whether a job was pushed
         * @since 1.25
         */
        public function triggerOpportunisticLinksUpdate( ParserOutput 
$parserOutput ) {
                if ( wfReadOnly() ) {
-                       return false;
+                       return;
+               }
+
+               if ( !Hooks::run( 'OpportunisticLinksUpdate', array( $this, 
$this->mTitle, $parserOutput ) ) ) {
+                       return;
                }
 
                if ( $this->mTitle->areRestrictionsCascading() ) {
@@ -3397,7 +3400,7 @@
                        $params = array();
                } else {
                        // If the inclusions are deterministic, the 
edit-triggered link jobs are enough
-                       return false;
+                       return;
                }
 
                // Check if the last link refresh was before page_touched
@@ -3405,10 +3408,10 @@
                        JobQueueGroup::singleton()->push( 
EnqueueJob::newFromLocalJobs(
                                new JobSpecification( 'refreshLinks', $params, 
array(), $this->mTitle )
                        ) );
-                       return true;
+                       return;
                }
 
-               return false;
+               return;
        }
 
        /**

-- 
To view, visit https://gerrit.wikimedia.org/r/197663
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8b9238cd6b0010ad91fae24d4eb1e7cd0c201931
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to