Thiemo Mättig (WMDE) has uploaded a new change for review.

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

Change subject: Rework and clean up badge related code
......................................................................

Rework and clean up badge related code

Change-Id: I268f60f5c9376016b7e8e982a4c2388da730f3c0
---
M lib/includes/serializers/SiteLinkSerializer.php
M repo/includes/ChangeOp/SiteLinkChangeOpFactory.php
M repo/includes/View/SiteLinksView.php
3 files changed, 33 insertions(+), 24 deletions(-)


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

diff --git a/lib/includes/serializers/SiteLinkSerializer.php 
b/lib/includes/serializers/SiteLinkSerializer.php
index 9773753..5f48885 100644
--- a/lib/includes/serializers/SiteLinkSerializer.php
+++ b/lib/includes/serializers/SiteLinkSerializer.php
@@ -87,11 +87,12 @@
                        }
 
                        if ( !$setRemoved ) {
-                               $badges = array();
-
-                               foreach ( $siteLink->getBadges() as $badge ) {
-                                       $badges[] = $badge->getSerialization();
-                               }
+                               $badges = array_map(
+                                       function( ItemId $id ) {
+                                               return $id->getSerialization();
+                                       },
+                                       $siteLink->getBadges()
+                               );
 
                                if ( $this->options->shouldIndexTags() ) {
                                        $this->setIndexedTagName( $badges, 
'badge' );
diff --git a/repo/includes/ChangeOp/SiteLinkChangeOpFactory.php 
b/repo/includes/ChangeOp/SiteLinkChangeOpFactory.php
index 66914f0..186fa79 100644
--- a/repo/includes/ChangeOp/SiteLinkChangeOpFactory.php
+++ b/repo/includes/ChangeOp/SiteLinkChangeOpFactory.php
@@ -3,6 +3,7 @@
 namespace Wikibase\ChangeOp;
 
 use InvalidArgumentException;
+use Wikibase\DataModel\Entity\ItemId;
 
 /**
  * Factory for ChangeOps that modify SiteLinks.
@@ -15,12 +16,12 @@
        /**
         * @param string $siteId
         * @param string $pageName
-        * @param array|null $badges
+        * @param ItemId[]|null $badges
         *
         * @throws InvalidArgumentException
         * @return ChangeOp
         */
-       public function newSetSiteLinkOp( $siteId, $pageName, $badges = array() 
) {
+       public function newSetSiteLinkOp( $siteId, $pageName, $badges = null ) {
                return new ChangeOpSiteLink( $siteId, $pageName, $badges );
        }
 
diff --git a/repo/includes/View/SiteLinksView.php 
b/repo/includes/View/SiteLinksView.php
index ae1a932..d7fb2c9 100644
--- a/repo/includes/View/SiteLinksView.php
+++ b/repo/includes/View/SiteLinksView.php
@@ -7,9 +7,9 @@
 use Sanitizer;
 use Site;
 use SiteList;
-use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\SiteLink;
+use Wikibase\DataModel\Term\FingerprintProvider;
 use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\Utils;
 
@@ -40,9 +40,9 @@
        private $entityLookup;
 
        /**
-        * @var string
+        * @var string[]
         */
-       private $languageCode;
+       private $badgeItems;
 
        /**
         * @var string[]
@@ -50,10 +50,18 @@
        private $specialSiteLinkGroups;
 
        /**
-        * @var array
+        * @var string
         */
-       private $badgeItems;
+       private $languageCode;
 
+       /**
+        * @param SiteList $sites
+        * @param SectionEditLinkGenerator $sectionEditLinkGenerator
+        * @param EntityLookup $entityLookup
+        * @param string[] $badgeItems
+        * @param string[] $specialSiteLinkGroups
+        * @param string $languageCode
+        */
        public function __construct(
                SiteList $sites,
                SectionEditLinkGenerator $sectionEditLinkGenerator,
@@ -317,7 +325,6 @@
        private function getHtmlForBadges( SiteLink $siteLink ) {
                $html = '';
 
-               /** @var ItemId $badge */
                foreach ( $siteLink->getBadges() as $badge ) {
                        $serialization = $badge->getSerialization();
                        $classes = Sanitizer::escapeClass( $serialization );
@@ -339,22 +346,22 @@
         * Returns the title for the given badge id.
         * @todo use TermLookup when we have one
         *
-        * @param EntityId $badgeId
+        * @param ItemId $badgeId
         *
         * @return string
         */
-       private function getTitleForBadge( EntityId $badgeId ) {
-               $entity = $this->entityLookup->getEntity( $badgeId );
-               if ( $entity === null ) {
-                       return $badgeId->getSerialization();
+       private function getTitleForBadge( ItemId $badgeId ) {
+               $badge = $this->entityLookup->getEntity( $badgeId );
+
+               if ( $badge instanceof FingerprintProvider ) {
+                       $labels = $badge->getFingerprint()->getLabels();
+
+                       if ( $labels->hasTermForLanguage( $this->languageCode ) 
) {
+                               return $labels->getByLanguage( 
$this->languageCode )->getText();
+                       }
                }
 
-               $labels = $entity->getFingerprint()->getLabels();
-               if ( $labels->hasTermForLanguage( $this->languageCode ) ) {
-                       return $labels->getByLanguage( $this->languageCode 
)->getText();
-               } else {
-                       return $badgeId->getSerialization();
-               }
+               return $badgeId->getSerialization();
        }
 
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I268f60f5c9376016b7e8e982a4c2388da730f3c0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to