WikidataBuilder has uploaded a new change for review.

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

Change subject: New Wikidata Build - 21/05/2014 10:00
......................................................................

New Wikidata Build - 21/05/2014 10:00

Change-Id: Ifb759492e23b7c99b36c89e937366ddfca3dbd36
---
M composer.lock
M extensions/Wikibase/client/i18n/diq.json
M extensions/Wikibase/lib/i18n/et.json
M extensions/Wikibase/lib/i18n/tl.json
M extensions/Wikibase/lib/resources/Resources.php
M extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.wbtooltip.js
M extensions/Wikibase/lib/tests/phpunit/WikibaseDataTypeBuildersTest.php
M extensions/Wikibase/repo/Wikibase.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
M extensions/Wikibase/repo/includes/ChangeOp/MergeChangeOpsFactory.php
A extensions/Wikibase/repo/includes/api/AvailableBadges.php
M extensions/Wikibase/repo/includes/specials/SpecialSetSiteLink.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php
A extensions/Wikibase/repo/tests/phpunit/includes/api/AvailableBadgesTest.php
M vendor/autoload.php
M vendor/composer/autoload_classmap.php
M vendor/composer/autoload_real.php
M vendor/composer/installed.json
M vendor/serialization/serialization/.travis.yml
M vendor/serialization/serialization/README.md
M vendor/serialization/serialization/Serialization.php
M vendor/serialization/serialization/composer.json
M 
vendor/serialization/serialization/src/Serializers/Exceptions/SerializationException.php
23 files changed, 233 insertions(+), 104 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/86/134586/1

diff --git a/composer.lock b/composer.lock
index 9601a61..c199a5f 100644
--- a/composer.lock
+++ b/composer.lock
@@ -726,16 +726,16 @@
         },
         {
             "name": "serialization/serialization",
-            "version": "3.1",
+            "version": "3.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/wmde/Serialization.git";,
-                "reference": "3cea2bbef70c74db9614e1cc3e149b4a79ff05dd"
+                "reference": "7e13a0bc0173adc3aea0f16545e871e03a2ac4c4"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wmde/Serialization/zipball/3cea2bbef70c74db9614e1cc3e149b4a79ff05dd";,
-                "reference": "3cea2bbef70c74db9614e1cc3e149b4a79ff05dd",
+                "url": 
"https://api.github.com/repos/wmde/Serialization/zipball/7e13a0bc0173adc3aea0f16545e871e03a2ac4c4";,
+                "reference": "7e13a0bc0173adc3aea0f16545e871e03a2ac4c4",
                 "shasum": ""
             },
             "require": {
@@ -744,7 +744,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.1.x-dev"
+                    "dev-master": "3.2.x-dev"
                 }
             },
             "autoload": {
@@ -778,7 +778,7 @@
                 "unserialization",
                 "wikidata"
             ],
-            "time": "2014-03-18 18:45:35"
+            "time": "2014-05-20 15:57:52"
         },
         {
             "name": "wikibase/data-model",
@@ -869,12 +869,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "56608d53d8f72591528cca253f0b128fc346ddb7"
+                "reference": "8aa95d6346743c14b47385a9d199742013fcccf8"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/56608d53d8f72591528cca253f0b128fc346ddb7";,
-                "reference": "56608d53d8f72591528cca253f0b128fc346ddb7",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/8aa95d6346743c14b47385a9d199742013fcccf8";,
+                "reference": "8aa95d6346743c14b47385a9d199742013fcccf8",
                 "shasum": ""
             },
             "require": {
@@ -937,7 +937,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2014-05-18 20:08:56"
+            "time": "2014-05-21 09:48:21"
         }
     ],
     "packages-dev": [
diff --git a/extensions/Wikibase/client/i18n/diq.json 
b/extensions/Wikibase/client/i18n/diq.json
index 1b81806..635ff79 100644
--- a/extensions/Wikibase/client/i18n/diq.json
+++ b/extensions/Wikibase/client/i18n/diq.json
@@ -20,7 +20,7 @@
        "wikibase-dataitem": "Unsurê melumati",
        "wikibase-editlinks": "Gıreyan bıvurne",
        "wikibase-editlinkstitle": "Gıreyanê miyanzıwani bıvurne",
-       "wikibase-linkitem-addlinks": "Gre de kerê",
+       "wikibase-linkitem-addlinks": "Gıreyan cı ke",
        "wikibase-linkitem-title": "Pela rê gıre",
        "wikibase-linkitem-linkpage": "Pela rê gıre",
        "wikibase-linkitem-selectlink": "Şıma şenê ke ena pela rê gıre yana 
sita berzê.",
diff --git a/extensions/Wikibase/lib/i18n/et.json 
b/extensions/Wikibase/lib/i18n/et.json
index 9a79dba..58d4a1e 100644
--- a/extensions/Wikibase/lib/i18n/et.json
+++ b/extensions/Wikibase/lib/i18n/et.json
@@ -47,6 +47,7 @@
        "wikibase-globedetails-latitude": "Laius",
        "wikibase-globedetails-precision": "Esitustäpsus",
        "wikibase-parse-error": "Väärdunud väärtus.",
+       "wikibase-parse-error-coordinate": "Koordinaadiväärtus on väärdunud.",
        "wikibase-parse-error-entity-id": "Üksuse identifikaator on väärdunud.",
        "wikibase-parse-error-time": "Kellaaja väärtus on väärdunud.",
        "wikibase-replicationnote": "Palun pane tähele, et võib kuluda mitu 
minutit, enne kui muudatused on kõigis vikides nähtavad.",
diff --git a/extensions/Wikibase/lib/i18n/tl.json 
b/extensions/Wikibase/lib/i18n/tl.json
index 3080571..b1353cd 100644
--- a/extensions/Wikibase/lib/i18n/tl.json
+++ b/extensions/Wikibase/lib/i18n/tl.json
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "AnakngAraw"
+                       "AnakngAraw",
+                       "Jojit fb"
                ]
        },
        "wikibase-lib-desc": "Naghahawak ng karaniwang panunungkulan para sa 
