jenkins-bot has submitted this change and it was merged.

Change subject: Batchload all data required to fix Special:EditWatchlist titles
......................................................................


Batchload all data required to fix Special:EditWatchlist titles

This will batchload all the data needed for fetch the topic titles'
text when changing how Flow topics are linked to in
Special:EditWatchlist. All data being requested in that particular
hook will already be in memory because we've already fetched it here.

This depends on a core change: I30b3bbb2c5ef131f069a5aabfad8b88bc2cf09df
While this won't break when the core change isn't yet merged, we should
probably just hold off until it is.

Change-Id: Iec21012d15db53e23013aa6c36fed0e24e0ce6fe
---
M Flow.php
M Hooks.php
2 files changed, 35 insertions(+), 0 deletions(-)

Approvals:
  Jdlrobson: Looks good to me, but someone else must approve
  EBernhardson: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Flow.php b/Flow.php
index 26bab26..5210258 100755
--- a/Flow.php
+++ b/Flow.php
@@ -343,6 +343,7 @@
 $wgHooks['AbortMove'][] = 'FlowHooks::onAbortMove';
 $wgHooks['TitleSquidURLs'][] = 'FlowHooks::onTitleSquidURLs';
 $wgHooks['WatchlistEditorBuildRemoveLine'][] = 
'FlowHooks::onWatchlistEditorBuildRemoveLine';
+$wgHooks['WatchlistEditorBeforeFormRender'][] = 
'FlowHooks::onWatchlistEditorBeforeFormRender';
 
 // Extension initialization
 $wgExtensionFunctions[] = 'FlowHooks::initFlowExtension';
diff --git a/Hooks.php b/Hooks.php
index 2212f47..78d9a18 100644
--- a/Hooks.php
+++ b/Hooks.php
@@ -927,4 +927,38 @@
 
                return true;
        }
+
+       /**
+        * @param array $watchlistInfo Watchlisted pages
+        * @return bool
+        */
+       public static function onWatchlistEditorBeforeFormRender( 
&$watchlistInfo ) {
+               if ( !isset( $watchlistInfo[NS_TOPIC] ) ) {
+                       // No topics watchlisted
+                       return true;
+               }
+
+               $ids = array_keys( $watchlistInfo[NS_TOPIC] );
+
+               // build array of queries to be executed all at once
+               $queries = array();
+               foreach( $ids as $id ) {
+                       $uuid = UUID::create( strtolower( $id ) );
+                       $queries[] = array( 'rev_type_id' => $uuid );
+               }
+
+               /*
+                * Now, finally find all requested topics - this will be stored 
in
+                * local cache so subsequent calls (in 
onWatchlistEditorBuildRemoveLine)
+                * will just find these in memory, instead of doing a bunch of 
network
+                * requests.
+                */
+               Container::get( 'storage' )->findMulti(
+                       'PostRevision',
+                       $queries,
+                       array( 'sort' => 'rev_id', 'order' => 'DESC', 'limit' 
=> 1 )
+               );
+
+               return true;
+       }
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Iec21012d15db53e23013aa6c36fed0e24e0ce6fe
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Flow
Gerrit-Branch: master
Gerrit-Owner: Matthias Mullie <mmul...@wikimedia.org>
Gerrit-Reviewer: Bsitu <bs...@wikimedia.org>
Gerrit-Reviewer: EBernhardson <ebernhard...@wikimedia.org>
Gerrit-Reviewer: Jdlrobson <jrob...@wikimedia.org>
Gerrit-Reviewer: Matthias Mullie <mmul...@wikimedia.org>
Gerrit-Reviewer: SG <shah...@gmail.com>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to