• Модуль: 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;
}