Completed
Pull Request — master (#11)
by
unknown
50:22 queued 09:42
created

IBlock::setIndexSection()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
4
namespace Arrilot\BitrixMigrations\Constructors;
5
6
7
use Arrilot\BitrixMigrations\Logger;
8
use Bitrix\Main\Application;
9
10
class IBlock
11
{
12
    use FieldConstructor;
13
14
    /**
15
     * Добавить инфоблок
16
     * @throws \Exception
17
     */
18
    public function add()
19
    {
20
        $obj = new \CIBlock();
21
22
        $iblockId = $obj->Add($this->getFieldsWithDefault());
23
        if (!$iblockId) {
24
            throw new \Exception($obj->LAST_ERROR);
25
        }
26
27
        Logger::log("Добавлен инфоблок {$this->fields['CODE']}", Logger::COLOR_GREEN);
28
29
        return $iblockId;
30
    }
31
32
    /**
33
     * Обновить инфоблок
34
     * @param $id
35
     * @throws \Exception
36
     */
37 View Code Duplication
    public function update($id)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
38
    {
39
        $obj = new \CIBlock();
40
        if (!$obj->Update($id, $this->fields)) {
41
            throw new \Exception($obj->LAST_ERROR);
42
        }
43
44
        Logger::log("Обновлен инфоблок {$id}", Logger::COLOR_GREEN);
45
    }
46
47
    /**
48
     * Удалить инфоблок
49
     * @param $id
50
     * @throws \Exception
51
     */
52
    public static function delete($id)
53
    {
54
        if (!\CIBlock::Delete($id)) {
55
            throw new \Exception('Ошибка при удалении инфоблока');
56
        }
57
58
        Logger::log("Удален инфоблок {$id}", Logger::COLOR_GREEN);
59
    }
60
61
    /**
62
     * Установить настройки для добавления инфоблока по умолчанию
63
     * @param $name
64
     * @param $code
65
     * @param $iblock_type_id
66
     * @return $this
67
     */
68
    public function constructDefault($name, $code, $iblock_type_id)
69
    {
70
        return $this->setName($name)->setCode($code)->setIblockTypeId($iblock_type_id);
71
    }
72
73
    /**
74
     * ID сайта.
75
     * @param string $siteId
76
     * @return $this
77
     */
78
    public function setSiteId($siteId)
79
    {
80
        $this->fields['SITE_ID'] = $siteId;
81
82
        return $this;
83
    }
84
85
    /**
86
     * Символьный идентификатор.
87
     * @param string $code
88
     * @return $this
89
     */
90
    public function setCode($code)
91
    {
92
        $this->fields['CODE'] = $code;
93
94
        return $this;
95
    }
96
97
    /**
98
     * Внешний код.
99
     * @param string $xml_id
100
     * @return $this
101
     */
102
    public function setXmlId($xml_id)
103
    {
104
        $this->fields['XML_ID'] = $xml_id;
105
106
        return $this;
107
    }
108
109
    /**
110
     * Внешний код.
111
     * @param string $iblockTypeId
112
     * @return $this
113
     */
114
    public function setIblockTypeId($iblockTypeId)
115
    {
116
        $this->fields['IBLOCK_TYPE_ID'] = $iblockTypeId;
117
118
        return $this;
119
    }
120
121
    /**
122
     * Название.
123
     * @param string $name
124
     * @return $this
125
     */
126
    public function setName($name)
127
    {
128
        $this->fields['NAME'] = $name;
129
130
        return $this;
131
    }
132
133
    /**
134
     * Флаг активности
135
     * @param bool $active
136
     * @return $this
137
     */
138
    public function setActive($active = true)
139
    {
140
        $this->fields['ACTIVE'] = $active ? 'Y' : 'N';
141
142
        return $this;
143
    }
144
145
    /**
146
     * Индекс сортировки.
147
     * @param int $sort
148
     * @return $this
149
     */
150
    public function setSort($sort = 500)
151
    {
152
        $this->fields['SORT'] = $sort;
153
154
        return $this;
155
    }
156
157
    /**
158
     * Шаблон URL-а к странице для публичного просмотра списка элементов информационного блока.
159
     * @param string $listPageUrl
160
     * @return $this
161
     */
162
    public function setListPageUrl($listPageUrl)
163
    {
164
        $this->fields['LIST_PAGE_URL'] = $listPageUrl;
165
166
        return $this;
167
    }
168
169
    /**
170
     * Шаблон URL-а к странице для просмотра раздела.
171
     * @param string $sectionPageUrl
172
     * @return $this
173
     */
174
    public function setSectionPageUrl($sectionPageUrl)
175
    {
176
        $this->fields['SECTION_PAGE_URL'] = $sectionPageUrl;
177
178
        return $this;
179
    }
180
181
    /**
182
     * Канонический URL элемента.
183
     * @param string $canonicalPageUrl
184
     * @return $this
185
     */
186
    public function setCanonicalPageUrl($canonicalPageUrl)
187
    {
188
        $this->fields['CANONICAL_PAGE_URL'] = $canonicalPageUrl;
189
190
        return $this;
191
    }
192
193
    /**
194
     * Код картинки в таблице файлов.
195
     * @param array $picture
196
     * @return $this
197
     */
198
    public function setPicture($picture)
199
    {
200
        $this->fields['PICTURE'] = $picture;
201
202
        return $this;
203
    }
204
205
    /**
206
     * Описание.
207
     * @param string $description
208
     * @return $this
209
     */
210
    public function setDescription($description)
211
    {
212
        $this->fields['DESCRIPTION'] = $description;
213
214
        return $this;
215
    }
216
217
    /**
218
     * Тип описания (text/html)
219
     * @param string $descriptionType
220
     * @return $this
221
     */
222
    public function setDescriptionType($descriptionType = 'text')
223
    {
224
        $this->fields['DESCRIPTION_TYPE'] = $descriptionType;
225
226
        return $this;
227
    }
228
229
    /**
230
     * Разрешен экспорт в RSS динамически
231
     * @param bool $rssActive
232
     * @return $this
233
     */
234
    public function setRssActive($rssActive = true)
235
    {
236
        $this->fields['RSS_ACTIVE'] = $rssActive ? 'Y' : 'N';
237
238
        return $this;
239
    }
240
241
    /**
242
     * Время жизни RSS и интервал между генерациями файлов RSS (при включенном RSS_FILE_ACTIVE или RSS_YANDEX_ACTIVE) (часов).
243
     * @param int $rssTtl
244
     * @return $this
245
     */
246
    public function setRssTtl($rssTtl = 24)
247
    {
248
        $this->fields['RSS_TTL'] = $rssTtl;
249
250
        return $this;
251
    }
252
253
    /**
254
     * Прегенерировать выгрузку в файл.
255
     * @param bool $rssFileActive
256
     * @return $this
257
     */
258
    public function setRssFileActive($rssFileActive = false)
259
    {
260
        $this->fields['RSS_FILE_ACTIVE'] = $rssFileActive ? 'Y' : 'N';
261
262
        return $this;
263
    }
264
265
    /**
266
     * Количество экспортируемых в RSS файл элементов (при включенном RSS_FILE_ACTIVE)
267
     * @param int $rssFileLimit
268
     * @return $this
269
     */
270
    public function setRssFileLimit($rssFileLimit)
271
    {
272
        $this->fields['RSS_FILE_LIMIT'] = $rssFileLimit;
273
274
        return $this;
275
    }
276
277
    /**
278
     * За сколько последних дней экспортировать в RSS файл. (при включенном RSS_FILE_ACTIVE). -1 без ограничения по дням.
279
     * @param int $rssFileDays
280
     * @return $this
281
     */
282
    public function setRssFileDays($rssFileDays)
283
    {
284
        $this->fields['RSS_FILE_DAYS'] = $rssFileDays;
285
286
        return $this;
287
    }
288
289
    /**
290
     * Экспортировать в RSS файл в формате для yandex
291
     * @param bool $rssYandexActive
292
     * @return $this
293
     */
294
    public function setRssYandexActive($rssYandexActive = false)
295
    {
296
        $this->fields['RSS_YANDEX_ACTIVE'] = $rssYandexActive ? 'Y' : 'N';
297
298
        return $this;
299
    }
300
301
    /**
302
     * Индексировать для поиска элементы информационного блока.
303
     * @param bool $indexElement
304
     * @return $this
305
     */
306
    public function setIndexElement($indexElement = true)
307
    {
308
        $this->fields['INDEX_ELEMENT'] = $indexElement ? 'Y' : 'N';
309
310
        return $this;
311
    }
312
313
    /**
314
     * Индексировать для поиска разделы информационного блока.
315
     * @param bool $indexSection
316
     * @return $this
317
     */
318
    public function setIndexSection($indexSection = false)
319
    {
320
        $this->fields['INDEX_SECTION'] = $indexSection ? 'Y' : 'N';
321
322
        return $this;
323
    }
324
325
    /**
326
     * Режим отображения списка элементов в административном разделе (S|C).
327
     * @param string $listMode
328
     * @return $this
329
     */
330
    public function setListMode($listMode)
331
    {
332
        $this->fields['LIST_MODE'] = $listMode;
333
334
        return $this;
335
    }
336
337
    /**
338
     * Режим проверки прав доступа (S|E).
339
     * @param string $rightsMode
340
     * @return $this
341
     */
342
    public function setRightsMode($rightsMode = 'S')
343
    {
344
        $this->fields['RIGHTS_MODE'] = $rightsMode;
345
346
        return $this;
347
    }
348
349
    /**
350
     * Признак наличия привязки свойств к разделам (Y|N).
351
     * @param string $sectionProperty
352
     * @return $this
353
     */
354
    public function setSectionProperty($sectionProperty)
355
    {
356
        $this->fields['SECTION_PROPERTY'] = $sectionProperty;
357
358
        return $this;
359
    }
360
361
    /**
362
     * Признак наличия фасетного индекса (N|Y|I).
363
     * @param string $propertyIndex
364
     * @return $this
365
     */
366
    public function setPropertyIndex($propertyIndex)
367
    {
368
        $this->fields['PROPERTY_INDEX'] = $propertyIndex;
369
370
        return $this;
371
    }
372
373
    /**
374
     * Служебное поле для процедуры конвертации места хранения значений свойств инфоблока.
375
     * @param int $lastConvElement
376
     * @return $this
377
     */
378
    public function setLastConvElement($lastConvElement)
379
    {
380
        $this->fields['LAST_CONV_ELEMENT'] = $lastConvElement;
381
382
        return $this;
383
    }
384
385
    /**
386
     * Служебное поле для привязки к группе социальной сети.
387
     * @param int $socnetGroupId
388
     * @return $this
389
     */
390
    public function setSocnetGroupId($socnetGroupId)
391
    {
392
        $this->fields['SOCNET_GROUP_ID'] = $socnetGroupId;
393
394
        return $this;
395
    }
396
397
    /**
398
     * Инфоблок участвует в документообороте (Y|N).
399
     * @param bool $workflow
400
     * @return $this
401
     */
402
    public function setWorkflow($workflow = true)
403
    {
404
        $this->fields['WORKFLOW'] = $workflow ? 'Y' : 'N';
405
406
        return $this;
407
    }
408
409
    /**
410
     * Инфоблок участвует в бизнес-процессах (Y|N).
411
     * @param bool $bizproc
412
     * @return $this
413
     */
414
    public function setBizProc($bizproc = false)
415
    {
416
        $this->fields['BIZPROC'] = $bizproc ? 'Y' : 'N';
417
418
        return $this;
419
    }
420
421
    /**
422
     * Флаг выбора интерфейса отображения привязки элемента к разделам (D|L|P).
423
     * @param string $sectionChooser
424
     * @return $this
425
     */
426
    public function setSectionChooser($sectionChooser)
427
    {
428
        $this->fields['SECTION_CHOOSER'] = $sectionChooser;
429
430
        return $this;
431
    }
432
433
    /**
434
     * Флаг хранения значений свойств элементов инфоблока (1 - в общей таблице | 2 - в отдельной).
435
     * @param int $version
436
     * @return $this
437
     */
438
    public function setVersion($version = 1)
439
    {
440
        $this->fields['VERSION'] = $version;
441
442
        return $this;
443
    }
444
445
    /**
446
     * Полный путь к файлу-обработчику массива полей элемента перед сохранением на странице редактирования элемента.
447
     * @param string $editFileBefore
448
     * @return $this
449
     */
450
    public function setEditFileBefore($editFileBefore)
451
    {
452
        $this->fields['EDIT_FILE_BEFORE'] = $editFileBefore;
453
454
        return $this;
455
    }
456
457
    /**
458
     * Полный путь к файлу-обработчику вывода интерфейса редактирования элемента.
459
     * @param string $editFileAfter
460
     * @return $this
461
     */
462
    public function setEditFileAfter($editFileAfter)
463
    {
464
        $this->fields['EDIT_FILE_AFTER'] = $editFileAfter;
465
466
        return $this;
467
    }
468
469
    /**
470
     * Название элемента в единственном числе
471
     * @param string $message
472
     * @return $this
473
     */
474
    public function setMessElementName($message = 'Элемент')
475
    {
476
        $this->fields['ELEMENT_NAME'] = $message;
477
478
        return $this;
479
    }
480
481
    /**
482
     * Название элемента во множнственном числе
483
     * @param string $message
484
     * @return $this
485
     */
486
    public function setMessElementsName($message = 'Элементы')
487
    {
488
        $this->fields['ELEMENTS_NAME'] = $message;
489
490
        return $this;
491
    }
492
493
    /**
494
     * Действие по добавлению элемента
495
     * @param string $message
496
     * @return $this
497
     */
498
    public function setMessElementAdd($message = 'Добавить элемент')
499
    {
500
        $this->fields['ELEMENT_ADD'] = $message;
501
502
        return $this;
503
    }
504
505
    /**
506
     * Действие по редактированию/изменению элемента
507
     * @param string $message
508
     * @return $this
509
     */
510
    public function setMessElementEdit($message = 'Изменить элемент')
511
    {
512
        $this->fields['ELEMENT_EDIT'] = $message;
513
514
        return $this;
515
    }
516
517
    /**
518
     * Действие по удалению элемента
519
     * @param string $message
520
     * @return $this
521
     */
522
    public function setMessElementDelete($message = 'Удалить элемент')
523
    {
524
        $this->fields['ELEMENT_DELETE'] = $message;
525
526
        return $this;
527
    }
528
529
    /**
530
     * Название раздела в единственном числе
531
     * @param string $message
532
     * @return $this
533
     */
534
    public function setMessSectionName($message = 'Раздел')
535
    {
536
        $this->fields['SECTION_NAME'] = $message;
537
538
        return $this;
539
    }
540
541
    /**
542
     * Название раздела во множнственном числе
543
     * @param string $message
544
     * @return $this
545
     */
546
    public function setMessSectionsName($message = 'Разделы')
547
    {
548
        $this->fields['SECTIONS_NAME'] = $message;
549
550
        return $this;
551
    }
552
553
    /**
554
     * Действие по добавлению раздела
555
     * @param string $message
556
     * @return $this
557
     */
558
    public function setMessSectionAdd($message = 'Добавить раздел')
559
    {
560
        $this->fields['SECTION_ADD'] = $message;
561
562
        return $this;
563
    }
564
565
    /**
566
     * Действие по редактированию/изменению раздела
567
     * @param string $message
568
     * @return $this
569
     */
570
    public function setMessSectionEdit($message = 'Изменить раздел')
571
    {
572
        $this->fields['SECTION_EDIT'] = $message;
573
574
        return $this;
575
    }
576
577
    /**
578
     * Действие по удалению раздела
579
     * @param string $message
580
     * @return $this
581
     */
582
    public function setMessSectionDelete($message = 'Удалить раздел')
583
    {
584
        $this->fields['SECTION_DELETE'] = $message;
585
586
        return $this;
587
    }
588
589
590
}