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