diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index 45b31c2e11..bbd6717d94 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -51,6 +51,7 @@ use OCP\Files\InvalidContentException; use OCP\Files\InvalidPathException; use OCP\Files\LockNotAcquiredException; use OCP\Files\NotPermittedException; +use OCP\Files\Storage; use OCP\Files\StorageNotAvailableException; use OCP\Lock\ILockingProvider; use OCP\Lock\LockedException; @@ -135,8 +136,9 @@ class File extends Node implements IFile { } } + /** @var Storage $partStorage */ list($partStorage) = $this->fileView->resolvePath($this->path); - $needsPartFile = $this->needsPartFile($partStorage) && (strlen($this->path) > 1); + $needsPartFile = $partStorage->needsPartFile() && (strlen($this->path) > 1); if ($needsPartFile) { // mark file as partial while uploading (ignored by the scanner) @@ -443,8 +445,9 @@ class File extends Node implements IFile { } if ($chunk_handler->isComplete()) { + /** @var Storage $storage */ list($storage,) = $this->fileView->resolvePath($path); - $needsPartFile = $this->needsPartFile($storage); + $needsPartFile = $storage->needsPartFile(); $partFile = null; $targetPath = $path . '/' . $info['name']; @@ -529,21 +532,6 @@ class File extends Node implements IFile { return null; } - /** - * Returns whether a part file is needed for the given storage - * or whether the file can be assembled/uploaded directly on the - * target storage. - * - * @param \OCP\Files\Storage $storage - * @return bool true if the storage needs part file handling - */ - private function needsPartFile($storage) { - // TODO: in the future use ChunkHandler provided by storage - return !$storage->instanceOfStorage('OCA\Files_Sharing\External\Storage') && - !$storage->instanceOfStorage('OC\Files\Storage\OwnCloud') && - $storage->needsPartFile(); - } - /** * Convert the given exception to a SabreException instance * diff --git a/apps/files_external/lib/Lib/Storage/OwnCloud.php b/apps/files_external/lib/Lib/Storage/OwnCloud.php index d56e6b6614..3ee2b70ef2 100644 --- a/apps/files_external/lib/Lib/Storage/OwnCloud.php +++ b/apps/files_external/lib/Lib/Storage/OwnCloud.php @@ -73,4 +73,8 @@ class OwnCloud extends \OC\Files\Storage\DAV{ parent::__construct($params); } + + public function needsPartFile() { + return false; + } } diff --git a/apps/files_sharing/lib/External/Storage.php b/apps/files_sharing/lib/External/Storage.php index 638f82f702..a631a029ab 100644 --- a/apps/files_sharing/lib/External/Storage.php +++ b/apps/files_sharing/lib/External/Storage.php @@ -366,4 +366,7 @@ class Storage extends DAV implements ISharedStorage { return $permissions; } + public function needsPartFile() { + return false; + } }