summaryrefslogtreecommitdiffstats
path: root/lib/fileproxy
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-08-15 20:37:50 +0200
committerRobin Appelman <icewind1991@gmail.com>2011-08-15 21:09:13 +0200
commit6173c0fbc262f0d02c45d9cf4e81b020ad839145 (patch)
tree7c453e5dce300051efbcc3721eec4d7306c6000d /lib/fileproxy
parent2f1a06b2ee8b2022e71d8903fd5ce0ccf2f8c22f (diff)
downloadnextcloud-server-6173c0fbc262f0d02c45d9cf4e81b020ad839145.tar.gz
nextcloud-server-6173c0fbc262f0d02c45d9cf4e81b020ad839145.zip
a bit of refactoring for oc_filesystem and implement user quota
Diffstat (limited to 'lib/fileproxy')
-rw-r--r--lib/fileproxy/quota.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/fileproxy/quota.php b/lib/fileproxy/quota.php
new file mode 100644
index 00000000000..af8ddee1473
--- /dev/null
+++ b/lib/fileproxy/quota.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+* ownCloud
+*
+* @author Robin Appelman
+* @copyright 2011 Robin Appelman icewind1991@gmail.com
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Affero General Public
+* License along with this library. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+/**
+ * user quota managment
+ */
+
+class OC_FileProxy_Quota extends OC_FileProxy{
+ private function getFreeSpace(){
+ $usedSpace=OC_Filesystem::filesize('');
+ $totalSpace=OC_Preferences::getValue(OC_User::getUser(),'files','quota',0);
+ if($totalSpace==0){
+ return 0;
+ }
+ return $totalSpace-$usedSpace;
+ }
+
+ public function postFree_space($path,$space){
+ $free=$this->getFreeSpace();
+ if($free==0){
+ return $space;
+ }
+ return min($free,$space);
+ }
+
+ public function preFile_put_contents($path,$data){
+ return (strlen($data)<$this->getFreeSpace() or $this->getFreeSpace()==0);
+ }
+
+ public function preCopy($path1,$path2){
+ return (OC_Filesystem::filesize($path1)<$this->getFreeSpace() or $this->getFreeSpace()==0);
+ }
+
+ public function preFromTmpFile($tmpfile,$path){
+ return (filesize($tmpfile)<$this->getFreeSpace() or $this->getFreeSpace()==0);
+ }
+
+ public function preFromUploadedFile($tmpfile,$path){
+ return (filesize($tmpfile)<$this->getFreeSpace() or $this->getFreeSpace()==0);
+ }
+} \ No newline at end of file