Ejemplo n.º 1
0
 /**
  * <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;
 }