This repository was archived by the owner on Dec 31, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCoreUtilities.php
More file actions
71 lines (56 loc) · 1.97 KB
/
CoreUtilities.php
File metadata and controls
71 lines (56 loc) · 1.97 KB
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
<?php
/*
BluffingoCore
Copyright (C) 2025 Chaziz
BluffingoCore is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.
BluffingoCore is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace BluffingoCore;
/**
* Static core utilities.
*/
class CoreUtilities
{
public static function getURL(bool $includeURI = false): ?string
{
if (!isset($_SERVER['HTTP_HOST'])) {
return null;
}
$protocol = self::isThisHttps() ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'];
if ($includeURI && isset($_SERVER['REQUEST_URI'])) {
return $protocol . '://' . $host . $_SERVER['REQUEST_URI'];
}
return $protocol . '://' . $host;
}
public static function redirect(string $url, int $statusCode = 302): never
{
header("Location: $url", true, $statusCode);
exit;
}
public static function isThisHttps()
{
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
return true;
}
// somewhat inefficient?
if (isset($_SERVER['HTTP_CF_VISITOR'])) {
$cf_visitor = json_decode($_SERVER['HTTP_CF_VISITOR']);
if (isset($cf_visitor->scheme) && $cf_visitor->scheme === 'https') {
return true;
}
}
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
return true;
}
return false;
}
}