[MediaWiki-commits] [Gerrit] mediawiki...Wikibase[master]: Use repo-specific base concept URI to build concepturi in wb...
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/343093 ) Change subject: Use repo-specific base concept URI to build concepturi in wbsearchentities results .. Use repo-specific base concept URI to build concepturi in wbsearchentities results Bug: T154590 Change-Id: I964be139970f6accb8dd002cbc56e054b2750e3c --- M repo/Wikibase.php M repo/includes/Api/SearchEntities.php M repo/includes/WikibaseRepo.php M repo/tests/phpunit/includes/Api/SearchEntitiesTest.php M repo/tests/phpunit/includes/WikibaseRepoTest.php 5 files changed, 62 insertions(+), 13 deletions(-) Approvals: Daniel Kinzler: Looks good to me, approved jenkins-bot: Verified diff --git a/repo/Wikibase.php b/repo/Wikibase.php index 5236193..75473dc 100644 --- a/repo/Wikibase.php +++ b/repo/Wikibase.php @@ -228,7 +228,7 @@ $repo->getPropertyDataTypeLookup(), $repo->getTermsLanguages(), $repo->getEnabledEntityTypes(), - $repo->getSettings()->getSetting( 'conceptBaseUri' ) + $repo->getConceptBaseUris() ); }, ]; diff --git a/repo/includes/Api/SearchEntities.php b/repo/includes/Api/SearchEntities.php index cf07fe4..eb2d20d 100644 --- a/repo/includes/Api/SearchEntities.php +++ b/repo/includes/Api/SearchEntities.php @@ -4,6 +4,8 @@ use ApiBase; use ApiMain; +use LogicException; +use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\PropertyId; use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup; use Wikibase\Lib\ContentLanguages; @@ -43,9 +45,9 @@ private $entityTypes; /** -* @var string +* @var string[] */ - private $conceptBaseUri; + private $conceptBaseUris; /** * @param ApiMain $mainModule @@ -55,7 +57,7 @@ * @param PropertyDataTypeLookup $propertyDataTypeLookup * @param ContentLanguages $termLanguages * @param string[] $entityTypes -* @param string $conceptBaseUri +* @param string[] $conceptBaseUris Associative array mapping repository names to base URIs of concept URIs * * @see ApiBase::__construct */ @@ -67,7 +69,7 @@ PropertyDataTypeLookup $propertyDataTypeLookup, ContentLanguages $termLanguages, array $entityTypes, - $conceptBaseUri + array $conceptBaseUris ) { parent::__construct( $mainModule, $moduleName, '' ); @@ -76,7 +78,7 @@ $this->propertyDataTypeLookup = $propertyDataTypeLookup; $this->termsLanguages = $termLanguages; $this->entityTypes = $entityTypes; - $this->conceptBaseUri = $conceptBaseUri; + $this->conceptBaseUris = $conceptBaseUris; } /** @@ -120,7 +122,7 @@ $entry = array( 'repository' => $entityId->getRepositoryName(), 'id' => $entityId->getSerialization(), - 'concepturi' => $this->conceptBaseUri . $entityId->getSerialization(), + 'concepturi' => $this->getConceptUri( $entityId ), 'url' => $title->getFullURL(), 'title' => $title->getPrefixedText(), 'pageid' => $title->getArticleID() @@ -169,6 +171,31 @@ } /** +* @param EntityId $entityId +* +* @return string +*/ + private function getConceptUri( EntityId $entityId ) { + $baseUri = $this->getConceptBaseUri( $entityId ); + return $baseUri . $entityId->getLocalPart(); + } + + /** +* @param EntityId $entityId +* +* @throws LogicException when there is no base URI for the repository $entityId belongs to +* +* @return string +*/ + private function getConceptBaseUri( EntityId $entityId ) { + if ( !isset( $this->conceptBaseUris[$entityId->getRepositoryName()] ) ) { + throw new LogicException( 'No base URI for for concept URI for repository: ' . $entityId->getRepositoryName() ); + } + + return $this->conceptBaseUris[$entityId->getRepositoryName()]; + } + + /** * @see ApiBase::execute() */ public function execute() { diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php index 3b2e065..50708f1 100644 --- a/repo/includes/WikibaseRepo.php +++ b/repo/includes/WikibaseRepo.php @@ -1916,4 +1916,11 @@ return $this->repositoryDefinitions->getEntityTypeToRepositoryMapping(); } + /** +* @return string[] Associative array
[MediaWiki-commits] [Gerrit] mediawiki...Wikibase[master]: Use repo-specific base concept URI to build concepturi in wb...
WMDE-leszek has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/343093 ) Change subject: Use repo-specific base concept URI to build concepturi in wbsearchentities results .. Use repo-specific base concept URI to build concepturi in wbsearchentities results Bug: T154590 Change-Id: I964be139970f6accb8dd002cbc56e054b2750e3c --- M repo/Wikibase.php M repo/includes/Api/SearchEntities.php M repo/includes/WikibaseRepo.php M repo/tests/phpunit/includes/Api/SearchEntitiesTest.php M repo/tests/phpunit/includes/WikibaseRepoTest.php 5 files changed, 58 insertions(+), 9 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/93/343093/1 diff --git a/repo/Wikibase.php b/repo/Wikibase.php index 5236193..75473dc 100644 --- a/repo/Wikibase.php +++ b/repo/Wikibase.php @@ -228,7 +228,7 @@ $repo->getPropertyDataTypeLookup(), $repo->getTermsLanguages(), $repo->getEnabledEntityTypes(), - $repo->getSettings()->getSetting( 'conceptBaseUri' ) + $repo->getConceptBaseUris() ); }, ]; diff --git a/repo/includes/Api/SearchEntities.php b/repo/includes/Api/SearchEntities.php index cf07fe4..eb2d20d 100644 --- a/repo/includes/Api/SearchEntities.php +++ b/repo/includes/Api/SearchEntities.php @@ -4,6 +4,8 @@ use ApiBase; use ApiMain; +use LogicException; +use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\PropertyId; use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup; use Wikibase\Lib\ContentLanguages; @@ -43,9 +45,9 @@ private $entityTypes; /** -* @var string +* @var string[] */ - private $conceptBaseUri; + private $conceptBaseUris; /** * @param ApiMain $mainModule @@ -55,7 +57,7 @@ * @param PropertyDataTypeLookup $propertyDataTypeLookup * @param ContentLanguages $termLanguages * @param string[] $entityTypes -* @param string $conceptBaseUri +* @param string[] $conceptBaseUris Associative array mapping repository names to base URIs of concept URIs * * @see ApiBase::__construct */ @@ -67,7 +69,7 @@ PropertyDataTypeLookup $propertyDataTypeLookup, ContentLanguages $termLanguages, array $entityTypes, - $conceptBaseUri + array $conceptBaseUris ) { parent::__construct( $mainModule, $moduleName, '' ); @@ -76,7 +78,7 @@ $this->propertyDataTypeLookup = $propertyDataTypeLookup; $this->termsLanguages = $termLanguages; $this->entityTypes = $entityTypes; - $this->conceptBaseUri = $conceptBaseUri; + $this->conceptBaseUris = $conceptBaseUris; } /** @@ -120,7 +122,7 @@ $entry = array( 'repository' => $entityId->getRepositoryName(), 'id' => $entityId->getSerialization(), - 'concepturi' => $this->conceptBaseUri . $entityId->getSerialization(), + 'concepturi' => $this->getConceptUri( $entityId ), 'url' => $title->getFullURL(), 'title' => $title->getPrefixedText(), 'pageid' => $title->getArticleID() @@ -169,6 +171,31 @@ } /** +* @param EntityId $entityId +* +* @return string +*/ + private function getConceptUri( EntityId $entityId ) { + $baseUri = $this->getConceptBaseUri( $entityId ); + return $baseUri . $entityId->getLocalPart(); + } + + /** +* @param EntityId $entityId +* +* @throws LogicException when there is no base URI for the repository $entityId belongs to +* +* @return string +*/ + private function getConceptBaseUri( EntityId $entityId ) { + if ( !isset( $this->conceptBaseUris[$entityId->getRepositoryName()] ) ) { + throw new LogicException( 'No base URI for for concept URI for repository: ' . $entityId->getRepositoryName() ); + } + + return $this->conceptBaseUris[$entityId->getRepositoryName()]; + } + + /** * @see ApiBase::execute() */ public function execute() { diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php index 3b2e065..50708f1 100644 --- a/repo/includes/WikibaseRepo.php +++ b/repo/includes/WikibaseRepo.php @@ -1916,4 +1916,11 @@ return $this->repositoryDefinitions->getEntityTypeToRepositoryMapping(); } + /** +* @return string[] Associat