Liangent has uploaded a new change for review.
https://gerrit.wikimedia.org/r/71852
Change subject: Remove Utils::lookupUserMultilangText(): replace by language
fallback chain
......................................................................
Remove Utils::lookupUserMultilangText(): replace by language fallback chain
Utils::reorderArray() and Utils::filterMultilangText() can be removed later,
after both this and I40ad9647ba489a7950773f21a2ec04273ef1fe9e are merged.
Change-Id: Icf35995c962a3d65d329994d0312f085f83d3088
---
M lib/includes/Utils.php
M repo/includes/actions/EditEntityAction.php
M repo/includes/actions/ViewEntityAction.php
3 files changed, 14 insertions(+), 89 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/52/71852/1
diff --git a/lib/includes/Utils.php b/lib/includes/Utils.php
index c6ce523..98cf1f6 100644
--- a/lib/includes/Utils.php
+++ b/lib/includes/Utils.php
@@ -338,74 +338,6 @@
}
/**
- * Find the first multilingual string that can be used for constructing
a language object
- * for the current user. If a preferred language can't be identified
the global chain is
- * used.
- *
- * Note that a user specific multilingual string is not globally
cachable.
- *
- * FIXME: duplication with @see lookupMultilangText, needs refactor
- *
- * @since 0.1
- *
- * @param array $texts the key-value pairs to check for existence
- * @param array $sequence the list of keys that should exist
- * @param array $fallback an array of values that are used as a
replacement if nothing is found
- * The fallback is in the form array( code, text, language
)
- * @return array|null triplet with the initial language code, the text,
and the language object
- */
- static public function lookupUserMultilangText( array $texts = null,
array $sequence = null, array $fallback = null ) {
- // FIXME: deprecated globals!
- global $wgUser, $wgLang;
-
- // Prerequisites for further processing
- if ( is_null( $texts ) || is_null( $sequence ) ) {
- return $fallback; // makes the simplest use case
- }
-
- // Filter down the result
- $texts = \Wikibase\Utils::filterMultilangText( $texts,
$sequence );
- if ( is_null( $texts ) || empty( $texts ) ) {
- return $fallback;
- }
-
- // Check if we can use the ordinary language
- // This should always be used if possible because this will
match
- // with the user set language
- reset($texts);
- list( $code, $text ) = each( $texts );
- if ( $wgLang->getCode() === $code ) {
- $lang = Language::factory( $code );
- if ( !is_null( $lang ) ) {
- return array( $code, $text, $lang );
- }
- }
-
- // Find the first preferred language code we can turn into a
language object
- // Note that the factory call do a pretty dumb cleaning up that
can make this vejjy slow
- foreach ( $texts as $code => $text ) {
- if ( $wgUser->getOption( "sttl-languages-$code" ) ) {
- $lang = Language::factory( $code );
- if ( !is_null( $lang ) ) {
- return array( $code, $text, $lang );
- }
- }
- }
-
- // Find the first ordinary language code we can turn into a
language object
- // Note that the factory call do a pretty dumb cleaning up that
can make this vejjy slow
- foreach ( $texts as $code => $text ) {
- $lang = Language::factory( $code );
- if ( !is_null( $lang ) ) {
- return array( $code, $text, $lang );
- }
- }
-
- // Use the fallback if the previous fails
- return $fallback;
- }
-
- /**
* Get the fallback languages prepended with the source language itself.
*
* A language chain in this respect is the language itself and all
fallback
diff --git a/repo/includes/actions/EditEntityAction.php
b/repo/includes/actions/EditEntityAction.php
index 1312945..7908750 100644
--- a/repo/includes/actions/EditEntityAction.php
+++ b/repo/includes/actions/EditEntityAction.php
@@ -288,15 +288,15 @@
*/
public function getLabelText( EntityContent $content ) {
- $langCode = $this->getContext()->getLanguage()->getCode();
- list( , $labelText, ) =
- Utils::lookupUserMultilangText(
- $content->getEntity()->getLabels(),
- Utils::languageChain( $langCode ),
- array( $langCode, $this->getPageTitle(),
$this->getContext()->getLanguage() )
- );
+ $languageFallbackChainFactory =
WikibaseRepo::getDefaultInstance()->getLanguageFallbackChainFactory();
+ $languageFallbackChain =
$languageFallbackChainFactory->newFromContext( $this->getContext() );
+ $labelData = $languageFallbackChain->extractPreferredValue(
$content->getEntity()->getLabels() );
- return $labelText;
+ if ( $labelData ) {
+ return $labelData['value'];
+ } else {
+ return $this->getPageTitle();
+ }
}
/**
diff --git a/repo/includes/actions/ViewEntityAction.php
b/repo/includes/actions/ViewEntityAction.php
index 7482534..88d7174 100644
--- a/repo/includes/actions/ViewEntityAction.php
+++ b/repo/includes/actions/ViewEntityAction.php
@@ -194,20 +194,13 @@
$this->getArticle()->view();
// Figure out which label to use for title.
- $langCode = $this->getContext()->getLanguage()->getCode();
- // FIXME: Removed as a quickfix
- /*
- list( $labelCode, $labelText, $labelLang) =
- Utils::lookupUserMultilangText(
- $content->getEntity()->getLabels(),
- Utils::languageChain( $langCode ),
- array( $langCode, $this->getPageTitle(),
$this->getContext()->getLanguage() )
- );
-*/
- // FIXME: this replaces the stuff above
- $labelText = $content->getEntity()->getLabel( $langCode );
+ $languageFallbackChainFactory =
WikibaseRepo::getDefaultInstance()->getLanguageFallbackChainFactory();
+ $languageFallbackChain =
$languageFallbackChainFactory->newFromContext( $this->getContext() );
+ $labelData = $languageFallbackChain->extractPreferredValue(
$content->getEntity()->getLabels() );
- if ( $labelText === false ) {
+ if ( $labelData ) {
+ $labelText = $labelData['value'];
+ } else {
$idPrefixer =
WikibaseRepo::getDefaultInstance()->getIdFormatter();
$labelText = strtoupper( $idPrefixer->format(
$content->getEntity()->getId() ) );
}
--
To view, visit https://gerrit.wikimedia.org/r/71852
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icf35995c962a3d65d329994d0312f085f83d3088
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Liangent <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits