Skip to content

Commit e8b3291

Browse files
committed
Quota-Lib für remote-quota-angaben
Erweiterungen für remote-Quota
1 parent 5a2985f commit e8b3291

File tree

5 files changed

+203
-136
lines changed

5 files changed

+203
-136
lines changed
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
<?php
2+
3+
class quota_lib {
4+
public function get_quota_data(groupid = null, $readable = true) {
5+
global $app;
6+
7+
$tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'harddisk_quota' ORDER BY created DESC");
8+
$monitor_data = array();
9+
if(is_array($tmp_rec)) {
10+
foreach ($tmp_rec as $tmp_mon) {
11+
$monitor_data = array_merge_recursive($monitor_data, unserialize($app->db->unquote($tmp_mon['data'])));
12+
}
13+
}
14+
//print_r($monitor_data);
15+
16+
if($groupid != null){
17+
$sql_where = " AND sys_groupid = ".$groupid);
18+
}
19+
20+
// select websites belonging to client
21+
$sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND type = 'vhost'".$sql_where);
22+
//print_r($sites);
23+
if(is_array($sites) && !empty($sites)){
24+
for($i=0;$i<sizeof($sites);$i++){
25+
$username = $sites[$i]['system_user'];
26+
$sites[$i]['used'] = $monitor_data['user'][$username]['used'];
27+
$sites[$i]['soft'] = $monitor_data['user'][$username]['soft'];
28+
$sites[$i]['hard'] = $monitor_data['user'][$username]['hard'];
29+
$sites[$i]['files'] = $monitor_data['user'][$username]['files'];
30+
31+
if (!is_numeric($sites[$i]['used'])){
32+
if ($sites[$i]['used'][0] > $sites[$i]['used'][1]){
33+
$sites[$i]['used'] = $sites[$i]['used'][0];
34+
} else {
35+
$sites[$i]['used'] = $sites[$i]['used'][1];
36+
}
37+
}
38+
if (!is_numeric($sites[$i]['soft'])) $sites[$i]['soft']=$sites[$i]['soft'][1];
39+
if (!is_numeric($sites[$i]['hard'])) $sites[$i]['hard']=$sites[$i]['hard'][1];
40+
if (!is_numeric($sites[$i]['files'])) $sites[$i]['files']=$sites[$i]['files'][1];
41+
42+
if ($readable) {
43+
// colours
44+
$sites[$i]['display_colour'] = '#000000';
45+
if($sites[$i]['soft'] > 0){
46+
$used_ratio = $sites[$i]['used']/$sites[$i]['soft'];
47+
} else {
48+
$used_ratio = 0;
49+
}
50+
if($used_ratio >= 0.8) $sites[$i]['display_colour'] = '#fd934f';
51+
if($used_ratio >= 1) $sites[$i]['display_colour'] = '#cc0000';
52+
53+
if($sites[$i]['used'] > 1024) {
54+
$sites[$i]['used'] = round($sites[$i]['used'] / 1024, 2).' MB';
55+
} else {
56+
if ($sites[$i]['used'] != '') $sites[$i]['used'] .= ' KB';
57+
}
58+
59+
if($sites[$i]['soft'] > 1024) {
60+
$sites[$i]['soft'] = round($sites[$i]['soft'] / 1024, 2).' MB';
61+
} else {
62+
$sites[$i]['soft'] .= ' KB';
63+
}
64+
65+
if($sites[$i]['hard'] > 1024) {
66+
$sites[$i]['hard'] = round($sites[$i]['hard'] / 1024, 2).' MB';
67+
} else {
68+
$sites[$i]['hard'] .= ' KB';
69+
}
70+
71+
if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited');
72+
if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited');
73+
74+
if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited');
75+
if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited');
76+
77+
/*
78+
if(!strstr($sites[$i]['used'],'M') && !strstr($sites[$i]['used'],'K')) $sites[$i]['used'].= ' B';
79+
if(!strstr($sites[$i]['soft'],'M') && !strstr($sites[$i]['soft'],'K')) $sites[$i]['soft'].= ' B';
80+
if(!strstr($sites[$i]['hard'],'M') && !strstr($sites[$i]['hard'],'K')) $sites[$i]['hard'].= ' B';
81+
*/
82+
}
83+
else {
84+
if (empty($sites[$i]['soft'])) $sites[$i]['soft'] = -1;
85+
if (empty($sites[$i]['hard'])) $sites[$i]['hard'] = -1;
86+
87+
if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = -1;
88+
if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = -1;
89+
}
90+
}
91+
}
92+
93+
return $sites;
94+
}
95+
96+
public function get_mailquota_data($groupid = null, $readable = true) {
97+
global $app;
98+
99+
$tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'email_quota' ORDER BY created DESC");
100+
$monitor_data = array();
101+
if(is_array($tmp_rec)) {
102+
foreach ($tmp_rec as $tmp_mon) {
103+
//$monitor_data = array_merge_recursive($monitor_data,unserialize($app->db->unquote($tmp_mon['data'])));
104+
$tmp_array = unserialize($app->db->unquote($tmp_mon['data']));
105+
if(is_array($tmp_array)) {
106+
foreach($tmp_array as $username => $data) {
107+
if(!$monitor_data[$username]['used']) $monitor_data[$username]['used'] = $data['used'];
108+
}
109+
}
110+
}
111+
}
112+
//print_r($monitor_data);
113+
if($_SESSION["s"]["user"]["typ"] != 'admin'){
114+
$sql_where = " AND sys_groupid = ".intval($_SESSION['s']['user']['default_group']);
115+
}
116+
117+
if($groupid != null){
118+
$sql_where = " AND sys_groupid = ".$groupid);
119+
}
120+
121+
122+
// select email accounts belonging to client
123+
$emails = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE 1".$sql_where);
124+
//print_r($emails);
125+
if(is_array($emails) && !empty($emails)){
126+
for($i=0;$i<sizeof($emails);$i++){
127+
$email = $emails[$i]['email'];
128+
129+
$emails[$i]['used'] = isset($monitor_data[$email]['used']) ? $monitor_data[$email]['used'] : array(1 => 0);
130+
131+
if (!is_numeric($emails[$i]['used'])) $emails[$i]['used']=$emails[$i]['used'][1];
132+
133+
// colours
134+
$emails[$i]['display_colour'] = '#000000';
135+
if($emails[$i]['quota'] > 0){
136+
$used_ratio = $emails[$i]['used']/$emails[$i]['quota'];
137+
} else {
138+
$used_ratio = 0;
139+
}
140+
if($used_ratio >= 0.8) $emails[$i]['display_colour'] = '#fd934f';
141+
if($used_ratio >= 1) $emails[$i]['display_colour'] = '#cc0000';
142+
143+
if($emails[$i]['quota'] == 0){
144+
$emails[$i]['quota'] = $app->lng('unlimited');
145+
} else {
146+
$emails[$i]['quota'] = round($emails[$i]['quota'] / 1048576, 4).' MB';
147+
}
148+
149+
150+
if($emails[$i]['used'] < 1544000) {
151+
$emails[$i]['used'] = round($emails[$i]['used'] / 1024, 4).' KB';
152+
} else {
153+
$emails[$i]['used'] = round($emails[$i]['used'] / 1048576, 4).' MB';
154+
}
155+
}
156+
}
157+
158+
return $emails;
159+
}
160+
}

