- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/uf/integration/diskuploadercontroller.php
- Класс: BitrixDiskUfIntegrationDiskUploaderController
- Вызов: DiskUploaderController::createFileInfo
private function createFileInfo($fileModel): ?FileInfo
{
$fileInfo = FileInfo::createFromBFile($fileModel->getFileId());
if ($fileInfo === null)
{
return null;
}
$id =
$fileModel instanceof DiskFile
? FileUserType::NEW_FILE_PREFIX . $fileModel->getId()
: (int)$fileModel->getId()
;
$fileInfo->setId($id);
$fileInfo->setName($fileModel->getName());
$customData = [
'fileId' => (int)$fileModel->getId(),
'fileType' => null,
'canRename' => false,
'canMove' => false,
'storage' => null,
'objectId' => null,
'isEditable' => false,
];
if ($fileModel instanceof DiskFile)
{
// File Model
$customData['canRename'] = true;
$customData['canMove'] = true;
$customData['objectId'] = (int)$fileModel->getId();
$customData['allowEdit'] = BitrixDiskConfiguration::isEnabledDefaultEditInUf();
$customData['isEditable'] = DocumentHandler::isEditable($fileModel->getExtension());
$downloadUrl = EngineUrlManager::getInstance()->create(
'disk.file.download',
['fileId' => $fileModel->getId()]
);
$fileInfo->setDownloadUrl($downloadUrl);
$storage = $fileModel->getStorage();
$customData['canUpdate'] = $storage && $fileModel->canUpdate($storage->getCurrentUserSecurityContext());
}
else
{
// Attached Object
$customData['objectId'] = (int)$fileModel->getObjectId();
$customData['allowEdit'] = (bool)$fileModel->getAllowEdit();
$customData['isEditable'] =
$fileModel->getFile() && DocumentHandler::isEditable($fileModel->getFile()->getExtension())
;
$downloadUrl = EngineUrlManager::getInstance()->create(
'disk.attachedObject.download',
['attachedObjectId' => $id]
);
$fileInfo->setDownloadUrl($downloadUrl);
$user = CurrentUser::get();
$userId = $user ? $user->getId() : BitrixDiskSecuritySecurityContext::GUEST_USER;
$customData['canUpdate'] = $fileModel->canUpdate($userId);
}
$file = $fileModel instanceof DiskFile ? $fileModel : $fileModel->getFile();
if ($file)
{
$customData['fileType'] = $file->getView()->getEditorTypeFile() ?: null;
$storage = $file->getStorage();
$folder = $file->getParent();
if ($storage && $folder)
{
$currentUserId = (int)CurrentUser::get()->getId();
$isMyDisk =
$storage->getProxyType() instanceof BitrixDiskProxyTypeUser
&& (int)$storage->getEntityId() === $currentUserId
;
$storageName =
$isMyDisk
? $storage->getProxyType()->getTitleForCurrentUser()
: $storage->getProxyType()->getEntityTitle()
;
$customData['storage'] = $storageName . ' / ' . ($folder->isRoot() ? '' : $folder->getName());
}
}
$fileInfo->setCustomData($customData);
if ($fileInfo->isImage())
{
$config = $this->getConfiguration();
if ($config->shouldTreatImageAsFile($fileInfo))
{
$fileInfo->setTreatImageAsFile(true);
}
else
{
$previewOptions = ['width' => 1200, 'height' => 1200]; // double size (see edit.php and html-parser.js)
if ($fileModel instanceof DiskFile)
{
$urlManager = BitrixDiskDriver::getInstance()->getUrlManager();
$previewUrl = $urlManager->getUrlForShowFile($fileModel, $previewOptions);
}
else
{
$previewUrl = BitrixDiskUrlManager::getUrlToActionShowUfFile($fileModel->getId(), $previewOptions);
}
$rectangle = PreviewImage::getSize($fileInfo, new PreviewImageOptions($previewOptions));
$fileInfo->setPreviewUrl($previewUrl, $rectangle->getWidth(), $rectangle->getHeight());
}
}
return $fileInfo;
}