namespace OCA\Files_Sharing;
use OC\Files\Cache\FailedCache;
-use OC\Files\Cache\LazyWatcher;
use OC\Files\Cache\NullWatcher;
use OC\Files\Filesystem;
use OC\Files\Storage\FailedStorage;
$this->initialized = true;
try {
Filesystem::initMountPoints($this->superShare->getShareOwner());
- $sourcePath = $this->ownerView->getPath($this->superShare->getNodeId());
+ $storageId = $this->superShare->getNodeCacheEntry() ? $this->superShare->getNodeCacheEntry()->getStorageId() : null;
+ $sourcePath = $this->ownerView->getPath($this->superShare->getNodeId(), $storageId);
[$this->nonMaskedStorage, $this->rootPath] = $this->ownerView->resolvePath($sourcePath);
$this->storage = new PermissionsMask([
'storage' => $this->nonMaskedStorage,
- 'mask' => $this->superShare->getPermissions()
+ 'mask' => $this->superShare->getPermissions(),
]);
} catch (NotFoundException $e) {
// original file not accessible or deleted, set FailedStorage
if (!$storage) {
$storage = $this;
}
- $sourceRoot = $this->getSourceRootInfo();
+ $sourceRoot = $this->getSourceRootInfo();
if ($this->storage instanceof FailedStorage) {
return new FailedCache();
}
// shares do not participate in availability logic
return [
'available' => true,
- 'last_checked' => 0
+ 'last_checked' => 0,
];
}
public function getLocalFile($path) {
$parent = substr($path, 0, strrpos($path, '/'));
$path = $this->getAbsolutePath($path);
- list($storage, $internalPath) = Filesystem::resolvePath($path);
+ [$storage, $internalPath] = Filesystem::resolvePath($path);
if (Filesystem::isValidPath($parent) and $storage) {
return $storage->getLocalFile($internalPath);
} else {
public function getLocalFolder($path) {
$parent = substr($path, 0, strrpos($path, '/'));
$path = $this->getAbsolutePath($path);
- list($storage, $internalPath) = Filesystem::resolvePath($path);
+ [$storage, $internalPath] = Filesystem::resolvePath($path);
if (Filesystem::isValidPath($parent) and $storage) {
return $storage->getLocalFolder($internalPath);
} else {
$this->changeLock($path, ILockingProvider::LOCK_EXCLUSIVE);
/** @var \OC\Files\Storage\Storage $storage */
- list($storage, $internalPath) = $this->resolvePath($path);
+ [$storage, $internalPath] = $this->resolvePath($path);
$target = $storage->fopen($internalPath, 'w');
if ($target) {
- list(, $result) = \OC_Helper::streamCopy($data, $target);
+ [, $result] = \OC_Helper::streamCopy($data, $target);
fclose($target);
fclose($data);
[Filesystem::signal_param_path => $this->getHookPath($path)]
);
}
- list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix);
+ [$storage, $internalPath] = Filesystem::resolvePath($absolutePath . $postFix);
if ($storage) {
return $storage->hash($type, $internalPath, $raw);
}
$run = $this->runHooks($hooks, $path);
/** @var \OC\Files\Storage\Storage $storage */
- list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix);
+ [$storage, $internalPath] = Filesystem::resolvePath($absolutePath . $postFix);
if ($run and $storage) {
if (in_array('write', $hooks) || in_array('delete', $hooks)) {
try {
* @var \OC\Files\Storage\Storage $storage
* @var string $internalPath
*/
- list($storage, $internalPath) = Filesystem::resolvePath($path);
+ [$storage, $internalPath] = Filesystem::resolvePath($path);
if ($storage) {
$cache = $storage->getCache($path);
* @var Storage\Storage $storage
* @var string $internalPath
*/
- list($storage, $internalPath) = $this->resolvePath($path);
+ [$storage, $internalPath] = $this->resolvePath($path);
if ($storage) {
return $storage->getETag($internalPath);
} else {
* Note that the resulting path is not guarantied to be unique for the id, multiple paths can point to the same file
*
* @param int $id
- * @throws NotFoundException
+ * @param int|null $storageId
* @return string
+ * @throws NotFoundException
*/
- public function getPath($id) {
+ public function getPath($id, int $storageId = null) {
$id = (int)$id;
$manager = Filesystem::getMountManager();
$mounts = $manager->findIn($this->fakeRoot);
return $a instanceof SharedMount && (!$b instanceof SharedMount) ? 1 : -1;
});
+ if (!is_null($storageId)) {
+ $mounts = array_filter($mounts, function (IMountPoint $mount) use ($storageId) {
+ return $mount->getNumericStorageId() === $storageId;
+ });
+ }
+
foreach ($mounts as $mount) {
/**
* @var \OC\Files\Mount\MountPoint $mount
public function verifyPath($path, $fileName) {
try {
/** @type \OCP\Files\Storage $storage */
- list($storage, $internalPath) = $this->resolvePath($path);
+ [$storage, $internalPath] = $this->resolvePath($path);
$storage->verifyPath($internalPath, $fileName);
} catch (ReservedWordException $ex) {
$l = \OC::$server->getL10N('lib');