-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDataProviderOperatorsSetup.php
142 lines (121 loc) · 2.95 KB
/
DataProviderOperatorsSetup.php
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
namespace Kora\DataProvider;
use Kora\DataProvider\OperatorDefinition\FilterOperatorDefinitionInterface;
use Kora\DataProvider\OperatorDefinition\OrderOperatorDefinitionInterface;
use Kora\DataProvider\OperatorDefinition\PagerOperatorDefinitionInterface;
/**
* Class DataProviderOperatorsSetup
* @author Paweł Gierlasiński <[email protected]>
*/
class DataProviderOperatorsSetup
{
/**
* @var OperatorDefinitionInterface[]
*/
protected $operators = [];
/**
* @var FilterOperatorDefinitionInterface[]
*/
protected $filters = [];
/**
* @var array[]
*/
protected $filtersExtraConfig = [];
/**
* @var OrderOperatorDefinitionInterface
*/
protected $order;
/**
* @var PagerOperatorDefinitionInterface
*/
protected $pager;
/**
* @param OperatorDefinitionInterface $operator
*
* @return DataProviderOperatorsSetup
*/
public function addOperator(OperatorDefinitionInterface $operator): DataProviderOperatorsSetup
{
$this->operators[] = $operator;
return $this;
}
/**
* @return OperatorDefinitionInterface[]
*/
public function getOperators(): array
{
return $this->operators;
}
/**
* @param FilterOperatorDefinitionInterface $filter
*
* @param array $extraConfig
* @return DataProviderOperatorsSetup
*/
public function addFilter(FilterOperatorDefinitionInterface $filter, array $extraConfig = []): DataProviderOperatorsSetup
{
$this->filters[$filter->getName()] = $filter;
$this->filtersExtraConfig[$filter->getName()] = $extraConfig;
$this->addOperator($filter);
return $this;
}
/**
* @return FilterOperatorDefinitionInterface[]
*/
public function getFilters(): array
{
return $this->filters;
}
/**
* @return \Generator|array[]
*/
public function getFiltersWithExtraConfigIterator()
{
foreach ($this->filters as $filter) {
yield $filter->getName() => [$filter, $this->filtersExtraConfig[$filter->getName()]];
}
}
/**
* @param OrderOperatorDefinitionInterface $order
* @return DataProviderOperatorsSetup
*/
public function setOrder(OrderOperatorDefinitionInterface $order)
{
$this->order = $order;
$this->addOperator($order);
return $this;
}
/**
* @return OrderOperatorDefinitionInterface
*/
public function getOrder()
{
return $this->order;
}
/**
* @param PagerOperatorDefinitionInterface $pager
* @return DataProviderOperatorsSetup
*/
public function setPager(PagerOperatorDefinitionInterface $pager): DataProviderOperatorsSetup
{
$this->pager = $pager;
$this->addOperator($pager);
return $this;
}
/**
* @return PagerOperatorDefinitionInterface
*/
public function getPager()
{
return $this->pager;
}
/**
* @param array $params
*/
public function setData(array $params)
{
foreach ($this->operators as $operator) {
$operator->initData($params);
}
}
}