Skip to content

Commit 9741885

Browse files
committed
Rework dashlet code
- Move translations more to the frontend code
1 parent e406c48 commit 9741885

File tree

7 files changed

+57
-101
lines changed

7 files changed

+57
-101
lines changed

interface/lib/classes/functions.inc.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,33 @@ public function intval($string, $force_numeric = false) {
287287
* @return string - formated bytes
288288
*/
289289
public function formatBytes($size, $precision = 2) {
290+
// 0 is a special as it would give NAN otehrwise.
291+
if ($size == 0) {
292+
return 0;
293+
}
294+
290295
$base=log($size)/log(1024);
291296
$suffixes=array('', ' kB', ' MB', ' GB', ' TB');
292297
return round(pow(1024, $base-floor($base)), $precision).$suffixes[floor($base)];
293298
}
294299

300+
/**
301+
* Function to change bytes to kB, MB, GB or TB or the translated string 'Unlimited' for -1
302+
* @param int $size - size in bytes
303+
* @param int precicion - after-comma-numbers (default: 2)
304+
* @return string - formated bytes
305+
*/
306+
public function formatBytesOrUnlimited($size, $precision = 2) {
307+
global $app;
308+
309+
if ($size == -1) {
310+
return $app->lng('unlimited_txt');
311+
}
312+
else {
313+
return $this->formatBytes($size, $precision);
314+
}
315+
316+
}
295317

296318
/**
297319
* Normalize a path and strip duplicate slashes from it

interface/lib/classes/quota_lib.inc.php

Lines changed: 10 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ public function get_quota_data($clientid = null, $readable = true) {
3636
if (!is_numeric($sites[$i]['hard'])) $sites[$i]['hard']=$sites[$i]['hard'][1];
3737
if (!is_numeric($sites[$i]['files'])) $sites[$i]['files']=$sites[$i]['files'][1];
3838

39-
$sites[$i]['used_raw'] = $sites[$i]['used'];
40-
$sites[$i]['soft_raw'] = $sites[$i]['soft'];
41-
$sites[$i]['hard_raw'] = $sites[$i]['hard'];
39+
// Convert from kb to bytes, and use -1 for instead of 0 for Unlimited.
40+
$sites[$i]['used_raw'] = $sites[$i]['used'] * 1024;
41+
$sites[$i]['soft_raw'] = ($sites[$i]['soft'] > 0) ? $sites[$i]['soft'] * 1024 : -1;
42+
$sites[$i]['hard_raw'] = ($sites[$i]['hard'] > 0) ? $sites[$i]['hard'] * 1024 : -1;
4243
$sites[$i]['files_raw'] = $sites[$i]['files'];
4344
$sites[$i]['used_percentage'] = ($sites[$i]['soft'] > 0 && $sites[$i]['used'] > 0 ? round($sites[$i]['used'] * 100 / $sites[$i]['soft']) : 0);
4445

@@ -53,43 +54,14 @@ public function get_quota_data($clientid = null, $readable = true) {
5354
if($used_ratio >= 0.8) $sites[$i]['display_colour'] = '#fd934f';
5455
if($used_ratio >= 1) $sites[$i]['display_colour'] = '#cc0000';
5556

56-
if($sites[$i]['used'] > 1024) {
57-
$sites[$i]['used'] = round($sites[$i]['used'] / 1024, 1).' MB';
58-
} else {
59-
if ($sites[$i]['used'] != '') $sites[$i]['used'] .= ' KB';
60-
}
61-
62-
if($sites[$i]['soft'] > 1024) {
63-
$sites[$i]['soft'] = round($sites[$i]['soft'] / 1024, 1).' MB';
64-
} else {
65-
$sites[$i]['soft'] .= ' KB';
66-
}
67-
68-
if($sites[$i]['hard'] > 1024) {
69-
$sites[$i]['hard'] = round($sites[$i]['hard'] / 1024, 1).' MB';
70-
} else {
71-
$sites[$i]['hard'] .= ' KB';
72-
}
73-
74-
if($sites[$i]['soft'] == " KB") $sites[$i]['soft'] = $app->lng('unlimited_txt');
75-
if($sites[$i]['hard'] == " KB") $sites[$i]['hard'] = $app->lng('unlimited_txt');
76-
77-
if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = $app->lng('unlimited_txt');
78-
if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = $app->lng('unlimited_txt');
7957

8058
/*
8159
if(!strstr($sites[$i]['used'],'M') && !strstr($sites[$i]['used'],'K')) $sites[$i]['used'].= ' B';
8260
if(!strstr($sites[$i]['soft'],'M') && !strstr($sites[$i]['soft'],'K')) $sites[$i]['soft'].= ' B';
8361
if(!strstr($sites[$i]['hard'],'M') && !strstr($sites[$i]['hard'],'K')) $sites[$i]['hard'].= ' B';
8462
*/
8563
}
86-
else {
87-
if (empty($sites[$i]['soft'])) $sites[$i]['soft'] = -1;
88-
if (empty($sites[$i]['hard'])) $sites[$i]['hard'] = -1;
8964

90-
if($sites[$i]['soft'] == '0 B' || $sites[$i]['soft'] == '0 KB' || $sites[$i]['soft'] == '0') $sites[$i]['soft'] = -1;
91-
if($sites[$i]['hard'] == '0 B' || $sites[$i]['hard'] == '0 KB' || $sites[$i]['hard'] == '0') $sites[$i]['hard'] = -1;
92-
}
9365
}
9466
}
9567

