From c309067c8199312de8ceb7c2eec6925bc8e34232 Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Tue, 19 Nov 2013 12:23:14 +0100 Subject: [PATCH 1/2] use oc filesystem operations to calc the versions size. This makes sure that we can handle missing directories correctly --- apps/files_versions/lib/versions.php | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 661e98b09d5..67935fbacb5 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -318,22 +318,23 @@ class Storage { * @return size of vesions */ private static function calculateSize($uid) { - if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { - $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); - $versionsRoot = $versions_fileview->getLocalFolder(''); - - $iterator = new \RecursiveIteratorIterator( - new \RecursiveDirectoryIterator($versionsRoot), - \RecursiveIteratorIterator::CHILD_FIRST - ); + if (\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED) == 'true') { + $view = new \OC\Files\View('/' . $uid . '/files_versions'); $size = 0; - foreach ($iterator as $path) { - if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) { - $relpath = substr($path, strlen($versionsRoot)-1); - $size += $versions_fileview->filesize($relpath); + $dirContent = $view->getDirectoryContent('/'); + + while (!empty($dirContent)) { + $path = reset($dirContent); + if ($path['type'] === 'dir') { + $intPath = substr($path['path'], strlen('files_versions')); + $dirContent = array_merge($dirContent, $view->getDirectoryContent(substr($path['path'], strlen('files_versions')))); + } else { + $intPath = substr($path['path'], strlen('files_versions')); + $size += $view->filesize(substr($path['path'], strlen('files_versions'))); } + unset($dirContent[key($dirContent)]); } return $size; From acf74b24f24e1c2ea9e454a1c09f6bcf404f6627 Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Fri, 22 Nov 2013 16:10:30 +0100 Subject: [PATCH 2/2] remove unused variable --- apps/files_versions/lib/versions.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 67935fbacb5..b03e1d4e93a 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -328,10 +328,8 @@ class Storage { while (!empty($dirContent)) { $path = reset($dirContent); if ($path['type'] === 'dir') { - $intPath = substr($path['path'], strlen('files_versions')); $dirContent = array_merge($dirContent, $view->getDirectoryContent(substr($path['path'], strlen('files_versions')))); } else { - $intPath = substr($path['path'], strlen('files_versions')); $size += $view->filesize(substr($path['path'], strlen('files_versions'))); } unset($dirContent[key($dirContent)]);