Issues (294)

src/EBloodBank/functions.uri.php (1 issue)

Labels
Severity
1
<?php
2
/**
3
 * URI functions file
4
 *
5
 * @package EBloodBank
6
 * @since   1.0
7
 */
8
namespace EBloodBank;
9
10
/**
11
 * @return bool
12
 * @since 1.0
13
 */
14
function isHTTPS()
15
{
16
    return (! empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off');
17
}
18
19
/**
20
 * @return string
21
 * @since 1.0
22
 */
23
function guessHomeURL($format = 'absolute')
24
{
25
    $url = '';
26
27
    if (empty($format)) {
28
        $format = 'absolute';
29
    }
30
31
    switch (strtolower($format)) {
32
33
        case 'absolute':
34
            if (defined('EBB_URL')) {
35
                $url = EBB_URL;
0 ignored issues
show
The constant EBloodBank\EBB_URL was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
36
            } else {
37
                $uri_scheme = isHTTPS() ? 'https' : 'http';
38
                $uri_host = $_SERVER['HTTP_HOST'];
39
                $url_path = dirname($_SERVER['SCRIPT_NAME']);
40
                $url = $uri_scheme . '://' . $uri_host . $url_path;
41
            }
42
            break;
43
44
        case 'relative':
45
            $url = (string) parse_url(guessHomeURL(), PHP_URL_PATH);
46
            break;
47
48
    }
49
50
    return $url;
51
}
52
53
/**
54
 * @return string
55
 * @since 1.0
56
 */
57
function addQueryArgs($uri, array $query_args)
58
{
59
    if (empty($query_args)) {
60
        return $uri;
61
    }
62
63
    $fragment = strstr($uri, '#');
64
    if (! empty($fragment)) {
65
        $uri = substr($uri, 0, -strlen($fragment));
66
    }
67
68
    if (strpos($uri, '?') !== false) {
69
        list($base, $query) = explode('?', $uri, 2);
70
    } else {
71
        $base = $uri;
72
        $query = '';
73
    }
74
75
    $query_array = [];
76
    parse_str($query, $query_array);
77
78
    foreach ($query_args as $key => $value) {
79
        $query_array[$key] = $value;
80
    }
81
82
    foreach ($query_array as $key => $value) {
83
        if ($value === false) {
84
            unset($query_args[$key]);
85
        }
86
    }
87
88
    $query = http_build_query($query_array);
89
90
    return $base . '?' . $query . $fragment;
91
}
92