Skip to content

Commit 2a61d95

Browse files
authored
Merge pull request #4 from fromholdio/compat-configuredmultisites
Compatibility with new configured-multisites module
2 parents e5a3e0e + d3b0022 commit 2a61d95

File tree

5 files changed

+71
-25
lines changed

5 files changed

+71
-25
lines changed

_config/config.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,22 @@ Symbiote\Multisites\Model\Site:
2525
extensions:
2626
- Innoweb\Robots\Extensions\ConfigExtension
2727

28+
---
29+
Name: innoweb-robots-configured-multisites
30+
Only:
31+
classexists: 'Fromholdio\ConfiguredMultisites\Multisites'
32+
---
33+
34+
Fromholdio\ConfiguredMultisites\Model\Site:
35+
extensions:
36+
- Innoweb\Robots\Extensions\ConfigExtension
37+
2838
---
2939
Name: innoweb-robots-nomultisites
3040
Except:
31-
classexists: 'Symbiote\Multisites\Multisites'
41+
classexists:
42+
- 'Symbiote\Multisites\Multisites'
43+
- 'Fromholdio\ConfiguredMultisites\Multisites'
3244
---
3345
Silverstripe\SiteConfig\SiteConfig:
3446
extensions:

_config/routes.yml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,31 @@ SilverStripe\Control\Director:
1313
robots.txt: Innoweb\Robots\Controllers\RobotsController
1414
$URLSegment//$Action/$ID/$OtherID: Symbiote\Multisites\Control\MultisitesFrontController
1515

16+
17+
---
18+
Name: innoweb-robots-routes-configured-multi
19+
After:
20+
- '*'
21+
- 'multisitesmodelascontrollerroutes'
22+
- 'modelascontrollercatchallroute'
23+
Only:
24+
classexists: 'Fromholdio\ConfiguredMultisites\Multisites'
25+
---
26+
SilverStripe\Control\Director:
27+
rules:
28+
'': Fromholdio\ConfiguredMultisites\Control\MultisitesRootController
29+
robots.txt: Innoweb\Robots\Controllers\RobotsController
30+
$URLSegment//$Action/$ID/$OtherID: Fromholdio\ConfiguredMultisites\Control\MultisitesFrontController
31+
32+
1633
---
1734
Name: innoweb-robots-routes-nomulti
1835
After:
1936
- '*'
2037
Except:
21-
classexists: 'Symbiote\Multisites\Multisites'
38+
classexists:
39+
- 'Symbiote\Multisites\Multisites'
40+
- 'Fromholdio\ConfiguredMultisites\Multisites'
2241
---
2342
SilverStripe\Control\Director:
2443
rules:

readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
Adds a Robots.txt file that is configurable from /admin/settings/ and injects robots meta tag into all pages.
99

