CUtil::decodeURIComponent($_POST); $_POST['FILES'] = CUtil::JsObjectToPhp($_POST['FILES']); $result = CIMDisk::UploadFileRegister($_POST['CHAT_ID'], $_POST['FILES']); if (!$result) { $errorMessage = 'ERROR'; } echo CUtil::PhpToJsObject(array('FILE_ID' => $result['FILE_ID'], 'CHAT_ID' => $_POST['CHAT_ID'], 'RECIPIENT_ID' => $_POST['RECIPIENT_ID'], 'MESSAGE_ID' => $result['MESSAGE_ID'], 'MESSAGE_TMP_ID' => $_POST['MESSAGE_TMP_ID'], 'ERROR' => $errorMessage)); } else { if ($_POST['IM_FILE_UNREGISTER'] == 'Y') { $_POST['FILES'] = CUtil::JsObjectToPhp($_POST['FILES']); $_POST['MESSAGES'] = CUtil::JsObjectToPhp($_POST['MESSAGES']); $result = CIMDisk::UploadFileUnRegister($_POST['CHAT_ID'], $_POST['FILES'], $_POST['MESSAGES']); echo CUtil::PhpToJsObject(array('ERROR' => !$result ? 'ERROR' : '')); } else { if ($_POST['IM_FILE_DELETE'] == 'Y') { $result = CIMDisk::DeleteFile($_POST['CHAT_ID'], $_POST['FILE_ID']); echo CUtil::PhpToJsObject(array('CHAT_ID' => $_POST['CHAT_ID'], 'FILE_ID' => $_POST['FILE_ID'], 'ERROR' => !$result ? 'ERROR' : '')); } else { if ($_POST['IM_FILE_SAVE_TO_DISK'] == 'Y') { $result = CIMDisk::SaveToLocalDisk($_POST['FILE_ID']); echo CUtil::PhpToJsObject(array('CHAT_ID' => $_POST['CHAT_ID'], 'FILE_ID' => $_POST['FILE_ID'], 'NEW_FILE_ID' => $result ? $result->getId() : 0, 'ERROR' => !$result ? 'ERROR' : '')); } else { if ($_POST['IM_FILE_UPLOAD_FROM_DISK'] == 'Y') { $errorMessage = ''; $_POST['FILES'] = CUtil::JsObjectToPhp($_POST['FILES']); $result = CIMDisk::UploadFileFromDisk($_POST['CHAT_ID'], $_POST['FILES']); if (!$result) { $errorMessage = 'ERROR'; } echo CUtil::PhpToJsObject(array('FILES' => $result['FILES'], 'CHAT_ID' => $_POST['CHAT_ID'], 'RECIPIENT_ID' => $_POST['RECIPIENT_ID'], 'MESSAGE_ID' => $result['MESSAGE_ID'], 'MESSAGE_TMP_ID' => $_POST['MESSAGE_TMP_ID'], 'ERROR' => $errorMessage)); } else {
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)))); $params = CIMMessageParam::Get($message['ID']); if (!empty($params['FILE_ID'])) { foreach ($params['FILE_ID'] as $fileId) { CIMDisk::DeleteFile($message['CHAT_ID'], $fileId); } } CIMMessageParam::Set($message['ID'], array('IS_DELETED' => 'Y', 'URL_ID' => array(), 'FILE_ID' => array())); $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']; } CPullStack::AddByUsers(array_keys($relations), array('module_id' => 'im', 'command' => 'messageDelete', 'params' => $arPullMessage)); foreach ($relations as $rel) { $obCache = new CPHPCache(); $obCache->CleanDir('/bx/imc/recent' . self::GetCachePath($rel['USER_ID'])); } if ($message['MESSAGE_TYPE'] == IM_MESSAGE_OPEN) { CPullWatch::AddToStack('IM_PUBLIC_' . $message['CHAT_ID'], array('module_id' => 'im', 'command' => 'messageUpdate', 'params' => $arPullMessage)); } foreach (GetModuleEvents("im", "OnAfterMessagesDelete", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array(intval($id), $arFields)); } return true; }