@@ -265,17 +237,8 @@ public function get_mailquota_data($clientid = null, $readable = true) {
265237
if($used_ratio >= 0.8) $emails[$i]['display_colour'] = '#fd934f';
266238
if($used_ratio >= 1) $emails[$i]['display_colour'] = '#cc0000';
267239

268-
if($emails[$i]['quota'] == 0){
269-
$emails[$i]['quota'] = $app->lng('unlimited_txt');
270-
} else {
271-
$emails[$i]['quota'] = round($emails[$i]['quota'] / 1048576, 1).' MB';
272-
}
273-
274-
275-
if($emails[$i]['used'] < 1544000) {
276-
$emails[$i]['used'] = round($emails[$i]['used'] / 1024, 1).' KB';
277-
} else {
278-
$emails[$i]['used'] = round($emails[$i]['used'] / 1048576, 1).' MB';
240+
if($emails[$i]['quota'] == 0) {
241+
$emails[$i]['quota'] = -1;
279242
}
280243
}
281244
}
@@ -309,11 +272,11 @@ public function get_databasequota_data($clientid = null, $readable = true) {
309272
for($i=0;$i<sizeof($databases);$i++){
310273
$databasename = $databases[$i]['database_name'];
311274

312-
$databases[$i]['used'] = isset($monitor_data[$databasename]['size']) ? $monitor_data[$databasename]['size'] : 0;
275+
$size = isset($monitor_data[$databasename]['size']) ? $monitor_data[$databasename]['size'] : 0;
313276

314-
$databases[$i]['quota_raw'] = $databases[$i]['database_quota'];
315-
$databases[$i]['used_raw'] = $databases[$i]['used'] / 1024 / 1024; //* quota is stored as MB - calculated bytes
316-
$databases[$i]['used_percentage'] = (($databases[$i]['database_quota'] > 0) && ($databases[$i]['used'] > 0)) ? round($databases[$i]['used_raw'] * 100 / $databases[$i]['database_quota']) : 0;
277+
$databases[$i]['database_quota_raw'] = ($databases[$i]['database_quota'] == -1) ? -1 : $databases[$i]['database_quota'] * 1000 * 1000;
278+
$databases[$i]['used_raw'] = $size; // / 1024 / 1024; //* quota is stored as MB - calculated bytes
279+
$databases[$i]['used_percentage'] = (($databases[$i]['database_quota'] > 0) && ($size > 0)) ? round($databases[$i]['used_raw'] * 100 / $databases[$i]['database_quota_raw']) : 0;
317280

318281
if ($readable) {
319282
// colours
@@ -326,18 +289,8 @@ public function get_databasequota_data($clientid = null, $readable = true) {
326289
if($used_ratio >= 0.8) $databases[$i]['display_colour'] = '#fd934f';
327290
if($used_ratio >= 1) $databases[$i]['display_colour'] = '#cc0000';
328291

329-
if($databases[$i]['database_quota'] == -1) {
330-
$databases[$i]['database_quota'] = $app->lng('unlimited_txt');
331-
} else {
332-
$databases[$i]['database_quota'] = $databases[$i]['database_quota'] . ' MB';
333-
}
334292

335293

336-
if($databases[$i]['used'] < 1544000) {
337-
$databases[$i]['used'] = round($databases[$i]['used'] / 1024, 1).' KB';
338-
} else {
339-
$databases[$i]['used'] = round($databases[$i]['used'] / 1048576, 1).' MB';
340-
}
341294
}
342295
}
343296
}

interface/web/dashboard/dashboard.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@
219219
$leftcol = array();
220220
foreach($leftcol_dashlets as $name) {
221221
if(isset($dashlet_list[$name])) {
222-
$leftcol[]['content'] = $dashlet_list[$name]->show();
222+
$leftcol[]['content'] = $dashlet_list[$name]->show($_SESSION['s']['user']['client_id']);
223223
}
224224
}
225225
$app->tpl->setloop('leftcol', $leftcol);

interface/web/dashboard/dashlets/databasequota.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,18 @@ function show($limit_to_client_id = null) {
2323
$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dashlet_databasequota.lng';
2424
if(is_file($lng_file)) include $lng_file;
2525
$tpl->setVar($wb);
26-
if ($_SESSION["s"]["user"]["typ"] != 'admin') {
27-
$client_id = $_SESSION['s']['user']['client_id'];
28-
} else {
29-
$client_id = $limit_to_client_id;
30-
}
3126

32-
$databases = $app->quota_lib->get_databasequota_data($client_id);
27+
$databases = $app->quota_lib->get_databasequota_data($limit_to_client_id);
3328
//print_r($databases);
3429

3530
$has_databasequota = false;
3631
$total_used = 0;
3732
if(is_array($databases) && !empty($databases)){
3833
foreach ($databases as &$db) {
39-
$total_used += $db['used_raw'] * 1000 * 1000;
34+
$db['used'] = $app->functions->formatBytes($db['used_raw'], 0);
35+
$db['database_quota'] = $app->functions->formatBytesOrUnlimited($db['database_quota_raw'], 0);
36+
37+
$total_used += $db['used_raw'];
4038
}
4139
$databases = $app->functions->htmlentities($databases);
4240
$tpl->setloop('databasequota', $databases);

interface/web/dashboard/dashlets/limits.php

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -146,39 +146,37 @@ public function show($limit_to_client_id = 0)
146146
include $lng_file;
147147
}
148148
$tpl->setVar($wb);
149-
150-
if ($limit_to_client_id == 0) {
151-
$client_id = $_SESSION['s']['user']['client_id'];
152-
$user_is_admin = true;
153-
} else {
149+
if ($app->auth->is_admin()) {
154150
$client_id = $limit_to_client_id;
155-
$user_is_admin = false;
151+
} else {
152+
$client_id = $_SESSION['s']['user']['client_id'];
156153
}
157154

158-
$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
155+
// $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
159156
$client = $app->db->queryOneRecord("SELECT * FROM client WHERE client_id = ?", $client_id);
160157

161158

162159
$rows = array();
163160
foreach ($limits as $limit) {
164161
$field = $limit['field'];
165162
$value = $client[$field];
166-
if ($user_is_admin) {
167-
$value = $wb['unlimited_txt'];
163+
if ($app->auth->is_admin() && $limit_to_client_id == 0) {
164+
$value = -1;
168165
} else {
169166
$value = $client[$field];
170167
}
171168

172169
if ($value != 0 || $value == $wb['unlimited_txt']) {
173-
$value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value;
170+
$suffix = '';
174171
if (isset($limit['q_type']) && $limit['q_type'] != '') {
175-
$usage = $this->_get_assigned_quota($limit, $client_id) . " MB";
176-
$value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value . " MB";
172+
$usage = $this->_get_assigned_quota($limit, $client_id);
173+
$suffix = ' MB';
177174
} else {
178175
$usage = $this->_get_limit_usage($limit, $client_id);
179176
}
180177
$percentage = ($value == '-1' || intval($value) == 0 || trim($value) == '' ? -1 : round(100 * (int)$usage / (int)$value));
181178
$progressbar = $percentage > 100 ? 100 : $percentage;
179+
$value_formatted = ($value == '-1') ? $wb['unlimited_txt'] : ($value . $suffix);
182180
$rows[] = array('field' => $field,
183181
'field_txt' => $wb[$field.'_txt'],
184182
'value' => $value_formatted,
@@ -223,7 +221,7 @@ public function _get_assigned_quota($limit, $limit_to_client_id)
223221
}
224222
$sql .= $app->tform->getAuthSQL('r', '', $limit_to_client_id);
225223
$rec = $app->db->queryOneRecord($sql, $limit['q_type'], $limit['db_table']);
226-
if ($limit['db_table']=='mail_user') {
224+
if ($limit['db_table'] == 'mail_user') {
227225
$quotaMB = $rec['number'] / 1048576;
228226
} // Mail quota is in bytes, must be converted to MB
229227
else {

interface/web/dashboard/dashlets/mailquota.php

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,17 @@ function show($limit_to_client_id = null) {
1616
if(is_file($lng_file)) include $lng_file;
1717
$tpl->setVar($wb);
1818

19-
if ($_SESSION["s"]["user"]["typ"] != 'admin') {
20-
$client_id = $_SESSION['s']['user']['client_id'];
21-
} else {
22-
$client_id = $limit_to_client_id;
23-
}
2419

25-
$emails = $app->quota_lib->get_mailquota_data($client_id);
20+
$emails = $app->quota_lib->get_mailquota_data($limit_to_client_id);
2621
//print_r($emails);
2722

2823
$has_mailquota = false;
2924
$total_used = 0;
3025
if(is_array($emails) && !empty($emails)){
3126
foreach($emails as &$email) {
3227
$email['email'] = $app->functions->idn_decode($email['email']);
28+
$email['used'] = $app->functions->formatBytes($email['used_raw'], 0);
29+
$email['quota'] = $app->functions->formatBytesOrUnlimited($email['quota_raw'], 0);
3330
$total_used += $email['used_raw'];
3431
}
3532
unset($email);
@@ -46,12 +43,3 @@ function show($limit_to_client_id = null) {
4643
}
4744

4845
}
49-
50-
51-
52-
53-
54-
55-
56-
57-
?>

interface/web/dashboard/dashlets/quota.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,18 @@ function show($limit_to_client_id = null) {
2424
if(is_file($lng_file)) include $lng_file;
2525
$tpl->setVar($wb);
2626

27-
if ($_SESSION["s"]["user"]["typ"] != 'admin') {
28-
$client_id = $_SESSION['s']['user']['client_id'];
29-
} else {
30-
$client_id = $limit_to_client_id;
31-
}
32-
33-
$sites = $app->quota_lib->get_quota_data($client_id);
27+
$sites = $app->quota_lib->get_quota_data($limit_to_client_id);
3428
//print_r($sites);
3529

3630
$has_quota = false;
3731
if(is_array($sites) && !empty($sites)){
3832
foreach($sites as &$site) {
3933
$site['domain'] = $app->functions->idn_decode($site['domain']);
4034
$site['progressbar'] = $site['hd_quota'];
41-
$total_used += $site['used_raw'] * 1000;
35+
$site['used'] = $app->functions->formatBytes($site['used_raw'], 0);
36+
$site['hard'] = $app->functions->formatBytesOrUnlimited($site['hard_raw'], 0);
37+
$site['soft'] = $app->functions->formatBytesOrUnlimited($site['soft_raw'], 0);
38+
$total_used += $site['used_raw'];
4239
}
4340
unset($site);
4441

0 commit comments

Comments
 (0)