• Модуль: 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;
}