summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authoricewind1991 <robin@icewind.nl>2014-03-24 13:34:30 +0100
committericewind1991 <robin@icewind.nl>2014-03-24 13:34:30 +0100
commitd87001a093f0bef132457611c531c42f6d85d732 (patch)
tree24d619a4b9aacba745da10e1cd48e2f5418afce4 /apps
parent4c8a83e82fe4dfe5b83e09194060ecbf44f44791 (diff)
parent6b66b42f6e4399676677bd6f6534ad3c33c8404f (diff)
downloadnextcloud-server-d87001a093f0bef132457611c531c42f6d85d732.tar.gz
nextcloud-server-d87001a093f0bef132457611c531c42f6d85d732.zip
Merge pull request #7768 from owncloud/trashempty-nocache
Use a more efficient way to determine that the trashbin is empty that doesn't rely on the cache
Diffstat (limited to 'apps')
-rw-r--r--apps/files_trashbin/lib/trashbin.php43
1 files changed, 26 insertions, 17 deletions
diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php
index 7e91f8a59ff..7b14a4ec081 100644
--- a/apps/files_trashbin/lib/trashbin.php
+++ b/apps/files_trashbin/lib/trashbin.php
@@ -78,8 +78,8 @@ class Trashbin {
$view = new \OC\Files\View('/');
- $source = \OCP\User::getUser().'/files_trashbin/files/' . $sourceFilename . '.d' . $timestamp;
- $target = $owner.'/files_trashbin/files/' . $ownerFilename . '.d' . $timestamp;
+ $source = \OCP\User::getUser() . '/files_trashbin/files/' . $sourceFilename . '.d' . $timestamp;
+ $target = $owner . '/files_trashbin/files/' . $ownerFilename . '.d' . $timestamp;
self::copy_recursive($source, $target, $view);
@@ -117,7 +117,7 @@ class Trashbin {
$proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false;
$trashPath = '/files_trashbin/files/' . $filename . '.d' . $timestamp;
- $sizeOfAddedFiles = self::copy_recursive('/files/'.$file_path, $trashPath, $view);
+ $sizeOfAddedFiles = self::copy_recursive('/files/' . $file_path, $trashPath, $view);
\OC_FileProxy::$enabled = $proxyStatus;
if ($view->file_exists('files_trashbin/files/' . $filename . '.d' . $timestamp)) {
@@ -145,7 +145,7 @@ class Trashbin {
$userTrashSize -= self::expire($userTrashSize, $user);
// if owner !== user we also need to update the owners trash size
- if($owner !== $user) {
+ if ($owner !== $user) {
$ownerTrashSize = self::getTrashbinSize($owner);
$ownerTrashSize += $size;
$ownerTrashSize -= self::expire($ownerTrashSize, $owner);
@@ -298,6 +298,7 @@ class Trashbin {
/**
* restore files from trash bin
+ *
* @param $file path to the deleted file
* @param $filename name of the file
* @param $timestamp time when the file was deleted
@@ -312,7 +313,7 @@ class Trashbin {
$location = '';
if ($timestamp) {
$query = \OC_DB::prepare('SELECT `location` FROM `*PREFIX*files_trash`'
- . ' WHERE `user`=? AND `id`=? AND `timestamp`=?');
+ . ' WHERE `user`=? AND `id`=? AND `timestamp`=?');
$result = $query->execute(array($user, $filename, $timestamp))->fetchAll();
if (count($result) !== 1) {
\OC_Log::write('files_trashbin', 'trash bin database inconsistent!', \OC_Log::ERROR);
@@ -320,8 +321,9 @@ class Trashbin {
$location = $result[0]['location'];
// if location no longer exists, restore file in the root directory
if ($location !== '/' &&
- (!$view->is_dir('files' . $location) ||
- !$view->isUpdatable('files' . $location))) {
+ (!$view->is_dir('files' . $location) ||
+ !$view->isUpdatable('files' . $location))
+ ) {
$location = '';
}
}
@@ -631,6 +633,7 @@ class Trashbin {
/**
* check to see whether a file exists in trashbin
+ *
* @param $filename path to the file
* @param $timestamp of deletion time
* @return true if file exists, otherwise false
@@ -720,6 +723,7 @@ class Trashbin {
/**
* clean up the trash bin
+ *
* @param int $trashbinSize current size of the trash bin
* @param string $user
* @return int size of expired files
@@ -755,7 +759,7 @@ class Trashbin {
// if size limit for trash bin reached, delete oldest files in trash bin
if ($availableSpace < 0) {
$query = \OC_DB::prepare('SELECT `location`,`type`,`id`,`timestamp` FROM `*PREFIX*files_trash`'
- . ' WHERE `user`=? ORDER BY `timestamp` ASC');
+ . ' WHERE `user`=? ORDER BY `timestamp` ASC');
$result = $query->execute(array($user))->fetchAll();
$length = count($result);
$i = 0;
@@ -803,6 +807,7 @@ class Trashbin {
/**
* find all versions which belong to the file we want to restore
+ *
* @param $filename name of the file which should be restored
* @param $timestamp timestamp when the file was deleted
*/
@@ -822,10 +827,10 @@ class Trashbin {
foreach ($matches as $ma) {
if ($timestamp) {
$parts = explode('.v', substr($ma, 0, $offset));
- $versions[] = ( end($parts) );
+ $versions[] = (end($parts));
} else {
$parts = explode('.v', $ma);
- $versions[] = ( end($parts) );
+ $versions[] = (end($parts));
}
}
return $versions;
@@ -833,6 +838,7 @@ class Trashbin {
/**
* find unique extension for restored file if a file with the same name already exists
+ *
* @param $location where the file should be restored
* @param $filename name of the file
* @param \OC\Files\View $view filesystem view relative to users root directory
@@ -850,9 +856,9 @@ class Trashbin {
if ($view->file_exists('files' . $location . '/' . $filename)) {
$i = 2;
- $uniqueName = $name . " (".$l->t("restored").")". $ext;
+ $uniqueName = $name . " (" . $l->t("restored") . ")" . $ext;
while ($view->file_exists('files' . $location . '/' . $uniqueName)) {
- $uniqueName = $name . " (".$l->t("restored") . " " . $i . ")" . $ext;
+ $uniqueName = $name . " (" . $l->t("restored") . " " . $i . ")" . $ext;
$i++;
}
@@ -915,16 +921,19 @@ class Trashbin {
public static function isEmpty($user) {
$view = new \OC\Files\View('/' . $user . '/files_trashbin');
- $content = $view->getDirectoryContent('/files');
-
- if ($content) {
+ $dh = $view->opendir('/files');
+ if (!$dh) {
return false;
}
-
+ while ($file = readdir($dh)) {
+ if ($file !== '.' and $file !== '..') {
+ return false;
+ }
+ }
return true;
}
public static function preview_icon($path) {
- return \OC_Helper::linkToRoute( 'core_ajax_trashbin_preview', array('x' => 36, 'y' => 36, 'file' => $path ));
+ return \OC_Helper::linkToRoute('core_ajax_trashbin_preview', array('x' => 36, 'y' => 36, 'file' => $path));
}
}