Forked from
ISPConfig / ISPConfig 3
1713 commits behind the upstream repository.
-
Jesse Norell authoredJesse Norell authored
limits.php 7.66 KiB
<?php
class dashlet_limits
{
public function show()
{
global $app, $conf;
$limits = array();
/* Limits to be shown*/
$limits[] = array('field' => 'limit_mailquota',
'db_table' => 'mail_user',
'db_where' => 'quota > 0', /* Count only posive value of quota, negative value -1 is unlimited */
'q_type' => 'quota');
$limits[] = array('field' => 'limit_maildomain',
'db_table' => 'mail_domain',
'db_where' => '');
$limits[] = array('field' => 'limit_mailmailinglist',
'db_table' => 'mail_mailinglist',
'db_where' => '');
$limits[] = array('field' => 'limit_mailbox',
'db_table' => 'mail_user',
'db_where' => '');
$limits[] = array('field' => 'limit_mailalias',
'db_table' => 'mail_forwarding',
'db_where' => "type = 'alias'");
$limits[] = array('field' => 'limit_mailaliasdomain',
'db_table' => 'mail_forwarding',
'db_where' => "type = 'aliasdomain'");
$limits[] = array('field' => 'limit_mailforward',
'db_table' => 'mail_forwarding',
'db_where' => "type = 'forward'");
$limits[] = array('field' => 'limit_mailcatchall',
'db_table' => 'mail_forwarding',
'db_where' => "type = 'catchall'");
$limits[] = array('field' => 'limit_mailrouting',
'db_table' => 'mail_transport',
'db_where' => "");
$limits[] = array('field' => 'limit_mail_wblist',
'db_table' => 'mail_access',
'db_where' => "");
$limits[] = array('field' => 'limit_mailfilter',
'db_table' => 'mail_user_filter',
'db_where' => "");
$limits[] = array('field' => 'limit_fetchmail',
'db_table' => 'mail_get',
'db_where' => "");
$limits[] = array('field' => 'limit_spamfilter_wblist',
'db_table' => 'spamfilter_wblist',
'db_where' => "");
$limits[] = array('field' => 'limit_spamfilter_user',
'db_table' => 'spamfilter_users',
'db_where' => "");
$limits[] = array('field' => 'limit_spamfilter_policy',
'db_table' => 'spamfilter_policy',
'db_where' => "");
$limits[] = array('field' => 'limit_web_quota',
'db_table' => 'web_domain',
'db_where' => 'hd_quota > 0', /* Count only posive value of quota, negative value -1 is unlimited */
'q_type' => 'hd_quota');
$limits[] = array('field' => 'limit_web_domain',
'db_table' => 'web_domain',
'db_where' => "type = 'vhost'");
$limits[] = array('field' => 'limit_web_subdomain',
'db_table' => 'web_domain',
'db_where' => "(type = 'subdomain' OR type = 'vhostsubdomain')");
$limits[] = array('field' => 'limit_web_aliasdomain',
'db_table' => 'web_domain',
'db_where' => "(type = 'alias' OR type = 'vhostalias')");
$limits[] = array('field' => 'limit_ftp_user',
'db_table' => 'ftp_user',
'db_where' => "");
$limits[] = array('field' => 'limit_shell_user',
'db_table' => 'shell_user',
'db_where' => "");
$limits[] = array('field' => 'limit_dns_zone',
'db_table' => 'dns_soa',
'db_where' => "");
$limits[] = array('field' => 'limit_dns_slave_zone',
'db_table' => 'dns_slave',
'db_where' => "");
$limits[] = array('field' => 'limit_dns_record',
'db_table' => 'dns_rr',
'db_where' => "");
$limits[] = array('field' => 'limit_database_quota',
'db_table' => 'web_database',
'db_where' => 'database_quota > 0', /* Count only posive value of quota, negative value -1 is unlimited */
'q_type' => 'database_quota');
$limits[] = array('field' => 'limit_database',
'db_table' => 'web_database',
'db_where' => "");
$limits[] = array('field' => 'limit_cron',
'db_table' => 'cron',
'db_where' => "");
$limits[] = array('field' => 'limit_client',
'db_table' => 'client',
'db_where' => "");
$limits[] = array('field' => 'limit_domain',
'db_table' => 'domain',
'db_where' => "");
//* Loading Template
$app->uses('tpl,tform');
$tpl = new tpl;
$tpl->newTemplate("dashlets/templates/limits.htm");
$wb = array();
$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dashlet_limits.lng';
if (is_file($lng_file)) {
include $lng_file;
}
$tpl->setVar($wb);
if ($app->auth->is_admin()) {
$user_is_admin = true;
} else {
$user_is_admin = false;
}
$tpl->setVar('is_admin', $user_is_admin);
if ($user_is_admin == false) {
$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
$client = $app->db->queryOneRecord("SELECT * FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
}
$rows = array();
foreach ($limits as $limit) {
$field = $limit['field'];
if ($user_is_admin) {
$value = $wb['unlimited_txt'];
} else {
$value = $client[$field];
}
if ($value != 0 || $value == $wb['unlimited_txt']) {
$value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value;
if ($limit['q_type']!='') {
$usage = $this->_get_assigned_quota($limit) . " MB";
$value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value . " MB";
} else {
$usage = $this->_get_limit_usage($limit);
}
$percentage = ($value == '-1' || $value == 0 ? -1 : round(100 * $usage / $value));
$progressbar = $percentage > 100 ? 100 : $percentage;
$rows[] = array('field' => $field,
'field_txt' => $wb[$field.'_txt'],
'value' => $value_formatted,
'value_raw' => $value,
'usage' => $usage,
'usage_raw' => $usage,
'percentage' => $percentage,
'progressbar' => $progressbar
);
}
}
$rows = $app->functions->htmlentities($rows);
$tpl->setLoop('rows', $rows);
return $tpl->grab();
}
public function _get_limit_usage($limit)
{
global $app;
$sql = "SELECT count(sys_userid) as number FROM ?? WHERE ";
if ($limit['db_where'] != '') {
$sql .= $limit['db_where']." AND ";
}
$sql .= $app->tform->getAuthSQL('r');
$rec = $app->db->queryOneRecord($sql, $limit['db_table']);
return $rec['number'];
}
public function _get_assigned_quota($limit)
{
global $app;
$sql = "SELECT sum(??) as number FROM ?? WHERE ";
if ($limit['db_where'] != '') {
$sql .= $limit['db_where']." AND ";
}
$sql .= $app->tform->getAuthSQL('r');
$rec = $app->db->queryOneRecord($sql, $limit['q_type'], $limit['db_table']);
if ($limit['db_table']=='mail_user') {
$quotaMB = $rec['number'] / 1048576;
} // Mail quota is in bytes, must be converted to MB
else {
$quotaMB = $rec['number'];
}
return $quotaMB;
}
}