コード例 #1
0
ファイル: im_history.php プロジェクト: Satariall/izurit
 function RemoveAllMessage($userId)
 {
     global $DB;
     $userId = intval($userId);
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tMAX(M.ID)+1 MAX_ID,\n\t\t\t\tM.CHAT_ID,\n\t\t\t\tR1.ID R1_ID,\n\t\t\t\tR1.START_ID R1_START_ID,\n\t\t\t\tR2.ID R2_ID,\n\t\t\t\tR2.START_ID R2_START_ID\n\t\t\tFROM b_im_relation R1\n\t\t\tINNER JOIN b_im_relation R2 on R2.CHAT_ID = R1.CHAT_ID\n\t\t\tINNER JOIN b_im_message M ON M.ID >= R1.START_ID AND M.CHAT_ID = R1.CHAT_ID\n\t\t\tWHERE\n\t\t\t\tR1.USER_ID = " . $this->user_id . "\n\t\t\tAND R2.USER_ID = " . $userId . "\n\t\t\tAND R1.MESSAGE_TYPE = '" . IM_MESSAGE_PRIVATE . "'\n\t\t\tGROUP BY M.CHAT_ID, R1.ID, R1.START_ID, R2.ID, R2.START_ID\n\t\t";
     $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     if ($arRes = $dbRes->Fetch()) {
         $strSql = "UPDATE b_im_relation SET START_ID = " . intval($arRes['MAX_ID']) . ", LAST_ID = " . (intval($arRes['MAX_ID']) - 1) . " WHERE ID = " . intval($arRes['R1_ID']);
         $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes['MAX_ID'] >= $arRes['R2_START_ID'] && $arRes['R2_START_ID'] > 0) {
             $messages = IM\MessageTable::getList(array('select' => array('ID'), 'filter' => array('<ID' => $arRes['R2_START_ID'], '=CHAT_ID' => $arRes['CHAT_ID'])));
             while ($messageInfo = $messages->fetch()) {
                 IM\MessageParamTable::delete($messageInfo['ID']);
             }
         }
         $obCache = new CPHPCache();
         $obCache->CleanDir('/bx/imc/recent' . CIMMessenger::GetCachePath($this->user_id));
     }
     return true;
 }
コード例 #2
0
ファイル: im_messenger.php プロジェクト: andy-profi/bxApiDocs
 public static function Delete($id)
 {
     $message = self::CheckPossibilityUpdateMessage($id);
     if (!$message) {
         return false;
     }
     $date = FormatDate("FULL", $message['DATE_CREATE'] + CTimeZone::GetOffset());
     IM\MessageTable::update($message['ID'], array("MESSAGE" => GetMessage('IM_MESSAGE_DELETED'), "MESSAGE_OUT" => GetMessage('IM_MESSAGE_DELETED_OUT', array('#DATE#' => $date))));
     CIMMessageParam::Set($message['ID'], array('IS_DELETED' => 'Y'));
     $arFields = $message;
     $arFields['MESSAGE'] = GetMessage('IM_MESSAGE_DELETED_OUT', array('#DATE#' => $date));
     $arFields['DATE_MODIFY'] = time() + CTimeZone::GetOffset();
     $relations = CIMMessenger::GetRelationById($message['ID']);
     $arPullMessage = array('id' => $arFields['ID'], 'type' => $arFields['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE ? 'private' : 'chat', 'date' => $arFields['DATE_MODIFY'], 'text' => GetMessage('IM_MESSAGE_DELETED'));
     if ($message['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE) {
         $arFields['FROM_USER_ID'] = $arFields['AUTHOR_ID'];
         foreach ($relations as $rel) {
             if ($rel['USER_ID'] != $arFields['AUTHOR_ID']) {
                 $arFields['TO_USER_ID'] = $rel['USER_ID'];
             }
         }
         $arPullMessage['fromUserId'] = $arFields['FROM_USER_ID'];
         $arPullMessage['toUserId'] = $arFields['TO_USER_ID'];
     } else {
         $arPullMessage['chatId'] = $arFields['CHAT_ID'];
         $arPullMessage['senderId'] = $arFields['AUTHOR_ID'];
     }
     foreach ($relations as $rel) {
         CPullStack::AddByUser($rel['USER_ID'], array('module_id' => 'im', 'command' => 'messageDelete', 'params' => $arPullMessage));
         $obCache = new CPHPCache();
         $obCache->CleanDir('/bx/imc/recent' . self::GetCachePath($rel['USER_ID']));
     }
     foreach (GetModuleEvents("im", "OnAfterMessagesDelete", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array(intval($id), $arFields));
     }
     return true;
 }
コード例 #3
0
ファイル: im_message.php プロジェクト: Satariall/izurit
 public static function Delete($ID)
 {
     $ID = intval($ID);
     \Bitrix\Im\MessageTable::delete($ID);
     foreach (GetModuleEvents("im", "OnAfterDeleteMessage", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID));
     }
     return true;
 }
コード例 #4
0
ファイル: im_notify.php プロジェクト: DarneoStudio/bitrix
 public function DeleteWithCheck($ID)
 {
     global $DB;
     $ID = intval($ID);
     $strSql = "SELECT M.* FROM b_im_relation R, b_im_message M WHERE M.ID = " . $ID . " AND R.USER_ID = " . $this->user_id . " AND R.MESSAGE_TYPE = '" . IM_MESSAGE_SYSTEM . "' AND R.CHAT_ID = M.CHAT_ID";
     $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     if ($arRes = $dbRes->Fetch()) {
         IM\MessageTable::delete($ID);
         $messageParameters = IM\MessageParamTable::getList(array('select' => array('ID'), 'filter' => array('=MESSAGE_ID' => $ID)));
         while ($ar = $messageParameters->fetch()) {
             IM\MessageParamTable::delete($ar['ID']);
         }
         $arRes['RELATION_USER_ID'] = $this->user_id;
         foreach (GetModuleEvents("im", "OnAfterDeleteNotify", true) as $arEvent) {
             ExecuteModuleEventEx($arEvent, array($ID, $arRes));
         }
         CIMMessenger::SpeedFileDelete($this->user_id, IM_SPEED_NOTIFY);
         return true;
     }
     return false;
 }