Aude has uploaded a new change for review.
https://gerrit.wikimedia.org/r/119778
Change subject: Update Wikidata, fix for watchlist, bot flag in merge items api
......................................................................
Update Wikidata, fix for watchlist, bot flag in merge items api
Change-Id: I4f81798d04593b2789ef016a39e4ccc6ae262bc6
---
M composer.lock
M extensions/Wikibase/client/WikibaseClient.hooks.php
A extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php
A
extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
M extensions/Wikibase/repo/Wikibase.i18n.php
M extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php
M extensions/Wikibase/repo/includes/api/ApiWikibase.php
M extensions/Wikibase/repo/includes/api/MergeItems.php
M vendor/autoload.php
M vendor/composer/autoload_classmap.php
M vendor/composer/autoload_real.php
M vendor/composer/installed.json
12 files changed, 295 insertions(+), 47 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata
refs/changes/78/119778/1
diff --git a/composer.lock b/composer.lock
index f35124f..b22c3b8 100644
--- a/composer.lock
+++ b/composer.lock
@@ -850,12 +850,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "0fab576bdf933b0d91953238c0ed66836661efb1"
+ "reference": "0fdb7de98ef1c952739a74957435fdd815895cb6"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0fab576bdf933b0d91953238c0ed66836661efb1",
- "reference": "0fab576bdf933b0d91953238c0ed66836661efb1",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0fdb7de98ef1c952739a74957435fdd815895cb6",
+ "reference": "0fdb7de98ef1c952739a74957435fdd815895cb6",
"shasum": ""
},
"require": {
@@ -914,7 +914,7 @@
"wikibaserepo",
"wikidata"
],
- "time": "2014-03-18 21:02:54"
+ "time": "2014-03-20 16:39:04"
}
],
"packages-dev": [
diff --git a/extensions/Wikibase/client/WikibaseClient.hooks.php
b/extensions/Wikibase/client/WikibaseClient.hooks.php
index db4b34a..21cd3a5 100644
--- a/extensions/Wikibase/client/WikibaseClient.hooks.php
+++ b/extensions/Wikibase/client/WikibaseClient.hooks.php
@@ -28,6 +28,7 @@
use UnexpectedValueException;
use User;
use Wikibase\Client\Hooks\InfoActionHookHandler;
+use Wikibase\Client\Hooks\SpecialWatchlistQueryHandler;
use Wikibase\Client\MovePageNotice;
use Wikibase\Client\Hooks\OtherProjectsSidebarGenerator;
use Wikibase\Client\WikibaseClient;
@@ -255,7 +256,9 @@
wfProfileIn( __METHOD__ );
- if ( $rc->getAttribute( 'rc_type' ) == RC_EXTERNAL ) {
+ $type = $rc->getAttribute( 'rc_type' );
+
+ if ( $type == RC_EXTERNAL ) {
$wikibaseClient = WikibaseClient::getDefaultInstance();
$changeFactory = new ExternalChangeFactory(
$wikibaseClient->getSettings()->getSetting(
'repoSiteId' )
@@ -309,36 +312,11 @@
public static function onSpecialWatchlistQuery( array &$conds, array
&$tables,
array &$join_conds, array &$fields, $opts = array()
) {
- global $wgRequest, $wgUser;
+ $db = wfGetDB( DB_SLAVE );
+ $handler = new SpecialWatchlistQueryHandler(
$GLOBALS['wgUser'], $db );
- wfProfileIn( __METHOD__ );
+ $conds = $handler->addWikibaseConditions(
$GLOBALS['wgRequest'], $conds, $opts );
- if (
- // Don't act on activated enhanced watchlist
- $wgRequest->getBool( 'enhanced', $wgUser->getOption(
'usenewrc' ) ) === false &&
- // Or in case the user disabled it
- $opts['hideWikibase'] === 0
- ) {
- $dbr = wfGetDB( DB_SLAVE );
-
- $newConds = array();
- foreach( $conds as $k => $v ) {
- if ( $v === 'rc_this_oldid=page_latest OR
rc_type=3' ) {
- $where = array(
- 'rc_this_oldid=page_latest',
- 'rc_type' => array( 3, 5 )
- );
- $newConds[$k] = $dbr->makeList( $where,
LIST_OR );
- } else {
- $newConds[$k] = $v;
- }
- }
- $conds = $newConds;
- } else {
- $conds[] = 'rc_type != 5';
- }
-
- wfProfileOut( __METHOD__ );
return true;
}
diff --git
a/extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php
b/extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php
new file mode 100644
index 0000000..745ea83
--- /dev/null
+++ b/extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php
@@ -0,0 +1,147 @@
+<?php
+
+namespace Wikibase\Client\Hooks;
+
+use DatabaseBase;
+use User;
+use WebRequest;
+
+/**
+ * @since 0.5
+ *
+ * @licence GNU GPL v2+
+ * @author Katie Filbert < [email protected] >
+ */
+class SpecialWatchlistQueryHandler {
+
+ /**
+ * @var User
+ */
+ private $user;
+
+ /**
+ * @var DatabaseBase
+ */
+ private $db;
+
+ /**
+ * @var string
+ */
+ private $rcTypeLogCondition;
+
+ /**
+ * @param User $user
+ * @param DatabaseBase $db
+ */
+ public function __construct( User $user, DatabaseBase $db ) {
+ $this->user = $user;
+ $this->db = $db;
+ }
+
+ /**
+ * @param WebRequest $request
+ * @param array $conds
+ * @param FormOptions $opts
+ *
+ * @return array
+ */
+ public function addWikibaseConditions( WebRequest $request, array
$conds, $opts ) {
+ $hideWikibase = $opts->getValue( 'hideWikibase');
+
+ // do not include wikibase changes for activated enhanced
watchlist
+ // since we do not support that format yet
+ if ( $this->isEnhancedChangesEnabled( $request ) === true ||
$hideWikibase === true ) {
+ $newConds = $this->makeHideWikibaseConds( $conds );
+ } else {
+ $newConds = $this->makeShowWikibaseConds( $conds );
+ }
+
+ return $newConds;
+ }
+
+ /**
+ * @param array $conds
+ *
+ * @return array
+ */
+ private function makeHideWikibaseConds( array $conds ) {
+ $conds[] = $this->getHideRcExternalCond();
+
+ return $conds;
+ }
+
+ /**
+ * @param array $conds
+ *
+ * @return array
+ */
+ private function makeShowWikibaseConds( array $conds ) {
+ $newConds = array();
+
+ foreach( $conds as $key => $cond ) {
+ if ( $this->isRcTypeLogCondition( $cond ) ) {
+ $newConds[$key] =
$this->makeShowLogAndWikibaseType();
+ } else {
+ $newConds[$key] = $cond;
+ }
+ }
+
+ return $newConds;
+ }
+
+ /**
+ * @return boolean
+ */
+ private function isRcTypeLogCondition( $cond ) {
+ return $cond === $this->getRcTypeLogCondition();
+ }
+
+ /**
+ * @return string
+ */
+ private function getRcTypeLogCondition() {
+ if ( !isset( $this->rcTypeLogCondition ) ) {
+ $this->rcTypeLogCondition =
$this->makeLatestOrTypesCond( array( RC_LOG ) );
+ }
+
+ return $this->rcTypeLogCondition;
+ }
+
+ /**
+ * @return string
+ */
+ private function makeShowLogAndWikibaseType() {
+ return $this->makeLatestOrTypesCond( array( RC_LOG, RC_EXTERNAL
) );
+ }
+
+ /**
+ * @param array $types
+ *
+ * @return string
+ */
+ private function makeLatestOrTypesCond( array $types ) {
+ $where = array(
+ 'rc_this_oldid=page_latest',
+ 'rc_type' => $types
+ );
+
+ $cond = $this->db->makeList( $where, LIST_OR );
+
+ return $cond;
+ }
+
+ /**
+ * @return string
+ */
+ private function getHideRcExternalCond() {
+ return 'rc_type != ' . RC_EXTERNAL;
+ }
+
+ /**
+ * @param WebRequest $request
+ */
+ private function isEnhancedChangesEnabled( WebRequest $request ) {
+ return $request->getBool( 'enhanced', $this->user->getOption(
'usenewrc' ) ) === true;
+ }
+
+}
diff --git
a/extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
b/extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
new file mode 100644
index 0000000..49a4a86
--- /dev/null
+++
b/extensions/Wikibase/client/tests/phpunit/includes/hooks/SpecialWatchlistQueryHandlerTest.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Wikibase\Test;
+
+use FauxRequest;
+use FormOptions;
+use Wikibase\Client\Hooks\SpecialWatchlistQueryHandler;
+
+/**
+ * @covers Wikibase\Client\Hooks\SpecialWatchlistQueryHandler
+ *
+ * @group WikibaseClient
+ * @group HookHandler
+ * @group Wikibase
+ *
+ * @licence GNU GPL v2+
+ * @author Katie Filbert < [email protected] >
+ */
+class SpecialWatchlistQueryHandlerTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @dataProvider addWikibaseConditionsProvider
+ */
+ public function testAddWikibaseConditions( $expected, $conds,
$enhanced, $hideWikibase,
+ $message
+ ) {
+ $user = $this->getUser( $enhanced );
+
+ $database = $this->getDatabase();
+ $hookHandler = new SpecialWatchlistQueryHandler( $user,
$database );
+
+ $opts = new FormOptions();
+ $opts->add( 'hideWikibase', $hideWikibase );
+
+ $newConds = $hookHandler->addWikibaseConditions( new
FauxRequest(), $conds, $opts );
+
+ $this->assertEquals( $expected, $newConds, $message );
+ }
+
+ public function addWikibaseConditionsProvider() {
+ $conds = array( "(rc_this_oldid=page_latest) OR rc_type = '3'"
);
+
+ $expectedHideConds = array_merge( $conds, array( 'rc_type != 5'
) );
+ $expectedShowConds = array( "(rc_this_oldid=page_latest) OR
rc_type IN (3,5)" );
+
+ return array(
+ array( $expectedHideConds, $conds, true, true,
'enhanced, hide wikibase opt' ),
+ array( $expectedHideConds, $conds, true, false,
'enhanced, no hide wikibase opt' ),
+ array( $expectedHideConds, $conds, false, true, 'not
enhanced, hide wikibase opt' ),
+ array( $expectedShowConds, $conds, false, false, 'not
enhanced, show wikibase opt' )
+ );
+ }
+
+ /**
+ * @param boolean $enhanced
+ */
+ private function getUser( $enhanced ) {
+ $user = $this->getMockBuilder( 'User' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $user->expects( $this->any() )
+ ->method( 'getOption' )
+ ->with( 'usenewrc' )
+ ->will( $this->returnCallback( function() use (
$enhanced ) {
+ return $enhanced;
+ } ) );
+
+ return $user;
+ }
+
+ private function getDatabase() {
+ $database = $this->getMockBuilder( 'DatabaseMysql' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $database->expects( $this->any() )
+ ->method( 'makeList' )
+ ->will( $this->returnCallback( function( $conds ) {
+ if ( array_key_exists( 'rc_type', $conds ) ) {
+ if ( $conds['rc_type'] === array( 3 ) )
{
+ return
"(rc_this_oldid=page_latest) OR rc_type = '3'";
+ } else {
+ return
'(rc_this_oldid=page_latest) OR rc_type IN (3,5)';
+ }
+ }
+ } ) );
+
+ return $database;
+ }
+}
diff --git a/extensions/Wikibase/repo/Wikibase.i18n.php
b/extensions/Wikibase/repo/Wikibase.i18n.php
index f789a14..d8c4292 100644
--- a/extensions/Wikibase/repo/Wikibase.i18n.php
+++ b/extensions/Wikibase/repo/Wikibase.i18n.php
@@ -93,6 +93,8 @@
'wikibase-snakview-snaktypeselector-value' => 'custom value',
'wikibase-snakview-snaktypeselector-somevalue' => 'unknown value',
'wikibase-snakview-snaktypeselector-novalue' => 'no value',
+ 'wikibase-snakformat-invalid-value' => 'Invalid value.',
+ 'wikibase-snakformat-propertynotfound' => 'Property not found.',
'wikibase-shortcopyrightwarning' => 'By clicking "$1", you agree to the
[[$2|terms of use]], and you irrevocably agree to release your contribution
under the $3.',
'wikibase-shortcopyrightwarning-version' => 'wikibase-1', # do not
translate or duplicate this message to other languages
'wikibase-copyrighttooltip-acknowledge' => 'I accept these terms for my
future edits. Do not show this message again.',
@@ -670,6 +672,8 @@
'wikibase-snakview-snaktypeselector-value' => "Short descriptive title
of a 'value' snak (see [[d:Wikidata:Glossary]]) used in a drop-down menu
allowing to select the snak type when adding or editing a snak. The drop-down
menu can be opened by clicking an anchor right next to the input element(s)
used to specify a claim's value. Although this is regarded a 'special', seldom
used feature, the term 'snak' should be avoided here since the concept of snaks
is a technical abstraction that does not give any additional meaning within the
user interface. The basic meaning of this option - which is the default when
adding a claim - is allowing the user to specify a value.",
'wikibase-snakview-snaktypeselector-somevalue' => "Short descriptive
title of a some-value snak (see [[d:Wikidata:Glossary]]) used in a drop-down
menu allowing to select the snak type when adding or editing a snak. The
drop-down menu can be opened by clicking an anchor right next to the input
element(s) used to specify a claim's value. Although this is regarded a
'special', seldom used feature, the term 'snak' should be avoided here since
the concept of snaks is a technical abstraction that does not give any
additional meaning within the user interface. The basic meaning of this option
is that a value exists but it is unknown.",
'wikibase-snakview-snaktypeselector-novalue' => "A short descriptive
title of a no-value snak (see [[d:Wikidata:Glossary]]) used in a drop-down menu
allowing to select the snak type when adding or editing a snak. The drop-down
menu can be opened by clicking an anchor right next to the input element(s)
used to specify a claim's value. Although this is regarded a 'special', seldom
used feature, the term 'snak' should be avoided here since the concept of snaks
is a technical abstraction that does not give any additional meaning within the
user interface. The basic meaning of this option is that no value exists.",
+ 'wikibase-snakformat-invalid-value' => 'Error message displayed on item
page for property value that has an invalid or mismatching property type and
cannot be displayed.',
+ 'wikibase-snakformat-propertynotfound' => 'Error message displayed on
item page for snak with a property that cannot be found.',
'wikibase-shortcopyrightwarning' => 'A short copyright warning
displayed during editing in the JavaScript UI. The copyright warning is
displayed within a tooltip next to the save button.
Parameters:
diff --git a/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php
b/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php
index 33e399d..6b107c1 100644
--- a/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php
+++ b/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php
@@ -2,6 +2,7 @@
namespace Wikibase;
+use InvalidArgumentException;
use Wikibase\Lib\FormattingException;
use Wikibase\Lib\PropertyNotFoundException;
use Wikibase\Lib\Serializers\ClaimSerializer;
@@ -260,16 +261,36 @@
}
/**
+ * @fixme handle errors more consistently as done in JS UI
+ *
* @param Snak $snak
* @return string
*/
protected function getFormattedSnakValue( $snak ) {
try {
- return $this->snakFormatter->formatSnak( $snak );
+ $formattedSnak = $this->snakFormatter->formatSnak(
$snak );
} catch ( FormattingException $ex ) {
- return '?'; // XXX: perhaps show error message?
+ return $this->getInvalidSnakMessage();
} catch ( PropertyNotFoundException $ex ) {
- return '?'; // XXX: perhaps show error message?
+ return $this->getPropertyNotFoundMessage();
+ } catch ( InvalidArgumentException $ex ) {
+ return $this->getInvalidSnakMessage();
}
+
+ return $formattedSnak;
+ }
+
+ /**
+ * @return string
+ */
+ private function getInvalidSnakMessage() {
+ return wfMessage( 'wikibase-snakformat-invalid-value'
)->parse();
+ }
+
+ /**
+ * @return string
+ */
+ private function getPropertyNotFoundMessage() {
+ return wfMessage ( 'wikibase-snakformat-propertynotfound'
)->parse();
}
}
diff --git a/extensions/Wikibase/repo/includes/api/ApiWikibase.php
b/extensions/Wikibase/repo/includes/api/ApiWikibase.php
index 81db295..bc76c4b 100644
--- a/extensions/Wikibase/repo/includes/api/ApiWikibase.php
+++ b/extensions/Wikibase/repo/includes/api/ApiWikibase.php
@@ -477,7 +477,9 @@
$params = $this->extractRequestParams();
$user = $this->getUser();
- $flags |= ( $user->isAllowed( 'bot' ) && $params['bot'] ) ?
EDIT_FORCE_BOT : 0;
+ if ( isset( $params['bot'] ) && $params['bot'] &&
$user->isAllowed( 'bot' ) ) {
+ $flags |= EDIT_FORCE_BOT;
+ }
$baseRevisionId = isset( $params['baserevid'] ) ? intval(
$params['baserevid'] ) : null;
$baseRevisionId = $baseRevisionId > 0 ? $baseRevisionId : false;
diff --git a/extensions/Wikibase/repo/includes/api/MergeItems.php
b/extensions/Wikibase/repo/includes/api/MergeItems.php
index af5399e..6e9a588 100644
--- a/extensions/Wikibase/repo/includes/api/MergeItems.php
+++ b/extensions/Wikibase/repo/includes/api/MergeItems.php
@@ -212,6 +212,7 @@
ApiBase::PARAM_TYPE => 'string',
),
'token' => null,
+ 'bot' => false
)
);
}
@@ -232,6 +233,9 @@
autocomment together with the summary
is 260 characters. Be aware that everything above that
limit will be cut off."
),
+ 'bot' => array( 'Mark this edit as bot',
+ 'This URL flag will only be respected
if the user belongs to the group "bot".'
+ ),
)
);
}
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 13e1e81..496a785 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer' . '/autoload_real.php';
-return ComposerAutoloaderInit69392322f28d031f830de9b3b1de47a0::getLoader();
+return ComposerAutoloaderInit8186015c81c6fd114ac83671a95f281c::getLoader();
diff --git a/vendor/composer/autoload_classmap.php
b/vendor/composer/autoload_classmap.php
index 847900f..3c59d59 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -243,6 +243,7 @@
'Wikibase\\Client\\ClientSiteLinkLookup' => $baseDir .
'/extensions/Wikibase/client/includes/ClientSiteLinkLookup.php',
'Wikibase\\Client\\Hooks\\InfoActionHookHandler' => $baseDir .
'/extensions/Wikibase/client/includes/hooks/InfoActionHookHandler.php',
'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGenerator' => $baseDir .
'/extensions/Wikibase/client/includes/hooks/OtherProjectsSidebarGenerator.php',
+ 'Wikibase\\Client\\Hooks\\SpecialWatchlistQueryHandler' => $baseDir .
'/extensions/Wikibase/client/includes/hooks/SpecialWatchlistQueryHandler.php',
'Wikibase\\Client\\MovePageNotice' => $baseDir .
'/extensions/Wikibase/client/includes/hooks/MovePageNotice.php',
'Wikibase\\Client\\Scribunto\\Test\\Scribunto_LuaWikibaseLibraryTestCase'
=> $baseDir .
'/extensions/Wikibase/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTestCase.php',
'Wikibase\\Client\\Scribunto\\Test\\WikibaseLuaIntegrationTestItemSetUpHelper'
=> $baseDir .
'/extensions/Wikibase/client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php',
diff --git a/vendor/composer/autoload_real.php
b/vendor/composer/autoload_real.php
index 2fa0ff0..65b93d4 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit69392322f28d031f830de9b3b1de47a0
+class ComposerAutoloaderInit8186015c81c6fd114ac83671a95f281c
{
private static $loader;
@@ -19,9 +19,9 @@
return self::$loader;
}
-
spl_autoload_register(array('ComposerAutoloaderInit69392322f28d031f830de9b3b1de47a0',
'loadClassLoader'), true, true);
+
spl_autoload_register(array('ComposerAutoloaderInit8186015c81c6fd114ac83671a95f281c',
'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-
spl_autoload_unregister(array('ComposerAutoloaderInit69392322f28d031f830de9b3b1de47a0',
'loadClassLoader'));
+
spl_autoload_unregister(array('ComposerAutoloaderInit8186015c81c6fd114ac83671a95f281c',
'loadClassLoader'));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
@@ -45,14 +45,14 @@
$includeFiles = require __DIR__ . '/autoload_files.php';
foreach ($includeFiles as $file) {
- composerRequire69392322f28d031f830de9b3b1de47a0($file);
+ composerRequire8186015c81c6fd114ac83671a95f281c($file);
}
return $loader;
}
}
-function composerRequire69392322f28d031f830de9b3b1de47a0($file)
+function composerRequire8186015c81c6fd114ac83671a95f281c($file)
{
require $file;
}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 4d39320..875efeb 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -877,12 +877,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "0fab576bdf933b0d91953238c0ed66836661efb1"
+ "reference": "0fdb7de98ef1c952739a74957435fdd815895cb6"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0fab576bdf933b0d91953238c0ed66836661efb1",
- "reference": "0fab576bdf933b0d91953238c0ed66836661efb1",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0fdb7de98ef1c952739a74957435fdd815895cb6",
+ "reference": "0fdb7de98ef1c952739a74957435fdd815895cb6",
"shasum": ""
},
"require": {
@@ -901,7 +901,7 @@
"wikibase/data-model": "~0.7.2",
"wikibase/easyrdf_lite": "~0.8.1"
},
- "time": "2014-03-18 21:02:54",
+ "time": "2014-03-20 16:39:04",
"type": "mediawiki-extension",
"installation-source": "dist",
"autoload": {
--
To view, visit https://gerrit.wikimedia.org/r/119778
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4f81798d04593b2789ef016a39e4ccc6ae262bc6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: mw1.23-wmf19
Gerrit-Owner: Aude <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits