WikidataBuilder has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/344333 )

Change subject: New Wikidata Build - 2017-03-23T10:00:01+0000
......................................................................

New Wikidata Build - 2017-03-23T10:00:01+0000

Change-Id: I99fb888982f23368e453784da57bc71707fd15ed
---
M composer.lock
M extensions/Constraints/i18n/zh-hant.json
M extensions/Wikibase/client/WikibaseClient.hooks.php
M extensions/Wikibase/client/WikibaseClient.php
M extensions/Wikibase/client/i18n/en.json
M extensions/Wikibase/client/i18n/fy.json
M extensions/Wikibase/client/i18n/gl.json
M extensions/Wikibase/client/i18n/qqq.json
M 
extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
A extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php
M extensions/Wikibase/client/includes/Modules/SiteModule.php
M extensions/Wikibase/client/includes/WikibaseClient.php
M 
extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
A 
extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php
M extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
M extensions/Wikibase/lib/WikibaseLib.entitytypes.php
M extensions/Wikibase/lib/i18n/gl.json
M extensions/Wikibase/repo/Wikibase.php
M extensions/Wikibase/repo/i18n/gl.json
M extensions/Wikibase/repo/i18n/pl.json
M extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
R extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php
M extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
M extensions/Wikibase/repo/includes/WikibaseRepo.php
R 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
M vendor/composer/autoload_classmap.php
M vendor/composer/autoload_static.php
M vendor/composer/installed.json
28 files changed, 653 insertions(+), 283 deletions(-)


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

diff --git a/composer.lock b/composer.lock
index b528a0c..e57fab6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -935,7 +935,7 @@
             "source": {
                 "type": "git",
                 "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-                "reference": "e5344cda71392773660bf8a54e9932d882e75433"
+                "reference": "e9b7fcaafc8abe6a1544fb7688e760e252fbe078"
             },
             "require": {
                 "php": ">=5.5.9",
@@ -987,7 +987,7 @@
             "support": {
                 "issues": 
"https://phabricator.wikimedia.org/project/profile/1202/";
             },
-            "time": "2017-03-21 10:22:18"
+            "time": "2017-03-22 22:11:48"
         },
         {
             "name": "wikibase/data-model",
@@ -1556,12 +1556,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "dcb71c0633d61886d1647aba80a5e3988cfad21a"
+                "reference": "f37e244cd624ead83bc9552ff0b5d4c23880948e"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/dcb71c0633d61886d1647aba80a5e3988cfad21a";,
-                "reference": "dcb71c0633d61886d1647aba80a5e3988cfad21a",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/f37e244cd624ead83bc9552ff0b5d4c23880948e";,
+                "reference": "f37e244cd624ead83bc9552ff0b5d4c23880948e",
                 "shasum": ""
             },
             "require": {
@@ -1635,7 +1635,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2017-03-21 21:55:12"
+            "time": "2017-03-22 22:11:13"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Constraints/i18n/zh-hant.json 
b/extensions/Constraints/i18n/zh-hant.json
index b79757d..38dffb7 100644
--- a/extensions/Constraints/i18n/zh-hant.json
+++ b/extensions/Constraints/i18n/zh-hant.json
@@ -5,6 +5,7 @@
                ]
        },
        "wbqc-constraintreport-form-submit-label": "檢查",
+       "wbqc-constraintreport-status-todo": "待辦事項",
        "wbqc-constraintreport-result-table-header-status": "狀態",
        "wbqc-constraintreport-no-parameter": "無"
 }
diff --git a/extensions/Wikibase/client/WikibaseClient.hooks.php 
b/extensions/Wikibase/client/WikibaseClient.hooks.php
index 11528de..6611903 100644
--- a/extensions/Wikibase/client/WikibaseClient.hooks.php
+++ b/extensions/Wikibase/client/WikibaseClient.hooks.php
@@ -342,52 +342,6 @@
        }
 
        /**
-        * Register the magic word.
-        *
-        * @param string[] &$aCustomVariableIds
-        *
-        * @return bool
-        */
-       public static function onMagicWordwgVariableIDs( &$aCustomVariableIds ) 
{
-               $aCustomVariableIds[] = 'noexternallanglinks';
-               $aCustomVariableIds[] = 'wbreponame';
-
-               return true;
-       }
-
-       /**
-        * Apply the magic word.
-        *
-        * @param Parser &$parser
-        * @param array &$cache
-        * @param string &$magicWordId
-        * @param string &$ret
-        *
-        * @return bool
-        */
-       public static function onParserGetVariableValueSwitch( Parser &$parser, 
&$cache, &$magicWordId, &$ret ) {
-               if ( $magicWordId === 'noexternallanglinks' ) {
-                       NoLangLinkHandler::handle( $parser, '*' );
-               } elseif ( $magicWordId === 'wbreponame' ) {
-                       // @todo factor out, with tests
-                       $wikibaseClient = WikibaseClient::getDefaultInstance();
-                       $settings = $wikibaseClient->getSettings();
-                       $repoSiteName = $settings->getSetting( 'repoSiteName' );
-
-                       $message = new Message( $repoSiteName );
-
-                       if ( $message->exists() ) {
-                               $lang = $parser->getTargetLanguage();
-                               $ret = $message->inLanguage( $lang )->parse();
-                       } else {
-                               $ret = $repoSiteName;
-                       }
-               }
-
-               return true;
-       }
-
-       /**
         * Adds the Entity ID of the corresponding Wikidata item in action=info
         *
         * @param IContextSource $context
@@ -496,16 +450,28 @@
        }
 
        /**
-        * These hooks should only be run if we use the Echo extension
+        * Do special hook registrations.  These are affected by ordering 
issues and/or
+        * conditional on another extension being registered.
         *
         * @see 
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExtensionFunctions
         */
        public static function onExtensionLoad() {
                global $wgHooks;
+
+               // These hooks should only be run if we use the Echo extension
                if ( class_exists( EchoEvent::class ) ) {
                        $wgHooks['UserGetDefaultOptions'][] = 
EchoNotificationsHandlers::class . '::onUserGetDefaultOptions';
                        $wgHooks['WikibaseHandleChange'][] = 
EchoNotificationsHandlers::class . '::onWikibaseHandleChange';
                }
+
+               // This is in onExtensionLoad to ensure we register our
+               // ChangesListSpecialPageStructuredFilters after ORES's.
+               //
+               // However, ORES is not required.
+               //
+               // recent changes / watchlist hooks
+               $wgHooks['ChangesListSpecialPageStructuredFilters'][] =
+                       
'\Wikibase\Client\Hooks\ChangesListSpecialPageHookHandlers::onChangesListSpecialPageStructuredFilters';
        }
 
 }
diff --git a/extensions/Wikibase/client/WikibaseClient.php 
b/extensions/Wikibase/client/WikibaseClient.php
index 07df902..9f107ad 100644
--- a/extensions/Wikibase/client/WikibaseClient.php
+++ b/extensions/Wikibase/client/WikibaseClient.php
@@ -70,7 +70,7 @@
        global $wgExtensionCredits, $wgExtensionMessagesFiles, $wgHooks, 
$wgExtensionFunctions;
        global $wgAPIListModules, $wgAPIMetaModules, $wgAPIPropModules, 
$wgSpecialPages;
        global $wgResourceModules, $wgWBClientSettings, $wgRecentChangesFlags, 
$wgMessagesDirs;
-       global $wgJobClasses, $wgTrackingCategories, $wgWBClientDataTypes, 
$wgWBClientEntityTypes;
+       global $wgJobClasses, $wgTrackingCategories, $wgWBClientDataTypes;
        global $wgWikibaseInterwikiSorting;
 
        $wgExtensionCredits['wikibase'][] = array(
@@ -95,9 +95,6 @@
                $wgWBClientDataTypes[$type] = array_merge( $baseDef, $clientDef 
);
        }
 
-       // Registry and definition of entity types
-       $wgWBClientEntityTypes = require __DIR__ . 
'/../lib/WikibaseLib.entitytypes.php';
-
        // i18n
        $wgMessagesDirs['wikibaseclient'] = __DIR__ . '/i18n';
        $wgExtensionMessagesFiles['Wikibaseclientalias'] = __DIR__ . 
'/WikibaseClient.i18n.alias.php';
@@ -119,8 +116,6 @@
        $wgHooks['SidebarBeforeOutput'][] = 
'\Wikibase\Client\Hooks\SidebarHookHandlers::onSidebarBeforeOutput';
 
        $wgHooks['ParserFirstCallInit'][] = 
'\Wikibase\ClientHooks::onParserFirstCallInit';
-       $wgHooks['MagicWordwgVariableIDs'][] = 
'\Wikibase\ClientHooks::onMagicWordwgVariableIDs';
-       $wgHooks['ParserGetVariableValueSwitch'][] = 
'\Wikibase\ClientHooks::onParserGetVariableValueSwitch';
        $wgHooks['SkinTemplateOutputPageBeforeExec'][] =
                
'\Wikibase\Client\Hooks\SkinTemplateOutputPageBeforeExecHandler::onSkinTemplateOutputPageBeforeExec';
        $wgHooks['SpecialMovepageAfterMove'][] = 
'\Wikibase\Client\Hooks\MovePageNotice::onSpecialMovepageAfterMove';
@@ -162,9 +157,13 @@
        }
 
        // recent changes / watchlist hooks
-       $wgHooks['ChangesListSpecialPageFilters'][] = 
'\Wikibase\Client\Hooks\ChangesListSpecialPageHookHandlers::onChangesListSpecialPageFilters';
        $wgHooks['ChangesListSpecialPageQuery'][] = 
'\Wikibase\Client\Hooks\ChangesListSpecialPageHookHandlers::onChangesListSpecialPageQuery';
 
+       // magic words
+       $wgHooks['MagicWordwgVariableIDs'][] = 
'\Wikibase\Client\Hooks\MagicWordHookHandlers::onMagicWordwgVariableIDs';
+       $wgHooks['ParserGetVariableValueSwitch'][] = 
'\Wikibase\Client\Hooks\MagicWordHookHandlers::onParserGetVariableValueSwitch';
+       $wgHooks['ResourceLoaderJqueryMsgModuleMagicWords'][] = 
'\Wikibase\Client\Hooks\MagicWordHookHandlers::onResourceLoaderJqueryMsgModuleMagicWords';
+
        // update hooks
        $wgHooks['LoadExtensionSchemaUpdates'][] = 
'\Wikibase\Client\Usage\Sql\SqlUsageTrackerSchemaUpdater::onSchemaUpdate';
 
diff --git a/extensions/Wikibase/client/i18n/en.json 
b/extensions/Wikibase/client/i18n/en.json
index 5c7c152..565b5ae 100644
--- a/extensions/Wikibase/client/i18n/en.json
+++ b/extensions/Wikibase/client/i18n/en.json
@@ -75,6 +75,12 @@
        "wikibase-rc-show-wikidata-pref": "Show {{WBREPONAME}} edits in recent 
changes",
        "wikibase-rc-wikibase-edit-letter": "D",
        "wikibase-rc-wikibase-edit-title": "{{WBREPONAME}} edit",
