UrlParams   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
eloc 16
dl 0
loc 49
ccs 14
cts 14
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A urlParams() 0 5 1
A flatten() 0 21 6
1
<?php
2
3
namespace mQueue\View\Helper;
4
5
use Zend_View_Helper_Abstract;
6
7
class UrlParams extends Zend_View_Helper_Abstract
8
{
9
    private $escapeParams;
10
11
    /**
12
     * Returns the current page URL with specified GET parameters.
13
     *
14
     * @param array $params
15
     * @param bool $escapeParams if false '&' characters will not be escaped
16
     *
17
     * @return string
18
     */
19 12
    public function urlParams(array $params, $escapeParams = true)
20
    {
21 12
        $this->escapeParams = $escapeParams;
22
23 12
        return $this->view->serverUrl() . $this->view->url() . '?' . $this->flatten($params);
24
    }
25
26
    /**
27
     * Flatten a recursive array in GET parameters (same as HTML form send GET request)
28
     *
29
     * @param array $params
30
     * @param string $result
31
     * @param string $previousName
32
     *
33
     * @return string
34
     */
35 12
    private function flatten(array $params, $result = '', $previousName = null): string
36
    {
37 12
        foreach ($params as $key => $value) {
38 12
            if ($previousName) {
39 1
                $name = $previousName . '[' . $key . ']';
40
            } else {
41 12
                $name = $key;
42
            }
43
44 12
            if (is_array($value)) {
45 1
                $result = $this->flatten($value, $result, $name);
46
            } else {
47 12
                if ($result) {
48 4
                    $result .= $this->escapeParams ? '&amp;' : '&';
49
                }
50
51 12
                $result .= $name . '=' . urlencode($value);
52
            }
53
        }
54
55 12
        return $result;
56
    }
57
}
58