Aude has uploaded a new change for review.

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

Change subject: Provide display text to ApiQuery module via hook [WIP]
......................................................................

Provide display text to ApiQuery module via hook [WIP]

needs Ie58e042

I propose something simple, explicit and generic for
getting display text for Special:Nearby, mobile watchlist, etc.

Change-Id: I2c215272139e100e7ab35030582e2db28f371c91
---
M repo/Wikibase.php
A repo/includes/Hooks/ApiQueryDisplayTextHookHander.php
2 files changed, 72 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/11/246111/1

diff --git a/repo/Wikibase.php b/repo/Wikibase.php
index b6a987a..b8fce93 100644
--- a/repo/Wikibase.php
+++ b/repo/Wikibase.php
@@ -241,6 +241,7 @@
        $wgHooks['SkinTemplateBuildNavUrlsNav_urlsAfterPermalink'][] = 
'Wikibase\RepoHooks::onSkinTemplateBuildNavUrlsNavUrlsAfterPermalink';
        $wgHooks['SkinMinervaDefaultModules'][] = 
'Wikibase\RepoHooks::onSkinMinervaDefaultModules';
        $wgHooks['ResourceLoaderRegisterModules'][] = 
'Wikibase\RepoHooks::onResourceLoaderRegisterModules';
+       $wgHooks['ApiQueryDisplayText'][] = 
'Wikibase\Repo\Hooks\ApiQueryDisplayTextHookHandler::onApiQueryDisplayText';
 
        // update hooks
        $wgHooks['LoadExtensionSchemaUpdates'][] = 
'\Wikibase\Repo\Store\Sql\ChangesSubscriptionSchemaUpdater::onSchemaUpdate';
diff --git a/repo/includes/Hooks/ApiQueryDisplayTextHookHander.php 
b/repo/includes/Hooks/ApiQueryDisplayTextHookHander.php
new file mode 100644
index 0000000..cfce94a
--- /dev/null
+++ b/repo/includes/Hooks/ApiQueryDisplayTextHookHander.php
@@ -0,0 +1,71 @@
+<?php
+
+namespace Wikibase\Repo\Hooks;
+
+use Wikibase\DataModel\Services\Lookup\TermLookup;
+use Wikibase\Repo\WikibaseRepo;
+use Wikibase\Store\EntityIdLookup;
+
+/**
+ * @since 0.5.
+ *
+ * @license GPL 2+
+ * @author Katie Filbert
+ */
+class ApiQueryDisplayTextHookHandler {
+
+       /**
+        * @var TermLookup
+        */
+       private $termLookup;
+
+       /**
+        * @var EntityIdLookup
+        */
+       private $entityIdLookup;
+
+       private static function newFromGlobalState() {
+               $wikibaseRepo = WikibaseRepo::getDefaultInstance();
+
+               return new ApiQueryDisplayTextHookHandler(
+                       $wikibaseRepo->getTermLookup(),
+                       $wikibaseRepo->getEntityIdLookup()
+               );
+       }
+
+       /**
+        * Static handler for the ApiQueryDisplayText hook.
+        *
+        * @param string[] &$displayTexts Key by page id
+        * @param Title[] $titles Key by page id
+        * @param string $langCode Language code
+        *
+        * @return bool
+        */
+       public static function onApiQueryDisplayText( array &$displayTexts, 
array $titles, $langCode ) {
+               $handler = self::newFromGlobalState();
+
+               wfDebugLog( 'wikidata', $langCode );
+               $displayTexts = $handler->addDisplayTexts( $displayTexts, 
$titles, $langCode );
+
+               return true;
+       }
+
+       /**
+        * @param TermLookup $termLookup
+        */
+       public function __construct( TermLookup $termLookup, EntityIdLookup 
$entityIdLookup ) {
+               $this->termLookup = $termLookup;
+               $this->entityIdLookup = $entityIdLookup;
+       }
+
+       public function addDisplayTexts( array $displayTexts, array $titles, 
$langCode ) {
+               foreach ( $titles as $pageId => $title ) {
+                       $entityId = $this->entityIdLookup->getEntityIdForTitle( 
$title );
+                       $displayTexts[$pageId] = $this->termLookup->getLabel( 
$entityId, $langCode );
+               }
+
+               return $displayTexts;
+       }
+
+}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2c215272139e100e7ab35030582e2db28f371c91
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Aude <aude.w...@gmail.com>

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

Reply via email to