]> source.dussan.org Git - nextcloud-server.git/commitdiff
Catch exceptions when moving files
authorVincent Petry <pvince81@owncloud.com>
Fri, 5 Sep 2014 12:54:06 +0000 (14:54 +0200)
committerVincent Petry <pvince81@owncloud.com>
Fri, 5 Sep 2014 12:54:06 +0000 (14:54 +0200)
When moving files on storages that don't expose permissions, the storage
itself might throw an exception when the permission is denied.

This fix ensures that exceptions are caught and forwarded to the client
instead of just hanging.

apps/files/ajax/move.php

index 3a07554ad008ffaf543c55c823d3d94aae695d29..12760d4415f6c9847f1070e43b7876a6dd9895ab 100644 (file)
@@ -19,10 +19,16 @@ if(\OC\Files\Filesystem::file_exists($target . '/' . $file)) {
 if ($target != '' || strtolower($file) != 'shared') {
        $targetFile = \OC\Files\Filesystem::normalizePath($target . '/' . $file);
        $sourceFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $file);
-       if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) {
-               OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file )));
-       } else {
-               OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) )));
+       try {
+               if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) {
+                       OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file )));
+               } else {
+                       OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) )));
+               }
+       } catch (\OCP\Files\NotPermittedException $e) {
+               OCP\JSON::error(array("data" => array( "message" => $l->t("Permission denied") )));
+       } catch (\Exception $e) {
+               OCP\JSON::error(array("data" => array( "message" => $e->getMessage())));
        }
 }else{
        OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) )));