3
3
namespace drunomics \MultisiteRequestMatcher ;
4
4
5
5
6
+ use Drupal \Core \Render \Markup ;
6
7
use Symfony \Component \HttpFoundation \Request ;
7
8
8
9
/**
@@ -123,27 +124,58 @@ private function getRequestFromGlobals() {
123
124
}
124
125
125
126
/**
126
- * Gets the same site variables as set during request matching .
127
+ * Determines the currently active site .
127
128
*
128
- * Useful for setting the same environment variables during CLI invocations as
129
- * during regular request .
129
+ * @return string
130
+ * The active site's name .
130
131
*/
131
- public static function getSiteVariables () {
132
+ public static function determineActiveSite () {
132
133
$ site = getenv ('SITE ' ) ?: getenv ('APP_DEFAULT_SITE ' );
133
134
if (!$ site ) {
134
135
$ sites = explode (' ' , getenv ('APP_SITES ' ));
135
136
$ site = reset ($ sites );
136
137
}
137
- $ vars = 'SITE= ' . $ site . "\n" ;
138
- $ vars .= 'SITE_VARIANT= ' . "\n" ;
138
+ return $ site ;
139
+ }
140
+
141
+ /**
142
+ * Gets the same site variables as set during request matching.
143
+ *
144
+ * Useful for setting the same environment variables during CLI invocations as
145
+ * during regular request.
146
+ *
147
+ * @param string $site
148
+ * (optional) The site to use.
149
+ *
150
+ * @return array
151
+ * The array of site variables.
152
+ */
153
+ public static function getSiteVariables ($ site = NULL ) {
154
+ $ site = $ site ?: static ::determineActiveSite ();
155
+ $ vars = [];
156
+ $ vars ['SITE ' ] = $ site ;
157
+ $ vars ['SITE_VARIANT ' ] = '' ;
139
158
if ($ domain = getenv ('APP_MULTISITE_DOMAIN ' )) {
140
159
$ host = $ site . getenv ('APP_MULTISITE_DOMAIN_PREFIX_SEPARATOR ' ) . $ domain ;
141
160
}
142
161
else {
143
162
$ host = getenv ('APP_SITE_DOMAIN-- ' . $ site );
144
163
}
145
- $ vars .= 'SITE_HOST= ' . $ host . "\n" ;
146
- $ vars .= 'SITE_MAIN_HOST= ' . $ host . "\n" ;
164
+ $ vars ['SITE_HOST ' ] = $ host ;
165
+ $ vars ['SITE_MAIN_HOST ' ] = $ host ;
166
+ return $ vars ;
167
+ }
168
+
169
+ /**
170
+ * Gets the site variables as string.
171
+ *
172
+ * @return string
173
+ */
174
+ public static function printSiteVariables () {
175
+ $ vars = '' ;
176
+ foreach (static ::getSiteVariables () as $ variable => $ value ) {
177
+ $ vars .= "$ variable= $ value \n" ;
178
+ }
147
179
return $ vars ;
148
180
}
149
181
@@ -168,8 +200,11 @@ public static function getSiteVariables() {
168
200
public function match (Request $ request = NULL ) {
169
201
// Do not attempt to match on CLI but apply the default site.
170
202
if (!$ request && php_sapi_name () == "cli " ) {
171
- putenv (static ::getSiteVariables ());
172
- return getenv ('SITE ' );
203
+ $ site = static ::determineActiveSite ();
204
+ foreach (static ::getSiteVariables ($ site ) as $ variable => $ value ) {
205
+ putenv ("$ variable= $ value " );
206
+ }
207
+ return $ site ;
173
208
}
174
209
175
210
if (!$ request ) {
0 commit comments