1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
group.php
См. документацию.
1<?php
2
3namespace Bitrix\Catalog;
4
5use Bitrix\Main;
6use Bitrix\Main\ORM;
7use Bitrix\Main\Localization\Loc;
8
42
44{
50 public static function getTableName(): string
51 {
52 return 'b_catalog_group';
53 }
54
60 public static function getMap(): array
61 {
62 return [
63 'ID' => new ORM\Fields\IntegerField(
64 'ID',
65 [
66 'primary' => true,
67 'autocomplete' => true,
68 'title' => Loc::getMessage('GROUP_ENTITY_ID_FIELD'),
69 ]
70 ),
71 'NAME' => new ORM\Fields\StringField(
72 'NAME',
73 [
74 'required' => true,
75 'validation' => function()
76 {
77 return [
79 ];
80 },
81 'title' => Loc::getMessage('GROUP_ENTITY_NAME_FIELD'),
82 ]
83 ),
84 'BASE' => new ORM\Fields\BooleanField(
85 'BASE',
86 [
87 'values' => [
88 'N',
89 'Y',
90 ],
91 'title' => Loc::getMessage('GROUP_ENTITY_BASE_FIELD'),
92 ]
93 ),
94 'SORT' => new ORM\Fields\IntegerField(
95 'SORT',
96 [
97 'title' => Loc::getMessage('GROUP_ENTITY_SORT_FIELD'),
98 ]
99 ),
100 'XML_ID' => new ORM\Fields\StringField(
101 'XML_ID',
102 [
103 'validation' => function()
104 {
105 return [
107 ];
108 },
109 'title' => Loc::getMessage('GROUP_ENTITY_XML_ID_FIELD'),
110 ]
111 ),
112 'TIMESTAMP_X' => new ORM\Fields\DatetimeField(
113 'TIMESTAMP_X',
114 [
115 'title' => Loc::getMessage('GROUP_ENTITY_TIMESTAMP_X_FIELD'),
116 'default_value' => function()
117 {
118 return new Main\Type\DateTime();
119 },
120 ]
121 ),
122 'MODIFIED_BY' => new ORM\Fields\IntegerField(
123 'MODIFIED_BY',
124 [
125 'title' => Loc::getMessage('GROUP_ENTITY_MODIFIED_BY_FIELD'),
126 ]
127 ),
128 'DATE_CREATE' => new ORM\Fields\DatetimeField(
129 'DATE_CREATE',
130 [
131 'title' => Loc::getMessage('GROUP_ENTITY_DATE_CREATE_FIELD'),
132 'default_value' => function()
133 {
134 return new Main\Type\DateTime();
135 },
136 ]
137 ),
138 'CREATED_BY' => new ORM\Fields\IntegerField(
139 'CREATED_BY',
140 [
141 'title' => Loc::getMessage('GROUP_ENTITY_CREATED_BY_FIELD'),
142 ]
143 ),
144 'CREATED_BY_USER' => new ORM\Fields\Relations\Reference(
145 'CREATED_BY_USER',
146 '\Bitrix\Main\User',
147 ['=this.CREATED_BY' => 'ref.ID']
148 ),
149 'MODIFIED_BY_USER' => new ORM\Fields\Relations\Reference(
150 'MODIFIED_BY_USER',
151 '\Bitrix\Main\User',
152 ['=this.MODIFIED_BY' => 'ref.ID']
153 ),
154 'LANG' => new ORM\Fields\Relations\Reference(
155 'LANG',
156 '\Bitrix\Catalog\GroupLang',
157 ['=this.ID' => 'ref.CATALOG_GROUP_ID']
158 ),
159 'CURRENT_LANG' => new ORM\Fields\Relations\Reference(
160 'CURRENT_LANG',
161 '\Bitrix\Catalog\GroupLang',
162 [
163 '=this.ID' => 'ref.CATALOG_GROUP_ID',
164 '=ref.LANG' => new Main\DB\SqlExpression('?', LANGUAGE_ID)
165 ],
166 ['join_type' => 'LEFT']
167 )
168 ];
169 }
170
177 public static function onAfterAdd(ORM\Event $event): void
178 {
180 }
181
188 public static function onAfterUpdate(ORM\Event $event): void
189 {
191 }
192
199 public static function onAfterDelete(ORM\Event $event): void
200 {
202 }
203
209 public static function getBasePriceType(): ?array
210 {
211 $row = self::getRow([
212 'select' => [
213 'ID',
214 'NAME',
215 'BASE',
216 'SORT',
217 'XML_ID',
218 ],
219 'filter' => [
220 '=BASE' => 'Y',
221 ],
222 'cache' => [
223 'ttl' => 86400,
224 ],
225 ]);
226 if ($row === null)
227 {
228 return null;
229 }
230
231 $row['NAME_LANG'] = null;
232 $title = GroupLangTable::getRow([
233 'select' => [
234 'NAME',
235 ],
236 'filter' => [
237 '=CATALOG_GROUP_ID' => $row['ID'],
238 '=LANG' => LANGUAGE_ID,
239 ],
240 'cache' => [
241 'ttl' => 86400,
242 ],
243 ]);
244 if ($title !== null)
245 {
246 if ($title['NAME'] === '')
247 {
248 $title['NAME'] = null;
249 }
250 $row['NAME_LANG'] = $title['NAME'];
251 }
252
253 return $row;
254 }
255
261 public static function getBasePriceTypeId(): ?int
262 {
263 $row = self::getBasePriceType();
264
265 return $row === null ? null : $row['ID'];
266 }
267
273 public static function getTypeList(): array
274 {
275 $result = [];
276
277 $ids = [];
279 'select' => [
280 'ID',
281 'NAME',
282 'BASE',
283 'SORT',
284 'XML_ID',
285 ],
286 'order' => [
287 'SORT' => 'ASC',
288 'ID' => 'ASC',
289 ],
290 'cache' => [
291 'ttl' => 86400,
292 ],
293 ]);
294 while ($row = $iterator->fetch())
295 {
296 $row['ID'] = (int)$row['ID'];
297 $row['SORT'] = (int)$row['SORT'];
298 $row['NAME_LANG'] = null;
299
300 $result[$row['ID']] = $row;
301 $ids[] = $row['ID'];
302 }
303 unset($row, $groupIterator);
304 if (empty($result))
305 {
306 return $result;
307 }
308
309 foreach (array_chunk($ids, CATALOG_PAGE_SIZE) as $pageIds)
310 {
311 $langIterator = GroupLangTable::getList([
312 'select' => [
313 'CATALOG_GROUP_ID',
314 'NAME',
315 ],
316 'filter' => [
317 '@CATALOG_GROUP_ID' => $pageIds,
318 '=LANG' => LANGUAGE_ID,
319 ],
320 'cache' => [
321 'ttl' => 86400,
322 ],
323 ]);
324 while ($row = $langIterator->fetch())
325 {
326 $id = (int)$row['CATALOG_GROUP_ID'];
327 $result[$id]['NAME_LANG'] = $row['NAME'] === '' ? null : $row['NAME'];
328 }
329 unset(
330 $row,
331 $langIterator,
332 );
333 }
334 unset(
335 $pageIds,
336 $ids,
337 );
338
339 return $result;
340 }
341}
const CATALOG_PAGE_SIZE
Определения include.php:111
static getBasePriceType()
Определения group.php:209
static getMap()
Определения group.php:60
static getTypeList()
Определения group.php:273
static onAfterDelete(ORM\Event $event)
Определения group.php:199
static getBasePriceTypeId()
Определения group.php:261
static onAfterAdd(ORM\Event $event)
Определения group.php:177
static onAfterUpdate(ORM\Event $event)
Определения group.php:188
static getTableName()
Определения group.php:50
static clearSettings()
Определения price.php:762
static getRow(array $parameters)
Определения datamanager.php:398
static getList(array $parameters=array())
Определения datamanager.php:431
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
Определения arrayresult.php:2
Определения buffer.php:3
$event
Определения prolog_after.php:141
$title
Определения pdf.php:123
$iterator
Определения yandex_run.php:610