interface/lib/classes/remoting.inc.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,39 @@ public function logout($session_id)
187187
}
188188
}
189189

190+
//** quota functions -----------------------------------------------------------------------------------
191+
public function quota_get_by_user($session_id, $group_id)
192+
{
193+
global $app;
194+
$app->uses('quota_lib');
195+
196+
if(!$this->checkPerm($session_id, 'quota_get_by_user')) {
197+
$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
198+
return false;
199+
}
200+
$group_id = $app->functions->intval($group_id);
201+
202+
$sites = $app->quota_lib->get_quota_data($group_id, false);
203+
204+
return $sites;
205+
}
206+
207+
public function mailquota_get_by_user($session_id, $group_id)
208+
{
209+
global $app;
210+
$app->uses('quota_lib');
211+
212+
if(!$this->checkPerm($session_id, 'mailquota_get_by_user')) {
213+
$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
214+
return false;
215+
}
216+
$group_id = $app->functions->intval($group_id);
217+
218+
$sites = $app->quota_lib->get_quota_data($group_id, false);
219+
220+
return $sites;
221+
}
222+
190223
//** protected functions -----------------------------------------------------------------------------------
191224

192225
protected function klientadd($formdef_file, $reseller_id, $params)

interface/web/client/lib/remote.conf.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
$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';
44
$function_list['domains_domain_get,domains_domain_add,domains_domain_delete,domains_get_all_by_user'] = 'Domaintool functions';
5+
$function_list['quota_get_by_user,mailquota_get_by_user'] = 'Quota functions';
56

