blob: 2ca6d776156a0d709ae29b8b48f7c093e5f14395 (
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
|
<?php
namespace ipl\Web\Control\SearchBar;
use InvalidArgumentException;
use ipl\Stdlib\Data;
use ipl\Stdlib\Filter;
use LogicException;
class ValidatedOperator extends ValidatedTerm
{
/**
* Create a new ValidatedColumn from the given filter condition
*
* @param Filter\Condition $condition
*
* @return static
*
* @throws InvalidArgumentException In case the condition type is unknown
*/
public static function fromFilterCondition(Filter\Condition $condition)
{
switch (true) {
case $condition instanceof Filter\Unlike:
case $condition instanceof Filter\Unequal:
$operator = '!=';
break;
case $condition instanceof Filter\Like:
case $condition instanceof Filter\Equal:
$operator = '=';
break;
case $condition instanceof Filter\GreaterThan:
$operator = '>';
break;
case $condition instanceof Filter\LessThan:
$operator = '<';
break;
case $condition instanceof Filter\GreaterThanOrEqual:
$operator = '>=';
break;
case $condition instanceof Filter\LessThanOrEqual:
$operator = '<=';
break;
default:
throw new InvalidArgumentException('Unknown condition type');
}
return new static($operator);
}
public function toTermData()
{
$termData = parent::toTermData();
$termData['type'] = 'operator';
return $termData;
}
public function toMetaData()
{
$data = new Data();
if (! $this->isValid()) {
$data->set('invalidOperatorMessage', $this->getMessage())
->set('invalidOperatorPattern', $this->getPattern());
}
return $data;
}
public function setSearchValue($searchValue)
{
throw new LogicException('Operators cannot be changed');
}
public function setLabel($label)
{
throw new LogicException('Operators cannot be changed');
}
}
|