- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_disk.php
- Класс: CIMDisk
- Вызов: CIMDisk::UploadFileRegister
static function UploadFileRegister($chatId, $files, $text = '', $linesSilentMode = false)
{
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['FILE_ID'] = [];
$messageFileId = [];
$filesModels = [];
foreach ($files as $fileId => $fileData)
{
if (!$fileData['mimeType'])
{
$fileData['mimeType'] = "binary";
}
if (!$fileData['name'])
{
continue;
}
$newFile = $folderModel->addBlankFile(Array(
'NAME' => $fileData['name'],
'SIZE' => $fileData['size'],
'CREATED_BY' => self::GetUserId(),
'MIME_TYPE' => $fileData['mimeType'],
), Array(), true);
if ($newFile)
{
$result['FILE_ID'][$fileId]['TMP_ID'] = $fileId;
$result['FILE_ID'][$fileId]['FILE_ID'] = $newFile->getId();
$result['FILE_ID'][$fileId]['FILE_NAME'] = $newFile->getName();
$filesModels[] = $newFile;
$messageFileId[] = $newFile->getId();
}
else
{
$result['FILE_ID'][$fileId]['TMP_ID'] = $fileId;
$result['FILE_ID'][$fileId]['FILE_ID'] = 0;
}
}
if (empty($messageFileId))
{
return false;
}
$result['MESSAGE_ID'] = 0;
$arChat = CIMChat::GetChatData(Array('ID' => $chatId));
$ar = Array(
"TO_CHAT_ID" => $chatId,
"FROM_USER_ID" => self::GetUserId(),
"MESSAGE_TYPE" => $arChat['chat'][$chatId]['message_type'],
"SILENT_CONNECTOR" => $linesSilentMode?'Y':'N',
"PARAMS" => Array(
'FILE_ID' => $messageFileId
)
);
$text = trim($text);
if ($text)
{
$ar['MESSAGE'] = $text;
}
$messageId = CIMMessage::Add($ar);
if ($messageId)
{
$message = new BitrixImV2Message([
'ID' => $messageId,
'CHAT_ID' => $chatId,
'AUTHOR_ID' => self::GetUserId()
]);
$message->setParams($ar['PARAMS'] ?? []);
(new IMV2LinkFileFileService())->saveFilesFromMessage($filesModels, $message);
$result['MESSAGE_ID'] = $messageId;
}
else
{
if ($e = $GLOBALS["APPLICATION"]->GetException())
{
$result['MESSAGE_ERROR'] = $e->GetString();
}
}
return $result;
}