]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/wiki/templates/default/mw-ext-Wikibase.inc.php.erb
wiki: set custom wgWBClientSettings['repoSiteName']
[chef.git] / cookbooks / wiki / templates / default / mw-ext-Wikibase.inc.php.erb
index e14dbea783a69217eb018901b6c284731f1b1989..6f7e8d6ebb7a22e75531ebd1d694dd32e45e922c 100644 (file)
@@ -1,11 +1,14 @@
 <?php
 # DO NOT EDIT - This file is being maintained by Chef
 
+use MediaWiki\MediaWikiServices;
+use Wikibase\Lib\SettingsArray;
+
 $wgEnableWikibaseRepo = true;
 $wgEnableWikibaseClient = true;
 
-require_once "$IP/extensions/Wikibase/repo/Wikibase.php";
-require_once "$IP/extensions/Wikibase/client/WikibaseClient.php";
+wfLoadExtension( 'WikibaseRepository', "$IP/extensions/Wikibase/extension-repo.json" );
+wfLoadExtension( 'WikibaseClient', "$IP/extensions/Wikibase/extension-client.json" );
 // Include Wikibase.searchindex.php to include string and text values in the full text index:
 require_once "$IP/extensions/Wikibase/repo/config/Wikibase.searchindex.php";
 
@@ -17,8 +20,6 @@ call_user_func( function() {
         $wgNamespacesToBeSearchedDefault,
         $wgWBRepoSettings;
 
-    $wgContentHandlerUseDB = true;
-
     $baseNs = 120;
 
     // Define custom namespaces. Use these exact constant names.
@@ -33,12 +34,32 @@ call_user_func( function() {
     $wgExtraNamespaces[WB_NS_PROPERTY] = 'Property';
     $wgExtraNamespaces[WB_NS_PROPERTY_TALK] = 'Property_talk';
 
-    // Tell Wikibase which namespace to use for which kind of entity
-    $wgWBRepoSettings['entityNamespaces']['item'] = WB_NS_ITEM;
-    $wgWBRepoSettings['entityNamespaces']['property'] = WB_NS_PROPERTY;
+    $wgWBRepoSettings['entitySources'] = function ( SettingsArray $settings ) {
+        global $wgServer;
+
+        $entityNamespaces = [
+            'item' => WB_NS_ITEM,
+            'property' => WB_NS_PROPERTY,
+        ];
+
+        $hookContainer = MediaWikiServices::getInstance()->getHookContainer();
+        $hookContainer->run( 'WikibaseRepoEntityNamespaces', [ &$entityNamespaces ] );
+
+        return [
+             $settings->getSetting( 'localEntitySourceName' ) => [
+                                    'entityNamespaces' => $entityNamespaces,
+                                    'repoDatabase' => false,
+                                    'baseUri' => $wgServer . '/entity/',
+                                    'rdfNodeNamespacePrefix' => 'wd',
+                                    'rdfPredicateNamespacePrefix' => '',
+                                    'interwikiPrefix' => '',
+             ],
+        ];
+    };
 
     // Make sure we use the same keys on repo and clients, so we can share cached objects.
-    $wgWBRepoSettings['sharedCacheKeyPrefix'] = $wgDBname . ':WBL/' . rawurlencode( WBL_VERSION );
+    $wgWBRepoSettings['sharedCacheKeyPrefix'] = $wgDBname . ':WBL';
+    $wgWBRepoSettings['sharedCacheKeyGroup'] = $wgDBname;
 
     // Include Wikibase items in the regular search result by default
     $wgNamespacesToBeSearchedDefault[WB_NS_ITEM] = true;
@@ -49,18 +70,66 @@ call_user_func( function() {
 
     // these are the site_group codes as listed in the sites table
     $wgWBRepoSettings['specialSiteLinkGroups'] = ['osm'];
+
+    // This option will start working in Wikibase v1.33 release. Noop until then.
+    // https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/Wikibase/+/469872/
+    $wgWBRepoSettings['enableEntitySearchUI'] = false;
+
 } );
 
-// Adapted from "$IP/extensions/Wikibase/client/ExampleSettings.php";
+// Adapted from "$IP/extensions/Wikibase/client/config/WikibaseClient.example.php";
 
 // The global site ID by which this wiki is known on the repo.
 // Defaults to $wgDBname.
 // $wgWBClientSettings['siteGlobalID'] = "osm";
-// $wgWBClientSettings['injectRecentChanges'] = true;
-// $wgWBClientSettings['showExternalRecentChanges'] = true;
+
+$wgWBClientSettings['injectRecentChanges'] = true;
+$wgWBClientSettings['showExternalRecentChanges'] = true;
+
+// Base URL for building links to the repository.
+// Assumes your wiki is setup as "http://repo.example.org/wiki/"
+// This can be protocol relative, such as "//www.wikidata.org"
+$wgWBClientSettings['repoUrl'] = "https://wiki.openstreetmap.org";
+
+// This setting is optional if you have the same type of setup for your
+// repo and client.  It will default to using the client's $wgArticlePath setting,
+// and if you do not have $wgArticlePath set anywhere, MediaWiki has a default for it.
+$wgWBClientSettings['repoArticlePath'] = "/wiki/$1";
+
+// Assuming your wiki is setup with such script path as "http://repo.example.org/w/api.php". This
+// should be the same as the $wgScriptPath setting if you have it set in your repo. If $wgScriptPath
+// is not set, then MediaWiki assumes a default.
+//
+// If your client and repo are setup in the same way, then the below setting is optional and will
+// default to what you have $wgScriptPath set in the client.
+$wgWBClientSettings['repoScriptPath'] = "/w";
+
+// Tell the client which namespace ID on the repo holds which type of entity.
+$baseRepoNs = 120;
+
+define( 'WB_REPO_NS_ITEM', $baseRepoNs );
+define( 'WB_REPO_NS_PROPERTY', $baseRepoNs + 2 );
+
+$wgWBClientSettings['entitySources'] = [
+        'local' => [
+                'repoDatabase' => $wgDBname,
+                'baseUri' => $wgWBClientSettings['repoUrl'] . '/entity',
+                'entityNamespaces' => [
+                        'item' => WB_REPO_NS_ITEM,
+                        'property' => WB_REPO_NS_PROPERTY
+                ],
+                'rdfNodeNamespacePrefix' => 'wd',
+                'rdfPredicateNamespacePrefix' => '',
+                'interwikiPrefix' => '',
+        ],
+];
 
 $wgWBClientSettings['namespaces'] = [ NS_MAIN ];
+$wgWBClientSettings['repoSiteName'] = 'Data Items';
 
+// Avoid complaints that nobody seems to know the cause off...
+$wgWBClientSettings['entityUsagePerPageLimit'] = 500;
+                                  
 // no edit rights for anonymous users
 $wgGroupPermissions['*']['item-term'] = false;
 $wgGroupPermissions['*']['item-merge'] = false;