]> source.dussan.org Git - nextcloud-server.git/commitdiff
introducing class OCA/files/lib/Helper with new function to build an array with stora...
authorThomas Mueller <thomas.mueller@tmit.eu>
Fri, 18 Jan 2013 23:31:09 +0000 (00:31 +0100)
committerThomas Mueller <thomas.mueller@tmit.eu>
Fri, 18 Jan 2013 23:31:09 +0000 (00:31 +0100)
DRYing the code by using \OCA\files\lib\Helper::buildFileStorageStatistics()
now returning used space percent on each ajax call

apps/files/ajax/delete.php
apps/files/ajax/getstoragestats.php
apps/files/ajax/upload.php
apps/files/lib/helper.php [new file with mode: 0644]

index 293543c547f4429f69b960e95eb5e0d2a4347c95..575b8c8d9eac9a15187f5364db8337fac846ef28 100644 (file)
@@ -14,27 +14,18 @@ $files = json_decode($files);
 $filesWithError = '';
 $success = true;
 //Now delete
-foreach($files as $file) {
-       if( !OC_Files::delete( $dir, $file )) {
+foreach ($files as $file) {
+       if (!OC_Files::delete($dir, $file)) {
                $filesWithError .= $file . "\n";
                $success = false;
        }
 }
 
-// updated max file size after upload
-$l=new OC_L10N('files');
-$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
-$maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize);
-$maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize;
+// get array with updated storage stats (e.g. max file size) after upload
+$storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir);
 
-if($success) {
-       OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $files,
-               'uploadMaxFilesize'=>$maxUploadFilesize,
-               'maxHumanFilesize'=>$maxHumanFilesize
-       )));
+if ($success) {
+       OCP\JSON::success(array("data" => array_merge(array("dir" => $dir, "files" => $files), $storageStats)));
 } else {
-       OCP\JSON::error(array("data" => array( "message" => "Could not delete:\n" . $filesWithError,
-               'uploadMaxFilesize'=>$maxUploadFilesize,
-               'maxHumanFilesize'=>$maxHumanFilesize
-       )));
+       OCP\JSON::error(array("data" => array_merge(array("message" => "Could not delete:\n" . $filesWithError), $storageStats)));
 }
index e55e346ed67fdae3f028d53ab1453aac87cf7a8a..7a2b642a9bd11296f64bc16afd1fb559dbde2443 100644 (file)
@@ -5,12 +5,5 @@ $RUNTIME_APPTYPES = array('filesystem');
 
 OCP\JSON::checkLoggedIn();
 
-$l=new OC_L10N('files');
-$maxUploadFilesize = OCP\Util::maxUploadFilesize($dir);
-$maxHumanFilesize = OCP\Util::humanFileSize($maxUploadFilesize);
-$maxHumanFilesize = $l->t('Upload') . ' max. ' . $maxHumanFilesize;
-
 // send back json
-OCP\JSON::success(array('data' => array('uploadMaxFilesize' => $maxUploadFilesize,
-                                                                               'maxHumanFilesize'  => $maxHumanFilesize
-)));
+OCP\JSON::success(array('data' => \OCA\files\lib\Helper::buildFileStorageStatistics('/')));
index 8f0084e2bc01e44b3e77ad85b885bab2ebef3dd7..415524be6293aa40a9add10121facc6c7403bcb9 100644 (file)
@@ -8,90 +8,73 @@ OCP\JSON::setContentTypeHeader('text/plain');
 
 OCP\JSON::checkLoggedIn();
 OCP\JSON::callCheck();
-$l=OC_L10N::get('files');
+$l = OC_L10N::get('files');
 
-// current max upload size
-$l=new OC_L10N('files');
-$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
-$maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize);
-$maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize;
+// get array with current storage stats (e.g. max file size)
+$storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir);
 
 if (!isset($_FILES['files'])) {
-       OCP\JSON::error(array('data' => array( 'message' => $l->t( 'No file was uploaded. Unknown error' ),
-               'uploadMaxFilesize'=>$maxUploadFilesize,
-               'maxHumanFilesize'=>$maxHumanFilesize
-       )));
+       OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('No file was uploaded. Unknown error')), $storageStats)));
        exit();
 }
 
 foreach ($_FILES['files']['error'] as $error) {
        if ($error != 0) {
                $errors = array(
-                       UPLOAD_ERR_OK=>$l->t('There is no error, the file uploaded with success'),
-                       UPLOAD_ERR_INI_SIZE=>$l->t('The uploaded file exceeds the upload_max_filesize directive in php.ini: ')
-                                                                               .ini_get('upload_max_filesize'),
-                       UPLOAD_ERR_FORM_SIZE=>$l->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified'
-                                                                               .' in the HTML form'),
-                       UPLOAD_ERR_PARTIAL=>$l->t('The uploaded file was only partially uploaded'),
-                       UPLOAD_ERR_NO_FILE=>$l->t('No file was uploaded'),
-                       UPLOAD_ERR_NO_TMP_DIR=>$l->t('Missing a temporary folder'),
-                       UPLOAD_ERR_CANT_WRITE=>$l->t('Failed to write to disk'),
+                       UPLOAD_ERR_OK         => $l->t('There is no error, the file uploaded with success'),
+                       UPLOAD_ERR_INI_SIZE   => $l->t('The uploaded file exceeds the upload_max_filesize directive in php.ini: ')
+                               ini_get('upload_max_filesize'),
+                       UPLOAD_ERR_FORM_SIZE  => $l->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified'
+                               ' in the HTML form'),
+                       UPLOAD_ERR_PARTIAL    => $l->t('The uploaded file was only partially uploaded'),
+                       UPLOAD_ERR_NO_FILE    => $l->t('No file was uploaded'),
+                       UPLOAD_ERR_NO_TMP_DIR => $l->t('Missing a temporary folder'),
+                       UPLOAD_ERR_CANT_WRITE => $l->t('Failed to write to disk'),
                );
