getEntityTypes() as $entityType ) { $entityNamespaces[$entityType] = $source->getEntityNamespaceIds()[$entityType] . '/' . $source->getEntitySlotNames()[$entityType]; } $entitySourceConfig[$source->getSourceName()] = [ 'entityNamespaces' => $entityNamespaces, 'repoDatabase' => $source->getDatabaseName(), 'baseUri' => $source->getConceptBaseUri(), 'rdfNodeNamespacePrefix' => $source->getRdfNodeNamespacePrefix(), 'rdfPredicateNamespacePrefix' => $source->getRdfPredicateNamespacePrefix(), 'interwikiPrefix' => $source->getInterwikiPrefix(), ]; } return $entitySourceConfig; } private function hasNoEntitySources( $settings ): bool { return !$settings->hasSetting( 'entitySources' ) || $settings->hasSetting( 'entitySources' ) && empty( $settings->getSetting( 'entitySources' ) ); } 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.' ); } $repoEntitySourceConfig = null; $clientEntitySourceConfig = null; $this->output( '// Suggested entitySource configuration to be added in LocalSettings.php:' . "\n\n" ); if ( WikibaseSettings::isRepoEnabled() ) { $repoSettings = WikibaseSettings::getRepoSettings(); if ( $this->hasNoEntitySources( $repoSettings ) ) { $repoEntitySourceConfig = $this->createSettingsFromEntitySources( WikibaseRepo::getDefaultInstance()->getEntitySourceDefinitions()->getSources() ); $this->output( '$wgWBRepoSettings[\'entitySources\'] = ' ); $this->output( var_export( $repoEntitySourceConfig, true ) ); $this->output( ";\n\n" ); }; } if ( WikibaseSettings::isClientEnabled() ) { $clientSettings = WikibaseSettings::getClientSettings(); // REL1_35 and REL1_36 compatible $entityTypes = require __DIR__ . '/lib/WikibaseLib.entitytypes.php'; $entityTypeDefinitions = new EntityTypeDefinitions( $entityTypes ); if ( $this->hasNoEntitySources( $clientSettings ) ) { $parser = new EntitySourceDefinitionsLegacyClientSettingsParser(); $sources = $parser->newDefinitionsFromSettings( $clientSettings, $entityTypeDefinitions )->getSources(); $clientEntitySourceConfig = $this->createSettingsFromEntitySources( $sources ); $this->output( '$wgWBClientSettings[\'entitySources\'] = ' ); $this->output( var_export( $clientEntitySourceConfig, true ) ); $this->output( ";\n\n" ); } } if ( $clientEntitySourceConfig === null && $repoEntitySourceConfig === null) { $this->output( "No entitySources suggested as there already exists configuration\n\n" ); } } } $maintClass = EntitySourcesMigration::class; require_once RUN_MAINTENANCE_IF_MAIN;