Пример #1
0
 public static function getMap()
 {
     if (static::getIblockId() === null) {
         return parent::getMap();
     }
     $map = parent::getMap();
     foreach (self::getAdditionalMap() as $key => $mapItem) {
         $map[] = $mapItem;
     }
     return $map;
 }
Пример #2
0
 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;
 }