Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
*/
/**
* @brief Url Controller
* @author dev@maarch.org
*/
namespace SrcCore\controllers;
class UrlController
{
private static function getPath()
{
if (!empty($_SERVER['HTTP_X_FORWARDED_SCRIPT_NAME'])) {
$baseUri = $_SERVER['HTTP_X_FORWARDED_SCRIPT_NAME'];
} else {
$baseUri = $_SERVER['SCRIPT_NAME'];
}
$baseUri = trim(dirname($baseUri), '/');
$baseUri = str_replace('rest', '', $baseUri);
return '/'.$baseUri;
}
private static function getHost()
{
if (!empty($_SERVER['HTTP_X_FORWARDED_HOST'])) {
return $_SERVER['HTTP_X_FORWARDED_HOST'];
}
$rawHost = explode(':',$_SERVER['HTTP_HOST']);
return $rawHost[0];
}
private static function getPort()
{
if (!empty($_SERVER['HTTP_X_FORWARDED_PORT'])) {
return $_SERVER['HTTP_X_FORWARDED_PORT'];
}
return $_SERVER['SERVER_PORT'];
}
private static function getProto()
{
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
return $_SERVER['HTTP_X_FORWARDED_PROTO'];
}
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
return 'https';
}
return 'http';
}
public static function getCoreUrl()
{
$url = UrlController::getProto();
$url .= '://';
$url .= UrlController::getHost();
$port = UrlController::getPort();
if ($port != 80 && $port != 443) {
$url .= ':';
$url .= $port;
}
$url .= UrlController::getPath();
return $url;
}
}