jenkins-bot has submitted this change and it was merged.

Change subject: Update Wikidata - allow disabling data types
......................................................................


Update Wikidata - allow disabling data types

e.g. external-identifiers that are not ready yet to deploy

Change-Id: Ief437d4bf8054bfd1b27449b0f88e586be215935
---
M composer.lock
M extensions/Wikibase/client/config/WikibaseClient.default.php
M extensions/Wikibase/client/includes/WikibaseClient.php
M extensions/Wikibase/docs/options.wiki
M extensions/Wikibase/lib/config/WikibaseLib.default.php
M extensions/Wikibase/lib/includes/DataTypeDefinitions.php
M extensions/Wikibase/lib/tests/phpunit/DataTypeDefinitionsTest.php
M extensions/Wikibase/repo/config/Wikibase.default.php
M extensions/Wikibase/repo/includes/WikibaseRepo.php
M vendor/composer/installed.json
10 files changed, 106 insertions(+), 39 deletions(-)

Approvals:
  Alex Monk: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/composer.lock b/composer.lock
index c538093..6c47d7d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -668,7 +668,7 @@
             "version": "0.15.6",
             "source": {
                 "type": "git",
-                "url": 
"https://github.com/wikimedia/data-values-value-view.git";,
+                "url": "https://gerrit.wikimedia.org/r/data-values/value-view";,
                 "reference": "d4620fa54d0506f3319963592f9423473deca9d2"
             },
             "dist": {
@@ -1393,12 +1393,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "06ee5284d4e0a378e40caf3498963dc576e836eb"
+                "reference": "0e38d250266d929976ac5b8aec810cda2447a75e"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/06ee5284d4e0a378e40caf3498963dc576e836eb";,
-                "reference": "06ee5284d4e0a378e40caf3498963dc576e836eb",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0e38d250266d929976ac5b8aec810cda2447a75e";,
+                "reference": "0e38d250266d929976ac5b8aec810cda2447a75e",
                 "shasum": ""
             },
             "require": {
@@ -1469,7 +1469,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2016-01-11 21:20:36"
+            "time": "2016-01-13 08:06:44"
         },
         {
             "name": "wikibase/wikimedia-badges",
@@ -1511,7 +1511,7 @@
             "support": {
                 "irc": "irc://irc.freenode.net/wikidata"
             },
-            "time": "2015-08-12 09:30:01"
+            "time": "2015-08-04 17:18:47"
         }
     ],
     "packages-dev": [],
diff --git a/extensions/Wikibase/client/config/WikibaseClient.default.php 
b/extensions/Wikibase/client/config/WikibaseClient.default.php
index 49c0dde..7c68e48 100644
--- a/extensions/Wikibase/client/config/WikibaseClient.default.php
+++ b/extensions/Wikibase/client/config/WikibaseClient.default.php
@@ -77,6 +77,18 @@
                 */
                'sharedCacheDuration' => 60 * 60,
 
+               /**
+                * List of data types (by data type id) not enabled on the wiki.
+                * This setting is intended to aid with deployment of new data 
types
+                * or on new Wikibase installs without items and properties yet.
+                *
+                * This setting should be consistent with the corresponding 
setting on the repo.
+                *
+                * WARNING: Disabling a data type after it is in use is 
dangerous
+                * and might break items.
+                */
+               'disabledDataTypes' => array(),
+
                // The type of object cache to use. Use CACHE_XXX constants.
                // This is both a repo and client setting, and should be set to 
the same value in
                // repo and clients for multiwiki setups.
diff --git a/extensions/Wikibase/client/includes/WikibaseClient.php 
b/extensions/Wikibase/client/includes/WikibaseClient.php
index c8ec0ab..29eb79f 100644
--- a/extensions/Wikibase/client/includes/WikibaseClient.php
+++ b/extensions/Wikibase/client/includes/WikibaseClient.php
@@ -485,10 +485,15 @@
                $dataTypeDefinitions = $wgWBClientDataTypes;
                Hooks::run( 'WikibaseClientDataTypes', array( 
&$dataTypeDefinitions ) );
 
+               $settings = new SettingsArray( $wgWBClientSettings );
+
                return new self(
-                       new SettingsArray( $wgWBClientSettings ),
+                       $settings,
                        $wgContLang,
-                       new DataTypeDefinitions( $dataTypeDefinitions )
+                       new DataTypeDefinitions(
+                               $dataTypeDefinitions,
+                               $settings->getSetting( 'disabledDataTypes' )
+                       )
                );
        }
 
diff --git a/extensions/Wikibase/docs/options.wiki 
b/extensions/Wikibase/docs/options.wiki
index aacf5d6..f574822 100644
--- a/extensions/Wikibase/docs/options.wiki
+++ b/extensions/Wikibase/docs/options.wiki
@@ -30,12 +30,10 @@
 :'''Warning:''' do not change this if you already have Wikibase entities in 
your database, since they may become unreadable!
 ;useChangesTable: Whether to record changes in the database, so they can be 
