Liangent has uploaded a new change for review.

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


Change subject: ApiGetEntities now accepts a new parameter, contextlanguage.
......................................................................

ApiGetEntities now accepts a new parameter, contextlanguage.

API calls from Web UI should send the context language fallback
chain info back from mw.config.get( 'wbContextLanguage' ), to
receive multilingual data for what their context wants.

Change-Id: Id62fdd16187c79549328711ded5265802bc9453a
---
M repo/includes/api/GetEntities.php
1 file changed, 35 insertions(+), 1 deletion(-)


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

diff --git a/repo/includes/api/GetEntities.php 
b/repo/includes/api/GetEntities.php
index 9969088..b644bde 100644
--- a/repo/includes/api/GetEntities.php
+++ b/repo/includes/api/GetEntities.php
@@ -3,6 +3,7 @@
 namespace Wikibase\Api;
 
 use ApiBase;
+use ApiMain;
 use MWException;
 
 use Wikibase\Lib\Serializers\EntitySerializationOptions;
@@ -13,6 +14,8 @@
 use Wikibase\EntityId;
 use Wikibase\Item;
 use Wikibase\EntityContentFactory;
+use Wikibase\LanguageFallbackChain;
+use Wikibase\LanguageFallbackChainSerializer;
 
 /**
  * API module to get the data for one or more Wikibase entities.
@@ -28,6 +31,22 @@
  * @author Jeroen De Dauw < jeroended...@gmail.com >
  */
 class GetEntities extends ApiWikibase {
+
+       /**
+        * @var LanguageFallbackChainSerializer
+        */
+       protected $languageFallbackChainSerializer;
+
+       /**
+        * Constructor.
+        *
+        * @since 0.4
+        */
+       public function __construct( ApiMain $mainModule, $moduleName, 
$modulePrefix = '' ) {
+               parent::__construct( $mainModule, $moduleName, $modulePrefix );
+
+               $this->languageFallbackChainSerializer = new 
LanguageFallbackChainSerializer();
+       }
 
        /**
         * @see \ApiBase::execute()
@@ -178,7 +197,14 @@
 
                                // TODO: inject id formatter
                                $options = new EntitySerializationOptions( 
WikibaseRepo::getDefaultInstance()->getIdFormatter() );
-                               $options->setLanguages( $params['languages'] );
+                               $languages = $params['languages'];
+                               if ( $params['contextlanguage'] !== '' ) {
+                                       $chain = 
$this->languageFallbackChainSerializer->unserialize( $params['contextlanguage'] 
);
+                                       if ( $chain ) {
+                                               
$languages[LanguageFallbackChain::CONTEXT_LANGUAGE_CODE] = $chain;
+                                       }
+                               }
+                               $options->setLanguages( $languages );
                                $options->setSortDirection( $params['dir'] );
                                $options->setProps( $props );
                                $options->setIndexTags( 
$this->getResult()->getIsRawMode() );
@@ -247,6 +273,11 @@
                                ApiBase::PARAM_TYPE => 
Utils::getLanguageCodes(),
                                ApiBase::PARAM_ISMULTI => true,
                        ),
+                       'contextlanguage' => array(
+                               ApiBase::PARAM_TYPE => 'string',
+                               ApiBase::PARAM_DFLT => '',
+                               ApiBase::PARAM_ISMULTI => false,
+                       ),
                ) );
        }
 
@@ -276,6 +307,9 @@
                        'languages' => array( 'By default the internationalized 
values are returned in all available languages.',
                                'This parameter allows filtering these down to 
one or more languages by providing one or more language codes.'
                        ),
+                       'contextlanguage' => array( 'Serialized form of context 
language fallback chain to fetch values.',
+                               "Taken from mw.config.get( 'wbContextLanguage' 
), or don't send one for standalone requests.",
+                       ),
                ) );
        }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id62fdd16187c79549328711ded5265802bc9453a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Liangent <liang...@gmail.com>

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

Reply via email to