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