jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/391172 )

Change subject: New Wikidata Build - 2017-11-14T10:00:02+0000
......................................................................


New Wikidata Build - 2017-11-14T10:00:02+0000

Change-Id: I2955f10903bf7c12f378f2db874673bf7cd87c69
---
M composer.lock
M extensions/ArticlePlaceholder/composer.json
M extensions/ArticlePlaceholder/extension.json
M extensions/Constraints/tests/phpunit/Helper/SparqlHelperTest.php
M extensions/Quality/composer.json
M extensions/Quality/extension.json
M extensions/Wikibase/client/includes/Changes/AffectedPagesFinder.php
M extensions/Wikibase/composer.json
M extensions/Wikibase/repo/i18n/ais.json
M extensions/Wikibase/repo/i18n/be-tarask.json
M extensions/Wikibase/repo/includes/Search/Elastic/Fields/DescriptionsField.php
M extensions/Wikibase/repo/maintenance/dumpEntities.php
M extensions/Wikibase/repo/maintenance/dumpJson.php
M extensions/Wikibase/repo/maintenance/dumpRdf.php
M vendor/composer/autoload_classmap.php
M vendor/composer/autoload_psr4.php
M vendor/composer/autoload_static.php
M vendor/composer/installed.json
M vendor/wikibase/data-model/RELEASE-NOTES.md
M vendor/wikibase/data-model/WikibaseDataModel.php
M vendor/wikibase/data-model/src/Entity/EntityId.php
M vendor/wikibase/data-model/src/Entity/ItemId.php
M vendor/wikibase/data-model/src/Entity/PropertyId.php
23 files changed, 167 insertions(+), 194 deletions(-)

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



diff --git a/composer.lock b/composer.lock
index d0087a4..c579ddc 100644
--- a/composer.lock
+++ b/composer.lock
@@ -664,12 +664,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git";,
-                "reference": "d3e71acf9b62d645e96528dbe21c73b6e1318bb1"
+                "reference": "5a91118980af5a58c976a78636e601474d2fb6bc"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/d3e71acf9b62d645e96528dbe21c73b6e1318bb1";,
-                "reference": "d3e71acf9b62d645e96528dbe21c73b6e1318bb1",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/5a91118980af5a58c976a78636e601474d2fb6bc";,
+                "reference": "5a91118980af5a58c976a78636e601474d2fb6bc",
                 "shasum": ""
             },
             "require": {
@@ -682,12 +682,6 @@
                 "wikibase/wikibase-codesniffer": "^0.2.0"
             },
             "type": "mediawiki-extension",
-            "autoload": {
-                "psr-4": {
-                    "ArticlePlaceholder\\": "includes/",
-                    "ArticlePlaceholder\\Specials\\": "includes/specials/"
-                }
-            },
             "notification-url": "https://packagist.org/downloads/";,
             "license": [
                 "GPL-2.0+"
@@ -699,7 +693,7 @@
             ],
             "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": "2017-11-11 21:27:16"
+            "time": "2017-11-13 14:15:16"
         },
         {
             "name": "propertysuggester/property-suggester",
@@ -860,7 +854,7 @@
             "source": {
                 "type": "git",
                 "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-                "reference": "6a12ed80f60163ada363f39f3d6bba86ccb0b8b3"
+                "reference": "10b03558915f642e838888628dec867ea430c73f"
             },
             "require": {
                 "php": ">=5.5.9",
@@ -923,20 +917,20 @@
             "support": {
                 "issues": 
"https://phabricator.wikimedia.org/project/profile/1202/";
             },
-            "time": "2017-11-12 21:51:36"
+            "time": "2017-11-13 17:41:32"
         },
         {
             "name": "wikibase/data-model",
-            "version": "7.2.0",
+            "version": "7.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/wmde/WikibaseDataModel.git";,
-                "reference": "b54117c9428a034bef9c28d8f1897a4e9781ff02"
+                "reference": "738cc82eb7c8a994ed06392ccb456abf00eb702d"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wmde/WikibaseDataModel/zipball/b54117c9428a034bef9c28d8f1897a4e9781ff02";,
-                "reference": "b54117c9428a034bef9c28d8f1897a4e9781ff02",
+                "url": 
"https://api.github.com/repos/wmde/WikibaseDataModel/zipball/738cc82eb7c8a994ed06392ccb456abf00eb702d";,
+                "reference": "738cc82eb7c8a994ed06392ccb456abf00eb702d",
                 "shasum": ""
             },
             "require": {
@@ -953,7 +947,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "7.2.x-dev"
+                    "dev-master": "7.3.x-dev"
                 }
             },
             "autoload": {
@@ -985,7 +979,7 @@
                 "wikibase",
                 "wikidata"
             ],
