/** * <p>Метод для логического удаления сообщения. Метод принимает на вход код пользователя - отправителя или получателя сообщения. Сообщение помечается как удаленное для этого пользователя. Для второго пользователя это сообщение не является удаленным и доступно как обычно. Физическое удаление сообщения происходит после логического удаления сообщения вторым пользователем.</p> <p><b>Примечание</b>: при физическом удалении используется метод <a href="http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetMessages/delete.php">CSocNetMessages::Delete</a>.</p> * * * * * @param int $id Код сообщения. * * * * @param int $userId Код пользователя - отправителя или получателя сообщения, который * удаляет сообщение. * * * * @param bool $bCheckMessages = true Необязательный параметр. По умолчанию равен true. * * * * @return bool <p>True в случае успешного удаления и false - в случае ошибки.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetMessages/deleteMessage.php * @author Bitrix */ public 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 (StrLen($errorMessage) <= 0) { $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 (StrLen($errorMessage) <= 0) { $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 (StrLen($errorMessage) <= 0) { $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 (StrLen($errorMessage) <= 0) { $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 (StrLen($errorMessage) <= 0) { $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; }