67

78
?>

interface/web/dashboard/dashlets/mailquota.php

Lines changed: 4 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -16,70 +16,17 @@ function show() {
1616
if(is_file($lng_file)) include $lng_file;
1717
$tpl->setVar($wb);
1818

19-
$tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'email_quota' ORDER BY created DESC");
20-
$monitor_data = array();
21-
if(is_array($tmp_rec)) {
22-
foreach ($tmp_rec as $tmp_mon) {
23-
//$monitor_data = array_merge_recursive($monitor_data,unserialize($app->db->unquote($tmp_mon['data'])));
24-
$tmp_array = unserialize($app->db->unquote($tmp_mon['data']));
25-
if(is_array($tmp_array)) {
26-
foreach($tmp_array as $username => $data) {
27-
if(!$monitor_data[$username]['used']) $monitor_data[$username]['used'] = $data['used'];
28-
}
29-
}
30-
}
31-
}
32-
//print_r($monitor_data);
33-
if($_SESSION["s"]["user"]["typ"] != 'admin'){
34-
$sql_where = " AND sys_groupid = ".intval($_SESSION['s']['user']['default_group']);
35-
}
19+
$emails = $app->quota_lib->get_mailquota_data( ($_SESSION["s"]["user"]["typ"] != 'admin') ? $_SESSION['s']['user']['default_group'] : null);
20+
//print_r($emails);
3621

3722
$has_mailquota = false;
38-
// select email accounts belonging to client
39-
$emails = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE 1".$sql_where);
40-
//print_r($emails);
4123
if(is_array($emails) && !empty($emails)){
42-
for($i=0;$i<sizeof($emails);$i++){
43-
$email = $emails[$i]['email'];
44-
45-
$emails[$i]['used'] = isset($monitor_data[$email]['used']) ? $monitor_data[$email]['used'] : array(1 => 0);
46-
47-
if (!is_numeric($emails[$i]['used'])) $emails[$i]['used']=$emails[$i]['used'][1];
48-
49-
// colours
50-
$emails[$i]['display_colour'] = '#000000';
51-
if($emails[$i]['quota'] > 0){
52-
$used_ratio = $emails[$i]['used']/$emails[$i]['quota'];
53-
} else {
54-
$used_ratio = 0;
55-
}
56-
if($used_ratio >= 0.8) $emails[$i]['display_colour'] = '#fd934f';
57-
if($used_ratio >= 1) $emails[$i]['display_colour'] = '#cc0000';
58-
59-
if($emails[$i]['quota'] == 0){
60-
$emails[$i]['quota'] = $app->lng('unlimited');
61-
} else {
62-
$emails[$i]['quota'] = round($emails[$i]['quota'] / 1048576, 4).' MB';
63-
}
64-
65-
66-
if($emails[$i]['used'] < 1544000) {
67-
$emails[$i]['used'] = round($emails[$i]['used'] / 1024, 4).' KB';
68-
} else {
69-
$emails[$i]['used'] = round($emails[$i]['used'] / 1048576, 4).' MB';
70-
}
71-
72-
}
73-
$has_mailquota = true;
7424
$tpl->setloop('mailquota', $emails);
25+
$has_mailquota = isset($emails[0]['used']);
7526
}
76-
//print_r($sites);
77-
7827
$tpl->setVar('has_mailquota', $has_mailquota);
79-
28+
8029
return $tpl->grab();
81-
82-
8330
}
8431

8532
}

interface/web/dashboard/dashlets/quota.php