pushed to clients. Boolean, defaults to <code>true</code>. May be set to false 
in situations where there are no clients to notify, to preserve space. 
'''Note''' that if this is true, the <code>pruneChanges.php</code> script 
should be run periodically to remove old changes from the database table.
 ;changeHandlers: Array mapping change type IDs to handler classes. May be used 
by extensions to register additional change classes.
-;dataTypes: Array listing the available data types that can be used in snaks 
(and thus in claims and statements). The relevant data type identifiers are 
defined by the DataType extension. Default:
+;disabledDataTypes: Array listing of disabled data types on a wiki. This 
setting is intended to be used a new Wikibase install without items yet, or to 
control deployment of new data types. This setting should be set the same in 
the client and repo settings.
+Default:
 <poem>
-          array(
-              'wikibase-item',
-              'commonsMedia',
-          )
+          array()
 </poem>
 ;maxSerializedEntitySize: The maximum serialized size of entities, in KB. 
Loading and storing will fail if this size is exceeded. This is intended as a 
hard limit that prevents very large chunks of data being stored or processed 
due to abuse or erroneous code. Defaults to MediaWiki core's $wgMaxArticleSize 
setting.
 
diff --git a/extensions/Wikibase/lib/config/WikibaseLib.default.php 
b/extensions/Wikibase/lib/config/WikibaseLib.default.php
index de19c74..b530ff1 100644
--- a/extensions/Wikibase/lib/config/WikibaseLib.default.php
+++ b/extensions/Wikibase/lib/config/WikibaseLib.default.php
@@ -60,19 +60,6 @@
                'wikibase-query~restore' => 'Wikibase\EntityChange',
        ),
 
-       'dataTypes' => array(
-               'commonsMedia',
-               'globe-coordinate',
-               'quantity',
-               'monolingualtext',
-               'string',
-               'time',
-               'url',
-               'external-id',
-               'wikibase-item',
-               'wikibase-property',
-       ),
-
        'maxSerializedEntitySize' => $GLOBALS['wgMaxArticleSize'],
 );
 
diff --git a/extensions/Wikibase/lib/includes/DataTypeDefinitions.php 
b/extensions/Wikibase/lib/includes/DataTypeDefinitions.php
index fa1766c..efa04e5 100644
--- a/extensions/Wikibase/lib/includes/DataTypeDefinitions.php
+++ b/extensions/Wikibase/lib/includes/DataTypeDefinitions.php
@@ -53,9 +53,16 @@
         * (with the prefix "PT:") and value types (with the prefix "VT:") to 
data type definitions.
         * Each data type definitions are associative arrays, refer to the 
class level documentation
         * for details.
+        * @param string[] $disabledDataTypes Array of disabled data types.
         */
