summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2015-07-23 10:05:32 +0200
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2015-07-23 10:05:32 +0200
commit6db09411968ff0eac722efde79628b501b8dbe5e (patch)
tree7edd704a6955d1fdd6c4a4c6b17aa3100702bffd /lib
parent2e544d2c1a38151bf63f3649cecf72026b52d0f0 (diff)
Fix unexpected behaviour in getBaseUrl
- getBaseUrl() returns info from configuration only and always append the suffix - add a guessBaseUrl() to extract base_url from $_SERVER info - fix Url::display() to take this change in consideration Fix https://github.com/FreshRSS/FreshRSS/issues/906 Use https://github.com/FreshRSS/FreshRSS/pull/910
Diffstat (limited to 'lib')
-rw-r--r--lib/Minz/Request.php48
-rw-r--r--lib/Minz/Url.php3
2 files changed, 31 insertions, 20 deletions
diff --git a/lib/Minz/Request.php b/lib/Minz/Request.php
index 67fbae126..059b4359c 100644
--- a/lib/Minz/Request.php
+++ b/lib/Minz/Request.php
@@ -85,29 +85,37 @@ class Minz_Request {
}
/**
- * Détermine la base de l'url
- * @return la base de l'url
+ * Try to guess the base URL from $_SERVER information
+ *
+ * @return the base url (e.g. http://example.com/)
*/
- public static function getBaseUrl($baseUrlSuffix = '') {
- $conf = Minz_Configuration::get('system');
- $url = $conf->base_url;
- if ($url == '' || !preg_match('%^https?://%i', $url)) {
- $url = 'http';
- $host = empty($_SERVER['HTTP_HOST']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST'];
- $port = empty($_SERVER['SERVER_PORT']) ? 80 : $_SERVER['SERVER_PORT'];
- if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
- $url .= 's://' . $host . ($port == 443 ? '' : ':' . $port);
- } else {
- $url .= '://' . $host . ($port == 80 ? '' : ':' . $port);
- }
- if (isset($_SERVER['REQUEST_URI'])) {
- $path = $_SERVER['REQUEST_URI'];
- $url .= substr($path, -1) === '/' ? substr($path, 0, -1) : dirname($path);
- }
+ public static function guessBaseUrl() {
+ $url = 'http';
+ $host = empty($_SERVER['HTTP_HOST']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST'];
+ $port = empty($_SERVER['SERVER_PORT']) ? 80 : $_SERVER['SERVER_PORT'];
+ if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
+ $url .= 's://' . $host . ($port == 443 ? '' : ':' . $port);
} else {
- $url = rtrim($url, '/\\') . $baseUrlSuffix;
+ $url .= '://' . $host . ($port == 80 ? '' : ':' . $port);
+ }
+ if (isset($_SERVER['REQUEST_URI'])) {
+ $path = $_SERVER['REQUEST_URI'];
+ $url .= substr($path, -1) === '/' ? substr($path, 0, -1) : dirname($path);
}
- return filter_var($url . '/', FILTER_SANITIZE_URL);
+
+ return $url;
+ }
+
+ /**
+ * Return the base_url from configuration and add a suffix if given.
+ *
+ * @param $base_url_suffix a string to add at base_url (default: empty string)
+ * @return the base_url with a suffix.
+ */
+ public static function getBaseUrl($base_url_suffix = '') {
+ $conf = Minz_Configuration::get('system');
+ $url = rtrim($conf->base_url, '/\\') . $base_url_suffix;
+ return filter_var($url, FILTER_SANITIZE_URL);
}
/**
diff --git a/lib/Minz/Url.php b/lib/Minz/Url.php
index a2809257d..4279b045b 100644
--- a/lib/Minz/Url.php
+++ b/lib/Minz/Url.php
@@ -25,6 +25,9 @@ class Minz_Url {
if ($absolute) {
$url_string = Minz_Request::getBaseUrl(PUBLIC_TO_INDEX_PATH);
+ if ($url_string === PUBLIC_TO_INDEX_PATH) {
+ $url_string = Minz_Request::guessBaseUrl();
+ }
} else {
$url_string = $isArray ? '.' : PUBLIC_RELATIVE;
}