- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/userprops.php
- Класс: BitrixSaleOrderUserProperties
- Вызов: OrderUserProperties::loadProfiles
static function loadProfiles($userId, $personTypeId = null, $profileId = null)
{
$result = new Result();
$userId = (int)$userId;
$resultData =
$filter =
$locationIdMap =
$locationCodeList = array();
if ($userId <= 0)
{
return $result->addError(new Error("EMPTY USER ID"));
}
else
{
$filter['USER_ID'] = $userId;
}
if ((int)$personTypeId > 0)
$filter['PERSON_TYPE_ID'] = (int)$personTypeId;
if ((int)$profileId > 0)
$filter['USER_PROPS_ID'] = (int)$profileId;
$userPropsValueData = InternalsUserPropsValueTable::getList(
array(
'filter' => $filter,
'select' => array(
'ORDER_PROPS_ID', 'USER_PROPS_ID', 'VALUE',
'PROFILE_NAME' => 'USER_PROPERTY.NAME',
'VALUE_ORIG' => 'VALUE',
'USER_ID' => 'USER_PROPERTY.USER_ID',
'PERSON_TYPE_ID' => 'USER_PROPERTY.PERSON_TYPE_ID',
'DATE_UPDATE' => 'USER_PROPERTY.DATE_UPDATE',
'MULTIPLE' => 'PROPERTY.MULTIPLE',
'TYPE' => 'PROPERTY.TYPE',
),
'order' => array(
'USER_PROPERTY.DATE_UPDATE' => 'DESC',
'USER_PROPERTY.NAME' => 'ASC'
)
)
);
while ($propValue = $userPropsValueData->fetch())
{
if (($propValue['MULTIPLE'] === 'Y' || $propValue['TYPE'] === 'FILE')
&& CheckSerializedData($propValue['VALUE'])
&& ($serialisedValue = @unserialize($propValue['VALUE'], ['allowed_classes' => false])) !== false)
{
$propValue['VALUE'] = $serialisedValue;
}
if (!array_key_exists($propValue['PERSON_TYPE_ID'], $resultData))
$resultData[$propValue['PERSON_TYPE_ID']] = array();
$resultData[$propValue['PERSON_TYPE_ID']][$propValue['USER_PROPS_ID']]['NAME'] = $propValue['PROFILE_NAME'];
if ($propValue['TYPE'] === 'ENUM' && $propValue['MULTIPLE'] === 'Y')
{
$propValue['VALUE'] = explode(',', $propValue['VALUE']);
}
elseif ($propValue['TYPE'] === 'FILE' && !empty($propValue['VALUE']))
{
$fileIds = $propValue['VALUE'];
$propValue['VALUE'] = array();
if (is_array($fileIds))
{
foreach ($fileIds as $value)
{
if ($fileArray = CFile::GetFileArray($value))
{
$propValue['VALUE'][] = $fileArray;
}
}
}
elseif ($fileArray = CFile::GetFileArray($fileIds))
{
$propValue['VALUE'] = $fileArray;
}
}
$resultData[$propValue['PERSON_TYPE_ID']][$propValue['USER_PROPS_ID']]['VALUES'][$propValue['ORDER_PROPS_ID']] = $propValue['VALUE'];
$resultData[$propValue['PERSON_TYPE_ID']][$propValue['USER_PROPS_ID']]['VALUES_ORIG'][$propValue['ORDER_PROPS_ID']] = $propValue['VALUE_ORIG'];
}
$result->setData($resultData);
return $result;
}