jenkins-bot has submitted this change and it was merged.
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(-)
Approvals:
Hoo man: Looks good to me, approved
jenkins-bot: Verified
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: merged
Gerrit-Change-Id: I268f60f5c9376016b7e8e982a4c2388da730f3c0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits