MarkTraceur has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/386692 )

Change subject: [WIP] Look up entity IDs based on title
......................................................................

[WIP] Look up entity IDs based on title

WIP - not sure what the hook interface will look like in the end, but
this works currently.

Bug: T177022
Change-Id: Icd239d7321f678a7142655555ff2593b0b85a1f2
---
M extension.json
M src/WikibaseMediaInfoHooks.php
2 files changed, 39 insertions(+), 11 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseMediaInfo 
refs/changes/92/386692/1

diff --git a/extension.json b/extension.json
index ccf7452..1d454dd 100644
--- a/extension.json
+++ b/extension.json
@@ -41,6 +41,9 @@
                ],
                "ImagePageAfterImageLinks": [
                        
"Wikibase\\MediaInfo\\WikibaseMediaInfoHooks::onImagePageAfterImageLinks"
+               ],
+               "GetEntityIdForLink": [
+                       
"Wikibase\\MediaInfo\\WikibaseMediaInfoHooks::onGetEntityIdForLink"
                ]
        },
        "MessagesDirs": {
diff --git a/src/WikibaseMediaInfoHooks.php b/src/WikibaseMediaInfoHooks.php
index 18100fc..890e160 100644
--- a/src/WikibaseMediaInfoHooks.php
+++ b/src/WikibaseMediaInfoHooks.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\MediaInfo;
 
+use Title;
 use ImagePage;
 use MediaWiki\MediaWikiServices;
 use Wikibase\MediaInfo\DataModel\MediaInfo;
@@ -14,6 +15,34 @@
  * @author Bene* < benestar.wikime...@gmail.com >
  */
 class WikibaseMediaInfoHooks {
+
+       /**
+        * Helper function to get MediaInfo entity ID based on title
+        *
+        * @param Title $pageTitle
+        *
+        * @return EntityId|null
+        */
+       private static function getEntityIdForTitle( Title $pageTitle ) {
+               if ( !$pageTitle->inNamespace( NS_FILE ) ) {
+                       return null;
+               }
+
+               $pageId = $pageTitle->getArticleID();
+
+               if ( !$pageId ) {
+                       return;
+               }
+
+               $wikibaseRepo = WikibaseRepo::getDefaultInstance();
+               $entityId = 
$wikibaseRepo->getEntityIdComposer()->composeEntityId(
+                       '',
+                       MediaInfo::ENTITY_TYPE,
+                       $pageId
+               );
+
+               return $entityId;
+       }
 
        /**
         * Hook to register the MediaInfo entity namespaces for 
EntityNamespaceLookup.
@@ -47,22 +76,18 @@
 
        public static function onImagePageAfterImageLinks( ImagePage $page, 
&$html ) {
                $imgTitle = $page->getTitle();
-               $pageId = $imgTitle->getArticleID();
-
-               if ( !$pageId ) {
-                       return;
-               }
-
+               $entityId = self::getEntityIdForTitle( $imgTitle );
                $wikibaseRepo = WikibaseRepo::getDefaultInstance();
-               $entityId = 
$wikibaseRepo->getEntityIdComposer()->composeEntityId(
-                       '',
-                       MediaInfo::ENTITY_TYPE,
-                       $pageId
-               );
                $title = $wikibaseRepo->getEntityTitleLookup()->getTitleForId( 
$entityId );
                $linkHtml = 
MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink( $title );
 
                $html .= '<h2>' . $linkHtml . '</h2>';
        }
 
+       public static function onGetEntityIdForLink( $siteId, $pageTitle, array 
&$results ) {
+               $imgTitle = Title::newFromText( $pageTitle );
+               $entityId = self::getEntityIdForTitle( $imgTitle );
+               $results['alternative'][] = $entityId;
+               return true;
+       }
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icd239d7321f678a7142655555ff2593b0b85a1f2
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseMediaInfo
Gerrit-Branch: master
Gerrit-Owner: MarkTraceur <mholmqu...@wikimedia.org>

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

Reply via email to