blob: adb96cd0df5649dc11e4123730789673343f7144 (
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
|
<?php
namespace ipl\Web;
use Icinga\Web\UrlParams;
use ipl\Stdlib\Filter\Rule;
use ipl\Web\Filter\QueryString;
/**
* @TODO(el): Don't depend on Icinga Web's Url
*/
class Url extends \Icinga\Web\Url
{
/** @var ?Rule */
private $filter;
/**
* Set the filter
*
* @param ?Rule $filter
*
* @return $this
*/
public function setFilter(?Rule $filter): self
{
$this->filter = $filter;
return $this;
}
/**
* Get the filter
*
* @return ?Rule
*/
public function getFilter(): ?Rule
{
return $this->filter;
}
/**
* Render and return the filter and parameters as query string
*
* @param ?string $separator
*
* @return string
*/
public function getQueryString($separator = null)
{
if ($this->filter === null) {
return parent::getQueryString($separator);
}
$params = UrlParams::fromQueryString(QueryString::render($this->filter));
foreach ($this->getParams()->toArray(false) as $name => $value) {
if (is_int($name)) {
$name = $value;
$value = true;
}
$params->addEncoded($name, $value);
}
return $params->toString($separator);
}
public function __toString()
{
return $this->getAbsoluteUrl('&');
}
}
|