- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/connector/disk.php
- Класс: BitrixLandingConnectorDisk
- Вызов: Disk::getFileInfo
static function getFileInfo(int $objectId, bool $checkRights = true, bool $copyInLocalStorage = false): ?array
{
if ($objectId && BitrixMainLoader::includeModule('disk'))
{
$file = BitrixDiskBaseObject::loadById($objectId);
if ($file)
{
if ($checkRights)
{
$securityContext = $file->getStorage()->getCurrentUserSecurityContext();
if (!$file->canRead($securityContext))
{
return null;
}
}
if ($copyInLocalStorage)
{
$currentUserId = BitrixLandingManager::getUserId();
$userStorage = BitrixDiskDriver::getInstance()->getStorageByUserId($currentUserId);
if (!$userStorage)
{
return null;
}
$folder = $userStorage->getFolderForSavedFiles();
if (!$folder)
{
return null;
}
if (
$file->getStorageId() !== $userStorage->getId() ||
(int)$file->getCreateUser()->getId() !== $currentUserId
)
{
$newFile = $file->getRealObject()->copyTo($folder, $currentUserId, true);
if ($file->getRealObject()->getName() != $file->getName())
{
$newFile->renameInternal($file->getName(), true);
}
if (!$newFile)
{
return null;
}
return [
'ID' => $newFile->getRealObject()->getFileId(),
'OBJECT_ID' => $newFile->getId(),
'NAME' => $newFile->getName()
];
}
}
return [
'ID' => $file->getRealObject()->getFileId(),
'OBJECT_ID' => $file->getId(),
'NAME' => $file->getName()
];
}
}
return null;
}