Hoo man has uploaded a new change for review. https://gerrit.wikimedia.org/r/148993
Change subject: Make "otherProjectsLinks" setting compatible with the "special" sitelink group ...................................................................... Make "otherProjectsLinks" setting compatible with the "special" sitelink group Change-Id: I07abcbafbd18a66089685f8fba7164744f9011c9 --- M client/includes/OtherProjectsSitesProvider.php M client/tests/phpunit/includes/OtherProjectsSitesProviderTest.php 2 files changed, 36 insertions(+), 5 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/93/148993/1 diff --git a/client/includes/OtherProjectsSitesProvider.php b/client/includes/OtherProjectsSitesProvider.php index e8c93b0..72a0d28 100644 --- a/client/includes/OtherProjectsSitesProvider.php +++ b/client/includes/OtherProjectsSitesProvider.php @@ -28,12 +28,18 @@ private $currentSite; /** + * @var array + */ + private $specialSiteGroups; + + /** * @param SiteStore $siteStore * @param Site $currentSite */ - public function __construct( SiteStore $siteStore, Site $currentSite ) { + public function __construct( SiteStore $siteStore, Site $currentSite, array $specialSiteGroups ) { $this->siteStore = $siteStore; $this->currentSite = $currentSite; + $this->specialSiteGroups = $specialSiteGroups; } /** @@ -50,8 +56,9 @@ if ( !$localSite ) { return array(); } + $specialSiteGroups = $settings->getSetting( 'specialSiteLinkGroups' ); - $otherProjectsSitesProvider = new self( $sitesStore, $localSite ); + $otherProjectsSitesProvider = new self( $sitesStore, $localSite, $specialSiteGroups ); $otherProjectsSites = $otherProjectsSitesProvider->getOtherProjectsSites( $settings->getSetting( 'siteLinkGroups' ) ); $otherProjectsSiteIds = array(); @@ -75,6 +82,8 @@ public function getOtherProjectsSites( array $supportedSiteGroupIds ) { $currentGroupId = $this->currentSite->getGroup(); $otherProjectsSites = new SiteList(); + + $this->substituteSpecialSiteGroups( $supportedSiteGroupIds ); foreach ( $supportedSiteGroupIds as $groupId ) { if ( $groupId === $currentGroupId ) { @@ -115,4 +124,16 @@ return null; } + + /** + * @param array &$groups + */ + private function substituteSpecialSiteGroups( &$groups ) { + if ( !in_array( 'special', $groups ) ) { + return; + } + + $groups = array_diff( $groups, array( 'special' ) ); + $groups = array_merge( $groups, $this->specialSiteGroups ); + } } \ No newline at end of file diff --git a/client/tests/phpunit/includes/OtherProjectsSitesProviderTest.php b/client/tests/phpunit/includes/OtherProjectsSitesProviderTest.php index f4074c3..07d02dd 100644 --- a/client/tests/phpunit/includes/OtherProjectsSitesProviderTest.php +++ b/client/tests/phpunit/includes/OtherProjectsSitesProviderTest.php @@ -6,7 +6,6 @@ use Site; use SiteList; use SiteStore; -use TestSites; use Wikibase\Client\OtherProjectsSitesProvider; use Wikibase\Client\WikibaseClient; use Wikibase\Test\MockSiteStore; @@ -31,7 +30,7 @@ * @dataProvider otherProjectSitesProvider */ public function testOtherProjectSites( SiteStore $siteStore, array $supportedSites, Site $inputSite, SiteList $expectedSites ) { - $otherProjectsSitesProvider = new OtherProjectsSitesProvider( $siteStore, $inputSite ); + $otherProjectsSitesProvider = new OtherProjectsSitesProvider( $siteStore, $inputSite, array() ); $this->assertEquals( $expectedSites, @@ -118,6 +117,12 @@ $site->setLanguageCode( 'en' ); $sites[] = $site; + $site = new MediaWikiSite(); + $site->setGlobalId( 'wikidatawiki' ); + $site->setGroup( 'wikidata' ); + $site->setLanguageCode( 'en' ); + $sites[] = $site; + return $sites; } @@ -137,11 +142,13 @@ $siteStore->saveSites( $sites ); + $oldSpecialSiteLinkGroups = $settings->getSetting( 'specialSiteLinkGroups' ); $oldSiteGlobalId = $settings->getSetting( 'siteGlobalID' ); $oldSiteLinkGroups = $settings->getSetting( 'siteLinkGroups' ); $settings->setSetting( 'siteGlobalID', $siteGlobalID ); $settings->setSetting( 'siteLinkGroups', $siteLinkGroups ); + $settings->setSetting( 'specialSiteLinkGroups', array( 'wikidata' ) ); $siteIds = OtherProjectsSitesProvider::getSiteIds(); @@ -150,6 +157,7 @@ $siteIds ); + $settings->setSetting( 'specialSiteLinkGroups', $oldSpecialSiteLinkGroups ); $settings->setSetting( 'siteLinkGroups', $oldSiteLinkGroups ); $settings->setSetting( 'siteGlobalID', $oldSiteGlobalId ); WikibaseClient::getDefaultInstance( 'reset' ); @@ -166,7 +174,9 @@ 'No sister sites in language' => array( array(), 'eswiki', array( 'wikipedia', 'wikisource', 'wikivoyage' ) ), 'Only one siteLinkGroup' => - array( array(), 'enwiki', array( 'wikipedia' ) ) + array( array(), 'enwiki', array( 'wikipedia' ) ), + 'Special siteLinkGroup' => + array( array( 'wikidatawiki' ), 'enwiki', array( 'wikipedia', 'special' ) ) ); } } -- To view, visit https://gerrit.wikimedia.org/r/148993 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I07abcbafbd18a66089685f8fba7164744f9011c9 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Hoo man <h...@online.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits