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+ }
0 commit comments