From aa8f764436acc15431c5b756bdcb1ace00df3364 Mon Sep 17 00:00:00 2001 From: ale rimoldi Date: Mon, 12 Aug 2019 23:11:41 +0200 Subject: [PATCH 1/3] run route.php when grav is not at the root of the server (#2541) --- system/router.php | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/system/router.php b/system/router.php index 9ab055892..9d4498144 100644 --- a/system/router.php +++ b/system/router.php @@ -17,11 +17,25 @@ if (is_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $_SERVER['SCRIPT_N return false; } +$gravBasedir = getenv('GRAV_BASEDIR'); +if ($gravBasedir === false) { + $gravBasedir = ''; +} else { + $gravBasedir = DIRECTORY_SEPARATOR . trim($gravBasedir, DIRECTORY_SEPARATOR); + // tell system/defines.php not to use the default GRAV_ROOT + define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, '/', getcwd()). $gravBasedir); + +} + $_SERVER = array_merge($_SERVER, $_ENV); -$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'index.php'; -$_SERVER['SCRIPT_NAME'] = DIRECTORY_SEPARATOR . 'index.php'; -$_SERVER['PHP_SELF'] = DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . $gravBasedir .DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['SCRIPT_NAME'] = $gravBasedir . DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['PHP_SELF'] = $gravBasedir . DIRECTORY_SEPARATOR . 'index.php'; error_log(sprintf('%s:%d [%d]: %s', $_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_PORT'], http_response_code(), $_SERVER['REQUEST_URI']), 4); -require 'index.php'; +if ($gravBasedir === '') { + require 'index.php'; +} else { + require ltrim($gravBasedir, '/') . DIRECTORY_SEPARATOR . 'index.php'; +} From d2833a19977ec60b40d9bc7879cd6e21a5e6f4b4 Mon Sep 17 00:00:00 2001 From: Aaron Dalton Date: Mon, 12 Aug 2019 15:22:21 -0600 Subject: [PATCH 2/3] Allow users to override plugin handler priorities (#2165) --- system/src/Grav/Common/Plugin.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/system/src/Grav/Common/Plugin.php b/system/src/Grav/Common/Plugin.php index d85fcb4cf..8729a519f 100644 --- a/system/src/Grav/Common/Plugin.php +++ b/system/src/Grav/Common/Plugin.php @@ -151,15 +151,32 @@ class Plugin implements EventSubscriberInterface, \ArrayAccess if (\is_string($params)) { $dispatcher->addListener($eventName, [$this, $params]); } elseif (\is_string($params[0])) { - $dispatcher->addListener($eventName, [$this, $params[0]], $params[1] ?? 0); + $dispatcher->addListener($eventName, [$this, $params[0]], $this->getPriority($params, $eventName)); } else { foreach ($params as $listener) { - $dispatcher->addListener($eventName, [$this, $listener[0]], $listener[1] ?? 0); + $dispatcher->addListener($eventName, [$this, $listener[0]], $this->getPriority($listener, $eventName)); } } } } + /** + * @param array $params + * @param string $eventName + */ + private function getPriority($params, $eventName) + { + $grav = Grav::instance(); + $override = implode('.', ["priorities", $this->name, $eventName, $params[0]]); + if ($grav['config']->get($override) !== null) + { + return $grav['config']->get($override); + } elseif (isset($params[1])) { + return $params[1]; + } + return 0; + } + /** * @param array $events */ From 65c73f639f156b65cdcc67cd1f277973d87ed13d Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 12 Aug 2019 16:06:16 -0600 Subject: [PATCH 3/3] Update changelog --- CHANGELOG.md | 2 ++ system/router.php | 27 ++++++++++++--------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c416d0fd0..59451425d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ 1. [](#new) * Added support for custom `FormFlash` save locations * Added a new `Utils::arrayLower()` method for lowercasing arrays + * Support new GRAV_BASEDIR environment variable [#2541](https://github.com/getgrav/grav/pull/2541) + * Allow users to override plugin handler priorities [#2165](https://github.com/getgrav/grav/pull/2165) 1. [](#improved) * Use new `Utils::getSupportedPageTypes()` to enforce `html,htm` at the front of the list [#2531](https://github.com/getgrav/grav/issues/2531) * Updated vendor libraries diff --git a/system/router.php b/system/router.php index 9d4498144..43571b354 100644 --- a/system/router.php +++ b/system/router.php @@ -17,25 +17,22 @@ if (is_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $_SERVER['SCRIPT_N return false; } -$gravBasedir = getenv('GRAV_BASEDIR'); -if ($gravBasedir === false) { - $gravBasedir = ''; -} else { - $gravBasedir = DIRECTORY_SEPARATOR . trim($gravBasedir, DIRECTORY_SEPARATOR); - // tell system/defines.php not to use the default GRAV_ROOT - define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, '/', getcwd()). $gravBasedir); +$grav_index = 'index.php'; +/* Check the GRAV_BASEDIR environment variable and use if set */ +$grav_basedir = getenv('GRAV_BASEDIR') ?: ''; + +if (isset($grav_basedir)) { + $grav_index = ltrim($grav_basedir, '/') . DIRECTORY_SEPARATOR . $grav_index; + $grav_basedir = DIRECTORY_SEPARATOR . trim($grav_basedir, DIRECTORY_SEPARATOR); + define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, '/', getcwd()) . $grav_basedir); } $_SERVER = array_merge($_SERVER, $_ENV); -$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . $gravBasedir .DIRECTORY_SEPARATOR . 'index.php'; -$_SERVER['SCRIPT_NAME'] = $gravBasedir . DIRECTORY_SEPARATOR . 'index.php'; -$_SERVER['PHP_SELF'] = $gravBasedir . DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . $grav_basedir .DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['SCRIPT_NAME'] = $grav_basedir . DIRECTORY_SEPARATOR . 'index.php'; +$_SERVER['PHP_SELF'] = $grav_basedir . DIRECTORY_SEPARATOR . 'index.php'; error_log(sprintf('%s:%d [%d]: %s', $_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_PORT'], http_response_code(), $_SERVER['REQUEST_URI']), 4); -if ($gravBasedir === '') { - require 'index.php'; -} else { - require ltrim($gravBasedir, '/') . DIRECTORY_SEPARATOR . 'index.php'; -} +require $grav_index;