...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
- Класс: \CCrmRestProxyBase
- Вызов: CCrmRestProxyBase::tryInternalizeProductPropertyField
protected function tryInternalizeProductPropertyField(&$fields, &$fieldsInfo, $fieldName) { static $sanitizer = null; if(!is_array($fields) || !isset($fields[$fieldName])) { return; } $info = $fieldsInfo[$fieldName] ?? null; $rawValue = $fields[$fieldName] ?? null; if(!$info) { unset($fields[$fieldName]); return; } $attrs = $info['ATTRIBUTES'] ?? array(); $fieldType = $info['TYPE'] ?? ''; $propertyType = $info['PROPERTY_TYPE'] ?? ''; $userType = $info['USER_TYPE'] ?? ''; if ($fieldType === 'product_property') { $value = array(); $newIndex = 0; $valueId = 'n'.$newIndex; if (!self::isIndexedArray($rawValue)) $rawValue = array($rawValue); foreach ($rawValue as &$valueElement) { if (is_array($valueElement) && isset($valueElement['value'])) { $valueId = (isset($valueElement['valueId']) && intval($valueElement['valueId']) > 0) ? intval($valueElement['valueId']) : 'n'.$newIndex++; $value[$valueId] = &$valueElement['value']; } else { $valueId = 'n'.$newIndex++; $value[$valueId] = &$valueElement; } } unset($newIndex, $valueElement); foreach ($value as $valueId => $v) { if($propertyType === 'S' && $userType === 'Date') { $date = CRestUtil::unConvertDate($v); if(is_string($date)) $value[$valueId] = $date; else unset($value[$valueId]); } elseif($propertyType === 'S' && $userType === 'DateTime') { $datetime = CRestUtil::unConvertDateTime($v, true); if(is_string($datetime)) $value[$valueId] = $datetime; else unset($value[$valueId]); } elseif($propertyType === 'F' && empty($userType)) { $this->tryInternalizeProductFileField($value, $valueId); } elseif($propertyType === 'S' && $userType === 'HTML') { if (is_array($v) && isset($v['TYPE']) && isset($v['TEXT']) && mb_strtolower($v['TYPE']) === 'html' && !empty($v['TEXT'])) { if ($sanitizer === null) { $sanitizer = new CBXSanitizer(); $sanitizer->ApplyDoubleEncode(false); $sanitizer->SetLevel(CBXSanitizer::SECURE_LEVEL_LOW); } $value[$valueId]['TEXT'] = $sanitizer->SanitizeHtml($v['TEXT']); } } } $fields[$fieldName] = $value; } else { unset($fields[$fieldName]); } }