From cd9e802b9f36c572d6ca9246c47f6795efccae22 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Wed, 05 Mar 2014 12:25:54 -0500
Subject: [PATCH] Merge branch 'remote_quota' into 'master'
---
interface/lib/classes/remote.d/sites.inc.php | 15 ++
interface/web/dashboard/dashlets/quota.php | 84 -------------
interface/web/client/lib/remote.conf.php | 1
interface/web/dashboard/dashlets/mailquota.php | 65 +---------
interface/lib/classes/quota_lib.inc.php | 152 +++++++++++++++++++++++++
interface/lib/classes/remote.d/mail.inc.php | 13 ++
6 files changed, 192 insertions(+), 138 deletions(-)
diff --git a/interface/lib/classes/quota_lib.inc.php b/interface/lib/classes/quota_lib.inc.php
new file mode 100644
index 0000000..b9ef6aa
--- /dev/null
+++ b/interface/lib/classes/quota_lib.inc.php
@@ -0,0 +1,152 @@
+<?php
+
+class quota_lib {
+ public function get_quota_data($clientid = null, $readable = true) {
+ global $app;
+
+ $tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'harddisk_quota' ORDER BY created DESC");
+ $monitor_data = array();
+ if(is_array($tmp_rec)) {
+ foreach ($tmp_rec as $tmp_mon) {
+ $monitor_data = array_merge_recursive($monitor_data, unserialize($app->db->unquote($tmp_mon['data'])));
+ }
+ }
+ //print_r($monitor_data);
+
+ // select all websites or websites belonging to client
+ $sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND type = 'vhost'".(($clientid != null)?" AND sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=?)":''), $app->functions->intval($client_id));
+
+ //print_r($sites);
+ if(is_array($sites) && !empty($sites)){
+ for($i=0;$i<sizeof($sites);$i++){
+ $username = $sites[$i]['system_user'];
+ $sites[$i]['used'] = $monitor_data['user'][$username]['used'];
+ $sites[$i]['soft'] = $monitor_data['user'][$username]['soft'];
+ $sites[$i]['hard'] = $monitor_data['user'][$username]['hard'];
+ $sites[$i]['files'] = $monitor_data['user'][$username]['files'];
+
+ if (!is_numeric($sites[$i]['used'])){
+ if ($sites[$i]['used'][0] > $sites[$i]['used'][1]){
+ $sites[$i]['used'] = $sites[$i]['used'][0];
+ } else {
+ $sites[$i]['used'] = $sites[$i]['used'][1];
+ }
+ }
+ if (!is_numeric($sites[$i]['soft'])) $sites[$i]['soft']=$sites[$i]['soft'][1];
+ if (!is_numeric($sites[$i]['hard'])) $sites[$i]['hard']=$sites[$i]['hard'][1];
+ if (!is_numeric($sites[$i]['files'])) $sites[$i]['files']=$sites[$i]['files'][1];
+
+ if ($readable) {
+ // colours
+ $sites[$i]['display_colour'] = '#000000';
+ if($sites[$i]['soft'] > 0){
+ $used_ratio = $sites[$i]['used']/$sites[$i]['soft'];
+ } else {
+ $used_ratio = 0;
+ }
+ if($used_ratio >= 0.8) $sites[$i]['display_colour'] = '#fd934f';
+ if($used_ratio >= 1) $sites[$i]['display_colour'] = '#cc0000';
+
+ if($sites[$i]['used'] > 1024) {
+ $sites[$i]['used'] = round($sites[$i]['used'] / 1024, 2).' MB';
+ } else {
+ if ($sites[$i]['used'] != '') $sites[$i]['used'] .= ' KB';
+ }
+
+ if($sites[$i]['soft'] > 1024) {
+ $sites[$i]['soft'] = round($sites[$i]['soft'] / 1024, 2).' MB';
+ } else {
+ $sites[$i]['soft'] .= ' KB';
+ }
+
+ if($sites[$i]['hard'] > 1024) {
+ $sites[$i]['hard'] = round($sites[$i]['hard'] / 1024, 2).' MB';
+ } else {
+ $sites[$i]['hard'] .= ' KB';
+ }
+
+ if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited');
+ if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited');
+
+ if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited');
+ if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited');
+
+ /*
+ if(!strstr($sites[$i]['used'],'M') && !strstr($sites[$i]['used'],'K')) $sites[$i]['used'].= ' B';
+ if(!strstr($sites[$i]['soft'],'M') && !strstr($sites[$i]['soft'],'K')) $sites[$i]['soft'].= ' B';
+ if(!strstr($sites[$i]['hard'],'M') && !strstr($sites[$i]['hard'],'K')) $sites[$i]['hard'].= ' B';
+ */
+ }
+ else {
+ if (empty($sites[$i]['soft'])) $sites[$i]['soft'] = -1;
+ if (empty($sites[$i]['hard'])) $sites[$i]['hard'] = -1;
+
+ if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = -1;
+ if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = -1;
+ }
+ }
+ }
+
+ return $sites;
+ }
+
+ public function get_mailquota_data($clientid = null, $readable = true) {
+ global $app;
+
+ $tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'email_quota' ORDER BY created DESC");
+ $monitor_data = array();
+ if(is_array($tmp_rec)) {
+ foreach ($tmp_rec as $tmp_mon) {
+ //$monitor_data = array_merge_recursive($monitor_data,unserialize($app->db->unquote($tmp_mon['data'])));
+ $tmp_array = unserialize($app->db->unquote($tmp_mon['data']));
+ if(is_array($tmp_array)) {
+ foreach($tmp_array as $username => $data) {
+ if(!$monitor_data[$username]['used']) $monitor_data[$username]['used'] = $data['used'];
+ }
+ }
+ }
+ }
+ //print_r($monitor_data);
+
+ // select all email accounts or email accounts belonging to client
+ $emails = $app->db->queryAllRecords("SELECT * FROM mail_user".(($clientid != null)? " WHERE sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=?)" : ''), $app->functions->intval($client_id));
+
+ //print_r($emails);
+ if(is_array($emails) && !empty($emails)){
+ for($i=0;$i<sizeof($emails);$i++){
+ $email = $emails[$i]['email'];
+
+ $emails[$i]['used'] = isset($monitor_data[$email]['used']) ? $monitor_data[$email]['used'] : array(1 => 0);
+
+ if (!is_numeric($emails[$i]['used'])) $emails[$i]['used']=$emails[$i]['used'][1];
+
+ if ($readable) {
+ // colours
+ $emails[$i]['display_colour'] = '#000000';
+ if($emails[$i]['quota'] > 0){
+ $used_ratio = $emails[$i]['used']/$emails[$i]['quota'];
+ } else {
+ $used_ratio = 0;
+ }
+ if($used_ratio >= 0.8) $emails[$i]['display_colour'] = '#fd934f';
+ if($used_ratio >= 1) $emails[$i]['display_colour'] = '#cc0000';
+
+ if($emails[$i]['quota'] == 0){
+ $emails[$i]['quota'] = $app->lng('unlimited');
+ } else {
+ $emails[$i]['quota'] = round($emails[$i]['quota'] / 1048576, 4).' MB';
+ }
+
+
+ if($emails[$i]['used'] < 1544000) {
+ $emails[$i]['used'] = round($emails[$i]['used'] / 1024, 4).' KB';
+ } else {
+ $emails[$i]['used'] = round($emails[$i]['used'] / 1048576, 4).' MB';
+ }
+ }
+ }
+ }
+
+ return $emails;
+ }
+}
\ No newline at end of file
diff --git a/interface/lib/classes/remote.d/mail.inc.php b/interface/lib/classes/remote.d/mail.inc.php
index c54466f..e579fb6 100644
--- a/interface/lib/classes/remote.d/mail.inc.php
+++ b/interface/lib/classes/remote.d/mail.inc.php
@@ -1024,6 +1024,19 @@
}
}
+ //** quota functions -----------------------------------------------------------------------------------
+ public function mailquota_get_by_user($session_id, $client_id)
+ {
+ global $app;
+ $app->uses('quota_lib');
+
+ if(!$this->checkPerm($session_id, 'mailquota_get_by_user')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+
+ return $app->quota_lib->get_mailquota_data($client_id, false);
+ }
}
diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php
index 5e5ac59..94ec2b1 100644
--- a/interface/lib/classes/remote.d/sites.inc.php
+++ b/interface/lib/classes/remote.d/sites.inc.php
@@ -872,6 +872,21 @@
return $all;
}
+ //** quota functions -----------------------------------------------------------------------------------
+ public function quota_get_by_user($session_id, $client_id)
+ {
+ global $app;
+ $app->uses('quota_lib');
+
+ if(!$this->checkPerm($session_id, 'quota_get_by_user')) {
+ $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+ return false;
+ }
+
+ return $app->quota_lib->get_quota_data($client_id, false);
+ }
+
+
}
?>
diff --git a/interface/web/client/lib/remote.conf.php b/interface/web/client/lib/remote.conf.php
index 62e4dde..56c7708 100644
--- a/interface/web/client/lib/remote.conf.php
+++ b/interface/web/client/lib/remote.conf.php
@@ -2,6 +2,7 @@
$function_list['client_get_all,client_get,client_add,client_update,client_delete,client_get_sites_by_user,client_get_by_username,client_change_password,client_get_id,client_delete_everything'] = 'Client functions';
$function_list['domains_domain_get,domains_domain_add,domains_domain_delete,domains_get_all_by_user'] = 'Domaintool functions';
+$function_list['quota_get_by_user,mailquota_get_by_user'] = 'Quota functions';
?>
diff --git a/interface/web/dashboard/dashlets/mailquota.php b/interface/web/dashboard/dashlets/mailquota.php
index 68105a5..27b8333 100644
--- a/interface/web/dashboard/dashlets/mailquota.php
+++ b/interface/web/dashboard/dashlets/mailquota.php
@@ -3,10 +3,10 @@
class dashlet_mailquota {
function show() {
- global $app, $conf;
+ global $app;
//* Loading Template
- $app->uses('tpl');
+ $app->uses('tpl,quota_lib');
$tpl = new tpl;
$tpl->newTemplate("dashlets/templates/mailquota.htm");
@@ -16,70 +16,17 @@
if(is_file($lng_file)) include $lng_file;
$tpl->setVar($wb);
- $tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'email_quota' ORDER BY created DESC");
- $monitor_data = array();
- if(is_array($tmp_rec)) {
- foreach ($tmp_rec as $tmp_mon) {
- //$monitor_data = array_merge_recursive($monitor_data,unserialize($app->db->unquote($tmp_mon['data'])));
- $tmp_array = unserialize($app->db->unquote($tmp_mon['data']));
- if(is_array($tmp_array)) {
- foreach($tmp_array as $username => $data) {
- if(!$monitor_data[$username]['used']) $monitor_data[$username]['used'] = $data['used'];
- }
- }
- }
- }
- //print_r($monitor_data);
- if($_SESSION["s"]["user"]["typ"] != 'admin'){
- $sql_where = " AND sys_groupid = ".intval($_SESSION['s']['user']['default_group']);
- }
+ $emails = $app->quota_lib->get_mailquota_data( ($_SESSION["s"]["user"]["typ"] != 'admin') ? $_SESSION['s']['user']['client_id'] : null);
+ //print_r($emails);
$has_mailquota = false;
- // select email accounts belonging to client
- $emails = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE 1".$sql_where);
- //print_r($emails);
if(is_array($emails) && !empty($emails)){
- for($i=0;$i<sizeof($emails);$i++){
- $email = $emails[$i]['email'];
-
- $emails[$i]['used'] = isset($monitor_data[$email]['used']) ? $monitor_data[$email]['used'] : array(1 => 0);
-
- if (!is_numeric($emails[$i]['used'])) $emails[$i]['used']=$emails[$i]['used'][1];
-
- // colours
- $emails[$i]['display_colour'] = '#000000';
- if($emails[$i]['quota'] > 0){
- $used_ratio = $emails[$i]['used']/$emails[$i]['quota'];
- } else {
- $used_ratio = 0;
- }
- if($used_ratio >= 0.8) $emails[$i]['display_colour'] = '#fd934f';
- if($used_ratio >= 1) $emails[$i]['display_colour'] = '#cc0000';
-
- if($emails[$i]['quota'] == 0){
- $emails[$i]['quota'] = $app->lng('unlimited');
- } else {
- $emails[$i]['quota'] = round($emails[$i]['quota'] / 1048576, 4).' MB';
- }
-
-
- if($emails[$i]['used'] < 1544000) {
- $emails[$i]['used'] = round($emails[$i]['used'] / 1024, 4).' KB';
- } else {
- $emails[$i]['used'] = round($emails[$i]['used'] / 1048576, 4).' MB';
- }
-
- }
- $has_mailquota = true;
$tpl->setloop('mailquota', $emails);
+ $has_mailquota = isset($emails[0]['used']);
}
- //print_r($sites);
-
$tpl->setVar('has_mailquota', $has_mailquota);
-
+
return $tpl->grab();
-
-
}
}
diff --git a/interface/web/dashboard/dashlets/quota.php b/interface/web/dashboard/dashlets/quota.php
index d0d68fd..a72e1fd 100644
--- a/interface/web/dashboard/dashlets/quota.php
+++ b/interface/web/dashboard/dashlets/quota.php
@@ -3,10 +3,10 @@
class dashlet_quota {
function show() {
- global $app, $conf;
+ global $app;
//* Loading Template
- $app->uses('tpl');
+ $app->uses('tpl,quota_lib');
$tpl = new tpl;
$tpl->newTemplate("dashlets/templates/quota.htm");
@@ -16,88 +16,14 @@
if(is_file($lng_file)) include $lng_file;
$tpl->setVar($wb);
- $tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'harddisk_quota' ORDER BY created DESC");
- $monitor_data = array();
- if(is_array($tmp_rec)) {
- foreach ($tmp_rec as $tmp_mon) {
- $monitor_data = array_merge_recursive($monitor_data, unserialize($app->db->unquote($tmp_mon['data'])));
- }
- }
- //print_r($monitor_data);
- if($_SESSION["s"]["user"]["typ"] != 'admin'){
- $sql_where = " AND sys_groupid = ".$app->functions->intval($_SESSION['s']['user']['default_group']);
- }
+ $sites = $app->quota_lib->get_quota_data( ($_SESSION["s"]["user"]["typ"] != 'admin') ? $_SESSION['s']['user']['client_id'] : null);
+ //print_r($sites);
$has_quota = false;
- // select websites belonging to client
- $sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND type = 'vhost'".$sql_where);
- //print_r($sites);
if(is_array($sites) && !empty($sites)){
- for($i=0;$i<sizeof($sites);$i++){
- $username = $sites[$i]['system_user'];
- $sites[$i]['used'] = $monitor_data['user'][$username]['used'];
- $sites[$i]['soft'] = $monitor_data['user'][$username]['soft'];
- $sites[$i]['hard'] = $monitor_data['user'][$username]['hard'];
- $sites[$i]['files'] = $monitor_data['user'][$username]['files'];
-
- if (!is_numeric($sites[$i]['used'])){
- if ($sites[$i]['used'][0] > $sites[$i]['used'][1]){
- $sites[$i]['used'] = $sites[$i]['used'][0];
- } else {
- $sites[$i]['used'] = $sites[$i]['used'][1];
- }
- }
- if (!is_numeric($sites[$i]['soft'])) $sites[$i]['soft']=$sites[$i]['soft'][1];
- if (!is_numeric($sites[$i]['hard'])) $sites[$i]['hard']=$sites[$i]['hard'][1];
- if (!is_numeric($sites[$i]['files'])) $sites[$i]['files']=$sites[$i]['files'][1];
-
- // colours
- $sites[$i]['display_colour'] = '#000000';
- if($sites[$i]['soft'] > 0){
- $used_ratio = $sites[$i]['used']/$sites[$i]['soft'];
- } else {
- $used_ratio = 0;
- }
- if($used_ratio >= 0.8) $sites[$i]['display_colour'] = '#fd934f';
- if($used_ratio >= 1) $sites[$i]['display_colour'] = '#cc0000';
-
- if($sites[$i]['used'] > 1024) {
- $sites[$i]['used'] = round($sites[$i]['used'] / 1024, 2).' MB';
- } else {
- if ($sites[$i]['used'] != '') $sites[$i]['used'] .= ' KB';
- }
-
- if($sites[$i]['soft'] > 1024) {
- $sites[$i]['soft'] = round($sites[$i]['soft'] / 1024, 2).' MB';
- } else {
- $sites[$i]['soft'] .= ' KB';
- }
-
- if($sites[$i]['hard'] > 1024) {
- $sites[$i]['hard'] = round($sites[$i]['hard'] / 1024, 2).' MB';
- } else {
- $sites[$i]['hard'] .= ' KB';
- }
-
- if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited');
- if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited');
-
-
- /*
- if(!strstr($sites[$i]['used'],'M') && !strstr($sites[$i]['used'],'K')) $sites[$i]['used'].= ' B';
- if(!strstr($sites[$i]['soft'],'M') && !strstr($sites[$i]['soft'],'K')) $sites[$i]['soft'].= ' B';
- if(!strstr($sites[$i]['hard'],'M') && !strstr($sites[$i]['hard'],'K')) $sites[$i]['hard'].= ' B';
- */
-
- if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited');
- if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited');
-
- }
- $has_quota = true;
$tpl->setloop('quota', $sites);
+ $has_quota = isset($sites[0]['used']);
}
- //print_r($sites);
-
$tpl->setVar('has_quota', $has_quota);
return $tpl->grab();
--
Gitblit v1.9.1