Skip to content

Commit 5e28e12

Browse files
committed
Abstract Iblock Elements Layer has next update.
- Now is may use only generator to see props and its codes. Use - copy only GenerateSxem-namespace and iblock_layer_model.php init-script - If no LINK_IBLOCK_ID in property set, use base iblock class - IblockElementItem
1 parent 10bab5d commit 5e28e12

File tree

1 file changed

+33
-21
lines changed

1 file changed

+33
-21
lines changed

lib/classes/Hipot/IbAbstractLayer/GenerateSxem/IblockGenerateSxem.php

+33-21
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use Bitrix\Iblock\PropertyTable;
1212
use Bitrix\Main\Loader;
13+
use Hipot\IbAbstractLayer\Types\IblockElementItem;
1314

1415
/**
1516
* Класс генерации схемы инфоблоков
@@ -159,7 +160,7 @@ class __IblockElementItemPropertyValueLinkElem_#ABSTRACT_LAYER_SAULT#_#IBLOCK_ID
159160
/**
160161
* Цепочка из связанных элементов, выводятся все поля связанного элемента, а также его свойства
161162
* Имя сущности: <b>#LINK_IBLOCK_ELEM_NAME#</b>
162-
* @var __IblockElementItem_#ABSTRACT_LAYER_SAULT#_#LINK_IBLOCK_ID#
163+
* @var #TYPE#
163164
*/
164165
public $CHAIN;
165166
}
@@ -496,28 +497,35 @@ public function generate(): bool
496497
$propType = '__IblockElementItemPropertyValueLinkElem_' . ABSTRACT_LAYER_SAULT . '_' . $arIblock['ID'] . '_' . $prop['CODE'];
497498

498499
$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
514519
);
520+
} else {
521+
$linkIblockName = 'Связь не указана';
522+
$chainType = 'IblockElementItem';
515523
}
516524

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
521529
);
522530
} else if ($prop['PROPERTY_TYPE'] == PropertyTable::TYPE_FILE) {
523531
$propType = 'IblockElementItemPropertyValueFile';
@@ -566,7 +574,11 @@ public function generate(): bool
566574
);
567575
}
568576

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+
);
570582
}
571583
}
572584

0 commit comments

Comments
 (0)