mga pandugtong ng Wikibase at Wikibase Client",
@@ -18,7 +19,7 @@
        "wikibase-error-ui-cant-edit": "Hindi ka pinapayagan na maisakatuparan 
ang galaw na ito.",
        "wikibase-error-ui-no-permissions": "Wala kang sapat na mga karapatan 
upang maisagawa ang galaw na ito.",
        "wikibase-error-ui-link-exists": "Hindi ka maaaring kumawing sa 
pahinang ito dahil mayroon nang ibang bagay na nakakawing dito.",
-       "wikibase-error-ui-session-failure": "Natapos na ang inilaang panahon 
sa iyo. Paki muling lumagda papasok.",
+       "wikibase-error-ui-session-failure": "Natapos na ang inilaang panahon 
sa iyo. Paki login muli.",
        "wikibase-error-ui-edit-conflict": "Nagkaroon ng isang pagsasalungatan 
sa pamamatnugot. Paki muling ikarga at sagiping muli.",
        "wikibase-sitelinks-sitename-columnheading": "Wika",
        "wikibase-sitelinks-siteid-columnheading": "Kodigo",
diff --git a/extensions/Wikibase/lib/resources/Resources.php 
b/extensions/Wikibase/lib/resources/Resources.php
index 5328a0f..30b133e 100644
--- a/extensions/Wikibase/lib/resources/Resources.php
+++ b/extensions/Wikibase/lib/resources/Resources.php
@@ -74,30 +74,15 @@
                'mw.config.values.wbDataTypes' => $moduleTemplate + array(
                        'class' => 'DataTypes\DataTypesModule',
                        'datatypefactory' => function() {
-                               // TODO: extreme uglynes here! Get rid of this 
method!
+                               // TODO: relative uglynes here! Get rid of this 
method!
                                if ( defined( 'WB_VERSION' ) ) { // repo mode
-                                       $repo = 
WikibaseRepo::getDefaultInstance();
-                                       $entityIdParser = 
$repo->getEntityIdParser();
-                                       $entityLookup = 
$repo->getEntityLookup();
+                                       $wikibase = 
WikibaseRepo::getDefaultInstance();
                                } elseif ( defined( 'WBC_VERSION' ) ) { // 
client mode
-                                       $client = 
WikibaseClient::getDefaultInstance();
-                                       $entityIdParser = 
$client->getEntityIdParser();
-                                       $entityLookup = 
$client->getStore()->getEntityLookup();
+                                       $wikibase = 
WikibaseClient::getDefaultInstance();
                                } else {
                                        throw new \RuntimeException( "Neither 
repo nor client found!" );
                                }
-
-                               $settings = Settings::singleton();
-
-                               $urlSchemes = $settings->getSetting( 
'urlSchemes' );
-                               $builders = new WikibaseDataTypeBuilders( 
$entityLookup, $entityIdParser, $urlSchemes );
-
-                               $typeBuilderSpecs = array_intersect_key(
-                                       $builders->getDataTypeBuilders(),
-                                       array_flip( $settings->getSetting( 
'dataTypes' ) )
-                               );
-
-                               return new DataTypeFactory( $typeBuilderSpecs );
+                               return $wikibase->getDataTypeFactory();
                        },
                        'datatypesconfigvarname' => 'wbDataTypes',
                ),
diff --git 
a/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.wbtooltip.js
 
b/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.wbtooltip.js
index 1fe5564..27894e5 100644
--- 
a/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.wbtooltip.js
+++ 
b/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.wbtooltip.js
@@ -282,10 +282,13 @@
         * @TODO: Error tooltip should be a separate tooltip derivative.
         */
        _buildErrorTooltip: function() {
-               var $mainMessage = ( $( '<div/>', {
-                       'class': 'wb-error ' + this.widgetBaseClass + '-error',
+               var $message = $( '<div/>', {
+                       'class': 'wb-error ' + this.widgetBaseClass + '-error'
+               } );
+
+               var $mainMessage = $( '<div/>', {
                        text: this.options.content.message
-               } ) );
+               } ).appendTo( $message );
 
                // Append detailed error message if given; hide it behind 
toggle:
                if( this.options.content.detailedMessage ) {
@@ -302,10 +305,11 @@
                                .text( mw.msg( 'wikibase-tooltip-error-details' 
) )
                                .toggler( { $subject: $detailedMessage } );
 
-                       $mainMessage = $mainMessage.after( $toggler ).after( 
$detailedMessage );
+                       $toggler.appendTo( $message );
+                       $detailedMessage.appendTo( $message );
                }
 
-               return $mainMessage;
+               return $message;
        },
 
        /**
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/WikibaseDataTypeBuildersTest.php 
b/extensions/Wikibase/lib/tests/phpunit/WikibaseDataTypeBuildersTest.php
index 0582ff1..0138867 100644
--- a/extensions/Wikibase/lib/tests/phpunit/WikibaseDataTypeBuildersTest.php
+++ b/extensions/Wikibase/lib/tests/phpunit/WikibaseDataTypeBuildersTest.php
@@ -158,14 +158,15 @@
 
                        array( 'url', new StringValue( ' http://acme.com' ), 
false, 'URL with leading space' ),
                        array( 'url', new StringValue( 'http://acme.com ' ), 
false, 'URL with trailing space' ),
+
+                       //quantity
+                       array( 'quantity', QuantityValue::newFromNumber( 5 ), 
true, 'Simple integer' ),
+                       array( 'quantity', QuantityValue::newFromNumber( 5, 'm' 
), false, 'We don\'t support units yet' ),
+                       array( 'quantity', QuantityValue::newFromDecimal( 
'-11.234', '1', '-10', '-12' ), true, 'decimal strings' ),
                );
 
                if ( defined( 'WB_EXPERIMENTAL_FEATURES' ) && 
WB_EXPERIMENTAL_FEATURES ) {
                        $cases = array_merge( $cases, array(
-                               //quantity
-                               array( 'quantity', 
QuantityValue::newFromNumber( 5 ), true, 'Simple integer' ),
-                               array( 'quantity', 
QuantityValue::newFromNumber( 5, 'm' ), false, 'We don\'t support units yet' ),
-                               array( 'quantity', 
QuantityValue::newFromDecimal( '-11.234', '1', '-10', '-12' ), true, 'decimal 
strings' ),
 
                                // ....
                        ) );
diff --git a/extensions/Wikibase/repo/Wikibase.php 
b/extensions/Wikibase/repo/Wikibase.php
index a91cdb4..dbbea8a 100644
--- a/extensions/Wikibase/repo/Wikibase.php
+++ b/extensions/Wikibase/repo/Wikibase.php
@@ -86,7 +86,7 @@
        $wgValueParsers['time'] = 'Wikibase\Lib\Parsers\TimeParser';
        $wgValueParsers['globecoordinate'] = 
'ValueParsers\GlobeCoordinateParser';
        $wgValueParsers['null'] = 'ValueParsers\NullParser';
-       $wgValueParsers['monolongualtext'] = 
'Wikibase\Parsers\MonolingualTextParser';
+       $wgValueParsers['monolingual-text'] = 
'Wikibase\Parsers\MonolingualTextParser';
 
        // API module registration
        $wgAPIModules['wbgetentities']                                          
= 'Wikibase\Api\GetEntities';
@@ -109,6 +109,7 @@
        $wgAPIModules['wbmergeitems']                                           
= 'Wikibase\Api\MergeItems';
        $wgAPIModules['wbformatvalue']                                          
= 'Wikibase\Api\FormatSnakValue';
        $wgAPIModules['wbparsevalue']                                           
= 'Wikibase\Api\ParseValue';
+       $wgAPIModules['wbavailablebadges']                                      
= 'Wikibase\Api\AvailableBadges';
 
        // Special page registration
        $wgSpecialPages['NewItem']                                              
        = 'Wikibase\Repo\Specials\SpecialNewItem';
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
index 81af3d4..c40841a 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
@@ -3,15 +3,15 @@
 namespace Wikibase\ChangeOp;
 
 use InvalidArgumentException;
-use ValueValidators\Result;
 use ValueValidators\Error;
-use Wikibase\DataModel\Entity\EntityId;
-use Wikibase\Validators\EntityConstraintProvider;
+use ValueValidators\Result;
 use Wikibase\DataModel\Claim\Claim;
 use Wikibase\DataModel\Claim\Statement;
 use Wikibase\DataModel\Entity\Entity;
+use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Reference;
+use Wikibase\Validators\EntityConstraintProvider;
 use Wikibase\Validators\UniquenessViolation;
 
 /**
@@ -23,17 +23,34 @@
  */
 class ChangeOpsMerge {
 
+       /**
+        * @var Item
+        */
        private $fromItem;
+
+       /**
+        * @var Item
+        */
        private $toItem;
+
+       /**
+        * @var ChangeOps
+        */
        private $fromChangeOps;
+
+       /**
+        * @var ChangeOps
+        */
        private $toChangeOps;
 
        /**
-        * @var array
+        * @var string[]
         */
        private $ignoreConflicts;
 
-       /** @var EntityConstraintProvider */
+       /**
+        * @var EntityConstraintProvider
+        */
        private $constraintProvider;
 
        /**
@@ -44,7 +61,7 @@
        /**
         * @param Item $fromItem
         * @param Item $toItem
-        * @param array $ignoreConflicts list of elements to ignore conflicts 
for
+        * @param string[] $ignoreConflicts list of elements to ignore 
conflicts for
         *        can only contain 'label' and or 'description' and or 
'sitelink'
         * @param EntityConstraintProvider $constraintProvider
         * @param ChangeOpFactoryProvider $changeOpFactoryProvider
@@ -56,7 +73,7 @@
        public function __construct(
                Item $fromItem,
                Item $toItem,
-               $ignoreConflicts,
+               array $ignoreConflicts,
                EntityConstraintProvider $constraintProvider,
                ChangeOpFactoryProvider $changeOpFactoryProvider
        ) {
@@ -78,11 +95,11 @@
         * @throws InvalidArgumentException
         */
        private function assertValidIgnoreConflictValues( $ignoreConflicts ) {
-               if( !is_array( $ignoreConflicts ) ){
+               if ( !is_array( $ignoreConflicts ) ) {
                        throw new InvalidArgumentException( '$ignoreConflicts 
must be an array' );
                }
-               foreach( $ignoreConflicts as $ignoreConflict ){
-                       if(
+               foreach ( $ignoreConflicts as $ignoreConflict ) {
+                       if (
                                $ignoreConflict !== 'label' &&
                                $ignoreConflict !== 'description' &&
                                $ignoreConflict !== 'sitelink'
@@ -147,13 +164,13 @@
        }
 
        private function generateLabelsChangeOps() {
-               foreach( $this->fromItem->getLabels() as $langCode => $label ){
+               foreach ( $this->fromItem->getLabels() as $langCode => $label ) 
{
                        $toLabel = $this->toItem->getLabel( $langCode );
-                       if( $toLabel === false || $toLabel === $label ){
+                       if ( $toLabel === false || $toLabel === $label ) {
                                $this->fromChangeOps->add( 
$this->getFingerprintChangeOpFactory()->newRemoveLabelOp( $langCode ) );
                                $this->toChangeOps->add( 
$this->getFingerprintChangeOpFactory()->newSetLabelOp( $langCode, $label ) );
                        } else {
-                               if( !in_array( 'label', $this->ignoreConflicts 
) ){
+                               if ( !in_array( 'label', $this->ignoreConflicts 
) ) {
                                        throw new ChangeOpException( 
"Conflicting labels for language {$langCode}" );
                                }
                        }
@@ -161,13 +178,13 @@
        }
 
        private function generateDescriptionsChangeOps() {
-               foreach( $this->fromItem->getDescriptions() as $langCode => 
$desc ){
+               foreach ( $this->fromItem->getDescriptions() as $langCode => 
$desc ) {
                        $toDescription = $this->toItem->getDescription( 
$langCode );
-                       if( $toDescription === false || $toDescription === 
$desc ){
+                       if ( $toDescription === false || $toDescription === 
$desc ) {
                                $this->fromChangeOps->add( 
$this->getFingerprintChangeOpFactory()->newRemoveDescriptionOp( $langCode ) );
                                $this->toChangeOps->add( 
$this->getFingerprintChangeOpFactory()->newSetDescriptionOp( $langCode, $desc ) 
);
                        } else {
-                               if( !in_array( 'description', 
$this->ignoreConflicts ) ){
+                               if ( !in_array( 'description', 
$this->ignoreConflicts ) ) {
                                        throw new ChangeOpException( 
"Conflicting descriptions for language {$langCode}" );
                                }
                        }
@@ -175,16 +192,16 @@
        }
 
        private function generateAliasesChangeOps() {
-               foreach( $this->fromItem->getAllAliases() as $langCode => 
$aliases ){
+               foreach ( $this->fromItem->getAllAliases() as $langCode => 
$aliases ) {
                        $this->fromChangeOps->add( 
$this->getFingerprintChangeOpFactory()->newRemoveAliasesOp( $langCode, $aliases 
) );
                        $this->toChangeOps->add( 
$this->getFingerprintChangeOpFactory()->newAddAliasesOp( $langCode, $aliases, 
'add' ) );
                }
        }
 
        private function generateSitelinksChangeOps() {
-               foreach( $this->fromItem->getSiteLinks() as $simpleSiteLink ){
+               foreach ( $this->fromItem->getSiteLinks() as $simpleSiteLink ) {
                        $siteId = $simpleSiteLink->getSiteId();
-                       if( !$this->toItem->hasLinkToSite( $siteId ) ){
+                       if ( !$this->toItem->hasLinkToSite( $siteId ) ) {
                                $this->fromChangeOps->add( 
$this->getSiteLinkChangeOpFactory()->newRemoveSiteLinkOp( $siteId ) );
                                $this->toChangeOps->add(
                                        
$this->getSiteLinkChangeOpFactory()->newSetSiteLinkOp(
@@ -194,7 +211,7 @@
                                        )
                                );
                        } else {
-                               if( !in_array( 'sitelink', 
$this->ignoreConflicts ) ){
+                               if ( !in_array( 'sitelink', 
$this->ignoreConflicts ) ) {
                                        throw new ChangeOpException( 
"Conflicting sitelinks for {$siteId}" );
                                }
                        }
@@ -202,18 +219,18 @@
        }
 
        private function generateClaimsChangeOps() {
-               foreach( $this->fromItem->getClaims() as $fromClaim ) {
+               foreach ( $this->fromItem->getClaims() as $fromClaim ) {
                        $this->fromChangeOps->add( 
$this->getClaimChangeOpFactory()->newRemoveClaimOp( $fromClaim->getGuid() ) );
 
                        $toClaim = clone $fromClaim;
                        $toClaim->setGuid( null );
                        $toMergeToClaim = false;
 
-                       if( $toClaim instanceof Statement ) {
+                       if ( $toClaim instanceof Statement ) {
                                $toMergeToClaim = $this->findEquivalentClaim( 
$toClaim );
                        }
 
-                       if( $toMergeToClaim ) {
+                       if ( $toMergeToClaim ) {
                                $this->generateReferencesChangeOps( $toClaim, 
$toMergeToClaim );
                        } else {
                                $this->toChangeOps->add( 
$this->getClaimChangeOpFactory()->newSetClaimOp( $toClaim ) );
@@ -226,14 +243,15 @@
         *
         * @param Statement $fromStatement
         *
-        * @return Claim|bool Claim to merge reference into or false
+        * @return Claim|false Claim to merge reference into or false
         */
        private function findEquivalentClaim( $fromStatement ) {
+               $fromHash = $this->getClaimHash( $fromStatement );
+
                /** @var $claim Claim */
-               foreach( $this->toItem->getClaims() as $claim ) {
-                       $fromHash = $this->getClaimHash( $fromStatement );
+               foreach ( $this->toItem->getClaims() as $claim ) {
                        $toHash = $this->getClaimHash( $claim );
-                       if( $toHash === $fromHash ) {
+                       if ( $toHash === $fromHash ) {
                                return $claim;
                        }
                }
@@ -278,7 +296,7 @@
 
                $errors = $this->removeConflictsWithEntity( $errors, $fromId );
 
-               if( !empty( $errors ) ) {
+               if ( !empty( $errors ) ) {
                        $result = Result::newError( $errors );
                        throw new ChangeOpValidationException( $result );
                }
@@ -307,4 +325,5 @@
 
                return $filtered;
        }
+
 }
diff --git 
a/extensions/Wikibase/repo/includes/ChangeOp/MergeChangeOpsFactory.php 
b/extensions/Wikibase/repo/includes/ChangeOp/MergeChangeOpsFactory.php
index ec1e7c2..dfc3ae4 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/MergeChangeOpsFactory.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/MergeChangeOpsFactory.php
@@ -34,7 +34,7 @@
        /**
         * @param Item $fromItem
         * @param Item $toItem
-        * @param array $ignoreConflicts list of elements to ignore conflicts 
for
+        * @param string[] $ignoreConflicts list of elements to ignore 
conflicts for
         *   can only contain 'label' and or 'description' and or 'sitelink'
         *
         * @throws InvalidArgumentException
@@ -56,4 +56,5 @@
                        $this->factoryProvider
                );
        }
+
 }
diff --git a/extensions/Wikibase/repo/includes/api/AvailableBadges.php 
b/extensions/Wikibase/repo/includes/api/AvailableBadges.php
new file mode 100644
index 0000000..5e9db3e
--- /dev/null
+++ b/extensions/Wikibase/repo/includes/api/AvailableBadges.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace Wikibase\Api;
+
+use Wikibase\Repo\WikibaseRepo;
+use ApiBase;
+
+/**
+ * API module to query available badge items.
+ *
+ * @todo this might also be useful to find badges suggestions based on labels
+ *
+ * @since 0.5
+ * @licence GNU GPL v2+
+ * @author Bene* < [email protected] >
+ */
+class AvailableBadges extends ApiBase {
+
+       /**
+        * @see ApiBase::execute
+        *
+        * @since 0.5
+        */
+       public function execute() {
+               $settings = WikibaseRepo::getDefaultInstance()->getSettings();
+               $badgeItems = array_keys( $settings->getSetting( 'badgeItems' ) 
);
+               $this->getResult()->setIndexedTagName( $badgeItems, 'badge' );
+               $this->getResult()->addValue(
+                       null,
+                       'badges',
+                       $badgeItems
+               );
+       }
+
+       /**
+        * @see ApiBase::getDescription
+        *
+        * @since 0.5
+        *
+        * @return string
+        */
+       public function getDescription() {
+               return array(
+                       'API module to query available badge items.'
+               );
+       }
+
+       /**
+        * @see ApiBase::getExamples
+        *
+        * @since 0.5
+        *
+        * @return array
+        */
+       protected function getExamples() {
+               return array(
+                       'api.php?action=wbavailablebadges' =>
+                               'Queries all available badge items',
+               );
+       }
+
+}
\ No newline at end of file
diff --git a/extensions/Wikibase/repo/includes/specials/SpecialSetSiteLink.php 
b/extensions/Wikibase/repo/includes/specials/SpecialSetSiteLink.php
index a86319a..150ba32 100644
--- a/extensions/Wikibase/repo/includes/specials/SpecialSetSiteLink.php
+++ b/extensions/Wikibase/repo/includes/specials/SpecialSetSiteLink.php
@@ -5,13 +5,11 @@
 use Html;
 use OutOfBoundsException;
 use Status;
-use ValueParsers\ParseException;
-use Wikibase\ChangeOp\ChangeOp;
 use Wikibase\ChangeOp\ChangeOpException;
 use Wikibase\ChangeOp\SiteLinkChangeOpFactory;
-use Wikibase\ChangeOp\ChangeOpValidationException;
 use Wikibase\CopyrightMessageBuilder;
 use Wikibase\DataModel\Entity\Entity;
+use Wikibase\DataModel\Entity\EntityIdParsingException;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\Repo\WikibaseRepo;
@@ -385,8 +383,8 @@
                foreach ( $badges as $badge ) {
                        try {
                                $badgeId = $entityIdParser->parse( $badge );
-                       } catch( ParseException $e ) {
-                               $status->fatal( 'wikibase-setentity-invalid-id' 
);
+                       } catch ( EntityIdParsingException $ex ) {
+                               $status->fatal( 
'wikibase-setsitelink-not-badge', $badge );
                                return false;
                        }
 
@@ -406,7 +404,7 @@
                        $itemTitle = $this->getEntityTitle( $badgeId );
 
                        if ( is_null( $itemTitle ) || !$itemTitle->exists() ) {
-                               $status->fatal( 'wikibase-setentity-invalid-id' 
);
+                               $status->fatal( 
'wikibase-setsitelink-not-badge', $badgeId );
                                return false;
                        }
 
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php
index 2342e60..b327ed7 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpsMergeTest.php
@@ -41,7 +41,7 @@
        protected function makeChangeOpsMerge(
                Item $fromItem,
                Item $toItem,
-               $ignoreConflicts = array()
+               array $ignoreConflicts = array()
        ) {
                $duplicateDetector = 
$this->mockProvider->getMockLabelDescriptionDuplicateDetector();
                $linkCache = $this->mockProvider->getMockSitelinkCache();
@@ -72,7 +72,7 @@
        /**
         * @dataProvider provideValidConstruction
         */
-       public function testCanConstruct( $from, $to, $ignoreConflicts ) {
+       public function testCanConstruct( Item $from, Item $to, array 
$ignoreConflicts ) {
                $changeOps = $this->makeChangeOpsMerge(
                        $from,
                        $to,
@@ -96,7 +96,7 @@
        /**
         * @dataProvider provideInvalidConstruction
         */
-       public function testInvalidIgnoreConflicts( $from, $to, 
$ignoreConflicts ) {
+       public function testInvalidIgnoreConflicts( Item $from, Item $to, array 
$ignoreConflicts ) {
                $this->setExpectedException( 'InvalidArgumentException' );
                $this->makeChangeOpsMerge(
                        $from,
@@ -109,10 +109,8 @@
                $from = self::getItem( 'Q111' );
                $to = self::getItem( 'Q222' );
                return array(
-                       array( $from, $to, 'foo' ),
                        array( $from, $to, array( 'foo' ) ),
                        array( $from, $to, array( 'label', 'foo' ) ),
-                       array( $from, $to, null ),
                );
        }
 
@@ -122,7 +120,7 @@
         *
         * @return Item
         */
-       public static function getItem( $id, $data = array() ) {
+       public static function getItem( $id, array $data = array() ) {
                $item = new Item( $data );
                $item->setId( new ItemId( $id ) );
                return $item;
@@ -131,7 +129,7 @@
        /**
         * @dataProvider provideData
         */
-       public function testCanApply( $fromData, $toData, $expectedFromData, 
$expectedToData, $ignoreConflicts = array() ) {
+       public function testCanApply( array $fromData, array $toData, 
$expectedFromData, $expectedToData, array $ignoreConflicts = array() ) {
                $from = self::getItem( 'Q111', $fromData );
                $to = self::getItem( 'Q222', $toData );
                $changeOps = $this->makeChangeOpsMerge(
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/AvailableBadgesTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/AvailableBadgesTest.php
new file mode 100644
index 0000000..f1b416e
--- /dev/null
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/AvailableBadgesTest.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace Wikibase\Test\Api;
+
+use ApiTestCase;
+use Wikibase\Repo\WikibaseRepo;
+
+/**
+ * Tests for the AvailableBadges class.
+ *
+ * @group API
+ * @group Wikibase
+ * @group WikibaseAPI
+ * @gorup WikibaseRepo
+ * @group medium
+ *
+ * @licence GNU GPL v2+
+ *
+ * @author Bene* < [email protected] >
+ */
+class AvailabeBadgesTest extends ApiTestCase {
+
+       static $badgeItems = array(
+               'Q123' => '',
+               'Q999' => ''
+       );
+
+       static $oldBadgeItems;
+
+       public function setUp() {
+               parent::setUp();
+               // Allow some badges for testing
+               self::$oldBadgeItems = 
WikibaseRepo::getDefaultInstance()->getSettings()->getSetting( 'badgeItems' );
+               WikibaseRepo::getDefaultInstance()->getSettings()->setSetting( 
'badgeItems', self::$badgeItems );
+       }
+
+       public function tearDown() {
+               parent::tearDown();
+               WikibaseRepo::getDefaultInstance()->getSettings()->setSetting( 
'badgeItems', self::$oldBadgeItems );
+       }
+
+       public function testExecute() {
+               list( $result,, ) = $this->doApiRequest( array(
+                       'action' => 'wbavailablebadges'
+               ) );
+
+               $this->assertEquals( array_keys( self::$badgeItems ), 
$result['badges'] );
+       }
+
+}
\ No newline at end of file
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 0458d45..ad09faa 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInit5ae4add20467bd3e9b86195a2a46481d::getLoader();
+return ComposerAutoloaderInit133d211f3fe926b61f49ecba09460721::getLoader();
diff --git a/vendor/composer/autoload_classmap.php 
b/vendor/composer/autoload_classmap.php
index ff59d92..922c398 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -214,6 +214,7 @@
     'Wikibase\\ApiClientInfo' => $baseDir . 
'/extensions/Wikibase/client/includes/api/ApiClientInfo.php',
     'Wikibase\\Api\\ApiErrorReporter' => $baseDir . 
'/extensions/Wikibase/repo/includes/api/ApiErrorReporter.php',
     'Wikibase\\Api\\ApiWikibase' => $baseDir . 
'/extensions/Wikibase/repo/includes/api/ApiWikibase.php',
+    'Wikibase\\Api\\AvailableBadges' => $baseDir . 
'/extensions/Wikibase/repo/includes/api/AvailableBadges.php',
     'Wikibase\\Api\\ClaimModificationHelper' => $baseDir . 
'/extensions/Wikibase/repo/includes/api/ClaimModificationHelper.php',
     'Wikibase\\Api\\CreateClaim' => $baseDir . 
'/extensions/Wikibase/repo/includes/api/CreateClaim.php',
     'Wikibase\\Api\\EditEntity' => $baseDir . 
'/extensions/Wikibase/repo/includes/api/EditEntity.php',
@@ -634,6 +635,7 @@
     'Wikibase\\Test\\ActionTestCase' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/actions/ActionTestCase.php',
     'Wikibase\\Test\\AliasSerializerTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/serializers/AliasSerializerTest.php',
     'Wikibase\\Test\\ApiErrorReporterTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiErrorReporterTest.php',
+    'Wikibase\\Test\\Api\\AvailabeBadgesTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/api/AvailableBadgesTest.php',
     'Wikibase\\Test\\Api\\BotEditTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/api/BotEditTest.php',
     'Wikibase\\Test\\Api\\ClaimModificationHelperTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/api/ClaimModificationHelperTest.php',
     'Wikibase\\Test\\Api\\CreateClaimTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/api/CreateClaimTest.php',
diff --git a/vendor/composer/autoload_real.php 
b/vendor/composer/autoload_real.php
index 2d7f126..ed55586 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit5ae4add20467bd3e9b86195a2a46481d
+class ComposerAutoloaderInit133d211f3fe926b61f49ecba09460721
 {
     private static $loader;
 
@@ -19,9 +19,9 @@
             return self::$loader;
         }
 
-        
spl_autoload_register(array('ComposerAutoloaderInit5ae4add20467bd3e9b86195a2a46481d',
 'loadClassLoader'), true, true);
+        
spl_autoload_register(array('ComposerAutoloaderInit133d211f3fe926b61f49ecba09460721',
 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        
spl_autoload_unregister(array('ComposerAutoloaderInit5ae4add20467bd3e9b86195a2a46481d',
 'loadClassLoader'));
+        
spl_autoload_unregister(array('ComposerAutoloaderInit133d211f3fe926b61f49ecba09460721',
 'loadClassLoader'));
 
         $vendorDir = dirname(__DIR__);
         $baseDir = dirname($vendorDir);
@@ -45,14 +45,14 @@
 
         $includeFiles = require __DIR__ . '/autoload_files.php';
         foreach ($includeFiles as $file) {
-            composerRequire5ae4add20467bd3e9b86195a2a46481d($file);
+            composerRequire133d211f3fe926b61f49ecba09460721($file);
         }
 
         return $loader;
     }
 }
 
-function composerRequire5ae4add20467bd3e9b86195a2a46481d($file)
+function composerRequire133d211f3fe926b61f49ecba09460721($file)
 {
     require $file;
 }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index ef6962a..950f001 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -424,27 +424,27 @@
     },
     {
         "name": "serialization/serialization",
-        "version": "3.1",
-        "version_normalized": "3.1.0.0",
+        "version": "3.2",
+        "version_normalized": "3.2.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/wmde/Serialization.git";,
-            "reference": "3cea2bbef70c74db9614e1cc3e149b4a79ff05dd"
+            "reference": "7e13a0bc0173adc3aea0f16545e871e03a2ac4c4"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wmde/Serialization/zipball/3cea2bbef70c74db9614e1cc3e149b4a79ff05dd";,
-            "reference": "3cea2bbef70c74db9614e1cc3e149b4a79ff05dd",
+            "url": 
"https://api.github.com/repos/wmde/Serialization/zipball/7e13a0bc0173adc3aea0f16545e871e03a2ac4c4";,
+            "reference": "7e13a0bc0173adc3aea0f16545e871e03a2ac4c4",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.0"
         },
-        "time": "2014-03-18 18:45:35",
+        "time": "2014-05-20 15:57:52",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "3.1.x-dev"
+                "dev-master": "3.2.x-dev"
             }
         },
         "installation-source": "dist",
@@ -896,12 +896,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "56608d53d8f72591528cca253f0b128fc346ddb7"
+            "reference": "8aa95d6346743c14b47385a9d199742013fcccf8"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/56608d53d8f72591528cca253f0b128fc346ddb7";,
-            "reference": "56608d53d8f72591528cca253f0b128fc346ddb7",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/8aa95d6346743c14b47385a9d199742013fcccf8";,
+            "reference": "8aa95d6346743c14b47385a9d199742013fcccf8",
             "shasum": ""
         },
         "require": {
@@ -924,7 +924,7 @@
         "conflict": {
             "mediawiki/mediawiki": "<1.23"
         },
-        "time": "2014-05-18 20:08:56",
+        "time": "2014-05-21 09:48:21",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {
diff --git a/vendor/serialization/serialization/.travis.yml 
b/vendor/serialization/serialization/.travis.yml
index f02ca1b..e0e17da 100644
--- a/vendor/serialization/serialization/.travis.yml
+++ b/vendor/serialization/serialization/.travis.yml
@@ -4,6 +4,8 @@
   - 5.3
   - 5.4
   - 5.5
+  - 5.6
+  - hhvm
 
 before_script: composer install --prefer-source
 
diff --git a/vendor/serialization/serialization/README.md 
b/vendor/serialization/serialization/README.md
index adbdbe3..e208a56 100644
--- a/vendor/serialization/serialization/README.md
+++ b/vendor/serialization/serialization/README.md
@@ -87,6 +87,10 @@
 
 ## Release notes
 
+### 3.2 (2014-05-20)
+
+* Made SerializationException non-abstract
+
 ### 3.1 (2014-03-18)
 
 * TypedObjectDeserializer now explicitly implements DispatchableDeserializer.
diff --git a/vendor/serialization/serialization/Serialization.php 
b/vendor/serialization/serialization/Serialization.php
index caa596f..6d2f9e8 100644
--- a/vendor/serialization/serialization/Serialization.php
+++ b/vendor/serialization/serialization/Serialization.php
@@ -5,4 +5,4 @@
        return 1;
 }
 
-define( 'Serialization_VERSION', '3.1' );
+define( 'Serialization_VERSION', '3.2' );
diff --git a/vendor/serialization/serialization/composer.json 
b/vendor/serialization/serialization/composer.json
index 60c1977..06efbee 100644
--- a/vendor/serialization/serialization/composer.json
+++ b/vendor/serialization/serialization/composer.json
@@ -37,7 +37,7 @@
        },
        "extra": {
                "branch-alias": {
-                       "dev-master": "3.1.x-dev"
+                       "dev-master": "3.2.x-dev"
                }
        }
 }
diff --git 
a/vendor/serialization/serialization/src/Serializers/Exceptions/SerializationException.php
 
b/vendor/serialization/serialization/src/Serializers/Exceptions/SerializationException.php
index 58d7e28..deee78c 100644
--- 
a/vendor/serialization/serialization/src/Serializers/Exceptions/SerializationException.php
+++ 
b/vendor/serialization/serialization/src/Serializers/Exceptions/SerializationException.php
@@ -8,7 +8,7 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
  */
-abstract class SerializationException extends \RuntimeException {
+class SerializationException extends \RuntimeException {
 
        public function __construct( $message = '', \Exception $previous = null 
) {
                parent::__construct( $message, 0, $previous );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifb759492e23b7c99b36c89e937366ddfca3dbd36
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <[email protected]>

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

Reply via email to