]> source.dussan.org Git - nextcloud-server.git/commitdiff
Use a more efficient way to determine that the trashbin is empty that doesn't rely...
authorRobin Appelman <icewind@owncloud.com>
Mon, 17 Mar 2014 15:35:08 +0000 (16:35 +0100)
committerRobin Appelman <icewind@owncloud.com>
Mon, 17 Mar 2014 15:35:08 +0000 (16:35 +0100)
apps/files_trashbin/lib/trashbin.php

index 7e91f8a59ff82f068f7a5af1334d908f2d3e21ec..dc38c339ecba858c89e45bfc500a9fd44324824c 100644 (file)
@@ -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,13 @@ class Trashbin {
        public static function isEmpty($user) {
 
                $view = new \OC\Files\View('/' . $user . '/files_trashbin');
-               $content = $view->getDirectoryContent('/files');
-
-               if ($content) {
-                       return false;
-               }
-
-               return true;
+               $dh = $view->opendir('/files');
+               readdir($dh); //'..'
+               readdir($dh); //'.'
+               return readdir($dh) === false;
        }
 
        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));
        }
 }