summaryrefslogtreecommitdiffstats
path: root/lib/kolab_utils.php
blob: 1acd4baf785d9dfcc7e95d9c01ebe6da8290d20d (plain)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php

class kolab_utils
{
    const REQUEST_ANY  = 0;
    const REQUEST_GET  = 1;
    const REQUEST_POST = 2;

    /**
     * Read a specific HTTP request header
     *
     * @param string $name  Header name
     *
     * @return mixed  Header value or null if not available
     */
    public static function request_header($name)
    {
        if (function_exists('getallheaders')) {
            $hdrs = array_change_key_case(getallheaders(), CASE_UPPER);
            $key  = strtoupper($name);
        }
        else {
            $key  = 'HTTP_' . strtoupper(strtr($name, '-', '_'));
            $hdrs = array_change_key_case($_SERVER, CASE_UPPER);
        }

        return $hdrs[$key];
    }

    /**
     * Returns input parameter value.
     *
     * @param string $name       Parameter name
     * @param int    $type       Parameter type
     * @param bool   $allow_html Enable to strip invalid/unsecure content
     *
     * @return mixed Input value
     */
    public static function get_input($name, $type = null, $allow_html = false)
    {
        if ($type == self::REQUEST_GET) {
            $value = isset($_GET[$name]) ? $_GET[$name] : null;
        }
        else if ($type == self::REQUEST_POST) {
            $value = isset($_POST[$name]) ? $_POST[$name] : null;
        }
        else {
            $value = isset($_REQUEST[$name]) ? $_REQUEST[$name] : null;
        }

        return self::parse_input($value, $allow_html);
    }

    /**
     * Input parsing.
     *
     * @param mixed  $value      Input value
     * @param bool   $allow_html Enable to strip invalid/unsecure content
     *
     * @return mixed Input value
     */
    public static function parse_input($value, $allow_html = false)
    {
        if (empty($value)) {
            return $value;
        }

        if (is_array($value)) {
            foreach ($value as $idx => $val) {
                $value[$idx] = self::parse_input($val, $allow_html);
            }
        }
        // remove HTML tags if not allowed
        else if (!$allow_html) {
            $value = strip_tags($value);
        }

        return $value;
    }

    /**
     * Make sure the string ends with a slash
     */
    public static function slashify($str)
    {
        return self::unslashify($str).'/';
    }

    /**
     * Remove slash at the end of the string
     */
    public static function unslashify($str)
    {
        return preg_replace('/\/$/', '', $str);
    }

}