From e560cba76beb918a2c127b931b6d409abd9f03ab Mon Sep 17 00:00:00 2001
From: Thomas Mueller <thomas.mueller@tmit.eu>
Date: Fri, 11 Jan 2013 16:47:28 +0100
Subject: [PATCH] adding a ajax call to get the current file storage stats like
 free space logic to call it every 5 minutes make use of visibility
 API/jquery-visibility to perform the ajax call only if the browser is
 visible/in use

---
 apps/files/ajax/getstoragestats.php | 16 ++++++++++++++++
 apps/files/js/files.js              | 26 ++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)
 create mode 100644 apps/files/ajax/getstoragestats.php

diff --git a/apps/files/ajax/getstoragestats.php b/apps/files/ajax/getstoragestats.php
new file mode 100644
index 0000000000..e55e346ed6
--- /dev/null
+++ b/apps/files/ajax/getstoragestats.php
@@ -0,0 +1,16 @@
+<?php
+
+// only need filesystem apps
+$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
+)));
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 96b3cc5b62..440aeeaf6a 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -732,6 +732,32 @@ $(document).ready(function() {
 	});
 
 	resizeBreadcrumbs(true);
+
+	// file space size sync
+	function update_storage_statistics() {
+		$.getJSON(OC.filePath('files','ajax','getstoragestats.php'),function(response) {
+			Files.updateMaxUploadFilesize(response);
+		});
+	}
+
+	// start on load - we ask the server every 5 minutes
+	var update_storage_statistics_interval = 5*60*1000;
+	var update_storage_statistics_interval_id = setInterval(update_storage_statistics, update_storage_statistics_interval);
+
+	// Use jquery-visibility to de-/re-activate file stats sync
+	if ($.support.pageVisibility) {
+		$(document).on({
+			'show.visibility': function() {
+				if (!update_storage_statistics_interval_id) {
+					update_storage_statistics_interval_id = setInterval(update_storage_statistics, update_storage_statistics_interval);
+				}
+			},
+			'hide.visibility': function() {
+				clearInterval(update_storage_statistics_interval_id);
+				update_storage_statistics_interval_id = 0;
+			}
+		});
+	}
 });
 
 function scanFiles(force,dir){
-- 
GitLab