• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/messages.php
  • Класс: CAllSocNetMessages
  • Вызов: CAllSocNetMessages::DeleteMessage
static function DeleteMessage($ID, $userID, $bCheckMessages = true)
{
	global $DB;

	$ID = intval($ID);
	if ($ID <= 0)
	{
		$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_MESSAGE_ID"), "ERROR_MESSAGE_ID");
		return false;
	}

	$userID = intval($userID);
	if ($userID <= 0)
	{
		$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
		return false;
	}

	$arMessage = CSocNetMessages::GetByID($ID);
	if (!$arMessage || !is_array($arMessage))
	{
		$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_NO_MESSAGE"), "ERROR_NO_MESSAGE");
		return false;
	}

	if (($arMessage["FROM_USER_ID"] == $userID) && ($arMessage["TO_USER_ID"] == $userID))
	{
		if (!CSocNetMessages::Delete($arMessage["ID"]))
		{
			$errorMessage = "";
			if ($e = $GLOBALS["APPLICATION"]->GetException())
				$errorMessage = $e->GetString();
			if ($errorMessage == '')
				$errorMessage = GetMessage("SONET_M_ERROR_DELETE_MESSAGE");
				$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_DELETE_MESSAGE");
			return false;
		}			
	}
	elseif ($arMessage["FROM_USER_ID"] == $userID)
	{
		if ($arMessage["TO_DELETED"] == "Y")
		{
			if (!CSocNetMessages::Delete($arMessage["ID"]))
			{
				$errorMessage = "";
				if ($e = $GLOBALS["APPLICATION"]->GetException())
					$errorMessage = $e->GetString();
				if ($errorMessage == '')
					$errorMessage = GetMessage("SONET_M_ERROR_DELETE_MESSAGE");

				$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_DELETE_MESSAGE");
				return false;
			}
		}
		else
		{
			if (!CSocNetMessages::Update($arMessage["ID"], array("FROM_DELETED" => "Y")))
			{
				$errorMessage = "";
				if ($e = $GLOBALS["APPLICATION"]->GetException())
					$errorMessage = $e->GetString();
				if ($errorMessage == '')
					$errorMessage = GetMessage("SONET_UR_ERROR_UPDATE_MESSAGE");

				$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_UPDATE_MESSAGE");
				return false;
			}
		}
	}
	elseif ($arMessage["TO_USER_ID"] == $userID)
	{
		if ($arMessage["FROM_DELETED"] == "Y")
		{
			if (!CSocNetMessages::Delete($arMessage["ID"]))
			{
				$errorMessage = "";
				if ($e = $GLOBALS["APPLICATION"]->GetException())
					$errorMessage = $e->GetString();
				if ($errorMessage == '')
					$errorMessage = GetMessage("SONET_M_ERROR_DELETE_MESSAGE");

				$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_DELETE_MESSAGE");
				return false;
			}
		}
		else
		{
			if (!CSocNetMessages::Update($arMessage["ID"], array("TO_DELETED" => "Y")))
			{
				$errorMessage = "";
				if ($e = $GLOBALS["APPLICATION"]->GetException())
					$errorMessage = $e->GetString();
				if ($errorMessage == '')
					$errorMessage = GetMessage("SONET_UR_ERROR_UPDATE_MESSAGE");

				$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_UPDATE_MESSAGE");
				return false;
			}
		}

		if ($bCheckMessages)
			CSocNetMessages::__SpeedFileCheckMessages($userID);
	}
	else
	{
		$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_NO_MESSAGE"), "ERROR_NO_MESSAGE");
		return false;
	}

	return true;
}