From 263bb46ff892c0a7de7852ce0ab9b9c1d2381054 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 3 Jun 2015 14:31:58 +0200 Subject: [PATCH] Catch exceptions in files ajax calls --- apps/files/ajax/delete.php | 13 +++++++++---- apps/files/ajax/newfile.php | 19 +++++++++++++++---- apps/files/ajax/newfolder.php | 27 +++++++++++++++++++-------- apps/files/ajax/rename.php | 21 ++++++++++++++++----- 4 files changed, 59 insertions(+), 21 deletions(-) diff --git a/apps/files/ajax/delete.php b/apps/files/ajax/delete.php index 9d4f0b0fcf..dcd05d8da9 100644 --- a/apps/files/ajax/delete.php +++ b/apps/files/ajax/delete.php @@ -54,10 +54,15 @@ $success = true; //Now delete foreach ($files as $file) { - if (\OC\Files\Filesystem::file_exists($dir . '/' . $file) && - !(\OC\Files\Filesystem::isDeletable($dir . '/' . $file) && - \OC\Files\Filesystem::unlink($dir . '/' . $file)) - ) { + try { + if (\OC\Files\Filesystem::file_exists($dir . '/' . $file) && + !(\OC\Files\Filesystem::isDeletable($dir . '/' . $file) && + \OC\Files\Filesystem::unlink($dir . '/' . $file)) + ) { + $filesWithError .= $file . "\n"; + $success = false; + } + } catch (\Exception $e) { $filesWithError .= $file . "\n"; $success = false; } diff --git a/apps/files/ajax/newfile.php b/apps/files/ajax/newfile.php index b4e1e508a3..6dd3e3e7a8 100644 --- a/apps/files/ajax/newfile.php +++ b/apps/files/ajax/newfile.php @@ -78,10 +78,21 @@ $templateManager = OC_Helper::getFileTemplateManager(); $mimeType = OC_Helper::getMimetypeDetector()->detectPath($target); $content = $templateManager->getTemplate($mimeType); -if($content) { - $success = \OC\Files\Filesystem::file_put_contents($target, $content); -} else { - $success = \OC\Files\Filesystem::touch($target); +try { + if($content) { + $success = \OC\Files\Filesystem::file_put_contents($target, $content); + } else { + $success = \OC\Files\Filesystem::touch($target); + } +} catch (\Exception $e) { + $result = [ + 'success' => false, + 'data' => [ + 'message' => $e->getMessage() + ] + ]; + OCP\JSON::error($result); + exit(); } if($success) { diff --git a/apps/files/ajax/newfolder.php b/apps/files/ajax/newfolder.php index 90bc9ecbb8..b15457e017 100644 --- a/apps/files/ajax/newfolder.php +++ b/apps/files/ajax/newfolder.php @@ -74,15 +74,26 @@ if (\OC\Files\Filesystem::file_exists($target)) { exit(); } -if(\OC\Files\Filesystem::mkdir($target)) { - if ( $dir !== '/') { - $path = $dir.'/'.$folderName; - } else { - $path = '/'.$folderName; +try { + if(\OC\Files\Filesystem::mkdir($target)) { + if ( $dir !== '/') { + $path = $dir.'/'.$folderName; + } else { + $path = '/'.$folderName; + } + $meta = \OC\Files\Filesystem::getFileInfo($path); + $meta['type'] = 'dir'; // missing ?! + OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta))); + exit(); } - $meta = \OC\Files\Filesystem::getFileInfo($path); - $meta['type'] = 'dir'; // missing ?! - OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta))); +} catch (\Exception $e) { + $result = [ + 'success' => false, + 'data' => [ + 'message' => $e->getMessage() + ] + ]; + OCP\JSON::error($result); exit(); } diff --git a/apps/files/ajax/rename.php b/apps/files/ajax/rename.php index 576902e29e..edb6dd7862 100644 --- a/apps/files/ajax/rename.php +++ b/apps/files/ajax/rename.php @@ -29,15 +29,26 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); \OC::$server->getSession()->close(); +$l10n = \OC::$server->getL10N('files'); + $files = new \OCA\Files\App( \OC\Files\Filesystem::getView(), \OC::$server->getL10N('files') ); -$result = $files->rename( - isset($_GET['dir']) ? (string)$_GET['dir'] : '', - isset($_GET['file']) ? (string)$_GET['file'] : '', - isset($_GET['newname']) ? (string)$_GET['newname'] : '' -); +try { + $result = $files->rename( + isset($_GET['dir']) ? (string)$_GET['dir'] : '', + isset($_GET['file']) ? (string)$_GET['file'] : '', + isset($_GET['newname']) ? (string)$_GET['newname'] : '' + ); +} catch (\Exception $e) { + $result = [ + 'success' => false, + 'data' => [ + 'message' => $e->getMessage() + ] + ]; +} if($result['success'] === true){ OCP\JSON::success(['data' => $result['data']]);