瀏覽代碼

Merge pull request #5852 from nextcloud/preview_trash_cleanup

Preview trash cleanup
tags/v13.0.0beta1
Morris Jobke 7 年之前
父節點
當前提交
dc58206ded
共有 1 個文件被更改,包括 23 次插入6 次删除
  1. 23
    6
      apps/files_trashbin/lib/Trashbin.php

+ 23
- 6
apps/files_trashbin/lib/Trashbin.php 查看文件

use OC\Files\View; use OC\Files\View;
use OCA\Files_Trashbin\AppInfo\Application; use OCA\Files_Trashbin\AppInfo\Application;
use OCA\Files_Trashbin\Command\Expire; use OCA\Files_Trashbin\Command\Expire;
use OCP\Files\File;
use OCP\Files\Folder;
use OCP\Files\NotFoundException; use OCP\Files\NotFoundException;
use OCP\User; use OCP\User;


*/ */
public static function deleteAll() { public static function deleteAll() {
$user = User::getUser(); $user = User::getUser();
$userRoot = \OC::$server->getUserFolder($user)->getParent();
$view = new View('/' . $user); $view = new View('/' . $user);
$fileInfos = $view->getDirectoryContent('files_trashbin/files'); $fileInfos = $view->getDirectoryContent('files_trashbin/files');


try {
$trash = $userRoot->get('files_trashbin');
} catch (NotFoundException $e) {
return false;
}

// Array to store the relative path in (after the file is deleted, the view won't be able to relativise the path anymore) // Array to store the relative path in (after the file is deleted, the view won't be able to relativise the path anymore)
$filePaths = array(); $filePaths = array();
foreach($fileInfos as $fileInfo){ foreach($fileInfos as $fileInfo){
} }


// actual file deletion // actual file deletion
$view->deleteAll('files_trashbin');
$trash->delete();
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=?'); $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=?');
$query->execute(array($user)); $query->execute(array($user));


self::emitTrashbinPostDelete($path); self::emitTrashbinPostDelete($path);
} }


$view->mkdir('files_trashbin');
$view->mkdir('files_trashbin/files');
$trash = $userRoot->newFolder('files_trashbin');
$trash->newFolder('files');


return true; return true;
} }
* @return int size of deleted files * @return int size of deleted files
*/ */
public static function delete($filename, $user, $timestamp = null) { public static function delete($filename, $user, $timestamp = null) {
$userRoot = \OC::$server->getUserFolder($user)->getParent();
$view = new View('/' . $user); $view = new View('/' . $user);
$size = 0; $size = 0;




$size += self::deleteVersions($view, $file, $filename, $timestamp, $user); $size += self::deleteVersions($view, $file, $filename, $timestamp, $user);


if ($view->is_dir('/files_trashbin/files/' . $file)) {
try {
$node = $userRoot->get('/files_trashbin/files/' . $file);
} catch (NotFoundException $e) {
return $size;
}

if ($node instanceof Folder) {
$size += self::calculateSize(new View('/' . $user . '/files_trashbin/files/' . $file)); $size += self::calculateSize(new View('/' . $user . '/files_trashbin/files/' . $file));
} else {
} else if ($node instanceof File) {
$size += $view->filesize('/files_trashbin/files/' . $file); $size += $view->filesize('/files_trashbin/files/' . $file);
} }

self::emitTrashbinPreDelete('/files_trashbin/files/' . $file); self::emitTrashbinPreDelete('/files_trashbin/files/' . $file);
$view->unlink('/files_trashbin/files/' . $file);
$node->delete();
self::emitTrashbinPostDelete('/files_trashbin/files/' . $file); self::emitTrashbinPostDelete('/files_trashbin/files/' . $file);


return $size; return $size;

Loading…
取消
儲存