+       "wikibase-rcfilters-hide-wikibase-label": "{{WBREPONAME}} edits",
+       "wikibase-rcfilters-hide-wikibase-description": "Edits that originate 
on {{WBREPONAME}}.",
+       "wikibase-rcfilters-hide-wikibase-conflicts-ores": "This filter 
conflicts with one or more Contribution Quality or User Intent filters. Quality 
and Intent predictions are not available for {{WBREPONAME}} edits.",
+       "wikibase-rcfilters-hide-wikibase-conflicts-ores-global": "The 
\"{{WBREPONAME}} edits\" filter is conflicting with one or more Contribution 
Quality or User Intent filters. Quality and Intent predictions are not 
available for {{WBREPONAME}} edits. The conflicting filters are marked in the 
Active Filters area, above.",
+       "wikibase-rcfilters-damaging-conflicts-hide-wikibase": "Contribution 
Quality predictions are not available for certain types of change, so this 
filter conflicts with the following Type of Change 
{{PLURAL:$2|filter|filters}}: $1",
+       "wikibase-rcfilters-goodfaith-conflicts-hide-wikibase": "User Intent 
predictions are not available for certain types of change, so this filter 
conflicts with the following Type of Change {{PLURAL:$2|filter|filters}}: $1",
        "wikibase-replicationnote": "Please notice that it can take several 
minutes until the changes are visible on all wikis.",
        "wikibase-watchlist-show-changes-pref": "Show {{WBREPONAME}} edits in 
your watchlist",
        "wikibase-error-deserialize-error": "Failed to deserialize data.",
diff --git a/extensions/Wikibase/client/i18n/fy.json 
b/extensions/Wikibase/client/i18n/fy.json
index 0d27d0f..8cd90ec 100644
--- a/extensions/Wikibase/client/i18n/fy.json
+++ b/extensions/Wikibase/client/i18n/fy.json
@@ -1,7 +1,9 @@
 {
        "@metadata": {
                "authors": [
-                       "Robin0van0der0vliet"
+                       "Robin0van0der0vliet",
+                       "PiefPafPier",
+                       "Robin van der Vliet"
                ]
        },
        "wikibase-comment-update": "Item fan {{WBREPONAME}} bywurke",
@@ -15,5 +17,6 @@
        "wikibase-rc-wikibase-edit-letter": "D",
        "wikibase-rc-wikibase-edit-title": "Bewurking fan {{WBREPONAME}}",
        "wikibase-pageinfo-entity-id-none": "Gjin",
+       "wikibase-pageinfo-entity-usage-L": "Lebel: $1",
        "wikibase-otherprojects": "Oare projekten"
 }
diff --git a/extensions/Wikibase/client/i18n/gl.json 
b/extensions/Wikibase/client/i18n/gl.json
index 84db798..be3372a 100644
--- a/extensions/Wikibase/client/i18n/gl.json
+++ b/extensions/Wikibase/client/i18n/gl.json
@@ -110,5 +110,7 @@
        "notification-header-page-connection": "A páxina <strong>$3</strong> 
foi {{GENDER:$2|conectada}} a un elemento de {{WBREPONAME}} .",
        "notification-bundle-header-page-connection": "<strong>$3</strong> e 
{{PLURAL:$4|outra páxina|outras $4 páxinas|100=+99 outras páxinas}} foron 
{{GENDER:$2|conectadas}} a items de {{WBREPONAME}}.",
        "notification-link-text-view-item": "{{GENDER:$1|Ver}} elemento",
-       "notification-subject-page-connection": "Unha páxina de {{SITENAME}} 
que {{GENDER:$3|creaches}} foi {{GENDER:$2|conectada}} cun obxecto 
{{WBREPONAME}}"
+       "notification-subject-page-connection": "Unha páxina de {{SITENAME}} 
que {{GENDER:$3|creaches}} foi {{GENDER:$2|conectada}} cun obxecto 
{{WBREPONAME}}",
+       "unresolved-property-category": "Páxinas con propiedades non resoltas",
+       "unresolved-property-category-desc": "Esta categoría mostra páxinas que 
referencian propiedades {{WBREPONAME}} que non  se poden atopar polo seu 
identificador de propiedade nin pola súa etiqueta."
 }
diff --git a/extensions/Wikibase/client/i18n/qqq.json 
b/extensions/Wikibase/client/i18n/qqq.json
index 5c7d7a7..91f05e2 100644
--- a/extensions/Wikibase/client/i18n/qqq.json
+++ b/extensions/Wikibase/client/i18n/qqq.json
@@ -86,6 +86,12 @@
        "wikibase-rc-show-wikidata-pref": "Option in the recent changes section 
of preferences to show wikibase changes by default in recent changes.",
        "wikibase-rc-wikibase-edit-letter": "Very short form of \"'''wikidata 