-            "time": "2017-10-23 11:52:21"
+            "time": "2017-11-13 13:21:52"
         },
         {
             "name": "wikibase/data-model-serialization",
@@ -1183,7 +1177,7 @@
             "source": {
                 "type": "git",
                 "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQuality";,
-                "reference": "651324048003f07c7b3d6ff4c5628abb74caff22"
+                "reference": "e9b0e8a9f25da82678452a27c2161687d1a23abf"
             },
             "require": {
                 "php": ">=5.5.9",
@@ -1205,14 +1199,6 @@
                 "wikibase/wikibase-codesniffer": "^0.2.0"
             },
             "type": "mediawiki-extension",
-            "autoload": {
-                "psr-4": {
-                    "WikibaseQuality\\": "includes/",
-                    "WikibaseQuality\\Api\\": "api/",
-                    "WikibaseQuality\\Specials\\": "specials/",
-                    "WikibaseQuality\\Tests\\": "tests/phpunit/"
-                }
-            },
             "scripts": {
                 "fix": [
                     "phpcbf",
@@ -1245,7 +1231,7 @@
             "support": {
                 "issues": 
"https://phabricator.wikimedia.org/project/profile/989/";
             },
-            "time": "2017-11-11 21:56:57"
+            "time": "2017-11-13 14:54:24"
         },
         {
             "name": "wikibase/wikibase",
@@ -1253,7 +1239,7 @@
             "source": {
                 "type": "git",
                 "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikibase";,
-                "reference": "882968f89105892807ac15bdd30751bb46590dfd"
+                "reference": "22cf861cb9e49928876b007540a3f89650c1d30c"
             },
             "require": {
                 "composer/installers": ">=1.0.1",
@@ -1314,8 +1300,8 @@
                 ],
                 "test": [
                     "composer validate --no-interaction",
-                    "parallel-lint . --exclude vendor --exclude node_modules",
-                    "phpcs -p -s"
+                    "parallel-lint . --exclude vendor --exclude node_modules 
--exclude .git",
+                    "phpcs -p -s --ignore=.git"
                 ]
             },
             "license": [
@@ -1339,7 +1325,7 @@
                 "issues": "https://phabricator.wikimedia.org/";,
                 "irc": "irc://irc.freenode.net/wikidata"
             },
-            "time": "2017-11-12 21:51:13"
+            "time": "2017-11-14 08:23:05"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/ArticlePlaceholder/composer.json 
b/extensions/ArticlePlaceholder/composer.json
index f31b3d2..8b07693 100644
--- a/extensions/ArticlePlaceholder/composer.json
+++ b/extensions/ArticlePlaceholder/composer.json
@@ -22,12 +22,6 @@
                "wikibase/wikibase-codesniffer": "^0.2.0",
                "mediawiki/minus-x": "0.2.0"
        },
-       "autoload": {
-               "psr-4": {
-                       "ArticlePlaceholder\\": "includes/",
-                       "ArticlePlaceholder\\Specials\\": "includes/specials/"
-               }
-       },
        "scripts": {
                "test": [
                        "parallel-lint . --exclude vendor --exclude 
node_modules",
diff --git a/extensions/ArticlePlaceholder/extension.json 
b/extensions/ArticlePlaceholder/extension.json
index 73bf3ed..44f79b4 100644
--- a/extensions/ArticlePlaceholder/extension.json
+++ b/extensions/ArticlePlaceholder/extension.json
@@ -16,10 +16,19 @@
                        "i18n"
                ]
        },
+       "AutoloadClasses": {
+               "ArticlePlaceholder\\AboutTopicRenderer": 
"includes/AboutTopicRenderer.php",
+               "ArticlePlaceholder\\BaseTemplateToolboxHookHandler": 
"includes/BaseTemplateToolboxHookHandler.php",
+               "ArticlePlaceholder\\Hooks": "includes/Hooks.php",
+               "ArticlePlaceholder\\ItemNotabilityFilter": 
"includes/ItemNotabilityFilter.php",
+               
"ArticlePlaceholder\\Lua\\Scribunto_LuaArticlePlaceholderLibrary": 
"includes/Lua/Scribunto_LuaArticlePlaceholderLibrary.php",
+               "ArticlePlaceholder\\SearchHookHandler": 
"includes/SearchHookHandler.php",
+               "ArticlePlaceholder\\Specials\\SpecialAboutTopic": 
"includes/specials/SpecialAboutTopic.php",
+               "ArticlePlaceholder\\Specials\\SpecialCreateTopicPage": 
"includes/specials/SpecialCreateTopicPage.php"
+       },
        "ExtensionMessagesFiles": {
                "ArticlePlaceholderAliases": "ArticlePlaceholder.alias.php"
        },
-       "load_composer_autoloader": true,
        "ResourceModules": {
                "ext.articleplaceholder.createArticle": {
                        "position": "bottom",
diff --git a/extensions/Constraints/tests/phpunit/Helper/SparqlHelperTest.php 
b/extensions/Constraints/tests/phpunit/Helper/SparqlHelperTest.php
index ec4109e..933cb1a 100644
--- a/extensions/Constraints/tests/phpunit/Helper/SparqlHelperTest.php
+++ b/extensions/Constraints/tests/phpunit/Helper/SparqlHelperTest.php
@@ -318,7 +318,7 @@
                try {
                        call_user_func_array( [ $sparqlHelper, 
'matchesRegularExpressionWithSparql' ], [ $text, $regex ] );
                        $this->assertTrue( false,
-                               "matchesRegularExpressionWithSparql should have 
thrown a ConstraintParameterException with message ⧼$messageKey⧽." );
+                               "matchesRegularExpressionWithSparql should have 
thrown a ConstraintParameterException with message ⧼${messageKey}⧽." );
                } catch ( ConstraintParameterException $exception ) {
                        $checkResult = new CheckResult(
                                $this->getMock( Context::class ),
diff --git a/extensions/Quality/composer.json b/extensions/Quality/composer.json
index 367fcc1..8c95e6b 100644
--- a/extensions/Quality/composer.json
+++ b/extensions/Quality/composer.json
@@ -38,14 +38,6 @@
                "wikibase/wikibase-codesniffer": "^0.2.0",
                "mediawiki/minus-x": "0.2.0"
        },
-       "autoload": {
-               "psr-4": {
-                       "WikibaseQuality\\": "includes/",
-                       "WikibaseQuality\\Api\\": "api/",
-                       "WikibaseQuality\\Specials\\": "specials/",
-                       "WikibaseQuality\\Tests\\": "tests/phpunit/"
-               }
-       },
        "scripts": {
                "fix": [
                        "phpcbf",
diff --git a/extensions/Quality/extension.json 
b/extensions/Quality/extension.json
index 0de28b9..d029f73 100644
--- a/extensions/Quality/extension.json
+++ b/extensions/Quality/extension.json
@@ -1,5 +1,4 @@
 {
-       "load_composer_autoloader": true,
        "name": "WikibaseQuality",
        "author": "BP2014N1",
        "url": "https://www.mediawiki.org/wiki/Extension:WikibaseQuality";,
@@ -15,6 +14,12 @@
        "ExtensionMessagesFiles": {
                "WikibaseQualityAlias": "WikibaseQuality.alias.php"
        },
+       "AutoloadClasses": {
+               "WikibaseQuality\\Html\\HtmlTableBuilder": 
"includes/Html/HtmlTableBuilder.php",
+               "WikibaseQuality\\Html\\HtmlTableCellBuilder": 
"includes/Html/HtmlTableCellBuilder.php",
+               "WikibaseQuality\\Html\\HtmlTableHeaderBuilder": 
"includes/Html/HtmlTableHeaderBuilder.php",
+               "WikibaseQuality\\Tests\\Helper\\JsonFileEntityLookup": 
"tests/phpunit/Helper/JsonFileEntityLookup.php"
+       },
        "ResourceModules": {
                "SpecialCheckResultPage": {
                        "styles": "modules/SpecialCheckResultPage.css"
diff --git 
a/extensions/Wikibase/client/includes/Changes/AffectedPagesFinder.php 
b/extensions/Wikibase/client/includes/Changes/AffectedPagesFinder.php
index fe66f77..91d2440 100644
--- a/extensions/Wikibase/client/includes/Changes/AffectedPagesFinder.php
+++ b/extensions/Wikibase/client/includes/Changes/AffectedPagesFinder.php
@@ -152,25 +152,23 @@
                        }
                }
 
-               if ( $diff instanceof EntityDiff && 
!$diff->getLabelsDiff()->isEmpty() ) {
+               if ( $diff instanceof EntityDiff ) {
                        $labelsDiff = $diff->getLabelsDiff();
+                       $descriptionsDiff = $diff->getDescriptionsDiff();
 
-                       if ( !empty( $labelsDiff ) ) {
-                               $labelAspects = $this->getChangedLabelAspects( 
$labelsDiff );
+                       if ( !$labelsDiff->isEmpty() ) {
+                               $labelAspects = $this->getChangedTermAspects( 
EntityUsage::LABEL_USAGE, $labelsDiff );
                                $aspects = array_merge( $aspects, $labelAspects 
);
                                $remainingDiffOps -= count( $labelAspects );
                        }
-               }
 
-               if ( $diff instanceof EntityDiff && 
!$diff->getDescriptionsDiff()->isEmpty() ) {
-                       $descriptionsDiff = $diff->getDescriptionsDiff();
-
-                       if ( !empty( $descriptionsDiff ) ) {
-                               $descriptionsAspects = 
$this->getChangedDescriptionAspects( $descriptionsDiff );
+                       if ( !$descriptionsDiff->isEmpty() ) {
+                               $descriptionsAspects = 
$this->getChangedTermAspects( EntityUsage::DESCRIPTION_USAGE, $descriptionsDiff 
);
                                $aspects = array_merge( $aspects, 
$descriptionsAspects );
                                $remainingDiffOps -= count( 
$descriptionsAspects );
                        }
                }
+
                // FIXME: EntityChange suppresses various kinds of diffs (see 
above). T113468.
 
                if ( $remainingDiffOps > 0 ) {
@@ -181,44 +179,23 @@
        }
 
        /**
-        * @param Diff $labelsDiff
+        * @param string $aspect
+        * @param Diff $diff
         *
         * @return string[]
         */
-       private function getChangedLabelAspects( Diff $labelsDiff ) {
+       private function getChangedTermAspects( $aspect, Diff $diff ) {
                $aspects = [];
 
-               foreach ( $labelsDiff as $lang => $diffOp ) {
-                       $aspects[] = EntityUsage::makeAspectKey( 
EntityUsage::LABEL_USAGE, $lang );
+               foreach ( $diff as $lang => $diffOp ) {
+                       $aspects[] = EntityUsage::makeAspectKey( $aspect, $lang 
);
                }
 
                if ( $this->trackUsagesInAllLanguages ) {
                        // On multi-lingual wikis where users can request pages 
in any language, we can not
                        // optimize for one language fallback chain only. Since 
all possible language fallback
                        // chains must cover all languages, we can simply track 
an "all languages" usage.
-                       $aspects[] = EntityUsage::makeAspectKey( 
EntityUsage::LABEL_USAGE );
-               }
-
-               return $aspects;
-       }
-
-       /**
-        * @param Diff $descriptionsDiff
-        *
-        * @return string[]
-        */
-       private function getChangedDescriptionAspects( Diff $descriptionsDiff ) 
{
-               $aspects = [];
-
-               foreach ( $descriptionsDiff as $lang => $diffOp ) {
-                       $aspects[] = EntityUsage::makeAspectKey( 
EntityUsage::DESCRIPTION_USAGE, $lang );
-               }
-
-               if ( $this->trackUsagesInAllLanguages ) {
-                       // On multi-lingual wikis where users can request pages 
in any language, we can not
-                       // optimize for one language fallback chain only. Since 
all possible language fallback
-                       // chains must cover all languages, we can simply track 
an "all languages" usage.
-                       $aspects[] = EntityUsage::makeAspectKey( 
EntityUsage::DESCRIPTION_USAGE );
+                       $aspects[] = EntityUsage::makeAspectKey( $aspect );
                }
 
                return $aspects;
diff --git a/extensions/Wikibase/composer.json 
b/extensions/Wikibase/composer.json
index db002aa..50f2b35 100644
--- a/extensions/Wikibase/composer.json
+++ b/extensions/Wikibase/composer.json
@@ -76,8 +76,8 @@
                "fix": "phpcbf",
                "test": [
                        "composer validate --no-interaction",
-                       "parallel-lint . --exclude vendor --exclude 
node_modules",
-                       "phpcs -p -s"
+                       "parallel-lint . --exclude vendor --exclude 
node_modules --exclude .git",
+                       "phpcs -p -s --ignore=.git"
                ]
        }
 }
diff --git a/extensions/Wikibase/repo/i18n/ais.json 
b/extensions/Wikibase/repo/i18n/ais.json
index 0047d37..75db88f 100644
--- a/extensions/Wikibase/repo/i18n/ais.json
+++ b/extensions/Wikibase/repo/i18n/ais.json
@@ -53,6 +53,7 @@
        "wikibase-statementsection-statements": "sapuelac",
        "wikibase-sitelinks": "calay-kakacawan(wangcan) masasiket",
        "wikibase-sitelinkgroupview-input-help-message": "micunus 
calay-kakacawan(wangcan) masasiket micaliw ku matuzu’ay 
calay-kakacawan(wangcan) atu kasabelih, mikawaway-kalumyiti saca misipu izaway 
a calay-kakacawan(wangcan) masasiket.",
+       "wikibase-sitelinks-counter": "{{PLURAL:$1|sapacelilan}}",
        "wikibase-sitelinks-empty": "inayi’ henay kasabelih masasiket tu tina 
kasacacay",
        "wikibase-sitelinks-special": "zuma wangcan",
        "wikibase-badgeselector-badge-placeholder-title": "sapecec sa matuzu’ 
cacay a kunpay.",
@@ -256,6 +257,7 @@
        "wikibase-no-direct-editing": "pangangananay a salaedan $1 mapasatezep 
kakelul mikawaway-kalumyiti",
        "wikibase-noentity-createone": "kapah tu kisu [[$1|micunus cacay]].",
        "wikibase-special-mergeitems-error-prefix": "tina kasacacay la’cus 
pakabu. isasa’ mungangaw:",
+       "wikibase-listdatatypes-wikibase-item-body": "masasiket ta cwananay 
zuma kasacacay. yu sulitan sulyang sa. amikilim cwananay a \"kasacacay\" 
pangangananay a salaedan papatun matatungusay kasacacay.",
        "wikibase-listdatatypes-commonsmedia-head": "kasasimel tu myiti",
        "wikibase-listdatatypes-globe-coordinate-head": "taenengan nu 
lala’-liwliw",
        "wikibase-listdatatypes-globe-coordinate-body": "kahicelaan kakitizaan 
a sulit kalunasulitan nay wyitu - cintu napalekal, pisaungay gms saca 
bataan-cumut-enengan tikenih nay pakatineng kakitizaan nu ipabaw nu 
bunac-kitakit. hina tuzu’ \" puenengan kanatal \" zumasatu pisaungay \"WGS84\" 
taenengan sisetyimo. kya taenengan sisetyimo macunutu ku katingalaw atu 
subal.\n*  wyitu – taenengan ilabu’ nu sulisulitan sakacacay a liyad (float, 
dms, dm, dd),pasayzaan i saayaway sulit saca sazikuzay a sulit pisaungay N saca 
S pakatineng\n*  cintu – taenengan ilabu’ nu sasulitan sakatusa a liyad (float, 
dms, dm, dd),pasayzaan i saayaway sulit saca sazikuzay a sulit pisaungay E saca 
W pakatineng\n*  uzip nu bunac – sawantan (?) a sulyang, pataayaw tu kawaw 
matuzu’ay a bunac-kitakit ku \" puenengan kitakit \" 
\"http://www.wikidata.org/entity/Q2\"; \n*  sanat-masitudung-ditek –  taenengan 
a asip-bacu sanat-masitudung-ditek",
diff --git a/extensions/Wikibase/repo/i18n/be-tarask.json 
b/extensions/Wikibase/repo/i18n/be-tarask.json
index 29d0d93..99b2ebd 100644
--- a/extensions/Wikibase/repo/i18n/be-tarask.json
+++ b/extensions/Wikibase/repo/i18n/be-tarask.json
@@ -123,6 +123,7 @@
        "wikibase-validator-illegal-file-chars": "Назва файлу ня можа 
ўтрыліваць такія сымбалі, як двукроп’і ці нахіленыя рыскі. Калі ласка, устаўце 
толькі назву файлу пасьля «Файл:».",
        "wikibase-validator-illegal-geo-shape-title": "Значэньне мусіць 
пачынацца з <code>Data:</code> і сканчацца на <code>.map</code>. Дадаткова 
загаловак ня мусіць утрымліваць такія сымбалі як двукроп’е, краты ці 
вэртыкальная рыса.",
        "wikibase-validator-illegal-tabular-data-title": "Значэньне мусіць 
пачынацца з <code>Data:</code> і сканчацца на <code>.tab</code>. Дадаткова 
загаловак ня мусіць утрымліваць такія сымбалі як двукроп’е, краты ці 
вэртыкальную рысу.",
+       "wikibase-validator-no-such-media": "Файл «$1» не існуе ў 
[https://commons.wikimedia.org/ Вікісховішчы].",
        "wikibase-wikibaserepopage-invalid-langcode": "Невядомы код мовы «$1». 
Калі ласка, выкарыстоўвайце только вядомыя сыстэме моўныя коды, як то «en».",
        "wikibase-wikibaserepopage-unresolved-redirect": "$1 зьяўляецца 
перанакіраваньнем.",
        "wikibase-wikibaserepopage-storage-exception": "Адбылася памылка пры 
спробе загрузіць $1: $2.",
diff --git 
a/extensions/Wikibase/repo/includes/Search/Elastic/Fields/DescriptionsField.php 
b/extensions/Wikibase/repo/includes/Search/Elastic/Fields/DescriptionsField.php
index afd0980..2526901 100644
--- 
a/extensions/Wikibase/repo/includes/Search/Elastic/Fields/DescriptionsField.php
+++ 
b/extensions/Wikibase/repo/includes/Search/Elastic/Fields/DescriptionsField.php
@@ -1,6 +1,8 @@
 <?php
+
 namespace Wikibase\Repo\Search\Elastic\Fields;
 
+use CirrusSearch;
 use SearchEngine;
 use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Term\DescriptionsProvider;
@@ -53,4 +55,12 @@
                return $data;
        }
 
+       public function getEngineHints( SearchEngine $engine ) {
+               if ( !( $engine instanceof CirrusSearch ) ) {
+                       // For now only Cirrus/Elastic is supported
+                       return [];
+               }
+               return [ \CirrusSearch\Search\CirrusIndexField::NOOP_HINT => 
"equals" ];
+       }
+
 }
diff --git a/extensions/Wikibase/repo/maintenance/dumpEntities.php 
b/extensions/Wikibase/repo/maintenance/dumpEntities.php
index defdfa8..5f887f6 100644
--- a/extensions/Wikibase/repo/maintenance/dumpEntities.php
+++ b/extensions/Wikibase/repo/maintenance/dumpEntities.php
@@ -51,6 +51,7 @@
                $this->addOption( 'log', "Log file (default is stderr). Will be 
appended.", false, true );
                $this->addOption( 'quiet', "Disable progress reporting", false, 
false );
                $this->addOption( 'limit', "Limit how many entities are 
dumped.", false, true );
+               $this->addOption( 'no-cache', "If this is set, don't try to 
read from an EntityRevisionCache.", false, false );
        }
 
        public function setDumpEntitiesServices( SqlEntityIdPagerFactory 
$sqlEntityIdPagerFactory ) {
@@ -211,6 +212,19 @@
        }
 
        /**
+        * Cache flag for use in Store::getEntityRevisionLookup.
+        *
+        * @return string One of "retrieve-only" and "uncached"
+        */
+       protected function getEntityRevisionLookupCacheMode() {
+               if ( $this->getOption( 'no-cache', false ) ) {
+                       return 'uncached';
+               } else {
+                       return 'retrieve-only';
+               }
+       }
+
+       /**
         * @param string|null $entityType
         *
         * @return SqlEntityIdPager
diff --git a/extensions/Wikibase/repo/maintenance/dumpJson.php 
b/extensions/Wikibase/repo/maintenance/dumpJson.php
index ef93de1..05d19f0 100644
--- a/extensions/Wikibase/repo/maintenance/dumpJson.php
+++ b/extensions/Wikibase/repo/maintenance/dumpJson.php
@@ -80,7 +80,9 @@
                                $wikibaseRepo->getEntityNamespaceLookup(),
                                $wikibaseRepo->getEntityIdParser()
                        );
-                       $revisionLookup = 
$wikibaseRepo->getEntityRevisionLookup( 'retrieve-only' );
+                       $revisionLookup = 
$wikibaseRepo->getEntityRevisionLookup(
+                               $this->getEntityRevisionLookupCacheMode()
+                       );
 
                        $this->setServices(
                                $sqlEntityIdPagerFactory,
diff --git a/extensions/Wikibase/repo/maintenance/dumpRdf.php 
b/extensions/Wikibase/repo/maintenance/dumpRdf.php
index f1e6b1b..0ad22a5 100644
--- a/extensions/Wikibase/repo/maintenance/dumpRdf.php
+++ b/extensions/Wikibase/repo/maintenance/dumpRdf.php
@@ -120,7 +120,7 @@
                                $wikibaseRepo->getPropertyDataTypeLookup(),
                                $wikibaseRepo->getValueSnakRdfBuilderFactory(),
                                $wikibaseRepo->getEntityRdfBuilderFactory(),
-                               $wikibaseRepo->getEntityRevisionLookup( 
'retrieve-only' ),
+                               $wikibaseRepo->getEntityRevisionLookup( 
$this->getEntityRevisionLookupCacheMode() ),
                                $wikibaseRepo->getRdfVocabulary(),
                                $wikibaseRepo->getEntityContentFactory()
                        );
diff --git a/vendor/composer/autoload_classmap.php 
b/vendor/composer/autoload_classmap.php
index 54647cd..988853f 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -6,14 +6,6 @@
 $baseDir = dirname($vendorDir);
 
 return array(
-    'ArticlePlaceholder\\AboutTopicRenderer' => $baseDir . 
'/extensions/ArticlePlaceholder/includes/AboutTopicRenderer.php',
-    'ArticlePlaceholder\\BaseTemplateToolboxHookHandler' => $baseDir . 
'/extensions/ArticlePlaceholder/includes/BaseTemplateToolboxHookHandler.php',
-    'ArticlePlaceholder\\Hooks' => $baseDir . 
'/extensions/ArticlePlaceholder/includes/Hooks.php',
-    'ArticlePlaceholder\\ItemNotabilityFilter' => $baseDir . 
'/extensions/ArticlePlaceholder/includes/ItemNotabilityFilter.php',
-    'ArticlePlaceholder\\Lua\\Scribunto_LuaArticlePlaceholderLibrary' => 
$baseDir . 
'/extensions/ArticlePlaceholder/includes/Lua/Scribunto_LuaArticlePlaceholderLibrary.php',
-    'ArticlePlaceholder\\SearchHookHandler' => $baseDir . 
'/extensions/ArticlePlaceholder/includes/SearchHookHandler.php',
-    'ArticlePlaceholder\\Specials\\SpecialAboutTopic' => $baseDir . 
'/extensions/ArticlePlaceholder/includes/specials/SpecialAboutTopic.php',
-    'ArticlePlaceholder\\Specials\\SpecialCreateTopicPage' => $baseDir . 
'/extensions/ArticlePlaceholder/includes/specials/SpecialCreateTopicPage.php',
     'Comparable' => $vendorDir . 
'/data-values/data-values/src/interfaces/Comparable.php',
     'Composer\\Installers\\AglInstaller' => $vendorDir . 
'/composer/installers/src/Composer/Installers/AglInstaller.php',
     'Composer\\Installers\\AimeosInstaller' => $vendorDir . 
'/composer/installers/src/Composer/Installers/AimeosInstaller.php',
@@ -306,10 +298,6 @@
     'WikibaseQuality\\ConstraintReport\\Tests\\TitleParserMock' => $baseDir . 
'/extensions/Constraints/tests/phpunit/TitleParserMock.php',
     'WikibaseQuality\\ConstraintReport\\UpdateConstraintsTableJob' => $baseDir 
. '/extensions/Constraints/includes/UpdateConstraintsTableJob.php',
     'WikibaseQuality\\ConstraintReport\\WikibaseQualityConstraintsHooks' => 
$baseDir . '/extensions/Constraints/WikibaseQualityConstraintsHooks.php',
-    'WikibaseQuality\\Html\\HtmlTableBuilder' => $baseDir . 
'/extensions/Quality/includes/Html/HtmlTableBuilder.php',
-    'WikibaseQuality\\Html\\HtmlTableCellBuilder' => $baseDir . 
'/extensions/Quality/includes/Html/HtmlTableCellBuilder.php',
-    'WikibaseQuality\\Html\\HtmlTableHeaderBuilder' => $baseDir . 
'/extensions/Quality/includes/Html/HtmlTableHeaderBuilder.php',
-    'WikibaseQuality\\Tests\\Helper\\JsonFileEntityLookup' => $baseDir . 
'/extensions/Quality/tests/phpunit/Helper/JsonFileEntityLookup.php',
     'Wikibase\\AddUnitConversions' => $baseDir . 
'/extensions/Wikibase/repo/maintenance/addUnitConversions.php',
     'Wikibase\\Change' => $baseDir . 
'/extensions/Wikibase/lib/includes/Changes/Change.php',
     'Wikibase\\ChangePropertyDataType' => $baseDir . 
'/extensions/Wikibase/repo/maintenance/changePropertyDataType.php',
diff --git a/vendor/composer/autoload_psr4.php 
b/vendor/composer/autoload_psr4.php
index 70d2bbc..6465d72 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -24,15 +24,11 @@
     'Wikibase\\DataAccess\\' => array($baseDir . 
'/extensions/Wikibase/data-access/src'),
     'Wikibase\\Client\\Tests\\' => array($baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes'),
     'Wikibase\\Client\\' => array($baseDir . 
'/extensions/Wikibase/client/includes'),
-    'WikibaseQuality\\Tests\\' => array($baseDir . 
'/extensions/Quality/tests/phpunit'),
-    'WikibaseQuality\\Specials\\' => array($baseDir . 
'/extensions/Quality/specials'),
     'WikibaseQuality\\ConstraintReport\\Tests\\' => array($baseDir . 
'/extensions/Constraints/tests/phpunit'),
     'WikibaseQuality\\ConstraintReport\\Specials\\' => array($baseDir . 
'/extensions/Constraints/specials'),
     'WikibaseQuality\\ConstraintReport\\Maintenance\\' => array($baseDir . 
'/extensions/Constraints/maintenance'),
     'WikibaseQuality\\ConstraintReport\\Api\\' => array($baseDir . 
'/extensions/Constraints/api'),
     'WikibaseQuality\\ConstraintReport\\' => array($baseDir . 
'/extensions/Constraints/includes'),
-    'WikibaseQuality\\Api\\' => array($baseDir . '/extensions/Quality/api'),
-    'WikibaseQuality\\' => array($baseDir . '/extensions/Quality/includes'),
     'ValueValidators\\' => array($vendorDir . 
'/data-values/interfaces/src/ValueValidators'),
     'ValueParsers\\' => array($vendorDir . 
'/data-values/interfaces/src/ValueParsers', $vendorDir . 
'/data-values/common/src/ValueParsers'),
     'ValueFormatters\\' => array($vendorDir . 
'/data-values/interfaces/src/ValueFormatters', $vendorDir . 
'/data-values/common/src/ValueFormatters'),
@@ -45,6 +41,4 @@
     'DataValues\\' => array($vendorDir . '/data-values/common/src/DataValues'),
     'DataTypes\\' => array($vendorDir . '/data-values/data-types/src'),
     'Composer\\Installers\\' => array($vendorDir . 
'/composer/installers/src/Composer/Installers'),
-    'ArticlePlaceholder\\Specials\\' => array($baseDir . 
'/extensions/ArticlePlaceholder/includes/specials'),
-    'ArticlePlaceholder\\' => array($baseDir . 
'/extensions/ArticlePlaceholder/includes'),
 );
diff --git a/vendor/composer/autoload_static.php 
b/vendor/composer/autoload_static.php
index c45e0b6..5ed0cf0 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -40,15 +40,11 @@
             'Wikibase\\DataAccess\\' => 20,
             'Wikibase\\Client\\Tests\\' => 22,
             'Wikibase\\Client\\' => 16,
-            'WikibaseQuality\\Tests\\' => 22,
-            'WikibaseQuality\\Specials\\' => 25,
             'WikibaseQuality\\ConstraintReport\\Tests\\' => 39,
             'WikibaseQuality\\ConstraintReport\\Specials\\' => 42,
             'WikibaseQuality\\ConstraintReport\\Maintenance\\' => 45,
             'WikibaseQuality\\ConstraintReport\\Api\\' => 37,
             'WikibaseQuality\\ConstraintReport\\' => 33,
-            'WikibaseQuality\\Api\\' => 20,
-            'WikibaseQuality\\' => 16,
         ),
         'V' => 
         array (
@@ -73,11 +69,6 @@
         'C' => 
         array (
             'Composer\\Installers\\' => 20,
-        ),
-        'A' => 
-        array (
-            'ArticlePlaceholder\\Specials\\' => 28,
-            'ArticlePlaceholder\\' => 19,
         ),
     );
 
@@ -155,14 +146,6 @@
         array (
             0 => __DIR__ . '/../..' . '/extensions/Wikibase/client/includes',
         ),
-        'WikibaseQuality\\Tests\\' => 
-        array (
-            0 => __DIR__ . '/../..' . '/extensions/Quality/tests/phpunit',
-        ),
-        'WikibaseQuality\\Specials\\' => 
-        array (
-            0 => __DIR__ . '/../..' . '/extensions/Quality/specials',
-        ),
         'WikibaseQuality\\ConstraintReport\\Tests\\' => 
         array (
             0 => __DIR__ . '/../..' . '/extensions/Constraints/tests/phpunit',
@@ -182,14 +165,6 @@
         'WikibaseQuality\\ConstraintReport\\' => 
         array (
             0 => __DIR__ . '/../..' . '/extensions/Constraints/includes',
-        ),
-        'WikibaseQuality\\Api\\' => 
-        array (
-            0 => __DIR__ . '/../..' . '/extensions/Quality/api',
-        ),
-        'WikibaseQuality\\' => 
-        array (
-            0 => __DIR__ . '/../..' . '/extensions/Quality/includes',
         ),
         'ValueValidators\\' => 
         array (
@@ -241,14 +216,6 @@
         array (
             0 => __DIR__ . '/..' . 
'/composer/installers/src/Composer/Installers',
         ),
-        'ArticlePlaceholder\\Specials\\' => 
-        array (
-            0 => __DIR__ . '/../..' . 
'/extensions/ArticlePlaceholder/includes/specials',
-        ),
-        'ArticlePlaceholder\\' => 
-        array (
-            0 => __DIR__ . '/../..' . 
'/extensions/ArticlePlaceholder/includes',
-        ),
     );
 
     public static $prefixesPsr0 = array (
@@ -277,14 +244,6 @@
     );
 
     public static $classMap = array (
-        'ArticlePlaceholder\\AboutTopicRenderer' => __DIR__ . '/../..' . 
'/extensions/ArticlePlaceholder/includes/AboutTopicRenderer.php',
-        'ArticlePlaceholder\\BaseTemplateToolboxHookHandler' => __DIR__ . 
'/../..' . 
'/extensions/ArticlePlaceholder/includes/BaseTemplateToolboxHookHandler.php',
-        'ArticlePlaceholder\\Hooks' => __DIR__ . '/../..' . 
'/extensions/ArticlePlaceholder/includes/Hooks.php',
-        'ArticlePlaceholder\\ItemNotabilityFilter' => __DIR__ . '/../..' . 
'/extensions/ArticlePlaceholder/includes/ItemNotabilityFilter.php',
-        'ArticlePlaceholder\\Lua\\Scribunto_LuaArticlePlaceholderLibrary' => 
__DIR__ . '/../..' . 
'/extensions/ArticlePlaceholder/includes/Lua/Scribunto_LuaArticlePlaceholderLibrary.php',
-        'ArticlePlaceholder\\SearchHookHandler' => __DIR__ . '/../..' . 
'/extensions/ArticlePlaceholder/includes/SearchHookHandler.php',
-        'ArticlePlaceholder\\Specials\\SpecialAboutTopic' => __DIR__ . 
'/../..' . 
'/extensions/ArticlePlaceholder/includes/specials/SpecialAboutTopic.php',
-        'ArticlePlaceholder\\Specials\\SpecialCreateTopicPage' => __DIR__ . 
'/../..' . 
'/extensions/ArticlePlaceholder/includes/specials/SpecialCreateTopicPage.php',
         'Comparable' => __DIR__ . '/..' . 
'/data-values/data-values/src/interfaces/Comparable.php',
         'Composer\\Installers\\AglInstaller' => __DIR__ . '/..' . 
'/composer/installers/src/Composer/Installers/AglInstaller.php',
         'Composer\\Installers\\AimeosInstaller' => __DIR__ . '/..' . 
'/composer/installers/src/Composer/Installers/AimeosInstaller.php',
@@ -577,10 +536,6 @@
         'WikibaseQuality\\ConstraintReport\\Tests\\TitleParserMock' => __DIR__ 
. '/../..' . '/extensions/Constraints/tests/phpunit/TitleParserMock.php',
         'WikibaseQuality\\ConstraintReport\\UpdateConstraintsTableJob' => 
__DIR__ . '/../..' . 
'/extensions/Constraints/includes/UpdateConstraintsTableJob.php',
         'WikibaseQuality\\ConstraintReport\\WikibaseQualityConstraintsHooks' 
=> __DIR__ . '/../..' . 
'/extensions/Constraints/WikibaseQualityConstraintsHooks.php',
-        'WikibaseQuality\\Html\\HtmlTableBuilder' => __DIR__ . '/../..' . 
'/extensions/Quality/includes/Html/HtmlTableBuilder.php',
-        'WikibaseQuality\\Html\\HtmlTableCellBuilder' => __DIR__ . '/../..' . 
'/extensions/Quality/includes/Html/HtmlTableCellBuilder.php',
-        'WikibaseQuality\\Html\\HtmlTableHeaderBuilder' => __DIR__ . '/../..' 
. '/extensions/Quality/includes/Html/HtmlTableHeaderBuilder.php',
-        'WikibaseQuality\\Tests\\Helper\\JsonFileEntityLookup' => __DIR__ . 
'/../..' . '/extensions/Quality/tests/phpunit/Helper/JsonFileEntityLookup.php',
         'Wikibase\\AddUnitConversions' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/maintenance/addUnitConversions.php',
         'Wikibase\\Change' => __DIR__ . '/../..' . 
'/extensions/Wikibase/lib/includes/Changes/Change.php',
         'Wikibase\\ChangePropertyDataType' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/maintenance/changePropertyDataType.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index da81d58..fb2318a 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -125,12 +125,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git";,
-            "reference": "d3e71acf9b62d645e96528dbe21c73b6e1318bb1"
+            "reference": "5a91118980af5a58c976a78636e601474d2fb6bc"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/d3e71acf9b62d645e96528dbe21c73b6e1318bb1";,
-            "reference": "d3e71acf9b62d645e96528dbe21c73b6e1318bb1",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/5a91118980af5a58c976a78636e601474d2fb6bc";,
+            "reference": "5a91118980af5a58c976a78636e601474d2fb6bc",
             "shasum": ""
         },
         "require": {
@@ -142,15 +142,9 @@
             "mediawiki/minus-x": "0.2.0",
             "wikibase/wikibase-codesniffer": "^0.2.0"
         },
-        "time": "2017-11-11 21:27:16",
+        "time": "2017-11-13 14:15:16",
         "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+"
@@ -441,17 +435,17 @@
     },
     {
         "name": "wikibase/data-model",
-        "version": "7.2.0",
-        "version_normalized": "7.2.0.0",
+        "version": "7.3.0",
+        "version_normalized": "7.3.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/wmde/WikibaseDataModel.git";,
-            "reference": "b54117c9428a034bef9c28d8f1897a4e9781ff02"
+            "reference": "738cc82eb7c8a994ed06392ccb456abf00eb702d"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wmde/WikibaseDataModel/zipball/b54117c9428a034bef9c28d8f1897a4e9781ff02";,
-            "reference": "b54117c9428a034bef9c28d8f1897a4e9781ff02",
+            "url": 
"https://api.github.com/repos/wmde/WikibaseDataModel/zipball/738cc82eb7c8a994ed06392ccb456abf00eb702d";,
+            "reference": "738cc82eb7c8a994ed06392ccb456abf00eb702d",
             "shasum": ""
         },
         "require": {
@@ -465,11 +459,11 @@
             "phpunit/phpunit": "~4.8",
             "wikibase/wikibase-codesniffer": "^0.1.0"
         },
-        "time": "2017-10-23 11:52:21",
+        "time": "2017-11-13 13:21:52",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "7.2.x-dev"
+                "dev-master": "7.3.x-dev"
             }
         },
         "installation-source": "dist",
@@ -1303,7 +1297,7 @@
         "source": {
             "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikibase";,
-            "reference": "882968f89105892807ac15bdd30751bb46590dfd"
+            "reference": "22cf861cb9e49928876b007540a3f89650c1d30c"
         },
         "require": {
             "composer/installers": ">=1.0.1",
@@ -1332,7 +1326,7 @@
             "mediawiki/minus-x": "0.1.0",
             "wikibase/wikibase-codesniffer": "^0.2.0"
         },
-        "time": "2017-11-12 21:51:13",
+        "time": "2017-11-14 08:23:05",
         "type": "mediawiki-extension",
         "installation-source": "source",
         "autoload": {
@@ -1366,8 +1360,8 @@
             ],
             "test": [
                 "composer validate --no-interaction",
-                "parallel-lint . --exclude vendor --exclude node_modules",
-                "phpcs -p -s"
+                "parallel-lint . --exclude vendor --exclude node_modules 
--exclude .git",
+                "phpcs -p -s --ignore=.git"
             ]
         },
         "license": [
@@ -1399,7 +1393,7 @@
         "source": {
             "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQuality";,
-            "reference": "651324048003f07c7b3d6ff4c5628abb74caff22"
+            "reference": "e9b0e8a9f25da82678452a27c2161687d1a23abf"
         },
         "require": {
             "php": ">=5.5.9",
@@ -1420,17 +1414,9 @@
             "wikibase/data-model-serialization": ">=0.1 <3.0",
             "wikibase/wikibase-codesniffer": "^0.2.0"
         },
-        "time": "2017-11-11 21:56:57",
+        "time": "2017-11-13 14:54:24",
         "type": "mediawiki-extension",
         "installation-source": "source",
-        "autoload": {
-            "psr-4": {
-                "WikibaseQuality\\": "includes/",
-                "WikibaseQuality\\Api\\": "api/",
-                "WikibaseQuality\\Specials\\": "specials/",
-                "WikibaseQuality\\Tests\\": "tests/phpunit/"
-            }
-        },
         "scripts": {
             "fix": [
                 "phpcbf",
@@ -1471,7 +1457,7 @@
         "source": {
             "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-            "reference": "6a12ed80f60163ada363f39f3d6bba86ccb0b8b3"
+            "reference": "10b03558915f642e838888628dec867ea430c73f"
         },
         "require": {
             "php": ">=5.5.9",
@@ -1488,7 +1474,7 @@
             "satooshi/php-coveralls": "master-dev",
             "wikibase/wikibase-codesniffer": "^0.2.0"
         },
-        "time": "2017-11-12 21:51:36",
+        "time": "2017-11-13 17:41:32",
         "type": "mediawiki-extension",
         "installation-source": "source",
         "autoload": {
diff --git a/vendor/wikibase/data-model/RELEASE-NOTES.md 
b/vendor/wikibase/data-model/RELEASE-NOTES.md
index f7d4412..3e9dbbb 100644
--- a/vendor/wikibase/data-model/RELEASE-NOTES.md
+++ b/vendor/wikibase/data-model/RELEASE-NOTES.md
@@ -1,5 +1,11 @@
 # Wikibase DataModel release notes
 
+## Version 7.3.0 (2017-11-13)
+
+* Performance optimizations on `EntityId`:
+       * Added protected `$repositoryName` and `$localPart` properties
+       * Added protected `extractRepositoryNameAndLocalPart`
+
 ## Version 7.2.0 (2017-10-23)
 
 * Performance optimizations on methods critical for dump generation:
diff --git a/vendor/wikibase/data-model/WikibaseDataModel.php 
b/vendor/wikibase/data-model/WikibaseDataModel.php
index 3f25b06..8919128 100644
--- a/vendor/wikibase/data-model/WikibaseDataModel.php
+++ b/vendor/wikibase/data-model/WikibaseDataModel.php
@@ -11,4 +11,4 @@
        return;
 }
 
-define( 'WIKIBASE_DATAMODEL_VERSION', '7.2.0' );
+define( 'WIKIBASE_DATAMODEL_VERSION', '7.3.0' );
diff --git a/vendor/wikibase/data-model/src/Entity/EntityId.php 
b/vendor/wikibase/data-model/src/Entity/EntityId.php
index 130df85..72bf81f 100644
--- a/vendor/wikibase/data-model/src/Entity/EntityId.php
+++ b/vendor/wikibase/data-model/src/Entity/EntityId.php
@@ -16,16 +16,34 @@
 
        protected $serialization;
 
+       /**
+        * @since 7.3
+        *
+        * @var string
+        */
+       protected $repositoryName;
+
+       /**
+        * @since 7.3
+        *
+        * @var string
+        */
+       protected $localPart;
+
        const PATTERN = '/^:?(\w+:)*[^:]+\z/';
 
        /**
         * @since 6.2
         *
         * @param string $serialization
+        *
+        * @throws InvalidArgumentException
         */
        public function __construct( $serialization ) {
                self::assertValidSerialization( $serialization );
                $this->serialization = self::normalizeIdSerialization( 
$serialization );
+
+               list ( $this->repositoryName, $this->localPart ) = 
self::extractRepositoryNameAndLocalPart( $serialization );
        }
 
        private static function assertValidSerialization( $serialization ) {
@@ -63,12 +81,31 @@
         * @since 6.2
         *
         * @param string $serialization
+        *
+        * @throws InvalidArgumentException
         * @return string[] Array containing the serialization split into 3 
parts.
         */
        public static function splitSerialization( $serialization ) {
                self::assertValidSerialization( $serialization );
 
-               $parts = explode( ':', self::normalizeIdSerialization( 
$serialization ) );
+               return self::extractSerializationParts( 
self::normalizeIdSerialization( $serialization ) );
+       }
+
+       /**
+        * Splits the given ID serialization into an array with the following 
three elements:
+        *  - the repository name as the first element (empty string for local 
repository)
+        *  - any parts of the ID serialization but the repository name and the 
local ID (if any, empty string
+        *    if nothing else present)
+        *  - the local ID
+        * Note: this method does not perform any validation of the given 
input. Calling code should take
+        * care of this!
+        *
+        * @param string $serialization
+        *
+        * @return string[]
+        */
+       private static function extractSerializationParts( $serialization ) {
+               $parts = explode( ':', $serialization );
                $localPart = array_pop( $parts );
                $repoName = array_shift( $parts );
                $prefixRemainder = implode( ':', $parts );
@@ -86,9 +123,9 @@
         * @since 6.2
         *
         * @param string[] $parts
-        * @return string
         *
         * @throws InvalidArgumentException
+        * @return string
         */
        public static function joinSerialization( array $parts ) {
                if ( end( $parts ) === '' ) {
@@ -112,9 +149,7 @@
         * @return string
         */
        public function getRepositoryName() {
-               $parts = self::splitSerialization( $this->serialization );
-
-               return $parts[0];
+               return $this->repositoryName;
        }
 
        /**
@@ -125,9 +160,7 @@
         * @return string
         */
        public function getLocalPart() {
-               $parts = self::splitSerialization( $this->serialization );
-
-               return self::joinSerialization( [ '', $parts[1], $parts[2] ] );
+               return $this->localPart;
        }
 
        /**
@@ -144,6 +177,7 @@
 
        /**
         * @param string $id
+        *
         * @return string
         */
        private static function normalizeIdSerialization( $id ) {
@@ -179,4 +213,20 @@
                        && $target->serialization === $this->serialization;
        }
 
+       /**
+        * Returns a pair (repository name, local part of ID) from the given ID 
serialization.
+        * Note: this does not perform any validation of the given input. 
Calling code should take
+        * care of this!
+        *
+        * @since 7.3
+        *
+        * @param string $serialization
+        *
+        * @return string[] Array of form [ string $repositoryName, string 
$localPart ]
+        */
+       protected static function extractRepositoryNameAndLocalPart( 
$serialization ) {
+               $parts = explode( ':', $serialization, 2 );
+               return isset( $parts[1] ) ? $parts : [ '', $parts[0] ];
+       }
+
 }
diff --git a/vendor/wikibase/data-model/src/Entity/ItemId.php 
b/vendor/wikibase/data-model/src/Entity/ItemId.php
index 01a2200..53a6021 100644
--- a/vendor/wikibase/data-model/src/Entity/ItemId.php
+++ b/vendor/wikibase/data-model/src/Entity/ItemId.php
@@ -83,6 +83,7 @@
        public function unserialize( $serialized ) {
                $array = json_decode( $serialized );
                $this->serialization = is_array( $array ) ? $array[1] : 
$serialized;
+               list ( $this->repositoryName, $this->localPart ) = 
self::extractRepositoryNameAndLocalPart( $this->serialization );
        }
 
        /**
diff --git a/vendor/wikibase/data-model/src/Entity/PropertyId.php 
b/vendor/wikibase/data-model/src/Entity/PropertyId.php
index bd7e3d5..4221cd4 100644
--- a/vendor/wikibase/data-model/src/Entity/PropertyId.php
+++ b/vendor/wikibase/data-model/src/Entity/PropertyId.php
@@ -83,6 +83,7 @@
        public function unserialize( $serialized ) {
                $array = json_decode( $serialized );
                $this->serialization = is_array( $array ) ? $array[1] : 
$serialized;
+               list ( $this->repositoryName, $this->localPart ) = 
self::extractRepositoryNameAndLocalPart( $this->serialization );
        }
 
        /**

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I2955f10903bf7c12f378f2db874673bf7cd87c69
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Jonas Kress (WMDE) <jonas.kr...@wikimedia.de>
Gerrit-Reviewer: Ladsgroup <ladsgr...@gmail.com>
Gerrit-Reviewer: Siebrand <siebr...@kitano.nl>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to