Lines changed: 5 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
class dashlet_quota {
44

55
function show() {
6-
global $app, $conf;
6+
global $app;
77

88
//* Loading Template
9-
$app->uses('tpl');
9+
$app->uses('tpl','quota_lib');
1010

1111
$tpl = new tpl;
1212
$tpl->newTemplate("dashlets/templates/quota.htm");
@@ -16,88 +16,14 @@ function show() {
1616
if(is_file($lng_file)) include $lng_file;
1717
$tpl->setVar($wb);
1818

19-
$tmp_rec = $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'harddisk_quota' ORDER BY created DESC");
20-
$monitor_data = array();
21-
if(is_array($tmp_rec)) {
22-
foreach ($tmp_rec as $tmp_mon) {
23-
$monitor_data = array_merge_recursive($monitor_data, unserialize($app->db->unquote($tmp_mon['data'])));
24-
}
25-
}
26-
//print_r($monitor_data);
27-
if($_SESSION["s"]["user"]["typ"] != 'admin'){
28-
$sql_where = " AND sys_groupid = ".$app->functions->intval($_SESSION['s']['user']['default_group']);
29-
}
19+
$sites = $app->quota_lib->get_quota_data( ($_SESSION["s"]["user"]["typ"] != 'admin') ? $_SESSION['s']['user']['default_group'] : null);
20+
//print_r($sites);
3021

3122
$has_quota = false;
32-
// select websites belonging to client
33-
$sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND type = 'vhost'".$sql_where);
34-
//print_r($sites);
3523
if(is_array($sites) && !empty($sites)){
36-
for($i=0;$i<sizeof($sites);$i++){
37-
$username = $sites[$i]['system_user'];
38-
$sites[$i]['used'] = $monitor_data['user'][$username]['used'];
39-
$sites[$i]['soft'] = $monitor_data['user'][$username]['soft'];
40-
$sites[$i]['hard'] = $monitor_data['user'][$username]['hard'];
41-
$sites[$i]['files'] = $monitor_data['user'][$username]['files'];
42-
43-
if (!is_numeric($sites[$i]['used'])){
44-
if ($sites[$i]['used'][0] > $sites[$i]['used'][1]){
45-
$sites[$i]['used'] = $sites[$i]['used'][0];
46-
} else {
47-
$sites[$i]['used'] = $sites[$i]['used'][1];
48-
}
49-
}
50-
if (!is_numeric($sites[$i]['soft'])) $sites[$i]['soft']=$sites[$i]['soft'][1];
51-
if (!is_numeric($sites[$i]['hard'])) $sites[$i]['hard']=$sites[$i]['hard'][1];
52-
if (!is_numeric($sites[$i]['files'])) $sites[$i]['files']=$sites[$i]['files'][1];
53-
54-
// colours
55-
$sites[$i]['display_colour'] = '#000000';
56-
if($sites[$i]['soft'] > 0){
57-
$used_ratio = $sites[$i]['used']/$sites[$i]['soft'];
58-
} else {
59-
$used_ratio = 0;
60-
}
61-
if($used_ratio >= 0.8) $sites[$i]['display_colour'] = '#fd934f';
62-
if($used_ratio >= 1) $sites[$i]['display_colour'] = '#cc0000';
63-
64-
if($sites[$i]['used'] > 1024) {
65-
$sites[$i]['used'] = round($sites[$i]['used'] / 1024, 2).' MB';
66-
} else {
67-
if ($sites[$i]['used'] != '') $sites[$i]['used'] .= ' KB';
68-
}
69-
70-
if($sites[$i]['soft'] > 1024) {
71-
$sites[$i]['soft'] = round($sites[$i]['soft'] / 1024, 2).' MB';
72-
} else {
73-
$sites[$i]['soft'] .= ' KB';
74-
}
75-
76-
if($sites[$i]['hard'] > 1024) {
77-
$sites[$i]['hard'] = round($sites[$i]['hard'] / 1024, 2).' MB';
78-
} else {
79-
$sites[$i]['hard'] .= ' KB';
80-
}
81-
82-
if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited');
83-
if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited');
84-
85-
86-
/*
87-
if(!strstr($sites[$i]['used'],'M') && !strstr($sites[$i]['used'],'K')) $sites[$i]['used'].= ' B';
88-
if(!strstr($sites[$i]['soft'],'M') && !strstr($sites[$i]['soft'],'K')) $sites[$i]['soft'].= ' B';
89-
if(!strstr($sites[$i]['hard'],'M') && !strstr($sites[$i]['hard'],'K')) $sites[$i]['hard'].= ' B';
90-
*/
91-
92-
if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited');
93-
if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited');
94-
95-
}
96-
$has_quota = true;
9724
$tpl->setloop('quota', $sites);
25+
$has_quota = isset($sites[0]['used']);
9826
}
99-
//print_r($sites);
100-
10127
$tpl->setVar('has_quota', $has_quota);
10228

10329
return $tpl->grab();

0 commit comments

Comments
 (0)