• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/sharepoint.php
  • Класс: CAllIntranetSharepoint
  • Вызов: CAllIntranetSharepoint::_SyncGetValueByType
static function _SyncGetValueByType($FIELD, &$arQueue)
{
	$fld = $FIELD['FIELD'];

	$bProperty = (($prop = self::__prop($fld['FIELD_ID'])) != null);

	$value = $FIELD['VALUE'];
	switch ($fld['SP_FIELD_TYPE'])
	{
		case 'DateTime':
			$ts = strtotime($value);
			if ($ts)
			{
				$value = ConvertTimeStamp($ts, 'FULL');
			}
		break;

		case 'Counter':
		case 'Integer':
			$value = intval($value);
		break;

		case 'Number':
			$value = doubleval($value);
		break;

		case 'User':
			$bParseAsUser = false;

			if ($bProperty)
			{
				$dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID);
				if ($arRes = $dbRes->Fetch())
				{
					if ($arRes['USER_TYPE'] == 'UserID' || $arRes['USER_TYPE'] == 'employee')
						$bParseAsUser = true;
				}
			}
			elseif ($fld['FIELD_ID'] == 'MODIFIED_BY' || $fld['FIELD_ID'] == 'CREATED_BY')
			{
				$bParseAsUser = true;
			}

			//var_dump($value);

			if ($bParseAsUser)
				$value = self::_SyncGetUser($value);

		break;

		case 'Choice':
			if ($bProperty)
			{
				$dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID);
				if ($arRes = $dbRes->Fetch())
				{
					if ($arRes['PROPERTY_TYPE'] == 'L')
					{
						$dbRes = CIBlockProperty::GetPropertyEnum($prop, array(), array('VALUE' => $value));
						if ($arRes = $dbRes->Fetch())
						{
							$value = $arRes['ID'];
						}
					}
				}
			}

		break;

		case 'Attachments':
			$value = intval($value);
			if ($value > 0)
			{
				$arQueue[] = array(
					'SP_METHOD' => 'GetAttachmentCollection',
					'SP_METHOD_PARAMS' => array(
						'SP_ID' => $FIELD['ROW']['ID'],
					),
					'CALLBACK' => array(
						'CIntranetSharepoint',
						'SetPropertyValue',
						array($FIELD['ROW']['UniqueId'], $fld['FIELD_ID'])
					)
				);
			}

			$value = null;

		break;
		case 'ContentTypeId':


		case 'Lookup':
		case 'Computed':

		case 'Text':
		default:
			$bParseAsFile = false;

			if ($bProperty)
			{
				$dbRes = CIBlockProperty::GetByID($prop, $IBLOCK_ID);
				if ($arRes = $dbRes->Fetch())
				{
					if ($arRes['PROPERTY_TYPE'] == 'F')
						$bParseAsFile = true;
				}
			}
			elseif ($fld['FIELD_ID'] == 'PREVIEW_PICTURE' || $fld['FIELD_ID'] == 'DETAIL_PICTURE')
			{
				$bParseAsFile = true;
			}

			if ($bParseAsFile)
			{
				$arQueue[] = array(
					'SP_METHOD' => 'LoadFile',
					'SP_METHOD_PARAMS' => array(
						'URL' => $value,
					),
					'CALLBACK' => array(
						'CIntranetSharepoint',
						'SetPropertyValue',
						array($FIELD['ROW']['UniqueId'], $fld['FIELD_ID'])
					)
				);

				$value = null;
			}
	}

	if ($bProperty)
		return array(
			'VALUE' => $value,
			'PROPERTY' => $prop
		);
	else
		return array(
			'VALUE' => $value,
			'FIELD' => $fld['FIELD_ID']
		);
}