1 | <?php |
||
29 | 1 | class DibiFluent extends \Nette\Object implements IDataSource |
|
30 | { |
||
31 | /** @var \DibiFluent */ |
||
32 | protected $fluent; |
||
33 | |||
34 | /** @var int */ |
||
35 | protected $limit; |
||
36 | |||
37 | /** @var int */ |
||
38 | protected $offset; |
||
39 | |||
40 | /** |
||
41 | * @param \DibiFluent $fluent |
||
42 | */ |
||
43 | public function __construct(\DibiFluent $fluent) |
||
47 | |||
48 | /** |
||
49 | * @return \DibiFluent |
||
50 | */ |
||
51 | public function getFluent() |
||
55 | |||
56 | /** |
||
57 | * @return int |
||
58 | */ |
||
59 | public function getLimit() |
||
63 | 1 | ||
64 | /** |
||
65 | * @return int |
||
66 | */ |
||
67 | public function getOffset() |
||
68 | { |
||
69 | return $this->offset; |
||
70 | } |
||
71 | |||
72 | /** |
||
73 | * @param \Grido\Components\Filters\Condition $condition |
||
74 | * @param \DibiFluent $fluent |
||
75 | */ |
||
76 | protected function makeWhere(\Grido\Components\Filters\Condition $condition, \DibiFluent $fluent = NULL) |
||
77 | { |
||
78 | $fluent = $fluent === NULL |
||
79 | 1 | ? $this->fluent |
|
80 | 1 | : $fluent; |
|
81 | |||
82 | 1 | if ($condition->callback) { |
|
83 | call_user_func_array($condition->callback, [$condition->value, $fluent]); |
||
84 | } else { |
||
85 | 1 | call_user_func_array([$fluent, 'where'], $condition->__toArray('[', ']')); |
|
86 | } |
||
87 | 1 | } |
|
88 | |||
89 | /********************************** inline editation helpers ************************************/ |
||
90 | |||
91 | /** |
||
92 | * Default callback used when an editable column has customRender. |
||
93 | * @param mixed $id |
||
94 | * @param string $idCol |
||
95 | * @return \DibiRow |
||
96 | */ |
||
97 | public function getRow($id, $idCol) |
||
98 | { |
||
99 | $fluent = clone $this->fluent; |
||
100 | return $fluent |
||
101 | ->where("%n = %s", $idCol, $id) |
||
102 | ->fetch(); |
||
103 | } |
||
104 | |||
105 | /*********************************** interface IDataSource ************************************/ |
||
106 | |||
107 | /** |
||
108 | * @return int |
||
109 | */ |
||
110 | public function getCount() |
||
111 | { |
||
112 | 1 | $fluent = clone $this->fluent; |
|
113 | 1 | return $fluent->count(); |
|
114 | } |
||
115 | |||
116 | /** |
||
117 | * @return array |
||
118 | */ |
||
119 | public function getData() |
||
123 | |||
124 | /** |
||
125 | * @param array $conditions |
||
126 | 1 | */ |
|
127 | public function filter(array $conditions) |
||
133 | |||
134 | /** |
||
135 | * @param int $offset |
||
136 | * @param int $limit |
||
137 | */ |
||
138 | public function limit($offset, $limit) |
||
143 | |||
144 | /** |
||
145 | * @param array $sorting |
||
146 | */ |
||
147 | public function sort(array $sorting) |
||
153 | |||
154 | /** |
||
155 | * @param mixed $column |
||
156 | * @param array $conditions |
||
157 | * @param int $limit |
||
158 | * @return array |
||
159 | * @throws Exception |
||
160 | */ |
||
161 | public function suggest($column, array $conditions, $limit) |
||
190 | } |
||
191 |