summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-09-05 14:54:06 +0200
committerVincent Petry <pvince81@owncloud.com>2014-09-08 16:26:01 +0200
commit85cde16febe71aa1539b4a599bd7612c98312a20 (patch)
tree09506373f16611a3896a388f92a63776230568c5 /apps
parent1e4431ba017e361cfd04e5a8f3f8122d7809b445 (diff)
downloadnextcloud-server-85cde16febe71aa1539b4a599bd7612c98312a20.tar.gz
nextcloud-server-85cde16febe71aa1539b4a599bd7612c98312a20.zip
Catch exceptions when moving files
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. Backport of e43c9b84c42a8b3f4fb25a950123fbcc060d1a5a from master
Diffstat (limited to 'apps')
-rw-r--r--apps/files/ajax/move.php14
1 files changed, 10 insertions, 4 deletions
diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php
index 0a8dbc24a65..968cd2b526e 100644
--- a/apps/files/ajax/move.php
+++ b/apps/files/ajax/move.php
@@ -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)) )));