- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_disk.php
- Класс: CIMDisk
- Вызов: CIMDisk::UploadFileUnRegister
static function UploadFileUnRegister($chatId, $files, $messages)
{
if ((int)$chatId <= 0 || empty($files))
{
return false;
}
$chatRelation = CIMChat::GetRelationById($chatId, false, true, false);
if (!$chatRelation[self::GetUserId()])
{
return false;
}
$folderModel = self::GetFolderModel($chatId);
if (!$folderModel)
{
return false;
}
$result = [];
$result['CHAT_ID'] = $chatId;
$result['FILE_ID'] = [];
$result['MESSAGE_ID'] = [];
foreach ($files as $fileTmpId => $fileId)
{
$fileModel = BitrixDiskFile::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 (BitrixMainLoader::includeModule('pull'))
{
$pullMessage = Array(
'module_id' => 'im',
'command' => 'fileUnRegister',
'params' => Array(
'chatId' => $result['CHAT_ID'],
'files' => $result['FILE_ID'],
'messages' => $result['MESSAGE_ID'],
),
'extra' => BitrixImCommon::getPullExtra()
);
BitrixPullEvent::add(array_keys($chatRelation), $pullMessage);
$orm = BitrixImModelChatTable::getById($result['CHAT_ID']);
$chat = $orm->fetch();
if ($chat['TYPE'] == IM_MESSAGE_OPEN || $chat['TYPE'] == IM_MESSAGE_OPEN_LINE)
{
CPullWatch::AddToStack('IM_PUBLIC_'.$chat['ID'], $pullMessage);
}
}
return $result;
}