Dominik Mueller
2014-03-05 f1c4cdd6a7c963d7357a7ea30e7413f2dbdd4ccc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?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);
        
        if($clientid != null){
            $sql_where = " AND sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=".$clientid.")";
        }
        
        // 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];
        
                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);
        
        if($clientid != null){
            $sql_where = " AND sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=".$clientid.")";
        }
        
        
        // 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];
                
                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;
    }
}