diff options
author | Jan-Christoph Borchardt <JanCBorchardt@fsfe.org> | 2011-04-17 15:47:34 +0200 |
---|---|---|
committer | Jan-Christoph Borchardt <JanCBorchardt@fsfe.org> | 2011-04-17 15:47:34 +0200 |
commit | 4865f423f5611f762d52522f305dd725199e301d (patch) | |
tree | 8c77fb0e9b38a51bd58611e71ef9822017c7d331 | |
parent | 453660644ed1c80c837b567db24da70416bec66c (diff) | |
parent | 86356e888ecdcb80cde46c531305eef63cc49911 (diff) | |
download | nextcloud-server-4865f423f5611f762d52522f305dd725199e301d.tar.gz nextcloud-server-4865f423f5611f762d52522f305dd725199e301d.zip |
Merge branch 'refactoring' of git://anongit.kde.org/owncloud into refactoring
-rw-r--r-- | lib/filestorage.php | 58 | ||||
-rw-r--r-- | lib/installer.php | 2 | ||||
-rw-r--r-- | settings/index.php | 9 | ||||
-rw-r--r-- | settings/templates/index.php | 4 |
4 files changed, 54 insertions, 19 deletions
diff --git a/lib/filestorage.php b/lib/filestorage.php index fbd28a7dfb3..66b91fc19aa 100644 --- a/lib/filestorage.php +++ b/lib/filestorage.php @@ -92,13 +92,14 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ } public function mkdir($path){ if($return=mkdir($this->datadir.$path)){ - $this->notifyObservers($path,OC_FILEACTION_CREATE); + $this->clearFolderSizeCache($path); } return $return; } public function rmdir($path){ if($return=rmdir($this->datadir.$path)){ $this->notifyObservers($path,OC_FILEACTION_DELETE); + $this->clearFolderSizeCache($path); } return $return; } @@ -170,6 +171,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ public function unlink($path){ if($return=unlink($this->datadir.$path)){ $this->notifyObservers($path,OC_FILEACTION_DELETE); + $this->clearFolderSizeCache($path); } return $return; } @@ -189,6 +191,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ } if($return=copy($this->datadir.$path1,$this->datadir.$path2)){ $this->notifyObservers($path2,OC_FILEACTION_CREATE); + $this->clearFolderSizeCache($path); } return $return; } @@ -383,6 +386,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ if(rename($tmpFile,$this->datadir.$path)){ touch($this->datadir.$path, $fileStats['mtime'], $fileStats['atime']); $this->notifyObservers($path,OC_FILEACTION_CREATE); + $this->clearFolderSizeCache($path); return true; }else{ return false; @@ -394,6 +398,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ if(move_uploaded_file($tmpFile,$this->datadir.$path)){ touch($this->datadir.$path, $fileStats['mtime'], $fileStats['atime']); $this->notifyObservers($path,OC_FILEACTION_CREATE); + $this->clearFolderSizeCache($path); return true; }else{ return false; @@ -410,6 +415,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ if(is_file($dir.'/'.$item)){ if(unlink($dir.'/'.$item)){ $this->notifyObservers($dir.'/'.$item,OC_FILEACTION_DELETE); + $this->clearFolderSizeCache($path); } }elseif(is_dir($dir.'/'.$item)){ if (!$this->delTree($dirRelative. "/" . $item)){ @@ -419,6 +425,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ } if($return=rmdir($dir)){ $this->notifyObservers($dir,OC_FILEACTION_DELETE); + $this->clearFolderSizeCache($path); } return $return; } @@ -481,24 +488,33 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ * @return int size of folder and it's content */ public function calculateFolderSize($path){ + if($this->is_file($path)){ + $path=dirname($path); + } + $path=str_replace('//','/',$path); + if($this->is_dir($path) and substr($path,-1)!='/'){ + $path.='/'; + } + error_log("calc: $path"); $size=0; if ($dh = $this->opendir($path)) { - while (($filename = readdir($dh)) !== false) { - if($filename!='.' and $filename!='..'){ - $subFile=$path.'/'.$filename; - if($this->is_file($subFile)){ - $size+=$this->filesize($subFile); - }else{ - $size+=$this->calculateFolderSize($subFile); - } - } - } $query=OC_DB::prepare("SELECT size FROM *PREFIX*foldersize WHERE path=?"); $hasSize=$query->execute(array($path))->fetchAll(); if(count($hasSize)>0){// yes, update it $query=OC_DB::prepare("UPDATE *PREFIX*foldersize SET size=? WHERE path=?"); $result=$query->execute(array($size,$path)); + $size+=$hasSize[0]['size']; }else{// no insert it + while (($filename = readdir($dh)) !== false) { + if($filename!='.' and $filename!='..'){ + $subFile=$path.'/'.$filename; + if($this->is_file($subFile)){ + $size+=$this->filesize($subFile); + }else{ + $size+=$this->calculateFolderSize($subFile); + } + } + } $query=OC_DB::prepare("INSERT INTO *PREFIX*foldersize VALUES(?,?)"); $result=$query->execute(array($path,$size)); } @@ -511,13 +527,25 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{ * @param string $path */ public function clearFolderSizeCache($path){ - $path=dirname($path); + if($this->is_file($path)){ + $path=dirname($path); + } + $path=str_replace('//','/',$path); + if($this->is_dir($path) and substr($path,-1)!='/'){ + $path.='/'; + } + error_log($path); $query=OC_DB::prepare("DELETE FROM *PREFIX*foldersize WHERE path = ?"); $result=$query->execute(array($path)); - if($path!='/'){ - $parts=explode('/'); - array_pop($parts); + if($path!='/' and $path!=''){ + $parts=explode('/',$path); + //pop empty part + $part=array_pop($parts); + if(empty($part)){ + array_pop($parts); + } $parent=implode('/',$parts); + $this->clearFolderSizeCache($parent); } } } diff --git a/lib/installer.php b/lib/installer.php index 14e2be6600f..965642e8476 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -68,7 +68,7 @@ class OC_INSTALLER{ self::createDBUser($username,$password,$connection); //use the admin login data for the new database user OC_CONFIG::setValue('dbuser',$username); - OC_CONFIG::setValue('dbpass',$password); + OC_CONFIG::setValue('dbpassword',$password); //create the database self::createDatabase($dbname,$username,$connection); diff --git a/settings/index.php b/settings/index.php index 31db326f6bc..521f2ade9da 100644 --- a/settings/index.php +++ b/settings/index.php @@ -8,7 +8,14 @@ if( !OC_USER::isLoggedIn()){ } -$tmpl = new OC_TEMPLATE( "settings", "index", "admin" ); +$tmpl = new OC_TEMPLATE( "settings", "index", "admin"); +$used=OC_FILESYSTEM::filesize('/'); +$free=disk_free_space(OC_CONFIG::getValue('datadirectory')); +$total=$free+$used; +$relative=round(($used/$total)*100); +$tmpl->assign('usage',OC_HELPER::humanFileSize($used)); +$tmpl->assign('total_space',OC_HELPER::humanFileSize($total)); +$tmpl->assign('usage_relative',$relative); $tmpl->printPage(); ?> diff --git a/settings/templates/index.php b/settings/templates/index.php index 910437fefc9..f3f0b533a62 100644 --- a/settings/templates/index.php +++ b/settings/templates/index.php @@ -1,8 +1,8 @@ <form id="quota"> <fieldset> <legend>Account information</legend> - <div id="quota_indicator"><div style="width:72%;"> </div></div> - <p>You're currently using 72% (7.2GB) of your 10GB space.</p> + <div id="quota_indicator"><div style="width:<?php echo $_['usage_relative'] ?>%;"> </div></div> + <p>You're currently using <?php echo $_['usage_relative'] ?>% (<?php echo $_['usage'] ?>) of your <?php echo $_['total_space'] ?> space.</p> </fieldset> </form> |