• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_messenger.php
  • Класс: CIMMessenger
  • Вызов: CIMMessenger::CheckFields
static function CheckFields($arFields)
{
	$messageType = $arFields['MESSAGE_TYPE'] ?? null;
	$messageDate = $arFields['MESSAGE_DATE'] ?? null;
	$message = $arFields['MESSAGE'] ?? null;
	$system = $arFields['SYSTEM'] ?? null;
	$importId = $arFields['IMPORT_ID'] ?? null;
	$authorId = $arFields['AUTHOR_ID'] ?? null;
	$toChatId = $arFields['TO_CHAT_ID'] ?? null;
	$toUserId = $arFields['TO_USER_ID'] ?? null;
	$fromUserId = $arFields['FROM_USER_ID'] ?? null;

	$aMsg = array();
	if (
		!$messageType
		|| !in_array($messageType, [IM_MESSAGE_PRIVATE, IM_MESSAGE_CHAT, IM_MESSAGE_OPEN, IM_MESSAGE_SYSTEM, IM_MESSAGE_OPEN_LINE], true)
	)
	{
		$aMsg[] = array("id"=>"MESSAGE_TYPE", "text"=> GetMessage("IM_ERROR_MESSAGE_TYPE"));
	}
	else
	{
		if (
			in_array($messageType, [IM_MESSAGE_CHAT, IM_MESSAGE_OPEN, IM_MESSAGE_OPEN_LINE], true)
			&& !$system
			&& (int)$toChatId <= 0
			&& (int)$fromUserId <= 0
		)
		{
			$aMsg[] = array("id"=>"TO_CHAT_ID", "text"=> GetMessage("IM_ERROR_MESSAGE_TO_FROM"));
		}

		if (
			$messageType === IM_MESSAGE_PRIVATE
			&& !(
				((int)$toUserId > 0 || (int)$toChatId > 0) && (int)$fromUserId > 0
			)
		)
		{
			$aMsg[] = array("id"=>"FROM_USER_ID", "text"=> GetMessage("IM_ERROR_MESSAGE_TO_FROM"));
		}

		if ($messageDate && (!$GLOBALS['DB']->IsDate($messageDate, false, LANG, "FULL")))
		{
			$aMsg[] = array("id"=>"MESSAGE_DATE", "text"=> GetMessage("IM_ERROR_MESSAGE_DATE"));
		}

		if (
			in_array($messageType, [IM_MESSAGE_PRIVATE, IM_MESSAGE_SYSTEM], true)
			&& !((int)$toUserId > 0 || (int)$toChatId > 0)
		)
		{
			$aMsg[] = array("id"=>"TO_USER_ID", "text"=> GetMessage("IM_ERROR_MESSAGE_TO"));
		}

		if (!is_null($message) && trim($message) == '')
		{
			$aMsg[] = array("id"=>"MESSAGE", "text"=> GetMessage("IM_ERROR_MESSAGE_TEXT"));
		}
		else if(is_null($message) && $messageType === IM_MESSAGE_SYSTEM && empty($arFields['PARAMS']['ATTACH']))
		{
			$aMsg[] = array("id"=>"MESSAGE", "text"=> GetMessage("IM_ERROR_MESSAGE_TEXT"));
		}
		else if(is_null($message) && empty($arFields['PARAMS']['ATTACH']) && empty($arFields['PARAMS']['FILE_ID']))
		{
			$aMsg[] = array("id"=>"MESSAGE", "text"=> GetMessage("IM_ERROR_MESSAGE_TEXT"));
		}

		if ($messageType === IM_MESSAGE_PRIVATE && $authorId && (int)$authorId <= 0)
		{
			$aMsg[] = ["id" => "AUTHOR_ID", "text" => GetMessage("IM_ERROR_MESSAGE_AUTHOR")];
		}

		if ($importId && (int)$importId <= 0)
		{
			$aMsg[] = ["id" => "IMPORT_ID", "text" => GetMessage("IM_ERROR_IMPORT_ID")];
		}

		if ($messageType === IM_MESSAGE_SYSTEM)
		{
			if (isset($arFields["NOTIFY_MODULE"]) && trim($arFields["NOTIFY_MODULE"]) == '')
			{
				$aMsg[] = ["id" => "NOTIFY_MODULE", "text" => GetMessage("IM_ERROR_NOTIFY_MODULE")];
			}

			if (isset($arFields["NOTIFY_EVENT"]) && trim($arFields["NOTIFY_EVENT"]) == '')
			{
				$aMsg[] = ["id" => "NOTIFY_EVENT", "text" => GetMessage("IM_ERROR_NOTIFY_EVENT")];
			}

			if (isset($arFields["NOTIFY_TYPE"]) && !in_array($arFields["NOTIFY_TYPE"], [IM_NOTIFY_CONFIRM, IM_NOTIFY_SYSTEM, IM_NOTIFY_FROM], true))
			{
				$aMsg[] = ["id" => "NOTIFY_TYPE", "text" => GetMessage("IM_ERROR_NOTIFY_TYPE")];
			}

			if (isset($arFields["NOTIFY_TYPE"]) && $arFields["NOTIFY_TYPE"] == IM_NOTIFY_CONFIRM)
			{
				if(isset($arFields["NOTIFY_BUTTONS"]) && !is_array($arFields["NOTIFY_BUTTONS"]))
				{
					$aMsg[] = ["id" => "NOTIFY_BUTTONS", "text" => GetMessage("IM_ERROR_NOTIFY_BUTTON")];
				}
			}
			else if(isset($arFields["NOTIFY_TYPE"]) && $arFields["NOTIFY_TYPE"] == IM_NOTIFY_FROM)
			{
				if (!$fromUserId || (int)$fromUserId <= 0)
				{
					$aMsg[] = ["id" => "FROM_USER_ID", "text" => GetMessage("IM_ERROR_MESSAGE_FROM")];
				}
			}
		}
	}

	if(!empty($aMsg))
	{
		$e = new CAdminException($aMsg);
		$GLOBALS["APPLICATION"]->ThrowException($e);
		return false;
	}

	return true;
}