]> source.dussan.org Git - nextcloud-server.git/commitdiff
make sure that we always use the right user
authorBjoern Schiessle <schiessle@owncloud.com>
Tue, 17 Jun 2014 18:08:40 +0000 (20:08 +0200)
committerBjoern Schiessle <schiessle@owncloud.com>
Wed, 18 Jun 2014 12:41:16 +0000 (14:41 +0200)
apps/files_trashbin/ajax/delete.php
apps/files_trashbin/ajax/list.php
apps/files_trashbin/ajax/undelete.php
apps/files_trashbin/lib/helper.php
apps/files_trashbin/lib/trashbin.php
apps/files_trashbin/tests/trashbin.php

index ebabc5bc7a268317bbcfde38f7e4dc59e37c75b5..9d9c1dd100f47807db94af8b2b6a1ca1a38e1b81 100644 (file)
@@ -37,7 +37,7 @@ foreach ($list as $file) {
                $timestamp = null;
        }
 
-       OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp);
+       OCA\Files_Trashbin\Trashbin::delete($filename, \OCP\User::getUser(), $timestamp);
        if (OCA\Files_Trashbin\Trashbin::file_exists($filename, $timestamp)) {
                $error[] = $filename;
                OC_Log::write('trashbin','can\'t delete ' . $filename . ' permanently.', OC_Log::ERROR);
index e1f52e814bb2f206299721e0bf8eac591ce1eee4..6cad101d34adea35972a91da6024fd6698a22cfb 100644 (file)
@@ -10,7 +10,7 @@ $data = array();
 
 // make filelist
 try {
-       $files = \OCA\Files_Trashbin\Helper::getTrashFiles($dir, $sortAttribute, $sortDirection);
+       $files = \OCA\Files_Trashbin\Helper::getTrashFiles($dir, \OCP\User::getUser(), $sortAttribute, $sortDirection);
 } catch (Exception $e) {
        header("HTTP/1.0 404 Not Found");
        exit();
index 2b00078669ee42074ae9d63e8b1fac1bd43eaeb3..afab79fcac626153ff9c9a53943385c13ab6ca69 100644 (file)
@@ -16,7 +16,7 @@ if (isset($_POST['allfiles']) and $_POST['allfiles'] === 'true') {
        if ($dir === '' || $dir === '/') {
                $dirListing = false;
        }
-       foreach (OCA\Files_Trashbin\Helper::getTrashFiles($dir) as $file) {
+       foreach (OCA\Files_Trashbin\Helper::getTrashFiles($dir, \OCP\User::getUser()) as $file) {
                $fileName = $file['name'];
                if (!$dirListing) {
                        $fileName .= '.d' . $file['mtime'];
index ebedce31abe107c6af6126d819a01c5fdc589b35..d0ca5fb153039a84816feb73fad208f11bde8ab3 100644 (file)
@@ -11,14 +11,14 @@ class Helper
         *
         * @param string $dir path to the directory inside the trashbin
         * or empty to retrieve the root of the trashbin
+        * @param string $user
         * @param string $sortAttribute attribute to sort on or empty to disable sorting
         * @param bool $sortDescending true for descending sort, false otherwise
         * @return \OCP\Files\FileInfo[]
         */
-       public static function getTrashFiles($dir, $sortAttribute = '', $sortDescending = false){
+       public static function getTrashFiles($dir, $user, $sortAttribute = '', $sortDescending = false){
                $result = array();
                $timestamp = null;
-               $user = \OCP\User::getUser();
 
                $view = new \OC\Files\View('/' . $user . '/files_trashbin/files');
 
index 7683f97548687c046cd4f5cadbe6a0262bcb993c..f3d255d179dcb9de7b5a22c00b8ca1ba967e638e 100644 (file)
@@ -540,12 +540,12 @@ class Trashbin {
         * delete file from trash bin permanently
         *
         * @param string $filename path to the file
+        * @param string $user
         * @param int $timestamp of deletion time
         *
         * @return int size of deleted files
         */
-       public static function delete($filename, $timestamp = null) {
-               $user = \OCP\User::getUser();
+       public static function delete($filename, $user, $timestamp = null) {
                $view = new \OC\Files\View('/' . $user);
                $size = 0;
 
@@ -667,11 +667,11 @@ class Trashbin {
         * calculate remaining free space for trash bin
         *
         * @param integer $trashbinSize current size of the trash bin
+        * @param string $user
         * @return int available free space for trash bin
         */
-       private static function calculateFreeSpace($trashbinSize) {
+       private static function calculateFreeSpace($trashbinSize, $user) {
                $softQuota = true;
-               $user = \OCP\User::getUser();
                $quota = \OC_Preferences::getValue($user, 'files', 'quota');
                $view = new \OC\Files\View('/' . $user);
                if ($quota === null || $quota === 'default') {
@@ -709,7 +709,7 @@ class Trashbin {
 
                $size = self::getTrashbinSize($user);
 
-               $freeSpace = self::calculateFreeSpace($size);
+               $freeSpace = self::calculateFreeSpace($size, $user);
 
                if ($freeSpace < 0) {
                        self::expire($size, $user);
@@ -731,24 +731,23 @@ class Trashbin {
                        return 0;
                }
 
-               $user = \OCP\User::getUser();
-               $availableSpace = self::calculateFreeSpace($trashbinSize);
+               $availableSpace = self::calculateFreeSpace($trashbinSize, $user);
                $size = 0;
 
                $retention_obligation = \OC_Config::getValue('trashbin_retention_obligation', self::DEFAULT_RETENTION_OBLIGATION);
 
                $limit = time() - ($retention_obligation * 86400);
 
-               $dirContent = Helper::getTrashFiles('/', 'mtime');
+               $dirContent = Helper::getTrashFiles('/', $user, 'mtime');
 
                // delete all files older then $retention_obligation
-               list($delSize, $count) = self::deleteExpiredFiles($dirContent, $limit, $retention_obligation);
+               list($delSize, $count) = self::deleteExpiredFiles($dirContent, $user, $limit, $retention_obligation);
 
                $size += $delSize;
                $availableSpace += $size;
 
                // delete files from trash until we meet the trash bin size limit again
-               $size += self::deleteFiles(array_slice($dirContent, $count), $availableSpace);
+               $size += self::deleteFiles(array_slice($dirContent, $count), $user, $availableSpace);
 
                return $size;
        }
@@ -757,16 +756,17 @@ class Trashbin {
         * if the size limit for the trash bin is reached, we delete the oldest
         * files in the trash bin until we meet the limit again
         * @param array $files
-        * @param init $availableSpace available disc space
+        * @param string $user
+        * @param int $availableSpace available disc space
         * @return int size of deleted files
         */
-       protected function deleteFiles($files, $availableSpace) {
+       protected function deleteFiles($files, $user, $availableSpace) {
                $size = 0;
 
                if ($availableSpace < 0) {
                        foreach ($files as $file) {
                                if ($availableSpace < 0) {
-                                       $tmp = self::delete($file['name'], $file['mtime']);
+                                       $tmp = self::delete($file['name'], $user, $file['mtime']);
                                        \OC_Log::write('files_trashbin', 'remove "' . $file['name'] . '" (' . $tmp . 'B) to meet the limit of trash bin size (50% of available quota)', \OC_log::INFO);
                                        $availableSpace += $tmp;
                                        $size += $tmp;
@@ -782,11 +782,12 @@ class Trashbin {
         * delete files older then max storage time
         *
         * @param array $files list of files sorted by mtime
+        * @param string $user
         * @param int $limit files older then limit should be deleted
         * @param int $retention_obligation max age of file in days
         * @return array size of deleted files and number of deleted files
         */
-       protected static function deleteExpiredFiles($files, $limit, $retention_obligation) {
+       protected static function deleteExpiredFiles($files, $user, $limit, $retention_obligation) {
                $size = 0;
                $count = 0;
                foreach ($files as $file) {
@@ -794,7 +795,7 @@ class Trashbin {
                        $filename = $file['name'];
                        if ($timestamp < $limit) {
                                $count++;
-                               $size += self::delete($filename, $timestamp);
+                               $size += self::delete($filename, $user, $timestamp);
                                \OC_Log::write('files_trashbin', 'remove "' . $filename . '" from trash bin because it is older than ' . $retention_obligation, \OC_log::INFO);
                        } else {
                                break;
index 9e29d84464b6a8cb9ffc7da2757c9e578b4d96f7..e94a5011094814eda7decbe08c2b2b58bc26f2e0 100644 (file)
@@ -88,7 +88,7 @@ class Test_Trashbin extends \PHPUnit_Framework_TestCase {
                \OC\Files\Filesystem::unlink('file3.txt');
 
                //make sure that files are in the trash bin
-               $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/');
+               $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1);
                $this->assertSame(3, count($filesInTrash));
 
                $manipulatedList = $this->manipulateDeleteTime($filesInTrash, $expiredDate);
@@ -106,7 +106,7 @@ class Test_Trashbin extends \PHPUnit_Framework_TestCase {
                $this->assertSame('file2.txt', $remainingFile['name']);
 
                // check that file1.txt and file3.txt was really deleted
-               $newTrashContent = OCA\Files_Trashbin\Helper::getTrashFiles('/');
+               $newTrashContent = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1);
                $this->assertSame(1, count($newTrashContent));
                $element = reset($newTrashContent);
                $this->assertSame('file2.txt', $element['name']);
@@ -147,7 +147,7 @@ class Test_Trashbin extends \PHPUnit_Framework_TestCase {
                \OC\Files\Filesystem::unlink('file1.txt');
 
                //make sure that files are in the trash bin
-               $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', 'mtime');
+               $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
                $this->assertSame(3, count($filesInTrash));
 
                $testClass = new TrashbinForTesting();
@@ -156,7 +156,7 @@ class Test_Trashbin extends \PHPUnit_Framework_TestCase {
                // the two oldest files (file3.txt and file2.txt) should be deleted
                $this->assertSame(10, $sizeOfDeletedFiles);
 
-               $newTrashContent = OCA\Files_Trashbin\Helper::getTrashFiles('/');
+               $newTrashContent = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1);
                $this->assertSame(1, count($newTrashContent));
                $element = reset($newTrashContent);
                $this->assertSame('file1.txt', $element['name']);
@@ -189,10 +189,10 @@ class Test_Trashbin extends \PHPUnit_Framework_TestCase {
 class TrashbinForTesting extends Files_Trashbin\Trashbin {
        public function dummyDeleteExpiredFiles($files, $limit) {
                // dummy value for $retention_obligation because it is not needed here
-               return parent::deleteExpiredFiles($files, $limit, 0);
+               return parent::deleteExpiredFiles($files, \Test_Trashbin::TEST_TRASHBIN_USER1, $limit, 0);
        }
 
        public function dummyDeleteFiles($files, $availableSpace) {
-               return parent::deleteFiles($files, $availableSpace);
+               return parent::deleteFiles($files, \Test_Trashbin::TEST_TRASHBIN_USER1, $availableSpace);
        }
 }