コード例 #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;
 }