|
|
|
|
|
|
|
|
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; |