1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
columns.php
См. документацию.
1
<?php
2
3
namespace
Bitrix\Main\Grid\Column;
4
13
class
Columns
implements
\IteratorAggregate, \Countable
14
{
18
private
array
$providers;
19
private
array
$columns;
20
private
array
$providersColumns;
21
25
public
function
__construct
(
DataProvider
...$providers)
26
{
27
$this->providers = [];
28
foreach
($providers as
$provider
)
29
{
30
$this->providers[] =
$provider
;
31
}
32
}
33
39
final
public
function
getIterator
(): \ArrayIterator
40
{
41
return
new \ArrayIterator($this->getColumns());
42
}
43
49
final
public
function
count
(): int
50
{
51
return
count
($this->getColumns());
52
}
53
61
final
public
function
getColumn
(
string
$id): ?
Column
62
{
63
return
$this->getColumns()[$id] ??
null
;
64
}
65
80
final
public
function
getColumns():
array
81
{
82
if
(!isset($this->columns))
83
{
84
$this->columns = [];
85
86
foreach
($this->
getProvidersColumns
() as $providerColumns)
87
{
91
foreach
($providerColumns as $column)
92
{
93
$this->columns[$column->getId()] = $column;
94
}
95
}
96
97
$this->columns = $this->
prepareColumns
($this->columns);
98
}
99
100
return
$this->columns;
101
}
102
108
protected
function
prepareColumns
(
array
$columns):
array
109
{
110
return
$columns;
111
}
112
118
final
protected
function
getProvidersColumns
():
array
119
{
120
if
(!isset($this->providersColumns))
121
{
122
$this->providersColumns = [];
123
124
foreach
($this->providers as
$provider
)
125
{
126
$providerColumns =
$provider
->prepareColumns();
127
if
(empty($providerColumns))
128
{
129
continue
;
130
}
131
132
$providerClass = get_class(
$provider
);
133
$this->providersColumns[$providerClass] = $providerColumns;
134
}
135
}
136
137
return
$this->providersColumns;
138
}
139
189
public
function
getSelect
(?
array
$columnIds =
null
, ?
array
$providers =
null
):
array
190
{
191
$result
= [];
192
193
// filter by providers
194
if
(isset($providers))
195
{
196
$columns = [];
197
foreach
($providers as $providerClass)
198
{
199
$providerColumns = $this->
getProvidersColumns
()[$providerClass] ??
null
;
200
if
(!empty($providerColumns))
201
{
202
array_push($columns, ...$providerColumns);
203
}
204
}
205
206
if
(empty($columns))
207
{
208
return
[];
209
}
210
211
$columns = $this->
prepareColumns
($columns);
212
}
213
else
214
{
215
$columns = $this->getColumns();
216
}
217
218
// filter by columns
219
if
(isset($columnIds))
220
{
221
$columnIds = array_fill_keys($columnIds,
true
);
222
foreach
($columns as $column)
223
{
224
if
(
225
$column->isNecessary()
226
|| isset($columnIds[$column->getId()])
227
)
228
{
229
array_push(
$result
, ...$column->getSelect());
230
}
231
}
232
}
233
else
234
{
235
foreach
($columns as $column)
236
{
237
array_push(
$result
, ...$column->getSelect());
238
}
239
}
240
241
return
$result
;
242
}
243
251
public
function
prepareEditableColumnsValues
(
array
$values):
array
252
{
253
$result
= [];
254
255
foreach
($this->getColumns() as $column)
256
{
257
if
(!$column->isEditable())
258
{
259
continue
;
260
}
261
262
$id = $column->getId();
263
if
(array_key_exists($id, $values))
264
{
265
$result
[$id] = $values[$id];
266
}
267
}
268
269
return
$result
;
270
}
271
}
$provider
if(!Loader::includeModule('messageservice')) $provider
Определения
callback_ednaruimhpx.php:21
Bitrix\Main\Grid\Column\Columns
Определения
columns.php:14
Bitrix\Main\Grid\Column\Columns\getProvidersColumns
getProvidersColumns()
Определения
columns.php:118
Bitrix\Main\Grid\Column\Columns\prepareEditableColumnsValues
prepareEditableColumnsValues(array $values)
Определения
columns.php:251
Bitrix\Main\Grid\Column\Columns\getIterator
getIterator()
Определения
columns.php:39
Bitrix\Main\Grid\Column\Columns\__construct
__construct(DataProvider ... $providers)
Определения
columns.php:25
Bitrix\Main\Grid\Column\Columns\count
count()
Определения
columns.php:49
Bitrix\Main\Grid\Column\Columns\prepareColumns
prepareColumns(array $columns)
Определения
columns.php:108
Bitrix\Main\Grid\Column\Columns\getColumn
getColumn(string $id)
Определения
columns.php:61
Bitrix\Main\Grid\Column\Columns\getSelect
getSelect(?array $columnIds=null, ?array $providers=null)
Определения
columns.php:189
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$result
$result
Определения
get_property_values.php:14
Bitrix\Main\Grid\Column\DataProvider
Определения
tabletcolumnsprovider.php:3
Bitrix\Main\Grid\Column
Определения
color.php:3
bitrix
modules
main
lib
grid
column
columns.php
Создано системой
1.14.0