-       public function __construct( $dataTypeDefinitions = array() ) {
-               Assert::parameterElementType( 'array', $dataTypeDefinitions, 
'$dataTypeDefinitions' );
+       public function __construct(
+               array $dataTypeDefinitions = array(),
+               array $disabledDataTypes = array()
+       ) {
+               $dataTypeDefinitions = $this->filterDisabledDataTypes(
+                       $dataTypeDefinitions,
+                       $disabledDataTypes
+               );
 
                $this->registerDataTypes( $dataTypeDefinitions );
        }
@@ -74,7 +81,11 @@
                Assert::parameterElementType( 'array', $dataTypeDefinitions, 
'$dataTypeDefinitions' );
 
                foreach ( $dataTypeDefinitions as $id => $def ) {
-                       Assert::parameter( strpos( $id, ':' ), 
"\$dataTypeDefinitions[$id]", 'Key must start with a prefix like "PT:" or 
"VT:".' );
+                       Assert::parameter(
+                               strpos( $id, ':' ),
+                               "\$dataTypeDefinitions[$id]",
+                               'Key must start with a prefix like "PT:" or 
"VT:".'
+                       );
 
                        if ( isset( $this->dataTypeDefinitions[$id] ) ) {
                                $this->dataTypeDefinitions[$id] = array_merge(
@@ -88,6 +99,24 @@
        }
 
        /**
+        * @param array[] $dataTypeDefinitions Associative array of data types 
and definitions.
+        * @param string[] $disabledTypes List of disabled data types
+        *
+        * @return array[] Filtered data type definitions
+        */
+       private function filterDisabledDataTypes( array $dataTypeDefinitions, 
array $disabledTypes ) {
+               foreach ( $dataTypeDefinitions as $id => $def ) {
+                       if ( 0 === strpos( $id, 'PT' ) ) {
+                               if ( in_array( substr( $id, 3 ), $disabledTypes 
) ) {
+                                       unset( $dataTypeDefinitions[$id] );
+                               }
+                       }
+               }
+
+               return $dataTypeDefinitions;
+       }
+
+       /**
         * @param array $map
         * @param string $prefix
         *
diff --git a/extensions/Wikibase/lib/tests/phpunit/DataTypeDefinitionsTest.php 
b/extensions/Wikibase/lib/tests/phpunit/DataTypeDefinitionsTest.php
index 569dfb4..c4aed4e 100644
--- a/extensions/Wikibase/lib/tests/phpunit/DataTypeDefinitionsTest.php
+++ b/extensions/Wikibase/lib/tests/phpunit/DataTypeDefinitionsTest.php
@@ -16,8 +16,8 @@
  */
 class DataTypeDefinitionsTest extends \MediaWikiTestCase {
 
-       private function getDataTypeDefinitions() {
-               $definitions = array(
+       private function getDefinitions() {
+               return array(
                        'VT:FOO' => array(
                                'formatter-factory-callback' => 
'DataTypeDefinitionsTest::getFooValueFormatter',
                                'parser-factory-callback' => 
'DataTypeDefinitionsTest::getFooValueParser',
@@ -34,8 +34,10 @@
                                'formatter-factory-callback' => 
'DataTypeDefinitionsTest::getBarFormatter',
                        )
                );
+       }
 
-               return new DataTypeDefinitions( $definitions );
+       private function getDataTypeDefinitions() {
+               return new DataTypeDefinitions( $this->getDefinitions() );
        }
 
        public function testTypeIds() {
@@ -129,4 +131,21 @@
                );
        }
 
+       public function testDataTypeDefinitions_onlySomeDataTypesEnabled() {
+               $definitions = $this->getDefinitions();
+               $defs = new DataTypeDefinitions( $definitions, array( 'bar' ) );
+
+               $this->assertSame(
+                       array( 'foo' ),
+                       $defs->getTypeIds(),
+                       'data type ids'
+               );
+
+               $this->assertSame(
+                       array( 'VT:FOO' => 
'DataTypeDefinitionsTest::getFooValueFormatter' ),
+                       $defs->getFormatterFactoryCallbacks( 
DataTypeDefinitions::PREFIXED_MODE ),
+                       'formatter factory callbacks, prefixed mode'
+               );
+       }
+
 }
diff --git a/extensions/Wikibase/repo/config/Wikibase.default.php 
b/extensions/Wikibase/repo/config/Wikibase.default.php
index 8bc11c5..5fc6239 100644
--- a/extensions/Wikibase/repo/config/Wikibase.default.php
+++ b/extensions/Wikibase/repo/config/Wikibase.default.php
@@ -123,6 +123,18 @@
                // repo and clients for multiwiki setups.
                'sharedCacheType' => $GLOBALS['wgMainCacheType'],
 
+               /**
+                * List of data types (by data type id) not enabled on the wiki.
+                * This setting is intended to aid with deployment of new data 
types
+                * or on new Wikibase installs without items and properties yet.
+                *
+                * This setting should be consistent with the corresponding 
setting on the client.
+                *
+                * WARNING: Disabling a data type after it is in use is 
dangerous
+                * and might break items.
+                */
+               'disabledDataTypes' => array(),
+
                // Special non-canonical languages and their BCP 47 mappings
                // Based on: 
https://meta.wikimedia.org/wiki/Special_language_codes
                'canonicalLanguageCodes' => array(
diff --git a/extensions/Wikibase/repo/includes/WikibaseRepo.php 
b/extensions/Wikibase/repo/includes/WikibaseRepo.php
index 3297c5f..8441d89 100644
--- a/extensions/Wikibase/repo/includes/WikibaseRepo.php
+++ b/extensions/Wikibase/repo/includes/WikibaseRepo.php
@@ -241,9 +241,14 @@
                Hooks::run( 'WikibaseRepoDataTypes', array( 
&$dataTypeDefinitions ) );
 
                if ( $instance === null ) {
+                       $settings = new SettingsArray( $wgWBRepoSettings );
+
                        $instance = new self(
-                               new SettingsArray( $wgWBRepoSettings ),
-                               new DataTypeDefinitions( $dataTypeDefinitions ),
+                               $settings,
+                               new DataTypeDefinitions(
+                                       $dataTypeDefinitions,
+                                       $settings->getSetting( 
'disabledDataTypes' )
+                               ),
                                $wgContLang
                        );
                }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 73e1644..d9f25aa 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -772,7 +772,7 @@
         "version_normalized": "0.15.6.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/wikimedia/data-values-value-view.git";,
+            "url": "https://gerrit.wikimedia.org/r/data-values/value-view";,
             "reference": "d4620fa54d0506f3319963592f9423473deca9d2"
         },
         "dist": {
@@ -1480,12 +1480,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "06ee5284d4e0a378e40caf3498963dc576e836eb"
+            "reference": "0e38d250266d929976ac5b8aec810cda2447a75e"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/06ee5284d4e0a378e40caf3498963dc576e836eb";,
-            "reference": "06ee5284d4e0a378e40caf3498963dc576e836eb",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0e38d250266d929976ac5b8aec810cda2447a75e";,
+            "reference": "0e38d250266d929976ac5b8aec810cda2447a75e",
             "shasum": ""
         },
         "require": {
@@ -1517,7 +1517,7 @@
             "jakub-onderka/php-parallel-lint": "0.9.2",
             "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0"
         },
-        "time": "2016-01-11 21:20:36",
+        "time": "2016-01-13 08:06:44",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ief437d4bf8054bfd1b27449b0f88e586be215935
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: wmf/1.27.0-wmf.10
Gerrit-Owner: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Alex Monk <kren...@gmail.com>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to