Aude has uploaded a new change for review.

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

Change subject: New Wikidata build - 2016-12-02
......................................................................

New Wikidata build - 2016-12-02

Change-Id: If8836322db04a10eabe73205240fdf3fcb345be1
---
M composer.lock
M extensions/ArticlePlaceholder/includes/ItemNotabilityFilter.php
M extensions/ArticlePlaceholder/includes/SearchHookHandler.php
M 
extensions/ArticlePlaceholder/tests/phpunit/includes/ItemNotabilityFilterTest.php
M extensions/PropertySuggester/PropertySuggester.php
M extensions/PropertySuggester/PropertySuggesterHooks.php
M extensions/PropertySuggester/README.md
A extensions/PropertySuggester/i18n/pl.json
M extensions/PropertySuggester/src/PropertySuggester/ResultBuilder.php
M extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php
M 
extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
M 
extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
M extensions/Wikibase/client/WikibaseClient.i18n.alias.php
M 
extensions/Wikibase/client/includes/RecentChanges/RecentChangesDuplicateDetector.php
M extensions/Wikibase/client/includes/Specials/SpecialEntityUsage.php
M extensions/Wikibase/client/includes/Specials/SpecialPagesWithBadges.php
M extensions/Wikibase/client/includes/Store/Sql/BulkSubscriptionUpdater.php
D 
extensions/Wikibase/client/includes/Store/Sql/ConsistentReadConnectionManager.php
M extensions/Wikibase/client/includes/Store/Sql/DirectSqlStore.php
M extensions/Wikibase/client/includes/Usage/Sql/SqlSubscriptionManager.php
M extensions/Wikibase/client/includes/Usage/Sql/SqlUsageTracker.php
M extensions/Wikibase/client/maintenance/updateSubscriptions.php
M 
extensions/Wikibase/client/tests/phpunit/includes/RecentChanges/RecentChangesDuplicateDetectorTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/Specials/SpecialPagesWithBadgesTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/BulkSubscriptionUpdaterTest.php
D 
extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/ConsistentReadConnectionManagerTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlSubscriptionManagerTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlUsageTrackerTest.php
A extensions/Wikibase/lib/includes/Store/PropertyInfoLookup.php
M extensions/Wikibase/lib/includes/Store/PropertyInfoStore.php
D extensions/Wikibase/repo/tests/browser
A extensions/Wikibase/repo/tests/browser
M 
extensions/Wikibase/view/resources/jquery/wikibase/toolbar/jquery.wikibase.toolbar.js
M 
extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbar.css
M 
extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbarbutton.css
M 
extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbaritem.css
M vendor/composer/LICENSE
M vendor/composer/autoload_classmap.php
M vendor/composer/installed.json
39 files changed, 378 insertions(+), 621 deletions(-)


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

diff --git a/composer.lock b/composer.lock
index 07d62f6..46bcaba 100644
--- a/composer.lock
+++ b/composer.lock
@@ -797,12 +797,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git";,
-                "reference": "197aabc07ea2f998079b0268c6b56eb2947a0269"
+                "reference": "a1885b4f47445d8a1b40d113b623f98c3005b08b"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/197aabc07ea2f998079b0268c6b56eb2947a0269";,
-                "reference": "197aabc07ea2f998079b0268c6b56eb2947a0269",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/a1885b4f47445d8a1b40d113b623f98c3005b08b";,
+                "reference": "a1885b4f47445d8a1b40d113b623f98c3005b08b",
                 "shasum": ""
             },
             "require-dev": {
@@ -827,20 +827,20 @@
             ],
             "description": "Provides a special page with Wikibase information 
about a certain topic, with invitation to create an article for the topic",
             "homepage": 
"https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder";,
-            "time": "2016-11-30 14:30:13"
+            "time": "2016-12-02 10:49:13"
         },
         {
             "name": "propertysuggester/property-suggester",
-            "version": "3.1.4",
+            "version": "3.1.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Wikidata-lib/PropertySuggester.git";,
-                "reference": "793390f84e180097f0511aa2b09dacd50168dfa3"
+                "reference": "bb0e4afdaa5e8d472c61259d0d2d57688d1159a0"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/793390f84e180097f0511aa2b09dacd50168dfa3";,
-                "reference": "793390f84e180097f0511aa2b09dacd50168dfa3",
+                "url": 
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/bb0e4afdaa5e8d472c61259d0d2d57688d1159a0";,
+                "reference": "bb0e4afdaa5e8d472c61259d0d2d57688d1159a0",
                 "shasum": ""
             },
             "require": {
@@ -874,7 +874,7 @@
                 "wikibase",
                 "wikidata"
             ],
