use oc filesystem operations to calc the versions size. This makes sure that we can handle missing directories correctly

This commit is contained in:
Bjoern Schiessle 2013-11-19 12:23:14 +01:00
parent b55a66187c
commit c309067c81
1 changed files with 13 additions and 12 deletions

View File

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