10-
This module supports single site as well as [multisites](https://github.com/symbiote/silverstripe-multisites) setups.
10+
This module supports single site as well as [multisites](https://github.com/symbiote/silverstripe-multisites) and [configured-multisites](https://github.com/fromholdio/silverstripe-multisites) setups.
1111

1212
## Requirements
1313

@@ -27,7 +27,7 @@ Then run dev/build.
2727

2828
### Robots.txt
2929

30-
On the SiteConfig (or Site is Multisites is installed) there is a setting in the CMS that lets you set the robots mode. The three options are:
30+
On the SiteConfig (or Site if Multisites is installed) there is a setting in the CMS that lets you set the robots mode. The three options are:
3131
* Allow all
3232
* Disallow all
3333
* Custom content

src/Controllers/RobotsController.php

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
use SilverStripe\Control\Director;
1111
use SilverStripe\Core\Manifest\ModuleLoader;
1212
use SilverStripe\SiteConfig\SiteConfig;
13-
use Symbiote\Multisites\Model\Site;
14-
use Symbiote\Multisites\Multisites;
1513
use Wilr\GoogleSitemaps\GoogleSitemap;
1614

1715
class RobotsController extends Controller
@@ -84,12 +82,9 @@ public function getActiveMode()
8482

8583
public function getRobotsSite()
8684
{
87-
$isMultisitesEnabled = ModuleLoader::inst()
88-
->getManifest()
89-
->moduleExists('symbiote/silverstripe-multisites');
90-
91-
if ($isMultisitesEnabled) {
92-
$site = Multisites::inst()->getCurrentSite();
85+
$multisitesClass = $this->getMultisitesClassName();
86+
if (!empty($multisitesClass)) {
87+
$site = $multisitesClass::inst()->getCurrentSite();
9388
} else {
9489
$site = SiteConfig::current_site_config();
9590
}
@@ -111,12 +106,9 @@ public function getGoogleSitemapURL()
111106
}
112107

113108
if ($isGoogleSitemapsEnabled) {
114-
$isMultisitesEnabled = ModuleLoader::inst()
115-
->getManifest()
116-
->moduleExists('symbiote/silverstripe-multisites');
117-
118-
if ($isMultisitesEnabled) {
119-
$site = Multisites::inst()->getCurrentSite();
109+
$multisitesClass = $this->getMultisitesClassName();
110+
if (!empty($multisitesClass)) {
111+
$site = $multisitesClass::inst()->getCurrentSite();
120112
$url = $site->getURL() . $url;
121113
} else {
122114
$url = Director::absoluteURL($url);
@@ -147,13 +139,10 @@ public function getDisallowedPages()
147139
'ClassName' => RedirectorPage::class
148140
]);
149141

150-
// exclude multisites sites
151-
$isMultisitesEnabled = ModuleLoader::inst()
152-
->getManifest()
153-
->moduleExists('symbiote/silverstripe-multisites');
154-
if ($isMultisitesEnabled) {
142+
$siteClass = $this->getMultisitesSiteClassName();
143+
if (!empty($siteClass)) {
155144
$pages = $pages->exclude([
156-
'ClassName' => Site::class
145+
'ClassName' => $siteClass,
157146
]);
158147
}
159148

@@ -194,4 +183,28 @@ public function getDisallowedPages()
194183

195184
return null;
196185
}
186+
187+
public function getMultisitesClassName(): ?string
188+
{
189+
$manifest = ModuleLoader::inst()->getManifest();
190+
if ($manifest->moduleExists('symbiote/silverstripe-multisites')) {
191+
return \Symbiote\Multisites\Multisites::class;
192+
}
193+
if ($manifest->moduleExists('fromholdio/silverstripe-configured-multisites')) {
194+
return \Fromholdio\ConfiguredMultisites\Multisites::class;
195+
}
196+
return null;
197+
}
198+
199+
public function getMultisitesSiteClassName(): ?string
200+
{
201+
$manifest = ModuleLoader::inst()->getManifest();
202+
if ($manifest->moduleExists('symbiote/silverstripe-multisites')) {
203+
return \Symbiote\Multisites\Model\Site::class;
204+
}
205+
if ($manifest->moduleExists('fromholdio/silverstripe-configured-multisites')) {
206+
return \Fromholdio\ConfiguredMultisites\Model\Site::class;
207+
}
208+
return null;
209+
}
197210
}

src/Extensions/ConfigExtension.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,9 @@ public function requireDefaultRecords()
133133
{
134134
// get correct config class
135135
if (class_exists('Symbiote\Multisites\Multisites')) {
136-
$configs = \Symbiote\Multisites\Model\Site::get();
136+
$configs = \Symbiote\Multisites\Model\Site::get();
137+
} elseif (class_exists('Fromholdio\ConfiguredMultisites\Multisites')) {
138+
$configs = \Fromholdio\ConfiguredMultisites\Model\Site::get();
137139
} else {
138140
$configs = SiteConfig::get();
139141
}

0 commit comments

Comments
 (0)