public static function UploadFileUnRegister($chatId, $files, $messages) { if (intval($chatId) <= 0) { return false; } $chatRelation = CIMChat::GetRelationById($chatId); if (!$chatRelation[self::GetUserId()]) { return false; } $folderModel = self::GetFolderModel($chatId); if (!$folderModel) { return false; } $result['CHAT_ID'] = $chatId; $result['FILE_ID'] = array(); $result['MESSAGE_ID'] = array(); foreach ($files as $fileTmpId => $fileId) { $fileModel = \Bitrix\Disk\File::getById($fileId); if (!$fileModel || $fileModel->getParentId() != $folderModel->getId() || $fileModel->getCreatedBy() != self::GetUserId()) { continue; } $fileModel->delete(self::GetUserId()); $result['FILE_ID'][$fileTmpId] = $fileId; } foreach ($messages as $fileTmpId => $messageId) { if (!isset($result['FILE_ID'][$fileTmpId])) { continue; } $CIMMessage = new CIMMessage(); $arMessage = $CIMMessage->GetMessage($messageId); if ($arMessage['AUTHOR_ID'] != self::GetUserId()) { continue; } CIMMessage::Delete($messageId); $result['MESSAGE_ID'][$fileTmpId] = $messageId; } if (empty($result['FILE_ID']) && empty($result['MESSAGE_ID'])) { return false; } if (CModule::IncludeModule('pull')) { $pullMessage = array('module_id' => 'im', 'command' => 'fileUnRegister', 'params' => array('chatId' => $result['CHAT_ID'], 'files' => $result['FILE_ID'], 'messages' => $result['MESSAGE_ID'])); CPullStack::AddByUsers(array_keys($chatRelation), $pullMessage); $orm = \Bitrix\Im\ChatTable::getById($result['CHAT_ID']); $chat = $orm->fetch(); if ($chat['TYPE'] == IM_MESSAGE_OPEN) { CPullWatch::AddToStack('IM_PUBLIC_' . $chat['ID'], $pullMessage); } } return $result; }
public static function UploadFileUnRegister($chatId, $files, $messages) { if (intval($chatId) <= 0) return false; $chatRelation = CIMChat::GetRelationById($chatId); if (!$chatRelation[self::GetUserId()]) return false; $folderModel = self::GetFolderModel($chatId); if (!$folderModel) return false; $result['CHAT_ID'] = $chatId; $result['FILE_ID'] = Array(); $result['MESSAGE_ID'] = Array(); foreach ($files as $fileTmpId => $fileId) { $fileModel = \Bitrix\Disk\File::getById($fileId); if ( !$fileModel || $fileModel->getParentId() != $folderModel->getId() || $fileModel->getCreatedBy() != self::GetUserId()) { continue; } $fileModel->delete(self::GetUserId()); $result['FILE_ID'][$fileTmpId] = $fileId; } foreach ($messages as $fileTmpId => $messageId) { if (!isset($result['FILE_ID'][$fileTmpId])) continue; $CIMMessage = new CIMMessage(); $arMessage = $CIMMessage->GetMessage($messageId); if ($arMessage['AUTHOR_ID'] != self::GetUserId()) { continue; } CIMMessage::Delete($messageId); $result['MESSAGE_ID'][$fileTmpId] = $messageId; } if (empty($result['FILE_ID']) && empty($result['MESSAGE_ID'])) return false; if (CModule::IncludeModule('pull')) { foreach ($chatRelation as $relation) { CPullStack::AddByUser($relation['USER_ID'], Array( 'module_id' => 'im', 'command' => 'fileUnRegister', 'params' => Array( 'chatId' => $result['CHAT_ID'], 'files' => $result['FILE_ID'], 'messages' => $result['MESSAGE_ID'], ) )); } } return $result; }