edit'''\". Used in [[Special:RecentChanges]] and [[Special:Watchlist]].\n\nSee 
also:\n* {{msg-mw|Newpageletter}}\n* {{msg-mw|Minoreditletter}}\n* 
{{msg-mw|Boteditletter}}\n* {{msg-mw|Unpatrolledletter}}",
        "wikibase-rc-wikibase-edit-title": "Tooltip for 
{{msg-mw|wikibase-rc-wikibase-edit-letter}}.\n\nSee also:\n* 
{{msg-mw|Recentchanges-label-newpage}}\n* 
{{msg-mw|Recentchanges-label-minor}}\n* {{msg-mw|Recentchanges-label-bot}}\n* 
{{msg-mw|Recentchanges-label-unpatrolled}}\n{{Identical|Edit}}",
+       "wikibase-rcfilters-hide-wikibase-label": "Label for 'Wikidata edits' 
filter on ChangesList pages (such as RecentChanges)",
+       "wikibase-rcfilters-hide-wikibase-description": "Description for 
'Wikidata edits' filter on ChangesList pages (such as RecentChanges)",
+       "wikibase-rcfilters-hide-wikibase-conflicts-ores": "Tooltip shown when 
hovering over a 'Wikidata edits' filter tag, when a ORES filter is also 
selected.\n* 'Contribution quality' is based on 
{{msg-mw|Ores-rcfilters-damaging-title}}.\n* 'User intent' is based on 
{{msg-mw|Ores-rcfilters-goodfaith-title}}.",
+       "wikibase-rcfilters-hide-wikibase-conflicts-ores-global": "Message 
shown in the result area when both an ORES filter and the 'Wikidata edits' 
filter are selected.  This indicates that no results will be shown because 
propagated Wikidata edits do not have ORES scores available.\n\n* \"Wikidata 
edits\" is {{msg-mw|wikibase-rcfilters-hide-wikibase-label}}.\n* \"Contribution 
quality\" is based on {{msg-mw|Ores-rcfilters-damaging-title}}.\n* \"User 
intent\" is based on {{msg-mw|Ores-rcfilters-goodfaith-title}}.\n* \"Active 
Filters\" is based on {{msg-mw|rcfilters-activefilters}}.",
+       "wikibase-rcfilters-damaging-conflicts-hide-wikibase": "Tooltip shown 
when hovering over a 'Contribution quality predictions' filter tag, when the 
'Wikidata edits' filter is selected and there is a conflict.  Propagated 
Wikidata edits do not have ORES scores avaialble.  Parameters:\n* $1 - 
Comma-separated string of selected Type of Change filters, e.g. \"Wikidata 
edits\"\n* $2 - Count of selected Type of Change filters, for PLURAL",
+       "wikibase-rcfilters-goodfaith-conflicts-hide-wikibase": "Tooltip shown 
when hovering over a 'User intent predictions' filter tag, when the 'Wikidata 
edits' filter is selected and there is a conflict.  'Wikidata edits' are not 
scored by ORES.  Parameters:\n* $1 - Comma-separated string of selected Type of 
Change filters, e.g. \"Wikidata edits\"\n* $2 - Count of selected Type of 
Change filters, for PLURAL",
        "wikibase-replicationnote": "Note telling the user that it can take a 
few minutes until the made changes are visible on all wikis.\nPreceded by 
message {{msg-mw|Wikibase-linkitem-success-link}}",
        "wikibase-watchlist-show-changes-pref": "Option in the watchlist 
section of preferences to always show wikibase edits by default in the 
watchlist. Appears as a checkbox in the same list with options such as:\n* 
{{msg-mw|tog-watchdefault}}\n* {{msg-mw|tog-watchmoves}}\nAnd so on.",
        "wikibase-error-deserialize-error": "Generic error when invalid 
(undeserializable) data has been given.",
diff --git 
a/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
 
b/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
index 55460ba..2e0f963 100644
--- 
a/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
+++ 
b/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
@@ -2,9 +2,12 @@
 
 namespace Wikibase\Client\Hooks;
 
+use ChangesListBooleanFilter;
 use ChangesListSpecialPage;
+use ExtensionRegistry;
 use FormOptions;
 use IContextSource;
+use IDatabase;
 use MediaWiki\MediaWikiServices;
 use RequestContext;
 use User;
@@ -113,29 +116,26 @@
 
        /**
         * Modifies recent changes and watchlist options to show a toggle for 
Wikibase changes
-        * @see 
https://www.mediawiki.org/wiki/Manual:Hooks/ChangesListSpecialPageFilters
+        * @see 
https://www.mediawiki.org/wiki/Manual:Hooks/ChangesListSpecialPageStructuredFilters
         *
         * @param ChangesListSpecialPage $specialPage
-        * @param array &$filters
         *
         * @return bool
         */
-       public static function onChangesListSpecialPageFilters(
-               ChangesListSpecialPage $specialPage,
-               array &$filters
+       public static function onChangesListSpecialPageStructuredFilters(
+               ChangesListSpecialPage $specialPage
        ) {
                $hookHandler = self::getInstance(
                        $specialPage->getContext(),
                        $specialPage->getName()
                );
 
-               $hookHandler->addFilterIfEnabled( $filters );
+               $hookHandler->addFilterIfEnabled( $specialPage );
 
                return true;
        }
 
        /**
-        * Modifies watchlist and recent changes query to include external 
changes
         * @see 
https://www.mediawiki.org/wiki/Manual:Hooks/ChangesListSpecialPageQuery
         *
         * @param string $specialPageName
@@ -162,83 +162,109 @@
                        $specialPageName
                );
 
-               $conds = $hookHandler->addWikibaseConditions( $conds, $opts );
+               $hookHandler->addWikibaseConditionsIfFilterUnavailable( $conds 
);
 
                return true;
        }
 
-       /**
-        * @param array &$filters
-        */
-       public function addFilterIfEnabled( array &$filters ) {
-               if ( $this->hasWikibaseChangesEnabled() ) {
-                       $filterName = $this->getFilterName();
+       // This is separate so hasWikibaseChangesEnabled can be mocked
 
-                       // the toggle needs to be the inverse to invoke the 
inverse display status.
-                       // e.g. if Wikibase changes currently hidden, then when 
the user
-                       // clicks the toggle, then Wikibase changes are 
displayed.
-                       $filters[$filterName] = array(
-                               'msg' => 'wikibase-rc-hide-wikidata',
-                               'default' => 
!$this->hasWikibaseChangesDisplayed()
+       /**
+        * This is used to force-hide Wikibase changes if 
hasWikibaseChangesEnabled returns
+        * false.  The user will not even see the option in that case.
+        *
+        * @param array &$conds
+        */
+       protected function addWikibaseConditionsIfFilterUnavailable( array 
&$conds ) {
+               if ( !$this->hasWikibaseChangesEnabled() ) {
+                       // Force-hide if hasWikibaseChangesEnabled is false
+                       // The user-facing hideWikibase is handled by
+                       // ChangesListSpecialPageStructuredFilters and 
connected code.
+                       $this->addWikibaseConditions(
+                               $this->loadBalancer->getConnection( DB_REPLICA 
),
+                               $conds
                        );
                }
        }
 
        /**
-        * @param array &$conds
-        * @param FormOptions $opts
-        *
-        * @return array
+        * @param ChangesListSpecialPage $specialPage
         */
-       public function addWikibaseConditions( array &$conds, FormOptions $opts 
) {
-               if ( $this->shouldHideWikibaseChanges( $opts ) ) {
-                       $dbr = $this->loadBalancer->getConnection( DB_REPLICA );
-                       $conds[] = 'rc_source != ' . $dbr->addQuotes( 
RecentChangeFactory::SRC_WIKIBASE );
-                       $this->loadBalancer->reuseConnection( $dbr );
+       public function addFilterIfEnabled( ChangesListSpecialPage $specialPage 
) {
+               // The *user-facing* filter is only registered if external 
changes
+               // are enabled, and the user does not have enhanced recent 
changes.
+               //
+               // If the user-facing filter is not registered, it's always 
*hidden*.
+               // (See ChangesListSpecialPageQuery).
+               if ( $this->hasWikibaseChangesEnabled() ) {
+                       $this->addFilter( $specialPage );
                }
-
-               return $conds;
        }
 
        /**
-        * @param FormOptions $opts
-        *
-        * @return boolean
+        * @param ChangesListSpecialPage $specialPage
         */
-       private function shouldHideWikibaseChanges( FormOptions $opts ) {
-               if ( !$this->hasWikibaseChangesEnabled() ) {
-                       return true;
-               }
-
+       protected function addFilter( ChangesListSpecialPage $specialPage ) {
                $filterName = $this->getFilterName();
+               $changeTypeGroup = $specialPage->getFilterGroup( 'changeType' );
 
-               if ( !$opts->offsetExists( $filterName ) ) {
-                       return true;
+               $specialPage->getOutput()->addModules( 
'wikibase.client.jqueryMsg' );
+
+               $wikidataFilter = new ChangesListBooleanFilter( [
+                       'name' => $filterName,
+                       'group' => $changeTypeGroup,
+                       'priority' => -4,
+                       'label' => 'wikibase-rcfilters-hide-wikibase-label',
+                       'description' => 
'wikibase-rcfilters-hide-wikibase-description',
+                       'showHide' => 'wikibase-rc-hide-wikidata',
+                       // If the preference is enabled, then don't hide 
Wikidata edits
+                       'default' => !$this->hasShowWikibaseEditsPrefEnabled(),
+                       'queryCallable' => function ( $specialClassName, $ctx, 
$dbr, &$tables, &$fields,
+                               &$conds, &$query_options, &$join_conds ) {
+                               $this->addWikibaseConditions( $dbr, $conds );
+                       },
+                       'cssClassSuffix' => 'src-mw-wikibase',
+                       'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                               return $rc->getAttribute( 'rc_source' ) === 
RecentChangeFactory::SRC_WIKIBASE;
+                       }
+               ] );
+
+               $extensionRegistry = ExtensionRegistry::getInstance();
+
+               if ( $extensionRegistry->isLoaded( 'ORES' ) ) {
+                       $damagingGroup = $specialPage->getFilterGroup( 
'damaging' );
+                       $wikidataFilter->conflictsWith(
+                               $damagingGroup,
+                               
'wikibase-rcfilters-hide-wikibase-conflicts-ores-global',
+                               
'wikibase-rcfilters-hide-wikibase-conflicts-ores',
+                               
'wikibase-rcfilters-damaging-conflicts-hide-wikibase'
+                       );
+
+                       $goodfaithGroup = $specialPage->getFilterGroup( 
'goodfaith' );
+                       $wikidataFilter->conflictsWith(
+                               $goodfaithGroup,
+                               
'wikibase-rcfilters-hide-wikibase-conflicts-ores-global',
+                               
'wikibase-rcfilters-hide-wikibase-conflicts-ores',
+                               
'wikibase-rcfilters-goodfaith-conflicts-hide-wikibase'
+                       );
                }
+       }
 
-               return $opts->getValue( $filterName ) === true;
+       /**
+        * @param IDatabase $dbr
+        * @param array &$conds
+        */
+       public function addWikibaseConditions( IDatabase $dbr, array &$conds ) {
+               $conds[] = 'rc_source != ' . $dbr->addQuotes( 
RecentChangeFactory::SRC_WIKIBASE );
        }
 
        /**
         * @return bool
         */
-       private function hasWikibaseChangesEnabled() {
+       protected function hasWikibaseChangesEnabled() {
                // do not include wikibase changes for activated enhanced 
watchlist
                // since we do not support that format yet (T46222)
                return $this->showExternalChanges && 
!$this->isEnhancedChangesEnabled();
-       }
-
-       /**
-        * @return bool
-        */
-       private function hasWikibaseChangesDisplayed() {
-               if ( $this->request->getVal( 'action' ) === 'submit' ) {
-                       return !$this->request->getBool( $this->getFilterName() 
);
-               }
-
-               // if preference enabled, then Wikibase edits are included by 
default and
-               // the toggle default value needs to be the inverse to hide 
them, and vice versa.
-               return $this->hasShowWikibaseEditsPrefEnabled();
        }
 
        /**
diff --git 
a/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php 
b/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php
new file mode 100644
index 0000000..f01a177
--- /dev/null
+++ b/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php
@@ -0,0 +1,129 @@
+<?php
+
+namespace Wikibase\Client\Hooks;
+
+use Language;
+use Message;
+use Parser;
+use ResourceLoaderContext;
+use Wikibase\SettingsArray;
+use Wikibase\Client\WikibaseClient;
+
+/**
+ * File defining hooks related to magic words
+ * @license GPL-2.0+
+ */
+class MagicWordHookHandlers {
+       /**
+        * @var SettingsArray $settings
+        */
+       protected $settings;
+
+       /**
+        * WikibaseClient $wikibaseClient
+        */
+       public function __construct( SettingsArray $settings ) {
+               $this->settings = $settings;
+       }
+
+       /**
+        * @return self
+        */
+       public static function newFromGlobalState() {
+               $client = WikibaseClient::getDefaultInstance();
+               return new self( $client->getSettings() );
+       }
+
+       /**
+       * Register the magic word.
+        *
+        * @param string[] &$aCustomVariableIds
+        *
+        * @return bool
+        */
+       public static function onMagicWordwgVariableIDs( &$aCustomVariableIds ) 
{
+               $aCustomVariableIds[] = 'noexternallanglinks';
+               $aCustomVariableIds[] = 'wbreponame';
+
+               return true;
+       }
+
+       /**
+        * Gets the user-facing repository name.
+        *
+        * This can either be a message's text, or the raw value from
+        * settings if that is not a message
+        *
+        * @param Language $lang Language to get text in
+        */
+       protected function getRepoName( Language $lang ) {
+               $repoSiteName = $this->settings->getSetting( 'repoSiteName' );
+
+               $message = new Message( $repoSiteName );
+               $message->inLanguage( $lang );
+
+               if ( $message->exists() ) {
+                       return $message->parse();
+               } else {
+                       return $repoSiteName;
+               }
+       }
+
+       /**
+        * Static handler for the ParserGetVariableValueSwitch hook
+        *
+        * @param Parser &$parser
+        * @param array &$cache
+        * @param string &$magicWordId
+        * @param string &$ret
+        *
+        * @return bool
+        */
+       public static function onParserGetVariableValueSwitch( Parser &$parser, 
&$cache, &$magicWordId, &$ret ) {
+               $handler = self::newFromGlobalState();
+               $handler->doParserGetVariableValueSwitch( $parser, $cache, 
$magicWordId, $ret );
+       }
+
+       /**
+        * Apply the magic word.
+        *
+        * @param Parser &$parser
+        * @param array &$cache
+        * @param string &$magicWordId
+        * @param string &$ret
+        *
+        * @return bool
+        */
+       protected function doParserGetVariableValueSwitch( Parser &$parser, 
&$cache, &$magicWordId, &$ret ) {
+               if ( $magicWordId === 'noexternallanglinks' ) {
+                       NoLangLinkHandler::handle( $parser, '*' );
+               } elseif ( $magicWordId === 'wbreponame' ) {
+                       $lang = $parser->getTargetLanguage();
+                       $ret = $this->getRepoName( $lang );
+               }
+
+               return true;
+       }
+
+       /**
+        * Static handler for the ResourceLoaderJqueryMsgModuleMagicWords hook
+        *
+        * @param array $magicWords
+        */
+       public static function onResourceLoaderJqueryMsgModuleMagicWords( 
ResourceLoaderContext $context, array &$magicWords ) {
+               $handler = self::newFromGlobalState();
+               $handler->doResourceLoaderJqueryMsgModuleMagicWords( $context, 
$magicWords );
+       }
+
+       /**
+        * Adds magic word constant(s) for use by jQueryMsg
+        *
+        * @param array $magicWords Associative array mapping all-caps magic
+        *  words to string values
+        */
+       protected function doResourceLoaderJqueryMsgModuleMagicWords( 
ResourceLoaderContext $context, array &$magicWords ) {
+               $lang = Language::factory( $context->getLanguage() );
+               $magicWords['WBREPONAME'] = $this->getRepoName( $lang );
+       }
+
+}
diff --git a/extensions/Wikibase/client/includes/Modules/SiteModule.php 
b/extensions/Wikibase/client/includes/Modules/SiteModule.php
index 2973094..72cdeb6 100644
--- a/extensions/Wikibase/client/includes/Modules/SiteModule.php
+++ b/extensions/Wikibase/client/includes/Modules/SiteModule.php
@@ -4,9 +4,11 @@
 
 use FormatJson;
 use MediaWikiSite;
+use ResourceLoader;
 use ResourceLoaderContext;
 use ResourceLoaderModule;
 use Wikibase\Client\WikibaseClient;
+use Xml;
 
 /**
  * Provides information about the current (client) site
@@ -42,7 +44,11 @@
                        );
                }
 
-               return 'mediaWiki.config.set( "wbCurrentSite", ' . 
FormatJson::encode( $currentSite ) . ' );';
+               return Xml::encodeJsCall(
+                       'mw.config.set',
+                       [ 'wbCurrentSite', $currentSite ],
+                       ResourceLoader::inDebugMode()
+               );
        }
 
 }
diff --git a/extensions/Wikibase/client/includes/WikibaseClient.php 
b/extensions/Wikibase/client/includes/WikibaseClient.php
index 3bb382a..c6aed2d 100644
--- a/extensions/Wikibase/client/includes/WikibaseClient.php
+++ b/extensions/Wikibase/client/includes/WikibaseClient.php
@@ -413,6 +413,13 @@
        }
 
        /**
+        * @return array[]
+        */
+       private static function getDefaultEntityTypes() {
+               return require __DIR__ . 
'/../../lib/WikibaseLib.entitytypes.php';
+       }
+
+       /**
         * @return TermBuffer
         */
        public function getTermBuffer() {
@@ -640,17 +647,17 @@
         * @return WikibaseClient
         */
        private static function newInstance() {
-               global $wgWBClientSettings, $wgWBClientDataTypes, 
$wgWBClientEntityTypes;
+               global $wgWBClientSettings, $wgWBClientDataTypes;
 
-               if ( !is_array( $wgWBClientDataTypes ) || !is_array( 
$wgWBClientEntityTypes ) ) {
-                       throw new MWException( '$wgWBClientDataTypes and 
$wgWBClientEntityTypes must be arrays. '
+               if ( !is_array( $wgWBClientDataTypes ) ) {
+                       throw new MWException( '$wgWBClientDataTypes must be 
array. '
                                . 'Maybe you forgot to require 
WikibaseClient.php in your LocalSettings.php?' );
                }
 
                $dataTypeDefinitions = $wgWBClientDataTypes;
                Hooks::run( 'WikibaseClientDataTypes', array( 
&$dataTypeDefinitions ) );
 
-               $entityTypeDefinitions = $wgWBClientEntityTypes;
+               $entityTypeDefinitions = self::getDefaultEntityTypes();
                Hooks::run( 'WikibaseClientEntityTypes', array( 
&$entityTypeDefinitions ) );
 
                $settings = new SettingsArray( $wgWBClientSettings );
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
index 2a3dfe4..aa51402 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
@@ -2,10 +2,12 @@
 
 namespace Wikibase\Client\Tests\Hooks;
 
+use ExtensionRegistry;
 use FauxRequest;
 use FormOptions;
 use IDatabase;
 use SpecialPageFactory;
+use TestingAccessWrapper;
 use User;
 use Wikibase\Client\Hooks\ChangesListSpecialPageHookHandlers;
 use Wikimedia\Rdbms\LoadBalancer;
@@ -18,35 +20,90 @@
  *
  * @license GPL-2.0+
  * @author Katie Filbert < [email protected] >
+ * @author Matthew Flaschen < [email protected] >
  */
 class ChangesListSpecialPageHookHandlersTest extends 
\PHPUnit_Framework_TestCase {
+       protected $extensionRegistry;
 
-       public function testOnChangesListSpecialPageFilters() {
+       protected $oldExtensionRegistryLoaded;
+
+       public function setUp() {
+               parent::setUp();
+
+               $this->extensionRegistry = TestingAccessWrapper::newFromObject(
+                       ExtensionRegistry::getInstance()
+               );
+
+               $this->oldExtensionRegistryLoaded = 
$this->extensionRegistry->loaded;
+
+               // Forget about the other extensions.  Although ORES may be 
loaded,
+               // since this is only unit-testing *our* listener, ORES's 
listener
+               // hasn't run, so for all intents and purposes it's not loaded.
+               $this->extensionRegistry->loaded = [ 'Wikibase' ];
+       }
+
+       public function tearDown() {
+               parent::tearDown();
+
+               $this->extensionRegistry->loaded = 
$this->oldExtensionRegistryLoaded;
+       }
+
+       public function testAddFilter() {
                $user = $this->getUser(
                        array(
-                               array( 'usernewrc' => 0 )
+                               array( 'usenewrc' => 0 )
                        )
                );
 
                /** @var \ChangesListSpecialPage $specialPage */
                $specialPage = SpecialPageFactory::getPage( 'Recentchanges' );
+
+               $wrappedSpecialPage = TestingAccessWrapper::newFromObject(
+                       $specialPage
+               );
+
+               $hookHandler = TestingAccessWrapper::newFromObject( new 
ChangesListSpecialPageHookHandlers(
+                       $this->getRequest( array() ),
+                       $this->getUser( [] ),
+                       $this->getLoadBalancer(),
+                       'Recentchanges',
+                       true
+               ) );
+
                $specialPage->getContext()->setUser( $user );
 
-               $filters = array();
-
-               
ChangesListSpecialPageHookHandlers::onChangesListSpecialPageFilters(
-                       $specialPage,
-                       $filters
+               // Register built-in filters, since the Wikidata one uses its 
group
+               $wrappedSpecialPage->registerFiltersFromDefinitions(
+                       $wrappedSpecialPage->filterGroupDefinitions
                );
 
-               $expected = array(
-                       'hideWikibase' => array(
-                               'msg' => 'wikibase-rc-hide-wikidata',
-                               'default' => true
-                       )
+               $hookHandler->addFilter(
+                       $specialPage
                );
 
-               $this->assertSame( $expected, $filters );
+               $changeType = $specialPage->getFilterGroup( 'changeType' );
+               $filter = $changeType->getFilter( 'hideWikibase' );
+
+               // I could do all of getJsData(), but that would make it 
brittle to
+               // unrelated changes.
+               $expectedFields = [
+                       'label' => 'wikibase-rcfilters-hide-wikibase-label',
+                       'description' => 
'wikibase-rcfilters-hide-wikibase-description',
+                       'showHide' => 'wikibase-rc-hide-wikidata',
+                       'default' => true,
+               ];
+
+               $actualFields = [
+                       'label' => $filter->getLabel(),
+                       'description' => $filter->getDescription(),
+                       'showHide' => $filter->getShowHide(),
+                       'default' => $filter->getDefault(),
+               ];
+
+               $this->assertSame(
+                       $expectedFields,
+                       $actualFields
+               );
        }
 
        public function testOnChangesListSpecialPageQuery() {
@@ -73,86 +130,138 @@
        }
 
        /**
-        * @dataProvider addWikibaseConditionsProvider
+        * @dataProvider addWikibaseConditionsIfFilterUnavailableProvider
         */
-       public function testAddWikibaseConditions(
-               array $expected,
-               array $userOptions,
-               $optionDefault
-       ) {
+       public function testAddWikibaseConditionsIfFilterUnavailable( 
$expectedAddConditionsCalls, $hasWikibaseChangesEnabled ) {
+               $hookHandlerMock = $this->getMockBuilder( 
ChangesListSpecialPageHookHandlers::class )
+                       ->setConstructorArgs(
+                               [
+                                       $this->getRequest( array() ),
+                                       $this->getUser( [] ),
+                                       $this->getLoadBalancer(),
+                                       'Recentchanges',
+                                       true
+                               ]
+                       )
+                       ->setMethods( [
+                                       'hasWikibaseChangesEnabled',
+                                       'addWikibaseConditions'
+                               ] )
+                       ->getMock();
+
+               $hookHandlerMock->method( 'hasWikibaseChangesEnabled' )->will(
+                       $this->returnValue( $hasWikibaseChangesEnabled )
+               );
+
+               $hookHandlerMock->expects( $this->exactly( 
$expectedAddConditionsCalls ) )
+                       ->method( 'addWikibaseConditions' )
+                       ->with(
+                               $this->isInstanceOf( IDatabase::class ),
+                               $this->equalTo( [] )
+                       );
+
+               $conds = [];
+
+               $hookHandlerMock = TestingAccessWrapper::newFromObject( 
$hookHandlerMock );
+               $hookHandlerMock->__call( 
'addWikibaseConditionsIfFilterUnavailable', [ &$conds ] );
+       }
+
+       public function addWikibaseConditionsIfFilterUnavailableProvider() {
+               return [
+                       [
+                               0,
+                               true
+                       ],
+
+                       [
+                               1,
+                               false
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider getOptionNameProvider
+        */
+       public function testGetOptionName( $expected, $pageName ) {
+               $hookHandler = TestingAccessWrapper::newFromObject( new 
ChangesListSpecialPageHookHandlers(
+                       $this->getRequest( array() ),
+                       $this->getUser( [] ),
+                       $this->getLoadBalancer(),
+                       $pageName,
+                       true
+               ) );
+
+               $this->assertSame(
+                       $expected,
+                       $hookHandler->getOptionName()
+               );
+       }
+
+       public function getOptionNameProvider() {
+               return [
+                       [
+                               'wlshowwikibase',
+                               'Watchlist'
+                       ],
+
+                       [
+                               'rcshowwikidata',
+                               'Recentchanges',
+                       ],
+
+                       [
+                               'rcshowwikidata',
+                               'Recentchangeslinked'
+                       ],
+               ];
+       }
+
+       public function testAddWikibaseConditions() {
                $hookHandler = new ChangesListSpecialPageHookHandlers(
                        $this->getRequest( array() ),
-                       $this->getUser( $userOptions ),
+                       $this->getUser( [] ),
                        $this->getLoadBalancer(),
                        'Watchlist',
                        true
                );
 
-               $opts = new FormOptions();
-               $opts->add( 'hideWikibase', $optionDefault );
-
                $conds = array();
-               $hookHandler->addWikibaseConditions( $conds, $opts );
+               $hookHandler->addWikibaseConditions(
+                       wfGetDB( DB_REPLICA ),
+                       $conds
+               );
+
+               $expected = [ "rc_source != 'wb'" ];
 
                $this->assertEquals( $expected, $conds );
        }
 
-       public function addWikibaseConditionsProvider() {
-               return array(
-                       array(
-                               array(),
-                               array( 'usenewrc' => 0, 'wlshowwikibase' => 1 ),
-                               false
-                       ),
-                       array(
-                               array( "rc_source != 'wb'" ),
-                               array( 'usenewrc' => 0 ),
-                               true
-                       )
-               );
-       }
-
-       public function testAddWikibaseConditions_wikibaseChangesDisabled() {
-               $hookHandler = new ChangesListSpecialPageHookHandlers(
-                       $this->getRequest( array() ),
-                       $this->getUser( array( 'usenewrc' => 1 ) ),
-                       $this->getLoadBalancer(),
-                       'Watchlist',
-                       true
-               );
-
-               $opts = new FormOptions();
-
-               $conds = array();
-               $hookHandler->addWikibaseConditions( $conds, $opts );
-
-               $this->assertEquals( array( "rc_source != 'wb'" ), $conds );
-       }
-
        /**
-        * @dataProvider filterNotAddedWhenUsingEnhancedChangesProvider
+        * @dataProvider 
hasWikibaseChangesEnabledWhenUsingEnhancedChangesProvider
         */
-       public function testFilterNotAddedWhenUsingEnhancedChanges(
+       public function testHasWikibaseChangesEnabledWhenUsingEnhancedChanges(
                array $requestParams,
                array $userOptions,
                $pageName,
                $message
        ) {
-               $hookHandler = new ChangesListSpecialPageHookHandlers(
+               $hookHandler = TestingAccessWrapper::newFromObject( new 
ChangesListSpecialPageHookHandlers(
                        $this->getRequest( $requestParams ),
                        $this->getUser( $userOptions ),
                        $this->getLoadBalancer(),
                        $pageName,
                        true
+               ) );
+
+               $this->assertSame(
+                       false,
+                       $hookHandler->hasWikibaseChangesEnabled(),
+                       $message
                );
-
-               $filters = array();
-               $hookHandler->addFilterIfEnabled( $filters );
-
-               $this->assertSame( array(), $filters, $message );
        }
 
-       public function filterNotAddedWhenUsingEnhancedChangesProvider() {
+       public function 
hasWikibaseChangesEnabledWhenUsingEnhancedChangesProvider() {
                return array(
                        array(
                                array(),
@@ -194,37 +303,30 @@
        }
 
        /**
-        * @dataProvider filter_withoutShowWikibaseEditsByDefaultPreference
+        * @dataProvider 
hasWikibaseChangesEnabled_withoutShowWikibaseEditsByDefaultPreferenceProvider
         */
-       public function testFilter_withoutShowWikibaseEditsByDefaultPreference(
+       public function 
testHasWikibaseChangesEnabled_withoutShowWikibaseEditsByDefaultPreference(
                array $requestParams,
                array $userOptions,
                $expectedFilterName,
                $expectedToggleDefault,
                $specialPageName
        ) {
-               $hookHandler = new ChangesListSpecialPageHookHandlers(
+               $hookHandler = TestingAccessWrapper::newFromObject( new 
ChangesListSpecialPageHookHandlers(
                        $this->getRequest( $requestParams ),
                        $this->getUser( $userOptions ),
                        $this->getLoadBalancer(),
                        $specialPageName,
                        true
+               ) );
+
+               $this->assertSame(
+                       true,
+                       $hookHandler->hasWikibaseChangesEnabled()
                );
-
-               $filters = array();
-               $hookHandler->addFilterIfEnabled( $filters );
-
-               $expected = array(
-                       $expectedFilterName => array(
-                               'msg' => 'wikibase-rc-hide-wikidata',
-                               'default' => $expectedToggleDefault
-                       )
-               );
-
-               $this->assertSame( $expected, $filters );
        }
 
-       public function filter_withoutShowWikibaseEditsByDefaultPreference() {
+       public function 
hasWikibaseChangesEnabled_withoutShowWikibaseEditsByDefaultPreferenceProvider() 
{
                return array(
                        array(
                                array(),
@@ -272,37 +374,30 @@
        }
 
        /**
-        * @dataProvider filter_withShowWikibaseEditsByDefaultPreference
+        * @dataProvider 
hasWikibaseChangesEnabled_withShowWikibaseEditsByDefaultPreferenceProvider
         */
-       public function testFilter_withShowWikibaseEditsByDefaultPreference(
+       public function 
testHasWikibaseChangesEnabled_withShowWikibaseEditsByDefaultPreference(
                array $requestParams,
                array $userOptions,
                $expectedFilterName,
                $expectedToggleDefault,
                $specialPageName
        ) {
-               $hookHandler = new ChangesListSpecialPageHookHandlers(
+               $hookHandler = TestingAccessWrapper::newFromObject( new 
ChangesListSpecialPageHookHandlers(
                        $this->getRequest( $requestParams ),
                        $this->getUser( $userOptions ),
                        $this->getLoadBalancer(),
                        $specialPageName,
                        true
+               ) );
+
+               $this->assertSame(
+                       true,
+                       $hookHandler->hasWikibaseChangesEnabled()
                );
-
-               $filters = array();
-               $hookHandler->addFilterIfEnabled( $filters );
-
-               $expected = array(
-                       $expectedFilterName => array(
-                               'msg' => 'wikibase-rc-hide-wikidata',
-                               'default' => $expectedToggleDefault
-                       )
-               );
-
-               $this->assertSame( $expected, $filters );
        }
 
-       public function filter_withShowWikibaseEditsByDefaultPreference() {
+       public function 
hasWikibaseChangesEnabled_withShowWikibaseEditsByDefaultPreferenceProvider() {
                return array(
                        array(
                                array(),
@@ -343,28 +438,28 @@
        }
 
        /**
-        * @dataProvider 
filterNotAddedWhenExternalRecentChangesDisabledProvider() {
+        * @dataProvider 
hasWikibaseChangesEnabledWhenExternalRecentChangesDisabledProvider() {
         */
-       public function testFilterNotAddedWhenExternalRecentChangesDisabled( 
$specialPageName ) {
-               $hookHandler = new ChangesListSpecialPageHookHandlers(
+       public function 
testHasWikibaseChangesEnabledWhenExternalRecentChangesDisabled( 
$specialPageName ) {
+               $hookHandler = TestingAccessWrapper::newFromObject( new 
ChangesListSpecialPageHookHandlers(
                        $this->getRequest( array() ),
                        $this->getUser( array( 'usenewrc' => 0 ) ),
                        $this->getLoadBalancer(),
                        $specialPageName,
-                       false
+                       /* $showExternalChanges= */ false
+               ) );
+
+               $this->assertSame(
+                       false,
+                       $hookHandler->hasWikibaseChangesEnabled()
                );
-
-               $filters = array();
-               $hookHandler->addFilterIfEnabled( $filters );
-
-               $this->assertSame( array(), $filters );
        }
 
-       public function 
filterNotAddedWhenExternalRecentChangesDisabledProvider() {
+       public function 
hasWikibaseChangesEnabledWhenExternalRecentChangesDisabledProvider() {
                return array(
                        array( 'Watchlist' ),
-                       array( 'RecentChanges' ),
-                       array( 'RecentChangesLinked' )
+                       array( 'Recentchanges' ),
+                       array( 'Recentchangeslinked' )
                );
        }
 
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php
new file mode 100644
index 0000000..7436e53
--- /dev/null
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php
@@ -0,0 +1,105 @@
+<?php
+
+namespace Wikibase\Client\Tests\Hooks;
+
+use Language;
+use Wikibase\Client\Hooks\MagicWordHookHandlers;
+use MediaWiki\MediaWikiServices;
+use MediaWikiTestCase;
+use Parser;
+use Wikibase\SettingsArray;
+use Title;
+use TestingAccessWrapper;
+use Wikibase\Client\WikibaseClient;
+
+/**
+ * @covers Wikibase\Client\Hooks\MagicWordHookHandlers
+ *
+ * @group WikibaseClient
+ * @group Wikibase
+ *
+ * @license GPL-2.0+
+ * @author Matthew Flaschen < [email protected] >
+ */
+class MagicWordHookHandlersTest extends MediaWikiTestCase {
+
+       /**
+        * @dataProvider provideGetRepoName
+        */
+       public function testGetRepoName( $expected, $langCode, $siteName ) {
+               $settings = new SettingsArray();
+               $settings->setSetting( 'repoSiteName', $siteName );
+
+               $handler = TestingAccessWrapper::newFromObject(
+                       new MagicWordHookHandlers( $settings )
+               );
+
+               $actual = $handler->getRepoName(
+                       Language::factory( $langCode )
+               );
+
+               $this->assertEquals(
+                       $expected,
+                       $actual
+               );
+       }
+
+       // I looked at mocking the messages, but MessageCache
+       // is not in ServiceWiring (yet), so these are real messsages,
+       // except non-existent-message to test that feature.
+
+       public function provideGetRepoName() {
+               return [
+                       [
+                               'Client for the Wikibase extension',
+                               'en',
+                               'wikibase-client-desc',
+                       ],
+
+                       [
+                               'Cliente para la extensión Wikibase',
+                               'es',
+                               'wikibase-client-desc',
+                       ],
+
+                       [
+                               'non-existent-message',
+                               'en',
+                               'non-existent-message',
+                       ],
+               ];
+       }
+
+       // TODO: Test noexternallanglinks
+
+       public function testDoParserGetVariableValueSwitch() {
+               $parser = $this->getMockBuilder( Parser::class )
+                       ->getMock();
+
+               // Configure the stub.
+               $parser->method( 'getTargetLanguage' )
+                       ->willReturn( Language::factory( 'en' ) );
+
+               $ret = null;
+
+               $settings = new SettingsArray();
+               $settings->setSetting( 'repoSiteName', 'wikibase-client-desc' );
+
+               $handler = TestingAccessWrapper::newFromObject(
+                       new MagicWordHookHandlers( $settings )
+               );
+
+               $cache = [];
+               $word = 'wbreponame';
+               call_user_func_array(
+                       [ $handler, 'doParserGetVariableValueSwitch' ],
+                       [ &$parser, &$cache, &$word, &$ret ]
+               );
+
+               $this->assertEquals(
+                       'Client for the Wikibase extension',
+                       $ret
+               );
+       }
+
+}
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php 
b/extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
index 4567053..1353eea 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
@@ -29,8 +29,8 @@
        public function testGetScript() {
                $module = new SiteModule();
                $script = $module->getScript( $this->getContext() );
-               $this->assertStringStartsWith( 'mediaWiki.config.set( 
"wbCurrentSite", ', $script );
-               $this->assertStringEndsWith( ' );', $script );
+               $this->assertStringStartsWith( 
'mw.config.set("wbCurrentSite",', $script );
+               $this->assertStringEndsWith( ');', $script );
        }
 
 }
diff --git a/extensions/Wikibase/lib/WikibaseLib.entitytypes.php 
b/extensions/Wikibase/lib/WikibaseLib.entitytypes.php
index 623549a..62f2902 100644
--- a/extensions/Wikibase/lib/WikibaseLib.entitytypes.php
+++ b/extensions/Wikibase/lib/WikibaseLib.entitytypes.php
@@ -1,9 +1,7 @@
 <?php
 
 /**
- * Definition of entity types for use with Wikibase.
- * The array returned by the code below is supposed to be merged into 
$wgWBRepoEntityTypes
- * resp. $wgWBClientEntityTypes.
+ * Definition of base entity types for use with Wikibase.
  *
  * @note: When adding entity types here, also add the corresponding 
information to
  * repo/WikibaseRepo.entitytypes.php
diff --git a/extensions/Wikibase/lib/i18n/gl.json 
b/extensions/Wikibase/lib/i18n/gl.json
index b061923..16cb328 100644
--- a/extensions/Wikibase/lib/i18n/gl.json
+++ b/extensions/Wikibase/lib/i18n/gl.json
@@ -76,6 +76,7 @@
        "datatypes-type-wikibase-item": "Elemento",
        "datatypes-type-wikibase-property": "Propiedade",
        "datatypes-type-commonsMedia": "Ficheiro multimedia de Commons",
+       "datatypes-type-geo-shape": "Forma xeográfica",
        "datatypes-type-external-id": "Identificador externo",
        "version-wikibase": "Wikibase",
        "wikibase-time-precision-Gannum": "$1 mil millóns de anos EC",
diff --git a/extensions/Wikibase/repo/Wikibase.php 
b/extensions/Wikibase/repo/Wikibase.php
index 322d141..548aeef 100644
--- a/extensions/Wikibase/repo/Wikibase.php
+++ b/extensions/Wikibase/repo/Wikibase.php
@@ -76,7 +76,7 @@
        global $wgExtensionMessagesFiles, $wgMessagesDirs;
        global $wgAPIModules, $wgAPIListModules, $wgSpecialPages, $wgHooks;
        global $wgWBRepoSettings, $wgResourceModules, $wgValueParsers, 
$wgJobClasses;
-       global $wgWBRepoDataTypes, $wgWBRepoEntityTypes;
+       global $wgWBRepoDataTypes;
 
        $wgExtensionCredits['wikibase'][] = array(
                'path' => __DIR__,
@@ -104,17 +104,6 @@
        // constants
        define( 'CONTENT_MODEL_WIKIBASE_ITEM', "wikibase-item" );
        define( 'CONTENT_MODEL_WIKIBASE_PROPERTY', "wikibase-property" );
-
-       // Registry and definition of entity types
-       $wgWBRepoEntityTypes = require __DIR__ . 
'/../lib/WikibaseLib.entitytypes.php';
-
-       $repoEntityTypes = require __DIR__ . '/WikibaseRepo.entitytypes.php';
-
-       // merge WikibaseRepo.entitytypes.php into $wgWBRepoEntityTypes
-       foreach ( $repoEntityTypes as $type => $repoDef ) {
-               $baseDef = isset( $wgWBRepoEntityTypes[$type] ) ? 
$wgWBRepoEntityTypes[$type] : array();
-               $wgWBRepoEntityTypes[$type] = array_merge( $baseDef, $repoDef );
-       }
 
        // rights
        // names should be according to other naming scheme
diff --git a/extensions/Wikibase/repo/i18n/gl.json 
b/extensions/Wikibase/repo/i18n/gl.json
index 8ed1869..6c90fcf 100644
--- a/extensions/Wikibase/repo/i18n/gl.json
+++ b/extensions/Wikibase/repo/i18n/gl.json
@@ -60,6 +60,7 @@
        "wikibase-diffview-description": "descrición",
        "wikibase-diffview-link": "ligazóns",
        "wikibase-diffview-link-name": "nome",
+       "wikibase-diffview-link-badges": "identificacións",
        "wikibase-sitelink-site-edit-placeholder": "wiki",
        "wikibase-sitelink-page-edit-placeholder": "páxina",
        "wikibase-alias-edit-placeholder": "escriba un pseudónimo",
@@ -124,8 +125,14 @@
        "wikibase-validator-label-with-description-conflict": "O elemento $3 xa 
ten a etiqueta \"$1\" asociada ao código de lingua $2, co mesmo texto de 
descrición.",
        "wikibase-validator-label-no-entityid": "A etiqueta non pode ser un 
identificador de entidade válido.",
        "wikibase-validator-illegal-file-chars": "Os nomes de ficheiro non 
poden levar caracteres como comas ou barras inclinadas. Por favor, engada só o 
nome despois de \"File:\".",
+       "wikibase-validator-illegal-geo-shape-title": "O valor debe comezar con 
\"Data:\" e rematar con \".map\". Adicionalmente o título non debería conter 
caracteres como coma, # ou a barra vertical(|).",
        "wikibase-validator-no-such-media": "O ficheiro \"$1\" non existe en 
[https://commons.wikimedia.org/ Wikimedia Commons].",
+       "wikibase-validator-no-such-sitelink": "Non se puido atopar a ligazón 
de sitio a \"$1\" ó tentar editar identificacións.",
+       "wikibase-validator-page-not-exists": "A páxina \"$1\" non existe.",
        "wikibase-validator-not-a-language": "\"$1\" non é un código de lingua 
coñecido.",
+       "wikibase-item-reference-edit-placeholder": "Introduza o identificador 
do elemento, por exemplo, Q10",
+       "wikibase-item-reference-edit-invalid-format": "O identificador de 
elemento introducido ten un formato non válido",
+       "wikibase-item-reference-edit-nonexistent-item": "O elemento con este 
identificador non existe",
        "wikibase-wikibaserepopage-not-itemid": "\"$1\" non é un identificador 
de elemento válido.",
        "wikibase-wikibaserepopage-invalid-langcode": "Descoñécese o código de 
lingua \"$1\". Utilice un código de lingua coñecido para o sistema, como 
\"gl\".",
        "wikibase-wikibaserepopage-invalid-id": "O sistema descoñece o ID 
\"$1\". Utilice un identificador de entidade válido.",
@@ -166,6 +173,7 @@
        "wikibase-newproperty-fieldset": "Crear unha nova propiedade",
        "wikibase-newproperty-datatype": "Tipo de datos:",
        "wikibase-newproperty-invalid-datatype": "O tipo de datos especificado 
non é válido.",
+       "wikibase-newproperty-insufficient-data": "Necesita indicar polo menos 
a etiqueta, a descrición ou os alias.",
        "wikibase-description-helppage": "Help:Descricións",
        "wikibase-label-helppage": "Help:Etiquetas",
        "special-newitem": "Crear un novo elemento",
@@ -175,6 +183,7 @@
        "wikibase-newitem-page": "Nome da primeira páxina ligada",
        "wikibase-newitem-no-external-page": "A páxina \"$2\" non puido 
atoparse en \"$1\".",
        "wikibase-newitem-not-recognized-siteid": "Non se recoñeceu o 
identificador de sitio proporcionado.",
+       "wikibase-newitem-insufficient-data": "Necesita indicar polo menos a 
etiqueta, a descrición ou os alias.",
        "wikibase-newentity-language": "Lingua:",
        "wikibase-newentity-label": "Etiqueta:",
        "wikibase-newentity-description": "Descrición:",
@@ -222,6 +231,7 @@
        "wikibase-mergeitems-toid": "O identificador co que fusionar",
        "wikibase-mergeitems-submit": "Fusionar os elementos",
        "wikibase-mergeitems-success": "$1 fusionouse en $3 e redirixida.",
+       "wikibase-itemmerge-redirect": "Estos elementos poderían estar xa 
fusionados.",
        "wikibase-itemmerge-missing-parameter": "Entrada incompleta.",
        "wikibase-itemmerge-not-item": "A entidade especificada non é un 
elemento.",
        "wikibase-itemmerge-failed-save": "Erro ó gardar o elemento.",
@@ -283,6 +293,10 @@
        "wikibase-entitydata-storage-error": "Erro ó cargar a entidade $1.",
        "wikibase-entitydata-title": "Datos da entidade",
        "wikibase-entitydata-text": "Esta páxina proporciona unha interface de 
datos ligados a valores de entidade. Achegue o identificador da entidade no 
enderezo URL, utilizando a sintaxe das subpáxinas.\n*A aplicación de 
negociación de contido baséase na cabeceira de aceptación do seu cliente. Isto 
significa que o dato da entidade será proporcionado no formato preferido polo 
seu cliente. Para un navegador web, isto será en HTML, facendo que o seu 
navegador sexa redireccionado a unha páxina de entidade normal.\n* Vostede pode 
solicitar explícitamente un formato de dato específico engadindo a extensión de 
ficheiro axeitada ó identificador de entidade: Q23.json devolverá os datos no 
formato JSON, Q23.ttl devolverá os datos en formato RDF/Turtle, e así con 
todos.",
+       "special-entitypage": "Páxina de entidade",
+       "wikibase-entitypage-title": "Páxina de entidade",
+       "wikibase-entitypage-text": "Esta páxina redirixe á páxina de entidade 
do repositorio á que pertence. Por favor, proporcione o identificador de 
entidade na URL, usando a sintaxe dunha subpáxina.",
+       "wikibase-entitypage-bad-id": "Identificador non válido: $1.",
        "special-redirectentity": "Redirixir unha entidade",
        "wikibase-redirectentity-success": "$1 foi redirixida a $2.",
        "wikibase-redirectentity-fromid": "O identificador desde o que 
redirixir",
@@ -315,6 +329,8 @@
        "wikibase-listdatatypes-commonsmedia-body": "Ligazón cara a ficheiros 
da Wikimedia Commons. Cando se insire un valor, realizarase unha procura no 
espazo de nomes \"Ficheiro\" de Commons para buscar ficheiros coincidentes.",
        "wikibase-listdatatypes-globe-coordinate-head": "Coordenadas do globo",
        "wikibase-listdatatypes-globe-coordinate-body": "Datos literais para 
unha posición xeográfica dada como un par latitude-lonxitude en GMS ou graos 
decimais do corpo estelar especificado. Por defecto, é \"Terra\" e logo 
\"WGS84\". Engade unha resolución e un rango.\n* latitude – primeira parte 
implícita (float, dms, dm, dd) da cadea de coordenadas; a dirección achégase 
mediante o signo en prefixo ou o sufixo N/S\n* longitude – segunda parte 
implícita (float, dms, dm, dd) da cadea de coordenadas; a dirección achégase 
mediante o signo en prefixo ou o sufixo E/W\n* globe – valor de datos explícito 
(?), dado como un corpo estelar; por defecto a Terra 
\"http://www.wikidata.org/entity/Q2\"\n* precision - precisión numérica das 
coordenadas",
+       "wikibase-listdatatypes-geo-shape-head": "Forma xeográfica",
+       "wikibase-listdatatypes-geo-shape-body": "Ligazón ós datos de mapa 
xeográfico almacenados en Wikimedia Commons (ou outra wiki configurada). 
Consulte \"https://www.mediawiki.org/wiki/Help:Map_Data\"; para atopar máis 
documentación sobre datos de mapas.",
        "wikibase-listdatatypes-quantity-head": "Cantidade",
        "wikibase-listdatatypes-quantity-body": "Campo de datos literal para 
unha cantidade relacionada con algún tipo de unidade ben definida. A unidade 
real vai nos valores de datos introducidos.\n* amount – parte implícita da 
cadea de texto (o mapeamento do prefixo da unidade non está claro)\n* unit – 
parte implícita da cadea de texto con valor por defecto \"1\" (o mapeamento ao 
corpo estandarizante non está claro)\n* upperbound - límite superior da 
cantidade \n* lowerbound - límite inferior da cantidade",
        "wikibase-listdatatypes-monolingualtext-head": "Texto monolingüe",
@@ -403,21 +419,21 @@
        "apihelp-wbgetclaims-param-rank": "Filtro opcional para devolver só 
afirmacións que teñen o nivel indicado",
        "apihelp-wbgetclaims-param-props": "Algunhas partes da afirmación 
devólvense de forma opcional. Este parámetro controla que partes se devolven.",
        "apihelp-wbgetclaims-example-1": "Obter afirmacións para o elemento con 
identificador <samp>Q42</samp>",
-       "apihelp-wbgetclaims-example-2": "Obter as afirmacións para o obxecto 
con identicador Q42 e propiedade con identificador P31",
-       "apihelp-wbgetclaims-example-3": "Obter afirmacións para o elemento con 
identificador Q42 que están clasificadas como normais",
-       "apihelp-wbgetclaims-example-4": "Obter afirmacións con GUID de 
Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F",
+       "apihelp-wbgetclaims-example-2": "Obter as afirmacións para o obxecto 
con identicador <samp>Q42</samp> e propiedade con identificador 
<samp>P31</samp>",
+       "apihelp-wbgetclaims-example-3": "Obter afirmacións para o elemento con 
identificador <samp>Q42</samp> que están clasificadas como normais",
+       "apihelp-wbgetclaims-example-4": "Obter afirmacións con GUID de 
<var>Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F</var>",
        "apihelp-wbgetentities-description": "Obtén a información para 
múltiples entidades de Wikibase",
        "apihelp-wbgetentities-param-ids": "Identificadores das entidades das 
que obter os datos",
-       "apihelp-wbgetentities-param-sites": "Identificador para o sitio no que 
reside a páxina correspondente\nUsar xunto con 'title' (título), pero indicar 
só un sitio para varios títulos ou varios sitios para un título.",
-       "apihelp-wbgetentities-param-titles": "Título da páxina 
correspondente\nUsar xunto con 'sites' (sitios), pero só indicar un sitio para 
varios títulos ou varios sitios para un título.",
+       "apihelp-wbgetentities-param-sites": "Identificador para o sitio no que 
reside a páxina correspondente\nUsar xunto con <code>title</code> (título), 
pero indicar só un sitio para varios títulos ou varios sitios para un título.",
+       "apihelp-wbgetentities-param-titles": "Título da páxina 
correspondente\nUsar xunto con <code>sites</code> (sitios), pero só indicar un 
sitio para varios títulos ou varios sitios para un título.",
        "apihelp-wbgetentities-param-redirects": "Se as redireccións deben ser 
resoltas.\nSe se fixa a \"non\", as redireccións serán tratadas como entidades 
borradas.",
        "apihelp-wbgetentities-param-props": "Nomes das propiedades a obter de 
cada entidade.\nFiltrarase máis polos idiomas indicados.",
        "apihelp-wbgetentities-param-languages": "Por defecto os valores 
internacionalizados devólvense en todos os idiomas dispoñibles.\nEste parámetro 
permite filtrar isto para deixar só un ou máis idiomas indicando un ou máis 
códigos de idioma.",
        "apihelp-wbgetentities-param-languagefallback": "Aplicar a redución de 
idiomas ós idiomas definidos no parámetro <var>languages</var>, co contexto 
actual da chamada API.",
        "apihelp-wbgetentities-param-normalize": "Intentar normalizar o título 
da páxina contra o sitio do cliente.\nIsto só funciona se só se indicaron 
exactamente un sitio e unha páxina.",
        "apihelp-wbgetentities-param-sitefilter": "Filtrar ligazóns de sitios 
en entidades a aquellos con estos identificadores de sitio.",
-       "apihelp-wbgetentities-example-1": "Obter entidades con identificador 
Q42 con todos os atributos dispoñibles en todos os idiomas dispoñibles",
-       "apihelp-wbgetentities-example-2": "Obter entidades con identificador 
P17 con todos os atributos dispoñibles en todos os idiomas dispoñibles",
+       "apihelp-wbgetentities-example-1": "Obter entidades con identificador 
<samp>Q42</samp> con todos os atributos dispoñibles en todos os idiomas 
dispoñibles",
+       "apihelp-wbgetentities-example-2": "Obter entidades con identificador 
<samp>P17</samp> con todos os atributos dispoñibles en todos os idiomas 
dispoñibles",
        "apihelp-wbgetentities-example-3": "Obter entidades con identificadores 
Q42 e P17 con todos os atributos dispoñibles en todos os idiomas dispoñibles",
        "apihelp-wbgetentities-example-4": "Obter entidades con identificador 
Q42 con todos os atributos dispoñibles en inglés",
        "apihelp-wbgetentities-example-5": "Obter entidades con identificador 
Q42 con todos os atributos dispoñibles en calquera redución de idiomas posible 
para o idioma ii",
diff --git a/extensions/Wikibase/repo/i18n/pl.json 
b/extensions/Wikibase/repo/i18n/pl.json
index eea1144..99fcab6 100644
--- a/extensions/Wikibase/repo/i18n/pl.json
+++ b/extensions/Wikibase/repo/i18n/pl.json
@@ -16,7 +16,8 @@
                        "Darellur",
                        "Devwebtel",
                        "PiotrAntosz",
-                       "Woytecr"
+                       "Woytecr",
+                       "Pawel Niemczuk"
                ]
        },
        "wikibase-desc": "Repozytorium danych strukturalnych",
@@ -145,7 +146,7 @@
        "wikibase-itembytitle-lookup-site": "Witryna:",
        "wikibase-itembytitle-lookup-page": "Strona:",
        "wikibase-itembytitle-submit": "Szukaj",
-       "wikibase-itembytitle-error-site": "Użyj istniejącego identyfikator 
projektu, np. „plwiki” dla polskojęzycznej Wikipedii.",
+       "wikibase-itembytitle-error-site": "Użyj istniejącego identyfikatora 
projektu, np. „plwiki” dla polskojęzycznej Wikipedii.",
        "wikibase-itembytitle-create": "Możesz także [$1 utworzyć element].",
        "special-gotolinkedpage": "Przejście do linkującej strony",
        "wikibase-gotolinkedpage-lookup-fieldset": "Przejdź do linkującej 
strony zgodnie z podaną witryną i elementem",
diff --git a/extensions/Wikibase/repo/includes/Actions/EditEntityAction.php 
b/extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
index 4505844..ef9d402 100644
--- a/extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
+++ b/extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
@@ -26,7 +26,7 @@
 use Wikibase\Repo\Diff\ClaimDiffer;
 use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
 use Wikibase\Repo\Diff\DifferencesSnakVisualizer;
-use Wikibase\Repo\Diff\EntityDiffVisualizer;
+use Wikibase\Repo\Diff\BasicEntityDiffVisualizer;
 use Wikibase\Repo\WikibaseRepo;
 
 /**
@@ -42,7 +42,7 @@
 class EditEntityAction extends ViewEntityAction {
 
        /**
-        * @var EntityDiffVisualizer
+        * @var BasicEntityDiffVisualizer
         */
        private $entityDiffVisualizer;
 
@@ -82,7 +82,7 @@
                $snakDetailsFormatter = $formatterFactory->getSnakFormatter( 
SnakFormatter::FORMAT_HTML_DIFF, $options );
                $snakBreadCrumbFormatter = $formatterFactory->getSnakFormatter( 
SnakFormatter::FORMAT_HTML, $options );
 
-               $this->entityDiffVisualizer = new EntityDiffVisualizer(
+               $this->entityDiffVisualizer = new BasicEntityDiffVisualizer(
                        $this->getContext(),
                        new ClaimDiffer( new OrderedListDiffer( new 
ComparableComparer() ) ),
                        new ClaimDifferenceVisualizer(
diff --git a/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php 
b/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php
similarity index 99%
rename from extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
rename to extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php
index 871d586..657ae40 100644
--- a/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
+++ b/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php
@@ -23,7 +23,7 @@
  * @author Tobias Gritschacher < [email protected] >
  * @author Daniel kinzler
  */
-class EntityDiffVisualizer {
+class BasicEntityDiffVisualizer {
 
        /**
         * @var IContextSource
diff --git a/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php 
b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
index e2f3a57..5e14717 100644
--- a/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
+++ b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
@@ -34,7 +34,7 @@
 class EntityContentDiffView extends DifferenceEngine {
 
        /**
-        * @var EntityDiffVisualizer
+        * @var BasicEntityDiffVisualizer
         */
        private $diffVisualizer;
 
@@ -94,7 +94,7 @@
                $this->terseSnakFormatter = 
$formatterFactory->getSnakFormatter( SnakFormatter::FORMAT_HTML, $options );
 
                // @fixme inject!
-               $this->diffVisualizer = new EntityDiffVisualizer(
+               $this->diffVisualizer = new BasicEntityDiffVisualizer(
                        $this->getContext(),
                        new ClaimDiffer( new OrderedListDiffer( new 
ComparableComparer() ) ),
                        new ClaimDifferenceVisualizer(
diff --git a/extensions/Wikibase/repo/includes/WikibaseRepo.php 
b/extensions/Wikibase/repo/includes/WikibaseRepo.php
index 0a4d922..cfa93e4 100644
--- a/extensions/Wikibase/repo/includes/WikibaseRepo.php
+++ b/extensions/Wikibase/repo/includes/WikibaseRepo.php
@@ -304,17 +304,17 @@
         * @return self
         */
        private static function newInstance() {
-               global $wgWBRepoDataTypes, $wgWBRepoEntityTypes, 
$wgWBRepoSettings;
+               global $wgWBRepoDataTypes, $wgWBRepoSettings;
 
-               if ( !is_array( $wgWBRepoDataTypes ) || !is_array( 
$wgWBRepoEntityTypes ) ) {
-                       throw new MWException( '$wgWBRepoDataTypes and 
$wgWBRepoEntityTypes must be arrays. '
+               if ( !is_array( $wgWBRepoDataTypes ) ) {
+                       throw new MWException( '$wgWBRepoDataTypes must be 
array. '
                                . 'Maybe you forgot to require Wikibase.php in 
your LocalSettings.php?' );
                }
 
                $dataTypeDefinitions = $wgWBRepoDataTypes;
                Hooks::run( 'WikibaseRepoDataTypes', array( 
&$dataTypeDefinitions ) );
 
-               $entityTypeDefinitions = $wgWBRepoEntityTypes;
+               $entityTypeDefinitions = self::getDefaultEntityTypes();
                Hooks::run( 'WikibaseRepoEntityTypes', array( 
&$entityTypeDefinitions ) );
 
                $settings = new SettingsArray( $wgWBRepoSettings );
@@ -574,6 +574,16 @@
        }
 
        /**
+        * @return array[]
+        */
+       private static function getDefaultEntityTypes() {
+               $baseEntityTypes = require __DIR__ . 
'/../../lib/WikibaseLib.entitytypes.php';
+               $repoEntityTypes = require __DIR__ . 
'/../WikibaseRepo.entitytypes.php';
+
+               return array_merge_recursive( $baseEntityTypes, 
$repoEntityTypes );
+       }
+
+       /**
         * @return ValueParserFactory
         */
        public function getValueParserFactory() {
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
similarity index 93%
rename from 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
rename to 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
index d401451..9be4087 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
@@ -15,10 +15,10 @@
 use Wikibase\Repo\Content\EntityContentDiff;
 use Wikibase\Repo\Diff\ClaimDiffer;
 use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
-use Wikibase\Repo\Diff\EntityDiffVisualizer;
+use Wikibase\Repo\Diff\BasicEntityDiffVisualizer;
 
 /**
- * @covers Wikibase\Repo\Diff\EntityDiffVisualizer
+ * @covers Wikibase\Repo\Diff\BasicEntityDiffVisualizer
  *
  * @group Wikibase
  *
@@ -26,7 +26,7 @@
  * @author Daniel Kinzler
  * @author Thiemo Mättig
  */
-class EntityDiffVisualizerTest extends MediaWikiTestCase {
+class BasicEntityDiffVisualizerTest extends MediaWikiTestCase {
 
        public function testVisualizingEmptyDiff() {
                $emptyDiff = new EntityContentDiff( new EntityDiff(), new 
Diff() );
@@ -121,13 +121,13 @@
        }
 
        /**
-        * @return EntityDiffVisualizer
+        * @return BasicEntityDiffVisualizer
         */
        private function getVisualizer() {
                $enwiki = new Site();
                $enwiki->setGlobalId( 'enwiki' );
 
-               return new EntityDiffVisualizer(
+               return new BasicEntityDiffVisualizer(
                        $this->getMockContext(),
                        $this->getMockClaimDiffer(),
                        $this->getMockClaimDiffVisualizer(),
diff --git a/vendor/composer/autoload_classmap.php 
b/vendor/composer/autoload_classmap.php
index 177bd73..18c98cf 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -434,6 +434,7 @@
     'Wikibase\\Client\\Hooks\\InfoActionHookHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/InfoActionHookHandler.php',
     'Wikibase\\Client\\Hooks\\InterwikiSortingHookHandlers' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/InterwikiSortingHookHandlers.php',
     'Wikibase\\Client\\Hooks\\LanguageLinkBadgeDisplay' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/LanguageLinkBadgeDisplay.php',
+    'Wikibase\\Client\\Hooks\\MagicWordHookHandlers' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php',
     'Wikibase\\Client\\Hooks\\MovePageNotice' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/MovePageNotice.php',
     'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGenerator' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/OtherProjectsSidebarGenerator.php',
     'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGeneratorFactory' => 
$baseDir . 
'/extensions/Wikibase/client/includes/Hooks/OtherProjectsSidebarGeneratorFactory.php',
@@ -518,6 +519,7 @@
     'Wikibase\\Client\\Tests\\Hooks\\InfoActionHookHandlerTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\InterwikiSortingHookHandlersTest' => 
$baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InterwikiSortingHookHandlersTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\LanguageLinkBadgeDisplayTest' => $baseDir 
. 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/LanguageLinkBadgeDisplayTest.php',
+    'Wikibase\\Client\\Tests\\Hooks\\MagicWordHookHandlersTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\MovePageNoticeTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MovePageNoticeTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\NoLangLinkHandlerTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/NoLangLinkHandlerTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\OtherProjectsSidebarGeneratorFactoryTest' 
=> $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/OtherProjectsSidebarGeneratorFactoryTest.php',
@@ -1215,6 +1217,7 @@
     'Wikibase\\Repo\\Content\\ItemHandler' => $baseDir . 
'/extensions/Wikibase/repo/includes/Content/ItemHandler.php',
     'Wikibase\\Repo\\Content\\PropertyHandler' => $baseDir . 
'/extensions/Wikibase/repo/includes/Content/PropertyHandler.php',
     'Wikibase\\Repo\\DataTypeValidatorFactory' => $baseDir . 
'/extensions/Wikibase/repo/includes/DataTypeValidatorFactory.php',
+    'Wikibase\\Repo\\Diff\\BasicEntityDiffVisualizer' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php',
     'Wikibase\\Repo\\Diff\\ClaimDiffer' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php',
     'Wikibase\\Repo\\Diff\\ClaimDifference' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php',
     'Wikibase\\Repo\\Diff\\ClaimDifferenceVisualizer' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php',
@@ -1222,7 +1225,6 @@
     'Wikibase\\Repo\\Diff\\DiffView' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/DiffView.php',
     'Wikibase\\Repo\\Diff\\DifferencesSnakVisualizer' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/DifferencesSnakVisualizer.php',
     'Wikibase\\Repo\\Diff\\EntityContentDiffView' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php',
-    'Wikibase\\Repo\\Diff\\EntityDiffVisualizer' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php',
     'Wikibase\\Repo\\DispatchingEntityTypeStatementGrouper' => $baseDir . 
'/extensions/Wikibase/repo/includes/DispatchingEntityTypeStatementGrouper.php',
     'Wikibase\\Repo\\EntityIdHtmlLinkFormatterFactory' => $baseDir . 
'/extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php',
     'Wikibase\\Repo\\EntityIdLabelFormatterFactory' => $baseDir . 
'/extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php',
@@ -1481,6 +1483,7 @@
     'Wikibase\\Repo\\Tests\\CopyrightMessageBuilderTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/CopyrightMessageBuilderTest.php',
     'Wikibase\\Repo\\Tests\\DataTypeSelectorTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/DataTypeSelectorTest.php',
     'Wikibase\\Repo\\Tests\\DefaultRepoSettingsTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/DefaultRepoSettingsTest.php',
+    'Wikibase\\Repo\\Tests\\Diff\\BasicEntityDiffVisualizerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php',
     'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php',
     'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferenceTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php',
     'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferenceVisualizerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php',
@@ -1488,7 +1491,6 @@
     'Wikibase\\Repo\\Tests\\Diff\\DiffViewTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php',
     'Wikibase\\Repo\\Tests\\Diff\\DifferencesSnakVisualizerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DifferencesSnakVisualizerTest.php',
     'Wikibase\\Repo\\Tests\\Diff\\EntityContentDiffViewTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php',
-    'Wikibase\\Repo\\Tests\\Diff\\EntityDiffVisualizerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php',
     'Wikibase\\Repo\\Tests\\DispatchingEntityTypeStatementGrouperTest' => 
$baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/DispatchingEntityTypeStatementGrouperTest.php',
     'Wikibase\\Repo\\Tests\\Dumpers\\JsonDumpGeneratorTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php',
     'Wikibase\\Repo\\Tests\\Dumpers\\RdfDumpGeneratorTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php',
diff --git a/vendor/composer/autoload_static.php 
b/vendor/composer/autoload_static.php
index 30ac934..d60d6e6 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -747,6 +747,7 @@
         'Wikibase\\Client\\Hooks\\InfoActionHookHandler' => __DIR__ . '/../..' 
. '/extensions/Wikibase/client/includes/Hooks/InfoActionHookHandler.php',
         'Wikibase\\Client\\Hooks\\InterwikiSortingHookHandlers' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/client/includes/Hooks/InterwikiSortingHookHandlers.php',
         'Wikibase\\Client\\Hooks\\LanguageLinkBadgeDisplay' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/client/includes/Hooks/LanguageLinkBadgeDisplay.php',
+        'Wikibase\\Client\\Hooks\\MagicWordHookHandlers' => __DIR__ . '/../..' 
. '/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php',
         'Wikibase\\Client\\Hooks\\MovePageNotice' => __DIR__ . '/../..' . 
'/extensions/Wikibase/client/includes/Hooks/MovePageNotice.php',
         'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGenerator' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/client/includes/Hooks/OtherProjectsSidebarGenerator.php',
         'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGeneratorFactory' => 
__DIR__ . '/../..' . 
'/extensions/Wikibase/client/includes/Hooks/OtherProjectsSidebarGeneratorFactory.php',
@@ -831,6 +832,7 @@
         'Wikibase\\Client\\Tests\\Hooks\\InfoActionHookHandlerTest' => __DIR__ 
. '/../..' . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php',
         'Wikibase\\Client\\Tests\\Hooks\\InterwikiSortingHookHandlersTest' => 
__DIR__ . '/../..' . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InterwikiSortingHookHandlersTest.php',
         'Wikibase\\Client\\Tests\\Hooks\\LanguageLinkBadgeDisplayTest' => 
__DIR__ . '/../..' . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/LanguageLinkBadgeDisplayTest.php',
+        'Wikibase\\Client\\Tests\\Hooks\\MagicWordHookHandlersTest' => __DIR__ 
. '/../..' . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php',
         'Wikibase\\Client\\Tests\\Hooks\\MovePageNoticeTest' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MovePageNoticeTest.php',
         'Wikibase\\Client\\Tests\\Hooks\\NoLangLinkHandlerTest' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/NoLangLinkHandlerTest.php',
         
'Wikibase\\Client\\Tests\\Hooks\\OtherProjectsSidebarGeneratorFactoryTest' => 
__DIR__ . '/../..' . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/OtherProjectsSidebarGeneratorFactoryTest.php',
@@ -1528,6 +1530,7 @@
         'Wikibase\\Repo\\Content\\ItemHandler' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/includes/Content/ItemHandler.php',
         'Wikibase\\Repo\\Content\\PropertyHandler' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/includes/Content/PropertyHandler.php',
         'Wikibase\\Repo\\DataTypeValidatorFactory' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/includes/DataTypeValidatorFactory.php',
+        'Wikibase\\Repo\\Diff\\BasicEntityDiffVisualizer' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php',
         'Wikibase\\Repo\\Diff\\ClaimDiffer' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php',
         'Wikibase\\Repo\\Diff\\ClaimDifference' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php',
         'Wikibase\\Repo\\Diff\\ClaimDifferenceVisualizer' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php',
@@ -1535,7 +1538,6 @@
         'Wikibase\\Repo\\Diff\\DiffView' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/includes/Diff/DiffView.php',
         'Wikibase\\Repo\\Diff\\DifferencesSnakVisualizer' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/includes/Diff/DifferencesSnakVisualizer.php',
         'Wikibase\\Repo\\Diff\\EntityContentDiffView' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php',
-        'Wikibase\\Repo\\Diff\\EntityDiffVisualizer' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php',
         'Wikibase\\Repo\\DispatchingEntityTypeStatementGrouper' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/includes/DispatchingEntityTypeStatementGrouper.php',
         'Wikibase\\Repo\\EntityIdHtmlLinkFormatterFactory' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php',
         'Wikibase\\Repo\\EntityIdLabelFormatterFactory' => __DIR__ . '/../..' 
. '/extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php',
@@ -1794,6 +1796,7 @@
         'Wikibase\\Repo\\Tests\\CopyrightMessageBuilderTest' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/CopyrightMessageBuilderTest.php',
         'Wikibase\\Repo\\Tests\\DataTypeSelectorTest' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/DataTypeSelectorTest.php',
         'Wikibase\\Repo\\Tests\\DefaultRepoSettingsTest' => __DIR__ . '/../..' 
. 
'/extensions/Wikibase/repo/tests/phpunit/includes/DefaultRepoSettingsTest.php',
+        'Wikibase\\Repo\\Tests\\Diff\\BasicEntityDiffVisualizerTest' => 
__DIR__ . '/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php',
         'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferTest' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php',
         'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferenceTest' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php',
         'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferenceVisualizerTest' => 
__DIR__ . '/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php',
@@ -1801,7 +1804,6 @@
         'Wikibase\\Repo\\Tests\\Diff\\DiffViewTest' => __DIR__ . '/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php',
         'Wikibase\\Repo\\Tests\\Diff\\DifferencesSnakVisualizerTest' => 
__DIR__ . '/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DifferencesSnakVisualizerTest.php',
         'Wikibase\\Repo\\Tests\\Diff\\EntityContentDiffViewTest' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php',
-        'Wikibase\\Repo\\Tests\\Diff\\EntityDiffVisualizerTest' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php',
         'Wikibase\\Repo\\Tests\\DispatchingEntityTypeStatementGrouperTest' => 
__DIR__ . '/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/DispatchingEntityTypeStatementGrouperTest.php',
         'Wikibase\\Repo\\Tests\\Dumpers\\JsonDumpGeneratorTest' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php',
         'Wikibase\\Repo\\Tests\\Dumpers\\RdfDumpGeneratorTest' => __DIR__ . 
'/../..' . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 61975f9..f07fb06 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1357,12 +1357,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "dcb71c0633d61886d1647aba80a5e3988cfad21a"
+            "reference": "f37e244cd624ead83bc9552ff0b5d4c23880948e"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/dcb71c0633d61886d1647aba80a5e3988cfad21a";,
-            "reference": "dcb71c0633d61886d1647aba80a5e3988cfad21a",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/f37e244cd624ead83bc9552ff0b5d4c23880948e";,
+            "reference": "f37e244cd624ead83bc9552ff0b5d4c23880948e",
             "shasum": ""
         },
         "require": {
@@ -1394,7 +1394,7 @@
             "jakub-onderka/php-parallel-lint": ">=0.3 <0.10",
             "mediawiki/mediawiki-codesniffer": ">=0.4 <0.8"
         },
-        "time": "2017-03-21 21:55:12",
+        "time": "2017-03-22 22:11:13",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {
@@ -1779,7 +1779,7 @@
         "source": {
             "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-            "reference": "e5344cda71392773660bf8a54e9932d882e75433"
+            "reference": "e9b7fcaafc8abe6a1544fb7688e760e252fbe078"
         },
         "require": {
             "php": ">=5.5.9",
@@ -1792,7 +1792,7 @@
             "phpunit/phpunit": "^3.7.37|~4.5",
             "satooshi/php-coveralls": "master-dev"
         },
-        "time": "2017-03-21 10:22:18",
+        "time": "2017-03-22 22:11:48",
         "type": "mediawiki-extension",
         "installation-source": "source",
         "autoload": {

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

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

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

Reply via email to