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

Reply via email to