-            "time": "2016-10-03 12:42:20"
+            "time": "2016-12-02 12:39:32"
         },
         {
             "name": "serialization/serialization",
@@ -1585,12 +1585,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "fac6549d01e069a7b86f8bc59d2e55bc61f6410a"
+                "reference": "32deb99363d0c228f2d74400c71d117643dd0bad"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/fac6549d01e069a7b86f8bc59d2e55bc61f6410a";,
-                "reference": "fac6549d01e069a7b86f8bc59d2e55bc61f6410a",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/32deb99363d0c228f2d74400c71d117643dd0bad";,
+                "reference": "32deb99363d0c228f2d74400c71d117643dd0bad",
                 "shasum": ""
             },
             "require": {
@@ -1662,7 +1662,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2016-11-30 21:22:39"
+            "time": "2016-12-02 10:49:32"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/ArticlePlaceholder/includes/ItemNotabilityFilter.php 
b/extensions/ArticlePlaceholder/includes/ItemNotabilityFilter.php
index 68291f1..8034796 100644
--- a/extensions/ArticlePlaceholder/includes/ItemNotabilityFilter.php
+++ b/extensions/ArticlePlaceholder/includes/ItemNotabilityFilter.php
@@ -4,10 +4,10 @@
 
 use Database;
 use ResultWrapper;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\Lib\Store\EntityNamespaceLookup;
 use Wikibase\Lib\Store\SiteLinkLookup;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 
 /**
  * Filter a list of items by article placeholder notability.
@@ -30,7 +30,7 @@
        const MIN_SITELINKS = 2;
 
        /**
-        * @var ConsistentReadConnectionManager
+        * @var SessionConsistentConnectionManager
         */
        private $connectionManager;
 
@@ -50,13 +50,13 @@
        private $siteGlobalId;
 
        /**
-        * @param ConsistentReadConnectionManager $connectionManager
+        * @param SessionConsistentConnectionManager $connectionManager
         * @param EntityNamespaceLookup $entityNamespaceLookup
         * @param SiteLinkLookup $siteLinkLookup
         * @param string $siteGlobalId
         */
        public function __construct(
-               ConsistentReadConnectionManager $connectionManager,
+               SessionConsistentConnectionManager $connectionManager,
                EntityNamespaceLookup $entityNamespaceLookup,
                SiteLinkLookup $siteLinkLookup,
                $siteGlobalId
diff --git a/extensions/ArticlePlaceholder/includes/SearchHookHandler.php 
b/extensions/ArticlePlaceholder/includes/SearchHookHandler.php
index 5f7f253..776061d 100644
--- a/extensions/ArticlePlaceholder/includes/SearchHookHandler.php
+++ b/extensions/ArticlePlaceholder/includes/SearchHookHandler.php
@@ -8,11 +8,11 @@
 use Liuggio\StatsdClient\Factory\StatsdDataFactory;
 use MediaWiki\MediaWikiServices;
 use Wikibase\Client\WikibaseClient;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
 use Wikibase\Lib\Interactors\TermIndexSearchInteractor;
 use Wikibase\Lib\Interactors\TermSearchResult;
 use Wikibase\TermIndex;
 use Wikibase\TermIndexEntry;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 
 /**
  * Adding results from ArticlePlaceholder to search
@@ -67,7 +67,7 @@
                $repoDB = $wikibaseClient->getSettings()->getSetting( 
'repoDatabase' );
 
                $itemNotabilityFilter = new ItemNotabilityFilter(
-                       new ConsistentReadConnectionManager( wfGetLB( $repoDB 
), $repoDB ),
+                       new SessionConsistentConnectionManager( wfGetLB( 
$repoDB ), $repoDB ),
                        $wikibaseClient->getEntityNamespaceLookup(),
                        $wikibaseClient->getStore()->getSiteLinkLookup(),
                        $wikibaseClient->getSettings()->getSetting( 
'siteGlobalID' )
diff --git 
a/extensions/ArticlePlaceholder/tests/phpunit/includes/ItemNotabilityFilterTest.php
 
b/extensions/ArticlePlaceholder/tests/phpunit/includes/ItemNotabilityFilterTest.php
index b906d64..a5bd277 100644
--- 
a/extensions/ArticlePlaceholder/tests/phpunit/includes/ItemNotabilityFilterTest.php
+++ 
b/extensions/ArticlePlaceholder/tests/phpunit/includes/ItemNotabilityFilterTest.php
@@ -5,7 +5,6 @@
 use ArticlePlaceholder\ItemNotabilityFilter;
 use DataValues\StringValue;
 use MediaWikiTestCase;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Entity\PropertyId;
@@ -16,6 +15,7 @@
 use Wikibase\DataModel\Statement\StatementList;
 use Wikibase\DataModel\Term\Fingerprint;
 use Wikibase\Repo\WikibaseRepo;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 
 /**
  * @group Database
@@ -57,7 +57,7 @@
                $wikibaseRepo = WikibaseRepo::getDefaultInstance();
 
                return new ItemNotabilityFilter(
-                       new ConsistentReadConnectionManager( wfGetLB() ),
+                       new SessionConsistentConnectionManager( wfGetLB() ),
                        $wikibaseRepo->getEntityNamespaceLookup(),
                        $wikibaseRepo->getStore()->newSiteLinkStore(),
                        'enwiki'
diff --git a/extensions/PropertySuggester/PropertySuggester.php 
b/extensions/PropertySuggester/PropertySuggester.php
index 6609fbd..5e49d28 100644
--- a/extensions/PropertySuggester/PropertySuggester.php
+++ b/extensions/PropertySuggester/PropertySuggester.php
@@ -9,7 +9,7 @@
        return;
 }
 
-define( 'PropertySuggester_VERSION', '3.1.4' );
+define( 'PropertySuggester_VERSION', '3.1.5' );
 
 if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
        require_once __DIR__ . '/vendor/autoload.php';
diff --git a/extensions/PropertySuggester/PropertySuggesterHooks.php 
b/extensions/PropertySuggester/PropertySuggesterHooks.php
index baa5d90..37a413b 100644
--- a/extensions/PropertySuggester/PropertySuggesterHooks.php
+++ b/extensions/PropertySuggester/PropertySuggesterHooks.php
@@ -22,7 +22,7 @@
                $entityNamespaceLookup = 
WikibaseRepo::getDefaultInstance()->getEntityNamespaceLookup();
                $itemNamespace = $entityNamespaceLookup->getEntityNamespace( 
Item::ENTITY_TYPE );
 
-               if ( $itemNamespace === false ) {
+               if ( !is_int( $itemNamespace ) ) {
                        // try looking up namespace by content model, for any 
instances of PropertySuggester
                        // running with older Wikibase prior to ef622b1bc.
                        $itemNamespace = 
$entityNamespaceLookup->getEntityNamespace(
diff --git a/extensions/PropertySuggester/README.md 
b/extensions/PropertySuggester/README.md
index 31a8052..fffc2e1 100644
--- a/extensions/PropertySuggester/README.md
+++ b/extensions/PropertySuggester/README.md
@@ -45,6 +45,9 @@
 
 ## Release notes
 
+### 3.1.5 (2016-12-02)
+* Adapted entity suggester for changes in Wikibase.
+
 ### 3.1.4 (2016-10-03)
 * Handle MediaWiki's `OutputPage::getTitle` returning `null`.
 
diff --git a/extensions/PropertySuggester/i18n/pl.json 
b/extensions/PropertySuggester/i18n/pl.json
new file mode 100644
index 0000000..5d10327
--- /dev/null
+++ b/extensions/PropertySuggester/i18n/pl.json
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Chrumps",
+                       "XnIcRaM",
+                       "Lebiega"
+               ]
+       },
+       "propertysuggester-desc": "Proponuje właściwości podczas dodawania 
deklaracji Wikibase.",
+       "apihelp-wbsgetsuggestions-param-context": "Element, przypis lub 
kwalifikator.",
+       "apihelp-wbsgetsuggestions-param-continue": "Przesunięcie od którego 
kontynuować wyszukiwanie",
+       "apihelp-wbsgetsuggestions-param-language": "Język rezultatu",
+       "apihelp-wbsgetsuggestions-param-limit": "Maksymalna liczba wyników.",
+       "apihelp-wbsgetsuggestions-param-properties": "Zaproponuj dodatkowe 
właściwości do danej listy właściwości.",
+       "apihelp-wbsgetsuggestions-param-search": "Szukaj w tym tekście.",
+       "apihelp-wbsgetsuggestions-param-size": "Określ liczbę propozycji, 
które będą zwrócone."
+}
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/ResultBuilder.php 
b/extensions/PropertySuggester/src/PropertySuggester/ResultBuilder.php
index 786572b..db8785e 100644
--- a/extensions/PropertySuggester/src/PropertySuggester/ResultBuilder.php
+++ b/extensions/PropertySuggester/src/PropertySuggester/ResultBuilder.php
@@ -102,7 +102,7 @@
                }
 
                foreach ( $matchingTerms as $term ) {
-                       switch ( $term->getType() ) {
+                       switch ( $term->getTermType() ) {
                                case TermIndexEntry::TYPE_LABEL:
                                        $entry['label'] = $term->getText();
                                        break;
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php 
b/extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php
index 595f19c..2bbc396 100644
--- a/extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php
+++ b/extensions/PropertySuggester/src/PropertySuggester/SuggestionGenerator.php
@@ -2,6 +2,7 @@
 
 namespace PropertySuggester;
 
+use InvalidArgumentException;
 use PropertySuggester\Suggesters\SuggesterEngine;
 use PropertySuggester\Suggesters\Suggestion;
 use Wikibase\DataModel\Entity\Item;
@@ -9,9 +10,9 @@
 use Wikibase\DataModel\Entity\Property;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\DataModel\Services\Lookup\EntityLookup;
+use Wikibase\Lib\Store\TermIndexSearchCriteria;
 use Wikibase\TermIndex;
 use Wikibase\TermIndexEntry;
-use InvalidArgumentException;
 
 /**
  * API module helper to generate property suggestions.
@@ -122,7 +123,7 @@
        private function getMatchingIDs( $search, $language ) {
                $termIndexEntries = $this->termIndex->getTopMatchingTerms(
                        array(
-                               new TermIndexEntry( array(
+                               new TermIndexSearchCriteria( array(
                                        'termLanguage' => $language,
                                        'termText' => $search
                                ) )
diff --git 
a/extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
 
b/extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
index 1678ea9..7a01a64 100644
--- 
a/extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
+++ 
b/extensions/PropertySuggester/src/PropertySuggester/UpdateTable/Importer/BasicImporter.php
@@ -2,7 +2,7 @@
 
 namespace PropertySuggester\UpdateTable\Importer;
 
-use DatabaseBase;
+use Database;
 use UnexpectedValueException;
 use PropertySuggester\UpdateTable\ImportContext;
 
@@ -38,11 +38,11 @@
 
        /**
         * @param $fileHandle
-        * @param DatabaseBase $db
+        * @param Database $db
         * @param ImportContext $importContext
         * @throws UnexpectedValueException
         */
-       private function doImport( $fileHandle, DatabaseBase $db, ImportContext 
$importContext ) {
+       private function doImport( $fileHandle, Database $db, ImportContext 
$importContext ) {
                $accumulator = array();
                $batchSize = $importContext->getBatchSize();
                $i = 0;
diff --git 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
index 31ff3ae..598aadf 100644
--- 
a/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
+++ 
b/extensions/PropertySuggester/tests/phpunit/PropertySuggester/SuggestionGeneratorTest.php
@@ -2,6 +2,7 @@
 
 namespace PropertySuggester;
 
+use InvalidArgumentException;
 use MediaWikiTestCase;
 use PHPUnit_Framework_MockObject_MockObject;
 use PropertySuggester\Suggesters\SuggesterEngine;
@@ -12,12 +13,11 @@
 use Wikibase\DataModel\Snak\PropertySomeValueSnak;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\TermIndex;
-use InvalidArgumentException;
 use Wikibase\TermIndexEntry;
 
 /**
  * @covers PropertySuggester\SuggestionGenerator
- * 
+ *
  * @group PropertySuggester
  * @group API
  * @group medium
@@ -59,11 +59,11 @@
        }
 
        public function testFilterSuggestions() {
-               $p7 = PropertyId::newFromNumber( 7 );
-               $p10 = PropertyId::newFromNumber( 10 );
-               $p12 = PropertyId::newFromNumber( 12 );
-               $p15 = PropertyId::newFromNumber( 15 );
-               $p23 = PropertyId::newFromNumber( 23 );
+               $p7 = new PropertyId( 'P7' );
+               $p10 = new PropertyId( 'P10' );
+               $p12 = new PropertyId( 'P12' );
+               $p15 = new PropertyId( 'P15' );
+               $p23 = new PropertyId( 'P23' );
 
                $suggestions = array(
                        new Suggestion( $p12, 0.9 ), // this will stay at pos 0
@@ -92,10 +92,12 @@
         */
        private function getTermIndexEntryArrayWithIds( $ids ) {
                $termIndexEntries = array();
-               foreach ( $ids as $id ) {
+               foreach ( $ids as $i => $id ) {
                        $termIndexEntries[] = new TermIndexEntry( array(
-                               'entityId' => $id->getNumericId(),
-                               'entityType' => $id->getEntityType(),
+                               'entityId' => $id,
+                               'termLanguage' => 'en',
+                               'termText' => "kitten$i",
+                               'termType' => TermIndexEntry::TYPE_LABEL
                        ) );
                }
                return $termIndexEntries;
diff --git a/extensions/Wikibase/client/WikibaseClient.i18n.alias.php 
b/extensions/Wikibase/client/WikibaseClient.i18n.alias.php
index 893baf6..f6c1a0a 100644
--- a/extensions/Wikibase/client/WikibaseClient.i18n.alias.php
+++ b/extensions/Wikibase/client/WikibaseClient.i18n.alias.php
@@ -33,6 +33,13 @@
        'UnconnectedPages' => array( 'وسل_نه_بوته_ئین_تاکدیمان' ),
 );
 
+/** Bengali (বাংলা) */
+$specialPageAliases['bn'] = array(
+       'EntityUsage' => array( 'সত্তার_ব্যবহার', 'সত্তার_ব্যবহারের_উপাত্ত' ),
+       'PagesWithBadges' => array( 'ব্যাজসহ_পাতা' ),
+       'UnconnectedPages' => array( 'অসংযুক্ত_পাতা', 'সংযোগহীন', 
'সাইট_সংযোগহীন', 'অসংযুক্ত_পৃষ্ঠা', 'সংযোগবিহীন_পৃষ্ঠা' ),
+);
+
 /** Czech (čeština) */
 $specialPageAliases['cs'] = array(
        'PagesWithBadges' => array( 'Stránky_s_odznaky' ),
diff --git 
a/extensions/Wikibase/client/includes/RecentChanges/RecentChangesDuplicateDetector.php
 
b/extensions/Wikibase/client/includes/RecentChanges/RecentChangesDuplicateDetector.php
index f85b7cc..2b1c910 100644
--- 
a/extensions/Wikibase/client/includes/RecentChanges/RecentChangesDuplicateDetector.php
+++ 
b/extensions/Wikibase/client/includes/RecentChanges/RecentChangesDuplicateDetector.php
@@ -4,7 +4,7 @@
 
 use MWException;
 use RecentChange;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 
 /**
  * @since 0.5
@@ -16,11 +16,11 @@
 class RecentChangesDuplicateDetector {
 
        /**
-        * @var ConsistentReadConnectionManager
+        * @var SessionConsistentConnectionManager
         */
        private $connectionManager;
 
-       public function __construct( ConsistentReadConnectionManager 
$connectionManager ) {
+       public function __construct( SessionConsistentConnectionManager 
$connectionManager ) {
                $this->connectionManager = $connectionManager;
        }
 
@@ -38,7 +38,7 @@
                $attribs = $change->getAttributes();
 
                //XXX: need to check master?
-               $db = $this->connectionManager->getReadConnection();
+               $db = $this->connectionManager->getReadConnectionRef();
 
                $res = $db->select(
                        'recentchanges',
@@ -73,7 +73,6 @@
                        }
                }
 
-               $this->connectionManager->releaseConnection( $db );
                return false;
        }
 
diff --git 
a/extensions/Wikibase/client/includes/Specials/SpecialEntityUsage.php 
b/extensions/Wikibase/client/includes/Specials/SpecialEntityUsage.php
index 7451b5f..9f982d6 100644
--- a/extensions/Wikibase/client/includes/Specials/SpecialEntityUsage.php
+++ b/extensions/Wikibase/client/includes/Specials/SpecialEntityUsage.php
@@ -111,7 +111,7 @@
                        $formDescriptor['entity']['default'] = 
$this->entityId->getSerialization();
                }
 
-               return HTMLForm::factory( 'inline', $formDescriptor, 
$this->getContext() )
+               return HTMLForm::factory( 'ooui', $formDescriptor, 
$this->getContext() )
                        ->setMethod( 'get' )
                        ->setWrapperLegendMsg( 'wikibase-entityusage-legend' )
                        ->suppressDefaultSubmit()
diff --git 
a/extensions/Wikibase/client/includes/Specials/SpecialPagesWithBadges.php 
b/extensions/Wikibase/client/includes/Specials/SpecialPagesWithBadges.php
index 330ccb3..7832fb4 100644
--- a/extensions/Wikibase/client/includes/Specials/SpecialPagesWithBadges.php
+++ b/extensions/Wikibase/client/includes/Specials/SpecialPagesWithBadges.php
@@ -142,7 +142,7 @@
                        $formDescriptor['badge']['default'] = 
$this->badgeId->getSerialization();
                }
 
-               return HTMLForm::factory( 'inline', $formDescriptor, 
$this->getContext() )
+               return HTMLForm::factory( 'ooui', $formDescriptor, 
$this->getContext() )
                        ->setMethod( 'get' )
                        ->setWrapperLegendMsg( 
'wikibase-pageswithbadges-legend' )
                        ->suppressDefaultSubmit()
diff --git 
a/extensions/Wikibase/client/includes/Store/Sql/BulkSubscriptionUpdater.php 
b/extensions/Wikibase/client/includes/Store/Sql/BulkSubscriptionUpdater.php
index a7d7eba..8b5fe7a 100644
--- a/extensions/Wikibase/client/includes/Store/Sql/BulkSubscriptionUpdater.php
+++ b/extensions/Wikibase/client/includes/Store/Sql/BulkSubscriptionUpdater.php
@@ -10,6 +10,7 @@
 use Wikibase\Lib\Reporting\LogWarningExceptionHandler;
 use Wikibase\Lib\Reporting\MessageReporter;
 use Wikibase\Lib\Reporting\NullMessageReporter;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 
 /**
  * Implements bulk updates for the repo's wb_changes_subscription table,
@@ -22,12 +23,12 @@
 class BulkSubscriptionUpdater {
 
        /**
-        * @var ConsistentReadConnectionManager
+        * @var SessionConsistentConnectionManager
         */
        private $localConnectionManager;
 
        /**
-        * @var ConsistentReadConnectionManager
+        * @var SessionConsistentConnectionManager
         */
        private $repoConnectionManager;
 
@@ -59,9 +60,9 @@
        private $progressReporter;
 
        /**
-        * @param ConsistentReadConnectionManager $localConnectionManager 
Connection manager for DB
+        * @param SessionConsistentConnectionManager $localConnectionManager 
Connection manager for DB
         * connections to the local wiki.
-        * @param ConsistentReadConnectionManager $repoConnectionManager 
Connection manager for DB
+        * @param SessionConsistentConnectionManager $repoConnectionManager 
Connection manager for DB
         * connections to the repo.
         * @param string $subscriberWikiId The local wiki's global ID, to be 
used as the subscriber ID
         * in the repo's subscription table.
@@ -73,8 +74,8 @@
         * @throws InvalidArgumentException
         */
        public function __construct(
-               ConsistentReadConnectionManager $localConnectionManager,
-               ConsistentReadConnectionManager $repoConnectionManager,
+               SessionConsistentConnectionManager $localConnectionManager,
+               SessionConsistentConnectionManager $repoConnectionManager,
                $subscriberWikiId,
                $repoWiki,
                $batchSize = 1000
@@ -122,7 +123,7 @@
         * @param EntityId|null $startEntity The entity to start with.
         */
        public function updateSubscriptions( EntityId $startEntity = null ) {
-               $this->repoConnectionManager->forceMaster();
+               $this->repoConnectionManager->prepareForUpdates();
 
                $continuation = $startEntity === null ? null : array( 
$startEntity->getSerialization() );
 
@@ -162,7 +163,8 @@
         * @return int The number of rows inserted.
         */
        private function insertUpdateBatch( array $entities ) {
-               $dbw = $this->repoConnectionManager->beginAtomicSection( 
__METHOD__ );
+               $dbw = $this->repoConnectionManager->getWriteConnectionRef();
+               $dbw->startAtomic( __METHOD__ );
 
                $rows = $this->makeSubscriptionRows( $entities );
 
@@ -176,7 +178,7 @@
                );
 
                $count = $dbw->affectedRows();
-               $this->repoConnectionManager->commitAtomicSection( $dbw, 
__METHOD__ );
+               $dbw->endAtomic( __METHOD__ );
 
                return $count;
        }
@@ -265,7 +267,7 @@
        public function purgeSubscriptions( EntityId $startEntity = null ) {
                $continuation = $startEntity === null ? null : array( 
$startEntity->getSerialization() );
 
-               $this->repoConnectionManager->forceMaster();
+               $this->repoConnectionManager->prepareForUpdates();
 
                while ( true ) {
                        wfWaitForSlaves( null, $this->repoWiki );
@@ -363,7 +365,8 @@
         * @param string $maxId Entity id string indicating the last element in 
the deletion range
         */
        private function deleteSubscriptionRange( $minId, $maxId ) {
-               $dbw = $this->repoConnectionManager->beginAtomicSection( 
__METHOD__ );
+               $dbw = $this->repoConnectionManager->getWriteConnectionRef();
+               $dbw->startAtomic( __METHOD__ );
 
                $conditions = array(
                        'cs_subscriber_id' => $this->subscriberWikiId,
@@ -377,7 +380,7 @@
                        __METHOD__
                );
 
-               $this->repoConnectionManager->commitAtomicSection( $dbw, 
__METHOD__ );
+               $dbw->endAtomic( __METHOD__ );
        }
 
 }
diff --git 
a/extensions/Wikibase/client/includes/Store/Sql/ConsistentReadConnectionManager.php
 
b/extensions/Wikibase/client/includes/Store/Sql/ConsistentReadConnectionManager.php
deleted file mode 100644
index 57adf73..0000000
--- 
a/extensions/Wikibase/client/includes/Store/Sql/ConsistentReadConnectionManager.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-namespace Wikibase\Client\Store\Sql;
-
-use Database;
-use IDatabase;
-use InvalidArgumentException;
-use LoadBalancer;
-
-/**
- * Database connection manager.
- *
- * This manages access to master and slave databases. It also manages state 
that indicates whether
- * the slave databases are possibly outdated after a write operation, and thus 
the master database
- * should be used for subsequent read operations.
- *
- * @note: Services that access overlapping sets of database tables, or 
interact with logically
- * related sets of data in the database, should share a 
ConsistentReadConnectionManager. Services accessing
- * unrelated sets of information may prefer to not share a 
ConsistentReadConnectionManager, so they can still
- * perform read operations against slave databases after a (unrelated, per the 
assumption) write
- * operation to the master database. Generally, sharing a 
ConsistentReadConnectionManager improves consistency
- * (by avoiding race conditions due to replication lag), but can reduce 
performance (by directing
- * more read operations to the master database server).
- *
- * @license GPL-2.0+
- * @author Daniel Kinzler
- */
-class ConsistentReadConnectionManager {
-
-       /**
-        * @var LoadBalancer
-        */
-       private $loadBalancer;
-
-       /**
-        * The symbolic name of the target database, or false for the local 
wiki's database.
-        *
-        * @var string|false
-        */
-       private $dbName;
-
-       /**
-        * @var bool If true, getReadConnection() will also return a DB_MASTER 
connection.
-        */
-       private $forceMaster = false;
-
-       /**
-        * @param LoadBalancer $loadBalancer
-        * @param string|bool $dbName Optional, defaults to current wiki.
-        *        This follows the convention for database names used by 
$loadBalancer.
-        *
-        * @throws InvalidArgumentException
-        */
-       public function __construct( LoadBalancer $loadBalancer, $dbName = 
false ) {
-               if ( !is_string( $dbName ) && $dbName !== false ) {
-                       throw new InvalidArgumentException( '$dbName must be a 
string, or false.' );
-               }
-
-               $this->loadBalancer = $loadBalancer;
-               $this->dbName = $dbName;
-       }
-
-       /**
-        * Forces all future calls to getReadConnection() to return a 
connection to the master DB.
-        * Use this before performing read operations that are critical for a 
future update.
-        * Calling beginAtomicSection() implies a call to forceMaster().
-        */
-       public function forceMaster() {
-               $this->forceMaster = true;
-       }
-
-       /**
-        * Returns a database connection for reading. The connection should 
later be released by
-        * calling releaseConnection().
-        *
-        * @note: If forceMaster() or beginAtomicSection() were previously 
called on this
-        * ConsistentReadConnectionManager instance, this method will return a 
connection to the master database,
-        * to avoid inconsistencies.
-        *
-        * @return Database
-        */
-       public function getReadConnection() {
-               $dbIndex = $this->forceMaster ? DB_MASTER : DB_SLAVE;
-               return $this->loadBalancer->getConnection( $dbIndex, array(), 
$this->dbName );
-       }
-
-       /**
-        * Returns a connection to the master DB, for updating. The connection 
should later be released
-        * by calling releaseConnection().
-        *
-        * @return Database
-        */
-       public function getWriteConnection() {
-               return $this->loadBalancer->getConnection( DB_MASTER, array(), 
$this->dbName );
-       }
-
-       /**
-        * @param IDatabase $db
-        */
-       public function releaseConnection( IDatabase $db ) {
-               $this->loadBalancer->reuseConnection( $db );
-       }
-
-       /**
-        * Begins an atomic section and returns a database connection to the 
master DB, for updating.
-        *
-        * @note: This causes all future calls to getReadConnection() to return 
a connection
-        * to the master DB, even after commitAtomicSection() or 
rollbackAtomicSection() have
-        * been called.
-        *
-        * @param string $fname
-        *
-        * @return Database
-        */
-       public function beginAtomicSection( $fname ) {
-               // Once we have written to master, do not read from slave.
-               $this->forceMaster();
-
-               $db = $this->getWriteConnection();
-               $db->startAtomic( $fname );
-               return $db;
-       }
-
-       /**
-        * @param IDatabase $db
-        * @param string $fname
-        */
-       public function commitAtomicSection( IDatabase $db, $fname ) {
-               $db->endAtomic( $fname );
-               $this->releaseConnection( $db );
-       }
-
-       /**
-        * @param IDatabase $db
-        * @param string $fname
-        */
-       public function rollbackAtomicSection( IDatabase $db, $fname ) {
-               //FIXME: there does not seem to be a clean way to roll back an 
atomic section?!
-               $db->rollback( $fname, 'flush' );
-               $this->releaseConnection( $db );
-       }
-
-}
diff --git a/extensions/Wikibase/client/includes/Store/Sql/DirectSqlStore.php 
b/extensions/Wikibase/client/includes/Store/Sql/DirectSqlStore.php
index 922e232..4f4e8a1 100644
--- a/extensions/Wikibase/client/includes/Store/Sql/DirectSqlStore.php
+++ b/extensions/Wikibase/client/includes/Store/Sql/DirectSqlStore.php
@@ -5,8 +5,8 @@
 use HashBagOStuff;
 use ObjectCache;
 use Wikibase\Client\RecentChanges\RecentChangesDuplicateDetector;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
 use Wikibase\Client\Store\Sql\PagePropsEntityIdLookup;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 use Wikibase\Client\Store\UsageUpdater;
 use Wikibase\Client\Usage\Sql\SqlSubscriptionManager;
 use Wikibase\Client\Usage\Sql\SqlUsageTracker;
@@ -72,12 +72,12 @@
        private $repoWiki;
 
        /**
-        * @var ConsistentReadConnectionManager|null
+        * @var SessionConsistentConnectionManager|null
         */
        private $repoConnectionManager = null;
 
        /**
-        * @var ConsistentReadConnectionManager|null
+        * @var SessionConsistentConnectionManager|null
         */
        private $localConnectionManager = null;
 
@@ -214,11 +214,14 @@
         * Returns a LoadBalancer that acts as a factory for connections to the 
repo wiki's
         * database.
         *
-        * @return ConsistentReadConnectionManager
+        * @return SessionConsistentConnectionManager
         */
        private function getRepoConnectionManager() {
                if ( $this->repoConnectionManager === null ) {
-                       $this->repoConnectionManager = new 
ConsistentReadConnectionManager( wfGetLB( $this->repoWiki ), $this->repoWiki );
+                       $this->repoConnectionManager = new 
SessionConsistentConnectionManager(
+                               wfGetLB( $this->repoWiki ),
+                               $this->repoWiki
+                       );
                }
 
                return $this->repoConnectionManager;
@@ -228,11 +231,11 @@
         * Returns a LoadBalancer that acts as a factory for connections to the 
local (client) wiki's
         * database.
         *
-        * @return ConsistentReadConnectionManager
+        * @return SessionConsistentConnectionManager
         */
        private function getLocalConnectionManager() {
                if ( $this->localConnectionManager === null ) {
-                       $this->localConnectionManager = new 
ConsistentReadConnectionManager( wfGetLB() );
+                       $this->localConnectionManager = new 
SessionConsistentConnectionManager( wfGetLB() );
                }
 
                return $this->localConnectionManager;
diff --git 
a/extensions/Wikibase/client/includes/Usage/Sql/SqlSubscriptionManager.php 
b/extensions/Wikibase/client/includes/Usage/Sql/SqlSubscriptionManager.php
index 0f97f4a..5c12ceb 100644
--- a/extensions/Wikibase/client/includes/Usage/Sql/SqlSubscriptionManager.php
+++ b/extensions/Wikibase/client/includes/Usage/Sql/SqlSubscriptionManager.php
@@ -5,8 +5,9 @@
 use Database;
 use DBError;
 use Exception;
+use IDatabase;
 use InvalidArgumentException;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 use Wikibase\Client\Usage\SubscriptionManager;
 use Wikibase\Client\Usage\UsageTrackerException;
 use Wikibase\DataModel\Entity\EntityId;
@@ -22,14 +23,14 @@
 class SqlSubscriptionManager implements SubscriptionManager {
 
        /**
-        * @var ConsistentReadConnectionManager
+        * @var SessionConsistentConnectionManager
         */
        private $connectionManager;
 
        /**
-        * @param ConsistentReadConnectionManager $connectionManager
+        * @param SessionConsistentConnectionManager $connectionManager
         */
-       public function __construct( ConsistentReadConnectionManager 
$connectionManager ) {
+       public function __construct( SessionConsistentConnectionManager 
$connectionManager ) {
                $this->connectionManager = $connectionManager;
        }
 
@@ -60,16 +61,17 @@
                }
 
                $subscriptions = $this->idsToString( $entityIds );
-               $db = $this->connectionManager->beginAtomicSection( __METHOD__ 
);
+               $dbw = $this->connectionManager->getWriteConnectionRef();
+               $dbw->startAtomic( __METHOD__ );
 
                try {
-                       $oldSubscriptions = $this->querySubscriptions( $db, 
$subscriber, $subscriptions );
+                       $oldSubscriptions = $this->querySubscriptions( $dbw, 
$subscriber, $subscriptions );
                        $newSubscriptions = array_diff( $subscriptions, 
$oldSubscriptions );
-                       $this->insertSubscriptions( $db, $subscriber, 
$newSubscriptions );
+                       $this->insertSubscriptions( $dbw, $subscriber, 
$newSubscriptions );
 
-                       $this->connectionManager->commitAtomicSection( $db, 
__METHOD__ );
+                       $dbw->endAtomic( __METHOD__ );
                } catch ( Exception $ex ) {
-                       $this->connectionManager->rollbackAtomicSection( $db, 
__METHOD__ );
+                       $dbw->rollback( __METHOD__ );
 
                        if ( $ex instanceof DBError ) {
                                throw new UsageTrackerException( 
$ex->getMessage(), $ex->getCode(), $ex );
@@ -95,16 +97,17 @@
                }
 
                $unsubscriptions = $this->idsToString( $entityIds );
-               $db = $this->connectionManager->beginAtomicSection( __METHOD__ 
);
+               $dbw = $this->connectionManager->getWriteConnectionRef();
+               $dbw->startAtomic( __METHOD__ );
 
                try {
-                       $oldSubscriptions = $this->querySubscriptions( $db, 
$subscriber, $unsubscriptions );
+                       $oldSubscriptions = $this->querySubscriptions( $dbw, 
$subscriber, $unsubscriptions );
                        $obsoleteSubscriptions = array_intersect( 
$unsubscriptions, $oldSubscriptions );
-                       $this->deleteSubscriptions( $db, $subscriber, 
$obsoleteSubscriptions );
+                       $this->deleteSubscriptions( $dbw, $subscriber, 
$obsoleteSubscriptions );
 
-                       $this->connectionManager->commitAtomicSection( $db, 
__METHOD__ );
+                       $dbw->endAtomic( __METHOD__ );
                } catch ( Exception $ex ) {
-                       $this->connectionManager->rollbackAtomicSection( $db, 
__METHOD__ );
+                       $dbw->rollback( __METHOD__ );
 
                        if ( $ex instanceof DBError ) {
                                throw new UsageTrackerException( 
$ex->getMessage(), $ex->getCode(), $ex );
@@ -117,13 +120,13 @@
        /**
         * For a set of potential subscriptions, returns the existing 
subscriptions.
         *
-        * @param Database $db
+        * @param IDatabase $db
         * @param string $subscriber
         * @param string[] $subscriptions
         *
         * @return string[] Entity ID strings from $subscriptions which 
$subscriber is already subscribed to.
         */
-       private function querySubscriptions( Database $db, $subscriber, array 
$subscriptions ) {
+       private function querySubscriptions( IDatabase $db, $subscriber, array 
$subscriptions ) {
                if ( $subscriptions ) {
                        $subscriptions = $db->selectFieldValues(
                                'wb_changes_subscription',
@@ -142,11 +145,11 @@
        /**
         * Inserts a set of subscriptions.
         *
-        * @param Database $db
+        * @param IDatabase $db
         * @param string $subscriber
         * @param string[] $subscriptions
         */
-       private function insertSubscriptions( Database $db, $subscriber, array 
$subscriptions ) {
+       private function insertSubscriptions( IDatabase $db, $subscriber, array 
$subscriptions ) {
                $rows = $this->makeSubscriptionRows( $subscriber, 
$subscriptions );
 
                $db->insert(
@@ -160,11 +163,11 @@
        /**
         * Inserts a set of subscriptions.
         *
-        * @param Database $db
+        * @param IDatabase $db
         * @param string $subscriber
         * @param string[] $subscriptions
         */
-       private function deleteSubscriptions( Database $db, $subscriber, array 
$subscriptions ) {
+       private function deleteSubscriptions( IDatabase $db, $subscriber, array 
$subscriptions ) {
                if ( $subscriptions ) {
                        $db->delete(
                                'wb_changes_subscription',
diff --git a/extensions/Wikibase/client/includes/Usage/Sql/SqlUsageTracker.php 
b/extensions/Wikibase/client/includes/Usage/Sql/SqlUsageTracker.php
index 0dd9521..425fdc8 100644
--- a/extensions/Wikibase/client/includes/Usage/Sql/SqlUsageTracker.php
+++ b/extensions/Wikibase/client/includes/Usage/Sql/SqlUsageTracker.php
@@ -8,7 +8,7 @@
 use Exception;
 use InvalidArgumentException;
 use Traversable;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 use Wikibase\Client\Usage\EntityUsage;
 use Wikibase\Client\Usage\UsageLookup;
 use Wikibase\Client\Usage\UsageTracker;
@@ -30,7 +30,7 @@
        private $idParser;
 
        /**
-        * @var ConsistentReadConnectionManager
+        * @var SessionConsistentConnectionManager
         */
        private $connectionManager;
 
@@ -41,9 +41,9 @@
 
        /**
         * @param EntityIdParser $idParser
-        * @param ConsistentReadConnectionManager $connectionManager
+        * @param SessionConsistentConnectionManager $connectionManager
         */
-       public function __construct( EntityIdParser $idParser, 
ConsistentReadConnectionManager $connectionManager ) {
+       public function __construct( EntityIdParser $idParser, 
SessionConsistentConnectionManager $connectionManager ) {
                $this->idParser = $idParser;
                $this->connectionManager = $connectionManager;
        }
diff --git a/extensions/Wikibase/client/maintenance/updateSubscriptions.php 
b/extensions/Wikibase/client/maintenance/updateSubscriptions.php
index c5ae1eb..5ae88e0 100644
--- a/extensions/Wikibase/client/maintenance/updateSubscriptions.php
+++ b/extensions/Wikibase/client/maintenance/updateSubscriptions.php
@@ -4,7 +4,7 @@
 
 use Maintenance;
 use Wikibase\Client\Store\Sql\BulkSubscriptionUpdater;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 use Wikibase\Client\WikibaseClient;
 use Wikibase\DataModel\Entity\EntityIdParsingException;
 use Wikibase\Lib\Reporting\ObservableMessageReporter;
@@ -72,8 +72,8 @@
                );
 
                $updater = new BulkSubscriptionUpdater(
-                       new ConsistentReadConnectionManager( wfGetLB() ),
-                       new ConsistentReadConnectionManager( wfGetLB( $repoDB 
), $repoDB ),
+                       new SessionConsistentConnectionManager( wfGetLB() ),
+                       new SessionConsistentConnectionManager( wfGetLB( 
$repoDB ), $repoDB ),
                        $clientId,
                        $repoDB,
                        $this->mBatchSize
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/RecentChanges/RecentChangesDuplicateDetectorTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/RecentChanges/RecentChangesDuplicateDetectorTest.php
index aa6964c..053e50c 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/RecentChanges/RecentChangesDuplicateDetectorTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/RecentChanges/RecentChangesDuplicateDetectorTest.php
@@ -5,7 +5,7 @@
 use RecentChange;
 use Wikibase\Client\RecentChanges\RecentChangeFactory;
 use Wikibase\Client\RecentChanges\RecentChangesDuplicateDetector;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 
 /**
  * @covers Wikibase\Client\RecentChanges\RecentChangesDuplicateDetector
@@ -129,7 +129,7 @@
         * @dataProvider provideChangeExists
         */
        public function testChangeExists( $expected, array $changeData ) {
-               $connectionManager = new ConsistentReadConnectionManager( 
wfGetLB() );
+               $connectionManager = new SessionConsistentConnectionManager( 
wfGetLB() );
                $detector = new RecentChangesDuplicateDetector( 
$connectionManager );
 
                $this->initRecentChanges();
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Specials/SpecialPagesWithBadgesTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Specials/SpecialPagesWithBadgesTest.php
index 1826cb7..be39484 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Specials/SpecialPagesWithBadgesTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Specials/SpecialPagesWithBadgesTest.php
@@ -69,9 +69,9 @@
        public function testExecuteWithoutAnyParams() {
                list( $result, ) = $this->executeSpecialPage( '' );
 
-               $this->assertContains( '<select name="badge"', $result );
-               $this->assertContains( '<option value="Q123"', $result );
-               $this->assertContains( '<option value="Q456"', $result );
+               $this->assertContains( "<select tabindex='0' 
aria-disabled='false' name='badge'", $result );
+               $this->assertContains( "<option value='Q123'", $result );
+               $this->assertContains( "<option value='Q456'", $result );
 
                $this->assertContains( 'Label of Q123', $result );
                $this->assertContains( 'Label of Q456', $result );
@@ -80,7 +80,7 @@
        public function testExecuteWithValidParam() {
                list( $result, ) = $this->executeSpecialPage( 'Q456' );
 
-               $this->assertContains( '<option value="Q456" selected=""', 
$result );
+               $this->assertContains( "<option value='Q456' 
selected='selected'", $result );
        }
 
        public function testExecuteWithInvalidParam() {
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/BulkSubscriptionUpdaterTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/BulkSubscriptionUpdaterTest.php
index 9a12ba2..d0f3b1d 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/BulkSubscriptionUpdaterTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/BulkSubscriptionUpdaterTest.php
@@ -4,7 +4,7 @@
 
 use PHPUnit_Framework_MockObject_Matcher_Invocation;
 use Wikibase\Client\Store\Sql\BulkSubscriptionUpdater;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 use Wikibase\Client\Usage\Sql\EntityUsageTable;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\Lib\Reporting\ExceptionHandler;
@@ -43,8 +43,8 @@
                $loadBalancer = wfGetLB();
 
                return new BulkSubscriptionUpdater(
-                       new ConsistentReadConnectionManager( $loadBalancer, 
false ),
-                       new ConsistentReadConnectionManager( $loadBalancer, 
false ),
+                       new SessionConsistentConnectionManager( $loadBalancer, 
false ),
+                       new SessionConsistentConnectionManager( $loadBalancer, 
false ),
                        'testwiki',
                        false,
                        $batchSize
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/ConsistentReadConnectionManagerTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/ConsistentReadConnectionManagerTest.php
deleted file mode 100644
index 38050ff..0000000
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/ConsistentReadConnectionManagerTest.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-namespace Wikibase\Client\Tests\Store\Sql;
-
-use IDatabase;
-use LoadBalancer;
-use PHPUnit_Framework_MockObject_MockObject;
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
-
-/**
- * @covers Wikibase\Client\Store\Sql\ConsistentReadConnectionManager
- *
- * @group Wikibase
- * @group WikibaseClient
- * @group WikibaseClientStore
- *
- * @license GPL-2.0+
- * @author DanielKinzler
- */
-class ConsistentReadConnectionManagerTest extends \PHPUnit_Framework_TestCase {
-
-       /**
-        * @return IDatabase|PHPUnit_Framework_MockObject_MockObject
-        */
-       private function getIDatabaseMock() {
-               return $this->getMock( IDatabase::class );
-       }
-
-       /**
-        * @return LoadBalancer|PHPUnit_Framework_MockObject_MockObject
-        */
-       private function getLoadBalancerMock() {
-               $lb = $this->getMockBuilder( LoadBalancer::class )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
-               return $lb;
-       }
-
-       public function testGetReadConnection() {
-               $database = $this->getIDatabaseMock();
-               $lb = $this->getLoadBalancerMock();
-
-               $lb->expects( $this->once() )
-                       ->method( 'getConnection' )
-                       ->with( DB_SLAVE )
-                       ->will( $this->returnValue( $database ) );
-
-               $manager = new ConsistentReadConnectionManager( $lb );
-               $actual = $manager->getReadConnection();
-
-               $this->assertSame( $database, $actual );
-       }
-
-       public function testGetWriteConnection() {
-               $database = $this->getIDatabaseMock();
-               $lb = $this->getLoadBalancerMock();
-
-               $lb->expects( $this->once() )
-                       ->method( 'getConnection' )
-                       ->with( DB_MASTER )
-                       ->will( $this->returnValue( $database ) );
-
-               $manager = new ConsistentReadConnectionManager( $lb );
-               $actual = $manager->getWriteConnection();
-
-               $this->assertSame( $database, $actual );
-       }
-
-       public function testForceMaster() {
-               $database = $this->getIDatabaseMock();
-               $lb = $this->getLoadBalancerMock();
-
-               $lb->expects( $this->once() )
-                       ->method( 'getConnection' )
-                       ->with( DB_MASTER )
-                       ->will( $this->returnValue( $database ) );
-
-               $manager = new ConsistentReadConnectionManager( $lb );
-               $manager->forceMaster();
-               $manager->getReadConnection();
-       }
-
-       public function testReleaseConnection() {
-               $database = $this->getIDatabaseMock();
-               $lb = $this->getLoadBalancerMock();
-
-               $lb->expects( $this->once() )
-                       ->method( 'reuseConnection' )
-                       ->with( $database )
-                       ->will( $this->returnValue( null ) );
-
-               $manager = new ConsistentReadConnectionManager( $lb );
-               $manager->releaseConnection( $database );
-       }
-
-       public function testBeginAtomicSection() {
-               $database = $this->getIDatabaseMock();
-               $lb = $this->getLoadBalancerMock();
-
-               $lb->expects( $this->exactly( 2 ) )
-                       ->method( 'getConnection' )
-                       ->with( DB_MASTER )
-                       ->will( $this->returnValue( $database ) );
-
-               $database->expects( $this->once() )
-                       ->method( 'startAtomic' )
-                       ->will( $this->returnValue( null ) );
-
-               $manager = new ConsistentReadConnectionManager( $lb );
-               $manager->beginAtomicSection( 'TEST' );
-
-               // Should also ask for a DB_MASTER connection.
-               // This is asserted by the $lb mock.
-               $manager->getReadConnection();
-       }
-
-       public function testCommitAtomicSection() {
-               $database = $this->getIDatabaseMock();
-               $lb = $this->getLoadBalancerMock();
-
-               $lb->expects( $this->once() )
-                       ->method( 'reuseConnection' )
-                       ->with( $database )
-                       ->will( $this->returnValue( null ) );
-
-               $database->expects( $this->once() )
-                       ->method( 'endAtomic' )
-                       ->will( $this->returnValue( null ) );
-
-               $manager = new ConsistentReadConnectionManager( $lb );
-               $manager->commitAtomicSection( $database, 'TEST' );
-       }
-
-       public function testRollbackAtomicSection() {
-               $database = $this->getIDatabaseMock();
-               $lb = $this->getLoadBalancerMock();
-
-               $lb->expects( $this->once() )
-                       ->method( 'reuseConnection' )
-                       ->with( $database )
-                       ->will( $this->returnValue( null ) );
-
-               $database->expects( $this->once() )
-                       ->method( 'rollback' )
-                       ->will( $this->returnValue( null ) );
-
-               $manager = new ConsistentReadConnectionManager( $lb );
-               $manager->rollbackAtomicSection( $database, 'TEST' );
-       }
-
-}
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlSubscriptionManagerTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlSubscriptionManagerTest.php
index 5ed3fcd..5cd9471 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlSubscriptionManagerTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlSubscriptionManagerTest.php
@@ -2,7 +2,7 @@
 
 namespace Wikibase\Client\Tests\Usage\Sql;
 
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 use Wikibase\Client\Usage\Sql\SqlSubscriptionManager;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Entity\PropertyId;
@@ -36,7 +36,7 @@
         */
        private function getSubscriptionManager() {
                return new SqlSubscriptionManager(
-                       new ConsistentReadConnectionManager( wfGetLB() )
+                       new SessionConsistentConnectionManager( wfGetLB() )
                );
        }
 
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlUsageTrackerTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlUsageTrackerTest.php
index 7ac9511..8d4a08f 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlUsageTrackerTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/SqlUsageTrackerTest.php
@@ -2,7 +2,7 @@
 
 namespace Wikibase\Client\Tests\Usage\Sql;
 
-use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
+use Wikimedia\Rdbms\SessionConsistentConnectionManager;
 use Wikibase\Client\Tests\Usage\UsageLookupContractTester;
 use Wikibase\Client\Tests\Usage\UsageTrackerContractTester;
 use Wikibase\Client\Usage\Sql\EntityUsageTable;
@@ -45,7 +45,7 @@
 
                $this->sqlUsageTracker = new SqlUsageTracker(
                        new BasicEntityIdParser(),
-                       new ConsistentReadConnectionManager( wfGetLB() )
+                       new SessionConsistentConnectionManager( wfGetLB() )
                );
 
                $this->trackerTester = new UsageTrackerContractTester( 
$this->sqlUsageTracker, array( $this, 'getUsages' ) );
diff --git a/extensions/Wikibase/lib/includes/Store/PropertyInfoLookup.php 
b/extensions/Wikibase/lib/includes/Store/PropertyInfoLookup.php
new file mode 100644
index 0000000..ce81897
--- /dev/null
+++ b/extensions/Wikibase/lib/includes/Store/PropertyInfoLookup.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Wikibase\Lib\Store;
+
+use Wikibase\DataModel\Entity\PropertyId;
+
+/**
+ * @license GPL-2.0+
+ */
+interface PropertyInfoLookup {
+
+       /**
+        * Returns the property info for the given property ID.
+        *
+        * @note: Even if the property is known to exist, this method may not 
return
+        *        an info array, or the info array may not contain all well 
known fields.
+        *
+        * @param PropertyId $propertyId
+        *
+        * @return array|null
+        * @throws StorageException
+        * @throws DBError
+        */
+       public function getPropertyInfo( PropertyId $propertyId );
+
+       /**
+        * Returns the property info for all properties with the given data 
type.
+        *
+        * @note: There is no guarantee that an info array is returned for all 
existing properties.
+        *        Also, it is not guaranteed that the info arrays will contain 
all well known fields.
+        *
+        * @param string $dataType
+        *
+        * @return array[] An associative array mapping property IDs to info 
arrays.
+        * @throws StorageException
+        * @throws DBError
+        */
+       public function getPropertyInfoForDataType( $dataType );
+
+       /**
+        * Returns the property info for all properties.
+        * The caller is responsible for avoiding calling this if there are too 
many properties.
+        *
+        * @note: There is no guarantee that an info array is returned for all 
existing properties.
+        *        Also, it is not guaranteed that the info arrays will contain 
all well known fields.
+        *
+        * @return array[] An associative array mapping property IDs to info 
arrays.
+        * @throws StorageException
+        * @throws DBError
+        */
+       public function getAllPropertyInfo();
+
+}
diff --git a/extensions/Wikibase/lib/includes/Store/PropertyInfoStore.php 
b/extensions/Wikibase/lib/includes/Store/PropertyInfoStore.php
index 8e66917..92353e7 100644
--- a/extensions/Wikibase/lib/includes/Store/PropertyInfoStore.php
+++ b/extensions/Wikibase/lib/includes/Store/PropertyInfoStore.php
@@ -4,6 +4,7 @@
 
 use DBError;
 use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\Lib\Store\PropertyInfoLookup;
 use Wikibase\Lib\Store\StorageException;
 
 /**
@@ -11,7 +12,7 @@
  * @author Daniel Kinzler
  * @author Bene* < [email protected] >
  */
-interface PropertyInfoStore {
+interface PropertyInfoStore extends PropertyInfoLookup {
 
        /**
         * Key to use in the info array for the property's data type ID.
@@ -22,47 +23,6 @@
         * Key to use in the info array for the property's formatter URL
         */
        const KEY_FORMATTER_URL = 'formatterURL';
-
-       /**
-        * Returns the property info for the given property ID.
-        *
-        * @note: Even if the property is known to exist, this method may not 
return
-        *        an info array, or the info array may not contain all well 
known fields.
-        *
-        * @param PropertyId $propertyId
-        *
-        * @return array|null
-        * @throws StorageException
-        * @throws DBError
-        */
-       public function getPropertyInfo( PropertyId $propertyId );
-
-       /**
-        * Returns the property info for all properties with the given data 
type.
-        *
-        * @note: There is no guarantee that an info array is returned for all 
existing properties.
-        *        Also, it is not guaranteed that the info arrays will contain 
all well known fields.
-        *
-        * @param string $dataType
-        *
-        * @return array[] An associative array mapping property IDs to info 
arrays.
-        * @throws StorageException
-        * @throws DBError
-        */
-       public function getPropertyInfoForDataType( $dataType );
-
-       /**
-        * Returns the property info for all properties.
-        * The caller is responsible for avoiding calling this if there are too 
many properties.
-        *
-        * @note: There is no guarantee that an info array is returned for all 
existing properties.
-        *        Also, it is not guaranteed that the info arrays will contain 
all well known fields.
-        *
-        * @return array[] An associative array mapping property IDs to info 
arrays.
-        * @throws StorageException
-        * @throws DBError
-        */
-       public function getAllPropertyInfo();
 
        /**
         * Update the info for the given property.
diff --git a/extensions/Wikibase/repo/tests/browser 
b/extensions/Wikibase/repo/tests/browser
deleted file mode 100644
index c377a0f..0000000
--- a/extensions/Wikibase/repo/tests/browser
+++ /dev/null
@@ -1 +0,0 @@
-../../tests/browser/
\ No newline at end of file
diff --git a/extensions/Wikibase/repo/tests/browser 
b/extensions/Wikibase/repo/tests/browser
new file mode 120000
index 0000000..c377a0f
--- /dev/null
+++ b/extensions/Wikibase/repo/tests/browser
@@ -0,0 +1 @@
+../../tests/browser/
\ No newline at end of file
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/jquery.wikibase.toolbar.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/jquery.wikibase.toolbar.js
old mode 100644
new mode 100755
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbar.css
 
b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbar.css
old mode 100644
new mode 100755
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbarbutton.css
 
b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbarbutton.css
old mode 100644
new mode 100755
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbaritem.css
 
b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/themes/default/jquery.wikibase.toolbaritem.css
old mode 100644
new mode 100755
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
index b0794ff..1a28124 100644
--- a/vendor/composer/LICENSE
+++ b/vendor/composer/LICENSE
@@ -1,3 +1,4 @@
+
 Copyright (c) 2016 Nils Adermann, Jordi Boggiano
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -17,3 +18,4 @@
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
+
diff --git a/vendor/composer/autoload_classmap.php 
b/vendor/composer/autoload_classmap.php
index 531e661..44cda09 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -463,7 +463,6 @@
     'Wikibase\\Client\\Specials\\SpecialUnconnectedPages' => $baseDir . 
'/extensions/Wikibase/client/includes/Specials/SpecialUnconnectedPages.php',
     'Wikibase\\Client\\Store\\AddUsagesForPageJob' => $baseDir . 
'/extensions/Wikibase/client/includes/Store/AddUsagesForPageJob.php',
     'Wikibase\\Client\\Store\\Sql\\BulkSubscriptionUpdater' => $baseDir . 
'/extensions/Wikibase/client/includes/Store/Sql/BulkSubscriptionUpdater.php',
-    'Wikibase\\Client\\Store\\Sql\\ConsistentReadConnectionManager' => 
$baseDir . 
'/extensions/Wikibase/client/includes/Store/Sql/ConsistentReadConnectionManager.php',
     'Wikibase\\Client\\Store\\Sql\\PagePropsEntityIdLookup' => $baseDir . 
'/extensions/Wikibase/client/includes/Store/Sql/PagePropsEntityIdLookup.php',
     'Wikibase\\Client\\Store\\TitleFactory' => $baseDir . 
'/extensions/Wikibase/client/includes/Store/TitleFactory.php',
     'Wikibase\\Client\\Store\\UsageUpdater' => $baseDir . 
'/extensions/Wikibase/client/includes/Store/UsageUpdater.php',
@@ -545,7 +544,6 @@
     'Wikibase\\Client\\Tests\\Specials\\SpecialPagesWithBadgesTest' => 
$baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Specials/SpecialPagesWithBadgesTest.php',
     'Wikibase\\Client\\Tests\\Specials\\SpecialUnconnectedPagesTest' => 
$baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Specials/SpecialUnconnectedPagesTest.php',
     'Wikibase\\Client\\Tests\\Store\\Sql\\BulkSubscriptionUpdaterTest' => 
$baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/BulkSubscriptionUpdaterTest.php',
-    'Wikibase\\Client\\Tests\\Store\\Sql\\ConsistentReadConnectionManagerTest' 
=> $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/ConsistentReadConnectionManagerTest.php',
     'Wikibase\\Client\\Tests\\Store\\Sql\\DirectSqlStoreTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Store/Sql/DirectSqlStoreTest.php',
     'Wikibase\\Client\\Tests\\Store\\TitleFactoryTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Store/TitleFactoryTest.php',
     'Wikibase\\Client\\Tests\\UpdateRepo\\UpdateRepoOnDeleteTest' => $baseDir 
. 
'/extensions/Wikibase/client/tests/phpunit/includes/UpdateRepo/UpdateRepoOnDeleteTest.php',
@@ -885,6 +883,7 @@
     'Wikibase\\Lib\\Store\\LabelConflictFinder' => $baseDir . 
'/extensions/Wikibase/lib/includes/Store/LabelConflictFinder.php',
     'Wikibase\\Lib\\Store\\LanguageFallbackLabelDescriptionLookup' => $baseDir 
. 
'/extensions/Wikibase/lib/includes/Store/LanguageFallbackLabelDescriptionLookup.php',
     'Wikibase\\Lib\\Store\\LanguageFallbackLabelDescriptionLookupFactory' => 
$baseDir . 
'/extensions/Wikibase/lib/includes/Store/LanguageFallbackLabelDescriptionLookupFactory.php',
+    'Wikibase\\Lib\\Store\\PropertyInfoLookup' => $baseDir . 
'/extensions/Wikibase/lib/includes/Store/PropertyInfoLookup.php',
     'Wikibase\\Lib\\Store\\PropertyOrderProvider' => $baseDir . 
'/extensions/Wikibase/lib/includes/Store/PropertyOrderProvider.php',
     'Wikibase\\Lib\\Store\\PropertyOrderProviderException' => $baseDir . 
'/extensions/Wikibase/lib/includes/Store/PropertyOrderProviderException.php',
     'Wikibase\\Lib\\Store\\RevisionBasedEntityLookup' => $baseDir . 
'/extensions/Wikibase/lib/includes/Store/RevisionBasedEntityLookup.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index ecba7f1..e7e76d7 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -109,46 +109,6 @@
         ]
     },
     {
-        "name": "mediawiki/article-placeholder",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
-        "source": {
-            "type": "git",
-            "url": 
"https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git";,
-            "reference": "197aabc07ea2f998079b0268c6b56eb2947a0269"
-        },
-        "dist": {
-            "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/197aabc07ea2f998079b0268c6b56eb2947a0269";,
-            "reference": "197aabc07ea2f998079b0268c6b56eb2947a0269",
-            "shasum": ""
-        },
-        "require-dev": {
-            "jakub-onderka/php-parallel-lint": "0.9.2",
-            "mediawiki/mediawiki-codesniffer": "0.7.2"
-        },
-        "time": "2016-11-30 14:30:13",
-        "type": "mediawiki-extension",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "ArticlePlaceholder\\": "includes/",
-                "ArticlePlaceholder\\Specials\\": "includes/specials/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/";,
-        "license": [
-            "GPL-2.0+"
-        ],
-        "authors": [
-            {
-                "name": "Lucie-Aimée Kaffee"
-            }
-        ],
-        "description": "Provides a special page with Wikibase information 
about a certain topic, with invitation to create an article for the topic",
-        "homepage": 
"https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder";
-    },
-    {
         "name": "wikimedia/purtle",
         "version": "v1.0.4",
         "version_normalized": "1.0.4.0",
@@ -1400,93 +1360,6 @@
         ]
     },
     {
-        "name": "wikibase/wikibase",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
-        "source": {
-            "type": "git",
-            "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "fac6549d01e069a7b86f8bc59d2e55bc61f6410a"
-        },
-        "dist": {
-            "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/fac6549d01e069a7b86f8bc59d2e55bc61f6410a";,
-            "reference": "fac6549d01e069a7b86f8bc59d2e55bc61f6410a",
-            "shasum": ""
-        },
-        "require": {
-            "data-values/common": "~0.3.0",
-            "data-values/data-types": "~0.5.0",
-            "data-values/data-values": "~1.0",
-            "data-values/geo": "~1.0",
-            "data-values/interfaces": "~0.2.0|~0.1.5",
-            "data-values/javascript": "~0.8.3",
-            "data-values/number": "~0.8.2",
-            "data-values/serialization": "~1.1",
-            "data-values/time": "~0.8.4",
-            "data-values/validators": "~0.1.0",
-            "data-values/value-view": "~0.18.0",
-            "diff/diff": "~2.0",
-            "php": ">=5.5.0",
-            "wikibase/data-model": "^6.3.1",
-            "wikibase/data-model-javascript": "~3.0.0",
-            "wikibase/data-model-serialization": "~2.2",
-            "wikibase/data-model-services": "~3.7",
-            "wikibase/internal-serialization": "~2.3",
-            "wikibase/javascript-api": "~2.2.0",
-            "wikibase/serialization-javascript": "~2.0.6",
-            "wikimedia/purtle": "~1.0"
-        },
-        "conflict": {
-            "mediawiki/mediawiki": "<1.25"
-        },
-        "require-dev": {
-            "jakub-onderka/php-parallel-lint": "0.9.2",
-            "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0"
-        },
-        "time": "2016-11-30 21:22:39",
-        "type": "mediawiki-extension",
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "client/includes/",
-                "client/WikibaseClient.hooks.php",
-                "client/tests/phpunit/MockClientStore.php",
-                "lib/includes/",
-                "lib/WikibaseLib.hooks.php",
-                "lib/maintenance/",
-                "repo/includes/",
-                "repo/maintenance/",
-                "repo/tests/phpunit/",
-                "repo/Wikibase.hooks.php"
-            ],
-            "psr-4": {
-                "Wikibase\\Client\\Tests\\": "client/tests/phpunit/includes",
-                "Wikibase\\Lib\\Tests\\": "lib/tests/phpunit",
-                "Wikibase\\View\\": "view/src",
-                "Wikibase\\View\\Tests\\": "view/tests/phpunit"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/";,
-        "license": [
-            "GPL-2.0+"
-        ],
-        "authors": [
-            {
-                "name": "The Wikidata team"
-            }
-        ],
-        "description": "Structured data repository for MediaWiki",
-        "homepage": "http://wikiba.se";,
-        "keywords": [
-            "wikibase",
-            "wikibaseclient",
-            "wikibaselib",
-            "wikibaserepo",
-            "wikidata"
-        ]
-    },
-    {
         "name": "wikibase/wikimedia-badges",
         "version": "dev-master",
         "version_normalized": "9999999-dev",
@@ -1703,55 +1576,6 @@
         }
     },
     {
-        "name": "propertysuggester/property-suggester",
-        "version": "3.1.4",
-        "version_normalized": "3.1.4.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/Wikidata-lib/PropertySuggester.git";,
-            "reference": "793390f84e180097f0511aa2b09dacd50168dfa3"
-        },
-        "dist": {
-            "type": "zip",
-            "url": 
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/793390f84e180097f0511aa2b09dacd50168dfa3";,
-            "reference": "793390f84e180097f0511aa2b09dacd50168dfa3",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5.0",
-            "wikibase/data-model": "~4.1|~5.0|~6.0",
-            "wikibase/data-model-services": "~1.1|~2.0|~3.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "3.7.*",
-            "satooshi/php-coveralls": "dev-master"
-        },
-        "time": "2016-10-03 12:42:20",
-        "type": "mediawiki-extension",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "PropertySuggester\\": "src/PropertySuggester/"
-            },
-            "files": [],
-            "classmap": [
-                "PropertySuggesterHooks.php",
-                "maintenance/UpdateTable.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/";,
-        "license": [
-            "GPL-2.0+"
-        ],
-        "description": "Extension for Wikibase to provide usefull suggestions 
for new properties",
-        "homepage": "https://github.com/Wikidata-lib/PropertySuggester";,
-        "keywords": [
-            "propertysuggester",
-            "wikibase",
-            "wikidata"
-        ]
-    },
-    {
         "name": "wikibase/quality",
         "version": "dev-master",
         "version_normalized": "9999999-dev",
@@ -1862,5 +1686,181 @@
         "support": {
             "issues": "https://phabricator.wikimedia.org/project/profile/1202/";
         }
+    },
+    {
+        "name": "propertysuggester/property-suggester",
+        "version": "3.1.5",
+        "version_normalized": "3.1.5.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/Wikidata-lib/PropertySuggester.git";,
+            "reference": "bb0e4afdaa5e8d472c61259d0d2d57688d1159a0"
+        },
+        "dist": {
+            "type": "zip",
+            "url": 
"https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/bb0e4afdaa5e8d472c61259d0d2d57688d1159a0";,
+            "reference": "bb0e4afdaa5e8d472c61259d0d2d57688d1159a0",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.5.0",
+            "wikibase/data-model": "~4.1|~5.0|~6.0",
+            "wikibase/data-model-services": "~1.1|~2.0|~3.0"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "3.7.*",
+            "satooshi/php-coveralls": "dev-master"
+        },
+        "time": "2016-12-02 12:39:32",
+        "type": "mediawiki-extension",
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "PropertySuggester\\": "src/PropertySuggester/"
+            },
+            "files": [],
+            "classmap": [
+                "PropertySuggesterHooks.php",
+                "maintenance/UpdateTable.php"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/";,
+        "license": [
+            "GPL-2.0+"
+        ],
+        "description": "Extension for Wikibase to provide usefull suggestions 
for new properties",
+        "homepage": "https://github.com/Wikidata-lib/PropertySuggester";,
+        "keywords": [
+            "propertysuggester",
+            "wikibase",
+            "wikidata"
+        ]
+    },
+    {
+        "name": "mediawiki/article-placeholder",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "source": {
+            "type": "git",
+            "url": 
"https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git";,
+            "reference": "a1885b4f47445d8a1b40d113b623f98c3005b08b"
+        },
+        "dist": {
+            "type": "zip",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/a1885b4f47445d8a1b40d113b623f98c3005b08b";,
+            "reference": "a1885b4f47445d8a1b40d113b623f98c3005b08b",
+            "shasum": ""
+        },
+        "require-dev": {
+            "jakub-onderka/php-parallel-lint": "0.9.2",
+            "mediawiki/mediawiki-codesniffer": "0.7.2"
+        },
+        "time": "2016-12-02 10:49:13",
+        "type": "mediawiki-extension",
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "ArticlePlaceholder\\": "includes/",
+                "ArticlePlaceholder\\Specials\\": "includes/specials/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/";,
+        "license": [
+            "GPL-2.0+"
+        ],
+        "authors": [
+            {
+                "name": "Lucie-Aimée Kaffee"
+            }
+        ],
+        "description": "Provides a special page with Wikibase information 
about a certain topic, with invitation to create an article for the topic",
+        "homepage": 
"https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder";
+    },
+    {
+        "name": "wikibase/wikibase",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "source": {
+            "type": "git",
+            "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
+            "reference": "32deb99363d0c228f2d74400c71d117643dd0bad"
+        },
+        "dist": {
+            "type": "zip",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/32deb99363d0c228f2d74400c71d117643dd0bad";,
+            "reference": "32deb99363d0c228f2d74400c71d117643dd0bad",
+            "shasum": ""
+        },
+        "require": {
+            "data-values/common": "~0.3.0",
+            "data-values/data-types": "~0.5.0",
+            "data-values/data-values": "~1.0",
+            "data-values/geo": "~1.0",
+            "data-values/interfaces": "~0.2.0|~0.1.5",
+            "data-values/javascript": "~0.8.3",
+            "data-values/number": "~0.8.2",
+            "data-values/serialization": "~1.1",
+            "data-values/time": "~0.8.4",
+            "data-values/validators": "~0.1.0",
+            "data-values/value-view": "~0.18.0",
+            "diff/diff": "~2.0",
+            "php": ">=5.5.0",
+            "wikibase/data-model": "^6.3.1",
+            "wikibase/data-model-javascript": "~3.0.0",
+            "wikibase/data-model-serialization": "~2.2",
+            "wikibase/data-model-services": "~3.7",
+            "wikibase/internal-serialization": "~2.3",
+            "wikibase/javascript-api": "~2.2.0",
+            "wikibase/serialization-javascript": "~2.0.6",
+            "wikimedia/purtle": "~1.0"
+        },
+        "conflict": {
+            "mediawiki/mediawiki": "<1.25"
+        },
+        "require-dev": {
+            "jakub-onderka/php-parallel-lint": "0.9.2",
+            "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0"
+        },
+        "time": "2016-12-02 10:49:32",
+        "type": "mediawiki-extension",
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "client/includes/",
+                "client/WikibaseClient.hooks.php",
+                "client/tests/phpunit/MockClientStore.php",
+                "lib/includes/",
+                "lib/WikibaseLib.hooks.php",
+                "lib/maintenance/",
+                "repo/includes/",
+                "repo/maintenance/",
+                "repo/tests/phpunit/",
+                "repo/Wikibase.hooks.php"
+            ],
+            "psr-4": {
+                "Wikibase\\Client\\Tests\\": "client/tests/phpunit/includes",
+                "Wikibase\\Lib\\Tests\\": "lib/tests/phpunit",
+                "Wikibase\\View\\": "view/src",
+                "Wikibase\\View\\Tests\\": "view/tests/phpunit"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/";,
+        "license": [
+            "GPL-2.0+"
+        ],
+        "authors": [
+            {
+                "name": "The Wikidata team"
+            }
+        ],
+        "description": "Structured data repository for MediaWiki",
+        "homepage": "http://wikiba.se";,
+        "keywords": [
+            "wikibase",
+            "wikibaseclient",
+            "wikibaselib",
+            "wikibaserepo",
+            "wikidata"
+        ]
     }
 ]

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

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

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

Reply via email to