-               OCP\JSON::error(array('data' => array( 'message' => $errors[$error],
-                       'uploadMaxFilesize'=>$maxUploadFilesize,
-                       'maxHumanFilesize'=>$maxHumanFilesize
-               )));
+               OCP\JSON::error(array('data' => array_merge(array('message' => $errors[$error]), $storageStats)));
                exit();
        }
 }
-$files=$_FILES['files'];
+$files = $_FILES['files'];
 
 $dir = $_POST['dir'];
-$error='';
+$error = '';
 
-$totalSize=0;
-foreach($files['size'] as $size) {
-       $totalSize+=$size;
+$totalSize = 0;
+foreach ($files['size'] as $size) {
+       $totalSize += $size;
 }
-if($totalSize>OC_Filesystem::free_space($dir)) {
-       OCP\JSON::error(array('data' => array( 'message' => $l->t( 'Not enough storage available' ),
-               'uploadMaxFilesize'=>$maxUploadFilesize,
-               'maxHumanFilesize'=>$maxHumanFilesize)));
+if ($totalSize > OC_Filesystem::free_space($dir)) {
+       OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('Not enough storage available')), $storageStats)));
        exit();
 }
 
-$result=array();
-if(strpos($dir, '..') === false) {
-       $fileCount=count($files['name']);
-       for($i=0;$i<$fileCount;$i++) {
+$result = array();
+if (strpos($dir, '..') === false) {
+       $fileCount = count($files['name']);
+       for ($i = 0; $i < $fileCount; $i++) {
                $target = OCP\Files::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]);
                // $path needs to be normalized - this failed within drag'n'drop upload to a sub-folder
                $target = OC_Filesystem::normalizePath($target);
-               if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
+               if (is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
                        $meta = OC_FileCache::get($target);
                        $id = OC_FileCache::getId($target);
+
                        // updated max file size after upload
-                       $maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
-                       $maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize);
-                       $maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize;
+                       $storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir);
 
-                       $result[]=array( 'status' => 'success',
-                               'mime'=>$meta['mimetype'],
-                               'size'=>$meta['size'],
-                               'id'=>$id,
-                               'name'=>basename($target),
-                               'uploadMaxFilesize'=>$maxUploadFilesize,
-                               'maxHumanFilesize'=>$maxHumanFilesize
+                       $result[] = array_merge(array('status' => 'success',
+                                                                                 'mime'   => $meta['mimetype'],
+                                                                                 'size'   => $meta['size'],
+                                                                                 'id'     => $id,
+                                                                                 'name'   => basename($target)), $storageStats
                        );
                }
        }
        OCP\JSON::encodedPrint($result);
        exit();
 } else {
-       $error=$l->t( 'Invalid directory.' );
+       $error = $l->t('Invalid directory.');
 }
 
-OCP\JSON::error(array('data' => array('message' => $error,
-       'uploadMaxFilesize'=>$maxUploadFilesize,
-       'maxHumanFilesize'=>$maxHumanFilesize
-)));
+OCP\JSON::error(array('data' => array_merge(array('message' => $error), $storageStats)));
diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php
new file mode 100644 (file)
index 0000000..f2b1f14
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+namespace OCA\files\lib;
+
+class Helper
+{
+       public static function buildFileStorageStatistics($dir) {
+               $l = new \OC_L10N('files');
+               $maxUploadFilesize = \OCP\Util::maxUploadFilesize($dir);
+               $maxHumanFilesize = \OCP\Util::humanFileSize($maxUploadFilesize);
+               $maxHumanFilesize = $l->t('Upload') . ' max. ' . $maxHumanFilesize;
+
+               // information about storage capacities
+               $storageInfo = \OC_Helper::getStorageInfo();
+
+               return array('uploadMaxFilesize' => $maxUploadFilesize,
+                                        'maxHumanFilesize'  => $maxHumanFilesize,
+                                        'usedSpacePercent'  => (int)$storageInfo['relative']);
+       }
+}