CCrmUserType::PrepareUpdate

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmUserType
  4. PrepareUpdate
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_usertype.php
  • Класс: \CCrmUserType
  • Вызов: CCrmUserType::PrepareUpdate
public function PrepareUpdate(&$arFields, $arOptions = null)
{
	$isNew = is_array($arOptions) && isset($arOptions['IS_NEW']) && $arOptions['IS_NEW'];
	$arUserFields = $this->GetAbstractFields();
	foreach($arUserFields as $FIELD_NAME => $arUserField)
	{
		$typeID = $arUserField['USER_TYPE']['USER_TYPE_ID'];

		// Skip datetime - there is custom logic.
		if($typeID === 'datetime' || $typeID === 'date')
		{
			continue;
		}

		if($isNew && $arUserField['EDIT_IN_LIST'] === 'N' && isset($arUserField['SETTINGS']['DEFAULT_VALUE']) && !isset($arFields[$FIELD_NAME]))
		{
			$arFields[$FIELD_NAME] = $arUserField['SETTINGS']['DEFAULT_VALUE'];
		}

		if ($typeID == 'boolean' && isset($arFields[$FIELD_NAME]))
		{
			if ($arUserField['MULTIPLE'] == 'Y' && is_array($arFields[$FIELD_NAME]))
			{
				foreach ($arFields[$FIELD_NAME] as $k => $val)
				{
					if (!empty($val) && ($val == 'Y' || $val == 1 || $val === true))
						$arFields[$FIELD_NAME][$k] = 1;
					else
						$arFields[$FIELD_NAME][$k] = 0;
				}
			}
			else
			{
				if (!empty($arFields[$FIELD_NAME]) && ($arFields[$FIELD_NAME] == 'Y' || $arFields[$FIELD_NAME] == '1' || $arFields[$FIELD_NAME] === true))
					$arFields[$FIELD_NAME] = 1;
				else
					$arFields[$FIELD_NAME] = 0;
			}
		}
		elseif ($typeID == 'employee' && $arUserField['MULTIPLE'] == 'N')
		{
			if (is_array($arFields[$FIELD_NAME]))
			{
				$arFields[$FIELD_NAME] = current($arFields[$FIELD_NAME]);
			}
		}
		elseif ($typeID == 'crm' && isset($arFields[$FIELD_NAME]))
		{
			if (!is_array($arFields[$FIELD_NAME]))
			{
				$arFields[$FIELD_NAME] = explode(';', $arFields[$FIELD_NAME]);
			}
			else
			{
				$ar = [];
				foreach ($arFields[$FIELD_NAME] as $value)
				{
					if (!is_array($value))
					{
						$value = explode(';', $value);
					}

					foreach ($value as $val)
					{
						if (!empty($val))
						{
							$ar[$val] = $val;
						}
					}
				}
				$arFields[$FIELD_NAME] = $ar;
			}

			if ($arUserField['MULTIPLE'] != 'Y')
			{
				if (isset($arFields[$FIELD_NAME][0]))
					$arFields[$FIELD_NAME] = $arFields[$FIELD_NAME][0];
				else
					$arFields[$FIELD_NAME] = '';
			}
		}
	}
}

Добавить комментарий