• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_message_param.php
  • Класс: CIMMessageParam
  • Вызов: CIMMessageParam::PrepareValues
static function PrepareValues($values, $withDefault = false)
{
	$arValues = Array();

	$arDefault = self::GetDefault();
	foreach($values as $key => $value)
	{
		if (in_array($key, Array('IS_ERROR', 'IS_DELIVERED', 'IS_DELETED', 'BETA', 'IS_EDITED', 'CAN_ANSWER', 'IMOL_QUOTE_MSG', 'SENDING', 'URL_ONLY', 'LARGE_FONT', 'CRM_FORM_FILLED')))
		{
			$arValues[$key] = in_array($value[0], Array('Y', 'N'))? $value[0]: $arDefault[$key];
		}
		else if (in_array($key, Array('KEYBOARD_UID')))
		{
			$arValues[$key] = intval($value);
		}
		else if (in_array($key, Array('CALL_ID', 'CHAT_ID', 'CHAT_MESSAGE', 'IMOL_VOTE_SID', 'IMOL_VOTE_USER', 'IMOL_VOTE_HEAD', 'SENDING_TS', 'IMOL_SID')))
		{
			$arValues[$key] = intval($value[0]);
		}
		else if (in_array($key, Array('CHAT_LAST_DATE')))
		{
			if (is_object($value) && $value instanceof BitrixMainTypeDateTime)
			{
				$arValues[$key] = $value;
			}
			else if (is_object($value[0]) && $value[0] instanceof BitrixMainTypeDateTime)
			{
				$arValues[$key] = $value[0];
			}
			else
			{
				$arValues[$key] = BitrixMainTypeDateTime::createFromTimestamp(intval($value[0]));
			}
		}
		else if ($key == 'DATE_TEXT')
		{
			if (is_array($value) && !empty($value))
			{
				foreach ($value as $k => $v)
				{
					$arValues[$key][$k] = htmlspecialcharsbx($v);
				}
			}
			else if (!is_array($value))
			{
				$arValues[$key] = htmlspecialcharsbx($value);
			}
			else
			{
				$arValues[$key] = $arDefault[$key];
			}
		}
		else if ($key == 'CHAT_USER' || $key == 'DATE_TS' || $key == 'FILE_ID' || $key == 'LIKE'  || $key == 'FAVORITE' || $key == 'KEYBOARD_ACTION' || $key == 'URL_ID' || $key == 'LINK_ACTIVE' || $key == 'USERS')
		{
			if (is_array($value) && !empty($value))
			{
				foreach ($value as $k => $v)
				{
					$arValues[$key][$k] = intval($v);
				}
			}
			else if (!is_array($value) && intval($value) > 0)
			{
				$arValues[$key] = intval($value);
			}
			else
			{
				$arValues[$key] = $arDefault[$key];
			}
		}
		else if ($key == 'CONNECTOR_MID')
		{
			if (is_array($value) && !empty($value))
			{
				foreach ($value as $k => $v)
				{
					$arValues[$key][$k] = $v;
				}
			}
			else if (!is_array($value) && $value <> '')
			{
				$arValues[$key] = $value;
			}
			else
			{
				$arValues[$key] = $arDefault[$key];
			}
		}
		else if ($key == 'NOTIFY')
		{
			if ($value === 'N')
			{
				$arValues[$key] = $value;
			}
			else if (is_array($value))
			{
				if (empty($value) || count($value) === 1 && $value[0] === 'N')
				{
					$arValues[$key] = 'N';
				}
				else
				{
					foreach ($value as $k => $v)
					{
						$arValues[$key][$k] = intval($v);
					}
				}
			}
			else
			{
				$arValues[$key] = $arDefault[$key];
			}
		}
		else if ($key == 'ATTACH')
		{
			if (isset($value))
			{
				$arValues[$key] = CIMMessageParamAttach::PrepareAttach($value);
			}
			else
			{
				$arValues[$key] = $arDefault[$key];
			}
		}
		else if (
			$key == 'TYPE' ||
			$key == 'COMPONENT_ID' ||
			$key == 'CLASS' ||
			$key == 'IMOL_VOTE' ||
			$key == 'IMOL_VOTE_TEXT' ||
			$key == 'IMOL_VOTE_LIKE' ||
			$key == 'IMOL_VOTE_DISLIKE' ||
			$key == 'IMOL_FORM' ||
			$key == 'IMOL_COMMENT_HEAD' ||
			$key == 'IMOL_DATE_CLOSE_VOTE' ||
			$key == 'IMOL_TIME_LIMIT_VOTE' ||
			$key == 'CRM_FORM_ID' ||
			$key == 'CRM_FORM_SEC'
		)
		{
			$arValues[$key] = isset($value[0])? $value[0]: '';
		}
		else if ($key == 'CONNECTOR_MID')
		{
			$arValues[$key] = $value;
		}
		else if ($key == 'NAME')
		{
			$arValues[$key] = isset($value[0])? htmlspecialcharsbx($value[0]): $arDefault[$key];
		}
		else if ($key == 'USER_ID')
		{
			$arValues[$key] = isset($value[0])? intval($value[0]): $arDefault[$key];
		}
		else if ($key == 'AVATAR')
		{
			if (isset($value))
			{
				$arValues[$key] = CIMChat::GetAvatarImage($value[0], 200, false);
			}
			else
			{
				$arValues[$key] = $arDefault[$key];
			}
		}
		else if (isset($arDefault[$key]))
		{
			$arValues[$key] = $value;
		}
	}

	if ($withDefault)
	{
		foreach($arDefault as $key => $value)
		{
			if (!isset($arValues[$key]))
			{
				$arValues[$key] = $value;
			}
		}
	}
	else
	{
		foreach($arDefault as $key => $value)
		{
			if (isset($arValues[$key]) && $arValues[$key] == $value)
			{
				unset($arValues[$key]);
			}
		}
	}

	return $arValues;
}