Skip to content
Snippets Groups Projects
Commit e8554d64 authored by catch's avatar catch
Browse files

Issue #3024264 by roderik: Document and rename variables in DrupalKernel::findSitePath()

parent 8c9110da
No related branches found
No related tags found
28 merge requests!54479.5.x SF update,!5014Issue #3071143: Table Render Array Example Is Incorrect,!4868Issue #1428520: Improve menu parent link selection,!4289Issue #1344552 by marcingy, Niklas Fiekas, Ravi.J, aleevas, Eduardo Morales...,!4114Issue #2707291: Disable body-level scrolling when a dialog is open as a modal,!4100Issue #3249600: Add support for PHP 8.1 Enums as allowed values for list_* data types,!3630Issue #2815301 by Chi, DanielVeza, kostyashupenko, smustgrave: Allow to create...,!3600Issue #3344629: Passing null to parameter #1 ($haystack) of type string is deprecated,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2334Issue #3228209: Add hasRole() method to AccountInterface,!2062Issue #3246454: Add weekly granularity to views date sort,!1591Issue #3199697: Add JSON:API Translation experimental module,!1484Exposed filters get values from URL when Ajax is on,!1255Issue #3238922: Refactor (if feasible) uses of the jQuery serialize function to use vanillaJS,!1162Issue #3100350: Unable to save '/' root path alias,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!925Issue #2339235: Remove taxonomy hard dependency on node module,!877Issue #2708101: Default value for link text is not saved,!872Draft: Issue #3221319: Race condition when creating menu links and editing content deletes menu links,!844Resolve #3036010 "Updaters",!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493,!485Sets the autocomplete attribute for username/password input field on login form.,!30Issue #3182188: Updates composer usage to point at ./vendor/bin/composer
......@@ -391,12 +391,14 @@ public static function findSitePath(Request $request, $require_settings = TRUE,
return $test_db->getTestSitePath();
}
// Determine whether multi-site functionality is enabled.
// Determine whether multi-site functionality is enabled. If not, return
// the default directory.
if (!file_exists($app_root . '/sites/sites.php')) {
return 'sites/default';
}
// Otherwise, use find the site path using the request.
// Pre-populate host and script variables, then include sites.php which may
// populate $sites with a site-directory mapping.
$script_name = $request->server->get('SCRIPT_NAME');
if (!$script_name) {
$script_name = $request->server->get('SCRIPT_FILENAME');
......@@ -406,16 +408,27 @@ public static function findSitePath(Request $request, $require_settings = TRUE,
$sites = [];
include $app_root . '/sites/sites.php';
$uri = explode('/', $script_name);
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($http_host, '.')))));
for ($i = count($uri) - 1; $i > 0; $i--) {
for ($j = count($server); $j > 0; $j--) {
$dir = implode('.', array_slice($server, -$j)) . implode('.', array_slice($uri, 0, $i));
if (isset($sites[$dir]) && file_exists($app_root . '/sites/' . $sites[$dir])) {
$dir = $sites[$dir];
// Construct an identifier from pieces of the (port plus) host plus script
// path (excluding the filename). Loop over all possibilities starting from
// most specific, then dropping pieces from the start of the port/hostname
// while keeping the full path, then gradually dropping pieces from the end
// of the path... until we find a directory corresponding to the identifier.
$path_parts = explode('/', $script_name);
$host_parts = explode('.', implode('.', array_reverse(explode(':', rtrim($http_host, '.')))));
for ($i = count($path_parts) - 1; $i > 0; $i--) {
for ($j = count($host_parts); $j > 0; $j--) {
// Assume the path has a leading slash, so the imploded path parts are
// either a path identifier with leading dot, or an empty string.
$site_id = implode('.', array_slice($host_parts, -$j)) . implode('.', array_slice($path_parts, 0, $i));
// If the identifier is a key in $sites, check for a directory matching
// the corresponding value. Otherwise, check for a directory matching
// the identifier.
if (isset($sites[$site_id]) && file_exists($app_root . '/sites/' . $sites[$site_id])) {
$site_id = $sites[$site_id];
}
if (file_exists($app_root . '/sites/' . $dir . '/settings.php') || (!$require_settings && file_exists($app_root . '/sites/' . $dir))) {
return "sites/$dir";
if (file_exists($app_root . '/sites/' . $site_id . '/settings.php') || (!$require_settings && file_exists($app_root . '/sites/' . $site_id))) {
return "sites/$site_id";
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment