|
10 | 10 |
|
11 | 11 | use Bitrix\Iblock\PropertyTable;
|
12 | 12 | use Bitrix\Main\Loader;
|
| 13 | +use Hipot\IbAbstractLayer\Types\IblockElementItem; |
13 | 14 |
|
14 | 15 | /**
|
15 | 16 | * Класс генерации схемы инфоблоков
|
@@ -159,7 +160,7 @@ class __IblockElementItemPropertyValueLinkElem_#ABSTRACT_LAYER_SAULT#_#IBLOCK_ID
|
159 | 160 | /**
|
160 | 161 | * Цепочка из связанных элементов, выводятся все поля связанного элемента, а также его свойства
|
161 | 162 | * Имя сущности: <b>#LINK_IBLOCK_ELEM_NAME#</b>
|
162 |
| - * @var __IblockElementItem_#ABSTRACT_LAYER_SAULT#_#LINK_IBLOCK_ID# |
| 163 | + * @var #TYPE# |
163 | 164 | */
|
164 | 165 | public $CHAIN;
|
165 | 166 | }
|
@@ -496,28 +497,35 @@ public function generate(): bool
|
496 | 497 | $propType = '__IblockElementItemPropertyValueLinkElem_' . ABSTRACT_LAYER_SAULT . '_' . $arIblock['ID'] . '_' . $prop['CODE'];
|
497 | 498 |
|
498 | 499 | $k = $arIblocksIdsIndex[ $prop['LINK_IBLOCK_ID'] ];
|
499 |
| - $linkIblockName = $arIblocks[$k]['NAME'] . ' / ' . $arIblocks[$k]['ELEMENT_NAME']; |
500 |
| - |
501 |
| - $outPropsChains .= str_replace( |
502 |
| - ["#PROPERTY_CODE#", "#IBLOCK_ID#", "#LINK_IBLOCK_ID#", '#LINK_IBLOCK_ELEM_NAME#', '#ABSTRACT_LAYER_SAULT#'], |
503 |
| - [$prop['CODE'], $arIblock['ID'], $prop['LINK_IBLOCK_ID'], $linkIblockName, ABSTRACT_LAYER_SAULT], |
504 |
| - $this->chainPropChainClassTemplate |
505 |
| - ); |
506 |
| - |
507 |
| - // список свойств у привязанных свойств вида PROPERTY_code_PROPERTY_code2_VALUE |
508 |
| - $byElemsPropByProp = ''; |
509 |
| - foreach ($arIblocks[$k]['PROPERTIES'] as $propIter) { |
510 |
| - $byElemsPropByProp .= str_replace( |
511 |
| - ['#PROPERTY_LINK_CODE#', '#PROPERTY_TITLE#', '#PROPERTY_CODE#'], |
512 |
| - [strtoupper($prop['CODE']), $propIter['NAME'], strtoupper($propIter['CODE'])], |
513 |
| - ($propIter['PROPERTY_TYPE'] == PropertyTable::TYPE_LIST) ? $this->propByElemFieldsPropsListTemplate : $this->propByElemFieldsPropsTemplate |
| 500 | + if ($prop['LINK_IBLOCK_ID']) { |
| 501 | + $linkIblockName = $arIblocks[$k]['NAME'] . ' / ' . $arIblocks[$k]['ELEMENT_NAME']; |
| 502 | + $chainType = str_replace( |
| 503 | + ["#LINK_IBLOCK_ID#", '#ABSTRACT_LAYER_SAULT#'], |
| 504 | + [$prop['LINK_IBLOCK_ID'], ABSTRACT_LAYER_SAULT], '__IblockElementItem_#ABSTRACT_LAYER_SAULT#_#LINK_IBLOCK_ID#'); |
| 505 | + |
| 506 | + // список свойств у привязанных свойств вида PROPERTY_code_PROPERTY_code2_VALUE |
| 507 | + $byElemsPropByProp = ''; |
| 508 | + foreach ($arIblocks[$k]['PROPERTIES'] as $propIter) { |
| 509 | + $byElemsPropByProp .= str_replace( |
| 510 | + ['#PROPERTY_LINK_CODE#', '#PROPERTY_TITLE#', '#PROPERTY_CODE#'], |
| 511 | + [strtoupper($prop['CODE']), $propIter['NAME'], strtoupper($propIter['CODE'])], |
| 512 | + ($propIter['PROPERTY_TYPE'] == PropertyTable::TYPE_LIST) ? $this->propByElemFieldsPropsListTemplate : $this->propByElemFieldsPropsTemplate |
| 513 | + ); |
| 514 | + } |
| 515 | + $bySelectLinkedProps .= str_replace( |
| 516 | + ['#PROPERTY_TITLE#', '#PROPERTY_CODE#', '#LINK_IBLOCK_ELEM_NAME#', '#BY_ELEM_PROPS_BY_PROPS#'], |
| 517 | + [$prop['NAME'], strtoupper($prop['CODE']), $linkIblockName, $byElemsPropByProp], |
| 518 | + $this->propByElemFiledsProps |
514 | 519 | );
|
| 520 | + } else { |
| 521 | + $linkIblockName = 'Связь не указана'; |
| 522 | + $chainType = 'IblockElementItem'; |
515 | 523 | }
|
516 | 524 |
|
517 |
| - $bySelectLinkedProps .= str_replace( |
518 |
| - ['#PROPERTY_TITLE#', '#PROPERTY_CODE#', '#LINK_IBLOCK_ELEM_NAME#', '#BY_ELEM_PROPS_BY_PROPS#'], |
519 |
| - [$prop['NAME'], strtoupper($prop['CODE']), $linkIblockName, $byElemsPropByProp], |
520 |
| - $this->propByElemFiledsProps |
| 525 | + $outPropsChains .= str_replace( |
| 526 | + ["#PROPERTY_CODE#", "#IBLOCK_ID#", "#LINK_IBLOCK_ID#", '#LINK_IBLOCK_ELEM_NAME#', '#ABSTRACT_LAYER_SAULT#', '#TYPE#'], |
| 527 | + [$prop['CODE'], $arIblock['ID'], $prop['LINK_IBLOCK_ID'], $linkIblockName, ABSTRACT_LAYER_SAULT, $chainType], |
| 528 | + $this->chainPropChainClassTemplate |
521 | 529 | );
|
522 | 530 | } else if ($prop['PROPERTY_TYPE'] == PropertyTable::TYPE_FILE) {
|
523 | 531 | $propType = 'IblockElementItemPropertyValueFile';
|
@@ -566,7 +574,11 @@ public function generate(): bool
|
566 | 574 | );
|
567 | 575 | }
|
568 | 576 |
|
569 |
| - return file_put_contents($this->fileGenerate, '<?php ' . $out, LOCK_EX); |
| 577 | + return file_put_contents($this->fileGenerate, |
| 578 | + '<?php /** @noinspection PhpMissingParamTypeInspection */ |
| 579 | +/** @noinspection PhpUnused */ |
| 580 | +/** @noinspection PhpMissingFieldTypeInspection */' . PHP_EOL . $out, LOCK_EX |
| 581 | + ); |
570 | 582 | }
|
571 | 583 | }
|
572 | 584 |
|
0 commit comments