public static function getMap() { if (static::getIblockId() === null) { return parent::getMap(); } $map = parent::getMap(); foreach (self::getAdditionalMap() as $key => $mapItem) { $map[] = $mapItem; } return $map; }
static function getMap() { $arMap = parent::getMap(); static::$_metadata = static::getMetadata(); $IBLOCK_VERSION = CIBlock::GetArrayByID(static::$IBLOCK_ID, 'VERSION'); $singleEntity = SinglePropertyElementTable::createEntity(static::$IBLOCK_ID, $IBLOCK_VERSION); $arMap['PROPERTY'] = new ReferenceField('PROPERTY', $singleEntity->getDataClass(), array('ref.IBLOCK_ELEMENT_ID' => 'this.ID'), array('join_type' => 'INNER')); $multiEntity = MultiplePropertyElementTable::createEntity(static::$IBLOCK_ID, $IBLOCK_VERSION); foreach (static::$_metadata['props'] as $arProp) { $arPropParams = []; $arFetchDataModifications = []; if ($arProp['PROPERTY_TYPE'] == 'N') { $arFetchDataModifications[] = function ($value) { return (double) $value; }; } if ($arProp['MULTIPLE'] == 'Y') { $refCode = 'PROPERTY_' . $arProp['CODE'] . '_ENTITY'; $arMap[] = new ReferenceField($refCode, $multiEntity->getDataClass(), array('ref.IBLOCK_ELEMENT_ID' => 'this.ID', 'ref.IBLOCK_PROPERTY_ID' => array('?i', $arProp['ID'])), array('join_type' => 'INNER')); foreach (self::getAliases($arProp['CODE'], true) as $alias) { $arMap[] = new ExpressionField($alias, '%s', 'PROPERTY.' . $arProp['CODE'], ['fetch_data_modification' => function () { return [function ($value) { return unserialize(htmlspecialcharsback($value))['VALUE']; }]; }]); } $expressionCode = 'PROPERTY_' . $arProp['CODE'] . '_ENTITY.VALUE'; } else { $expressionCode = 'PROPERTY.' . $arProp['CODE']; } if ($arFetchDataModifications) { $arPropParams['fetch_data_modification'] = function () use($arFetchDataModifications) { return $arFetchDataModifications; }; } foreach (self::getAliases($arProp['CODE']) as $alias) { $arMap[$alias] = new ExpressionField($alias, '%s', $expressionCode, $arPropParams); } } foreach (static::$arFieldsAlias as $PHP => $JS) { $params = []; if ($JS == 'id') { $params['fetch_data_modification'] = function () { return [function ($value) { return (int) $value; }]; }; } $arMap[] = new ExpressionField($JS, '%s', [$PHP], $params); } return $arMap; }