Page MenuHomePhabricator

Wikibase Entity Source Lagacy Configuration Migration Script v0.2

Authored By
toan
Jul 12 2021, 2:46 PM
Size
3 KB
Referenced Files
None
Subscribers
None

Wikibase Entity Source Lagacy Configuration Migration Script v0.2

<?php
namespace Wikibase\Lib\Maintenance;
use Composer\Semver\Constraint\Constraint;
use Composer\Semver\VersionParser;
use Maintenance;
use MediaWiki\MediaWikiServices;
use Wikibase\Client\EntitySourceDefinitionsLegacyClientSettingsParser;
use Wikibase\Client\WikibaseClient;
use Wikibase\DataAccess\EntitySource;
use Wikibase\DataAccess\EntitySourceDefinitionsConfigParser;
use Wikibase\Lib\EntityTypeDefinitions;
use Wikibase\Lib\WikibaseSettings;
use Wikibase\Repo\WikibaseRepo;
$basePath = getenv( 'MW_INSTALL_PATH' );
require_once $basePath . '/maintenance/Maintenance.php';
/**
* Tool for getting new entitySources configuration for upcoming REL1_37 release
*
* Place this script in the extensions/Wikibase folder and executing by running
* php extensions/Wikibase/entitySources.php
* @license GPL-2.0-or-later
*/
class EntitySourcesMigration extends Maintenance {
/**
* @param EntitySource[] $entitySources
*/
function createSettingsFromEntitySources(array $entitySources): array
{
$entitySourceConfig = [];
foreach ($entitySources as $source) {
$entitySourceConfig[$source->getSourceName()] = [
'entityNamespaces' => $source->getEntityNamespaceIds(),
'repoDatabase' => $source->getDatabaseName(),
'baseUri' => $source->getConceptBaseUri(),
'rdfNodeNamespacePrefix' => $source->getRdfNodeNamespacePrefix(),
'rdfPredicateNamespacePrefix' => $source->getRdfPredicateNamespacePrefix(),
'interwikiPrefix' => $source->getInterwikiPrefix(),
];
}
return $entitySourceConfig;
}
public function execute() {
$versionParser = new VersionParser();
if ( !$versionParser->parseConstraints( new Constraint( '==', $versionParser->normalize( MW_VERSION ) ) )
->matches( new Constraint("<", "1.37") ) ) {
die('This script is intended to run on versions older than 1.37.');
}
print_r('// Suggested entitySource configuration to be added in LocalSettings.php:' . "\n\n");
if (WikibaseSettings::isRepoEnabled()) {
$repoEntitySourceConfig = $this->createSettingsFromEntitySources(
WikibaseRepo::getDefaultInstance()->getEntitySourceDefinitions()->getSources()
);
print_r('$wgWBRepoSettings[\'entitySources\'] = ');
var_export($repoEntitySourceConfig);
print_r(";\n\n");
}
if (WikibaseSettings::isClientEnabled()) {
$settings = WikibaseSettings::getClientSettings();
// REL1_35 and REL1_36 compatible
$entityTypes = require __DIR__ . '/lib/WikibaseLib.entitytypes.php';
$entityTypeDefinitions = new EntityTypeDefinitions( $entityTypes );
if ( $settings->hasSetting( 'entitySources' ) && !empty( $settings->getSetting( 'entitySources' ) ) ) {
$configParser = new EntitySourceDefinitionsConfigParser();
$sources = $configParser->newDefinitionsFromConfigArray( $settings->getSetting( 'entitySources' ), $entityTypeDefinitions )->getSources();
} else {
$parser = new EntitySourceDefinitionsLegacyClientSettingsParser();
$sources = $parser->newDefinitionsFromSettings( $settings, $entityTypeDefinitions )->getSources();
}
$clientEntitySourceConfig = $this->createSettingsFromEntitySources( $sources );
print_r('$wgWBClientSettings[\'entitySources\'] = ');
var_export($clientEntitySourceConfig);
print_r(";\n\n");
}
}
}
$maintClass = EntitySourcesMigration::class;
require_once RUN_MAINTENANCE_IF_MAIN;

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
9125513
Default Alt Text
Wikibase Entity Source Lagacy Configuration Migration Script v0.2 (3 KB)

Event Timeline