diff options
-rw-r--r-- | apps/files_trashbin/ajax/delete.php | 30 | ||||
-rw-r--r-- | apps/files_trashbin/js/trash.js | 5 | ||||
-rw-r--r-- | apps/files_trashbin/lib/trashbin.php | 15 |
3 files changed, 34 insertions, 16 deletions
diff --git a/apps/files_trashbin/ajax/delete.php b/apps/files_trashbin/ajax/delete.php index 5498250dbf5..7b1949e3154 100644 --- a/apps/files_trashbin/ajax/delete.php +++ b/apps/files_trashbin/ajax/delete.php @@ -6,10 +6,18 @@ OCP\JSON::callCheck(); // "empty trash" command $deleteAll = false; if (isset($_POST['allfiles']) and $_POST['allfiles'] === 'true'){ - $user = \OCP\User::getUser(); - $list = OCA\Files_Trashbin\Helper::getTrashFiles('/'); - $deleteAll = true; - $dirlisting = '0'; + $folder = isset($_POST['dir']) ? $_POST['dir'] : '/'; + if ($folder === '/') { + OCA\Files_Trashbin\Trashbin::deleteAll(); + $list = array(); + } else { + if ( strlen(dirname($folder)) > 1 ) { + $dirlisting = '1'; + } else { + $dirlisting = '0'; + } + $list[] = $folder; + } } else { $files = $_POST['files']; @@ -19,19 +27,13 @@ else { $error = array(); $success = array(); - $i = 0; foreach ($list as $file) { if ( $dirlisting === '0') { - if ($deleteAll) { - $filename = $file['name']; - $timestamp = $file['timestamp']; - } - else { - $delimiter = strrpos($file, '.d'); - $filename = substr($file, 0, $delimiter); - $timestamp = substr($file, $delimiter+2); - } + $file = ltrim($file, '/'); + $delimiter = strrpos($file, '.d'); + $filename = substr($file, 0, $delimiter); + $timestamp = substr($file, $delimiter+2); } else { $filename = $file; $timestamp = null; diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js index 2c1af34ccec..b157fdf1025 100644 --- a/apps/files_trashbin/js/trash.js +++ b/apps/files_trashbin/js/trash.js @@ -35,7 +35,7 @@ $(document).ready(function() { deleteAction.removeClass('delete-icon').addClass('progress-icon'); disableActions(); $.post(OC.filePath('files_trashbin', 'ajax', 'delete.php'), - {files: JSON.stringify([filename]), dirlisting: tr.attr('data-dirlisting')}, + {files: JSON.stringify([$('#dir').val() + '/' +filename]), dirlisting: tr.attr('data-dirlisting')}, function(result) { for (var i = 0; i < result.data.success.length; i++) { var row = document.getElementById(result.data.success[i].filename); @@ -136,7 +136,8 @@ $(document).ready(function() { var params = {}; if (allFiles) { params = { - allfiles: true + allfiles: true, + dir: $('#dir').val() }; } else { diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php index bb6bdd547a0..48d43b059fa 100644 --- a/apps/files_trashbin/lib/trashbin.php +++ b/apps/files_trashbin/lib/trashbin.php @@ -565,6 +565,21 @@ class Trashbin { } /** + * @brief delete all files from the trash + */ + public static function deleteAll() { + $user = \OCP\User::getUser(); + $view = new \OC\Files\View('/' . $user); + $view->deleteAll('files_trashbin'); + self::setTrashbinSize($user, 0); + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=?'); + $query->execute(array($user)); + + return true; + } + + + /** * @brief delete file from trash bin permanently * * @param $filename path to the file |