Aude has uploaded a new change for review.
https://gerrit.wikimedia.org/r/263857
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/ClassLoader.php
M vendor/composer/autoload_files.php
M vendor/composer/autoload_real.php
M vendor/composer/installed.json
13 files changed, 137 insertions(+), 76 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata
refs/changes/57/263857/1
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/ClassLoader.php b/vendor/composer/ClassLoader.php
index 5e1469e..ff6ecfb 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -13,9 +13,7 @@
namespace Composer\Autoload;
/**
- * ClassLoader implements a PSR-0 class loader
- *
- * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
*
* $loader = new \Composer\Autoload\ClassLoader();
*
@@ -39,6 +37,8 @@
*
* @author Fabien Potencier <[email protected]>
* @author Jordi Boggiano <[email protected]>
+ * @see http://www.php-fig.org/psr/psr-0/
+ * @see http://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
@@ -147,7 +147,7 @@
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-0 base directories
+ * @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
diff --git a/vendor/composer/autoload_files.php
b/vendor/composer/autoload_files.php
index 3da4104..0dd04ea 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -6,23 +6,23 @@
$baseDir = dirname($vendorDir);
return array(
- $vendorDir . '/data-values/data-values/DataValues.php',
- $vendorDir . '/data-values/interfaces/Interfaces.php',
- $vendorDir . '/data-values/common/Common.php',
- $vendorDir . '/wikibase/data-model/WikibaseDataModel.php',
- $vendorDir . '/serialization/serialization/Serialization.php',
- $vendorDir . '/data-values/javascript/DataValuesJavaScript.php',
- $vendorDir . '/data-values/time/Time.php',
- $vendorDir . '/data-values/number/Number.php',
- $vendorDir . '/data-values/geo/Geo.php',
- $vendorDir . '/diff/diff/Diff.php',
- $vendorDir . '/wikibase/data-model-javascript/init.php',
- $vendorDir . '/wikibase/data-model-serialization/mediawiki.php',
- $vendorDir . '/wikibase/serialization-javascript/init.php',
- $vendorDir . '/wikibase/javascript-api/WikibaseJavaScriptApi.php',
- $vendorDir . '/wikibase/internal-serialization/mediawiki.php',
- $baseDir . '/extensions/ValueView/ValueView.php',
- $vendorDir . '/data-values/data-types/DataTypes.php',
- $vendorDir . '/data-values/validators/Validators.php',
- $baseDir . '/extensions/WikimediaBadges/WikimediaBadges.php',
+ '7cb394c3af2b1ae832979b0368e0da62' => $vendorDir .
'/data-values/data-values/DataValues.php',
+ 'd1715cacc3c23b16a030645514266a76' => $vendorDir .
'/data-values/interfaces/Interfaces.php',
+ '90559502573a0d473dc66fde5c0ff7e2' => $vendorDir .
'/data-values/common/Common.php',
+ 'dc2c047038b9f5c71759f55f00aba99b' => $vendorDir .
'/wikibase/data-model/WikibaseDataModel.php',
+ 'f4c767faab43077fd89ff7cf99ffb4b8' => $vendorDir .
'/serialization/serialization/Serialization.php',
+ '214ce90e7d14f0df3f891aa32034c535' => $vendorDir .
'/data-values/javascript/DataValuesJavaScript.php',
+ '908a529187e4aa80293c8aa78e1ec48d' => $vendorDir .
'/data-values/time/Time.php',
+ 'c15f8000750e4e04ba559d9745044427' => $vendorDir .
'/data-values/number/Number.php',
+ '5a494680c593293bd6035e42e2a6825c' => $vendorDir .
'/data-values/geo/Geo.php',
+ '3ef87127dc6892a0a78f223558a0b940' => $vendorDir . '/diff/diff/Diff.php',
+ '4b37f72a623577cc8b75c6a738dc9d30' => $vendorDir .
'/wikibase/data-model-javascript/init.php',
+ '449657c0add2acfae5f5a189e215d1ad' => $vendorDir .
'/wikibase/data-model-serialization/mediawiki.php',
+ '3a1322766b0dbc9cf396163859b9f864' => $vendorDir .
'/wikibase/serialization-javascript/init.php',
+ 'f44e0a54bf5f0864879c4d3e46950b49' => $vendorDir .
'/wikibase/javascript-api/WikibaseJavaScriptApi.php',
+ 'e47bdf5a503f90444b98ecdcab719841' => $vendorDir .
'/wikibase/internal-serialization/mediawiki.php',
+ '499fed5dd24a6329f26a3973b04c5440' => $baseDir .
'/extensions/ValueView/ValueView.php',
+ 'b27615ec50616984e4b07db5658aba0d' => $vendorDir .
'/data-values/data-types/DataTypes.php',
+ '0dd9431cbbfa9ed9cb9d565d7129dbaf' => $vendorDir .
'/data-values/validators/Validators.php',
+ '6b49d0287e368cb66263e04ca7d9699f' => $baseDir .
'/extensions/WikimediaBadges/WikimediaBadges.php',
);
diff --git a/vendor/composer/autoload_real.php
b/vendor/composer/autoload_real.php
index 1e45e9c..1c9e343 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -23,16 +23,6 @@
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitwikidata_1_27_0_wmf_10',
'loadClassLoader'));
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
-
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
-
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
@@ -42,15 +32,19 @@
$loader->register(false);
$includeFiles = require __DIR__ . '/autoload_files.php';
- foreach ($includeFiles as $file) {
- composerRequirewikidata_1_27_0_wmf_10($file);
+ foreach ($includeFiles as $fileIdentifier => $file) {
+ composerRequirewikidata_1_27_0_wmf_10($fileIdentifier, $file);
}
return $loader;
}
}
-function composerRequirewikidata_1_27_0_wmf_10($file)
+function composerRequirewikidata_1_27_0_wmf_10($fileIdentifier, $file)
{
- require $file;
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ require $file;
+
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+ }
}
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: newchange
Gerrit-Change-Id: Ief437d4bf8054bfd1b27449b0f88e586be215935
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: wmf/1.27.0-wmf.10
Gerrit-Owner: Aude <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits