Skip to content
limits.php 6.6 KiB
Newer Older
latham's avatar
latham committed
<?php

class dashlet_limits {
       function show($limit_to_client_id = 0) {
latham's avatar
latham committed
		global $app, $conf;
latham's avatar
latham committed
		$limits = array();
latham's avatar
latham committed
		/* 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');
latham's avatar
latham committed
		$limits[] = array('field' => 'limit_maildomain',
			'db_table' => 'mail_domain',
			'db_where' => '');

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_mailmailinglist',
			'db_table' => 'mail_mailinglist',
			'db_where' => '');

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_mailbox',
			'db_table' => 'mail_user',
			'db_where' => '');

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_mailalias',
			'db_table' => 'mail_forwarding',
			'db_where' => "type = 'alias'");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_mailaliasdomain',
			'db_table' => 'mail_forwarding',
			'db_where' => "type = 'aliasdomain'");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_mailforward',
			'db_table' => 'mail_forwarding',
			'db_where' => "type = 'forward'");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_mailcatchall',
			'db_table' => 'mail_forwarding',
			'db_where' => "type = 'catchall'");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_mailrouting',
			'db_table' => 'mail_transport',
			'db_where' => "");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_mailfilter',
			'db_table' => 'mail_user_filter',
			'db_where' => "");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_fetchmail',
			'db_table' => 'mail_get',
			'db_where' => "");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_spamfilter_wblist',
			'db_table' => 'spamfilter_wblist',
			'db_where' => "");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_spamfilter_user',
			'db_table' => 'spamfilter_users',
			'db_where' => "");

latham's avatar
latham committed
		$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');
			
latham's avatar
latham committed
		$limits[] = array('field' => 'limit_web_domain',
			'db_table' => 'web_domain',
			'db_where' => "type = 'vhost'");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_web_subdomain',
			'db_table' => 'web_domain',
			'db_where' => "(type = 'subdomain' OR type = 'vhostsubdomain')");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_web_aliasdomain',
			'db_table' => 'web_domain',
Dominik's avatar
Dominik committed
						  'db_where' => "(type = 'alias' OR type = 'vhostalias')");
latham's avatar
latham committed
		$limits[] = array('field' => 'limit_ftp_user',
			'db_table' => 'ftp_user',
			'db_where' => "");
latham's avatar
latham committed

		$limits[] = array('field' => 'limit_shell_user',
			'db_table' => 'shell_user',
			'db_where' => "");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_dns_zone',
			'db_table' => 'dns_soa',
			'db_where' => "");
latham's avatar
latham committed

		$limits[] = array('field' => 'limit_dns_slave_zone',
			'db_table' => 'dns_slave',
			'db_where' => "");
latham's avatar
latham committed

		$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');
			
latham's avatar
latham committed
		$limits[] = array('field' => 'limit_database',
			'db_table' => 'web_database',
			'db_where' => "");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_cron',
			'db_table' => 'cron',
			'db_where' => "");

latham's avatar
latham committed
		$limits[] = array('field' => 'limit_client',
			'db_table' => 'client',
			'db_where' => "");

		$limits[] = array('field' => 'limit_domain',
			'db_table' => 'domain',
			'db_where' => "");
latham's avatar
latham committed
		//* Loading Template
		$app->uses('tpl,tform');
latham's avatar
latham committed
		$tpl = new tpl;
		$tpl->newTemplate("dashlets/templates/limits.htm");
latham's avatar
latham committed
		$wb = array();
		$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dashlet_limits.lng';
		if(is_file($lng_file)) include $lng_file;
latham's avatar
latham committed
		$tpl->setVar($wb);
latham's avatar
latham committed
		if($app->auth->is_admin()) {
			$user_is_admin = true;
		} else {
			$user_is_admin = false;
		}
		$tpl->setVar('is_admin', $user_is_admin);

latham's avatar
latham committed
		if($user_is_admin == false) {
Till Brehm's avatar
Till Brehm committed
			$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);
               if ($limit_to_client_id == 0 || !$app->auth->is_admin()) {
                       $client_id = $_SESSION['s']['user']['client_id'];
               } else {
                       $client_id = $limit_to_client_id;
               }

latham's avatar
latham committed
		$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;
                                       $usage = $this->_get_assigned_quota($limit, $client_id) . " MB";
					$value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value . " MB";
				}
                               else $usage = $this->_get_limit_usage($limit, $client_id);
Marius Cramer's avatar
Marius Cramer committed
				$percentage = ($value == '-1' || $value == 0 ? 0 : round(100 * $usage / $value));
latham's avatar
latham committed
				$rows[] = array('field' => $field,
					'field_txt' => $wb[$field.'_txt'],
					'value' => $value_formatted,
Marius Cramer's avatar
Marius Cramer committed
					'value_raw' => $value,
					'usage' => $usage,
					'usage_raw' => $usage,
					'percentage' => $percentage);
		$rows = $app->functions->htmlentities($rows);
		$tpl->setLoop('rows', $rows);


latham's avatar
latham committed
		return $tpl->grab();
       function _get_limit_usage($limit, $limit_to_client_id) {
latham's avatar
latham committed
		global $app;
		$sql = "SELECT count(sys_userid) as number FROM ?? WHERE ";
latham's avatar
latham committed
		if($limit['db_where'] != '') $sql .= $limit['db_where']." AND ";
               $sql .= $app->tform->getAuthSQL('r', '', $limit_to_client_id);
               // TEST to show reseller data.
               //$sql .= $app->tform->getAuthSQL('r', '', 0, '3,28,39');
               //echo $sql;
		$rec = $app->db->queryOneRecord($sql, $limit['db_table']);
latham's avatar
latham committed
		return $rec['number'];
       function _get_assigned_quota($limit, $limit_to_client_id) {
		global $app;

		$sql = "SELECT sum(??) as number FROM ?? WHERE ";
		if($limit['db_where'] != '') $sql .= $limit['db_where']." AND ";
               $sql .= $app->tform->getAuthSQL('r', '', $limit_to_client_id);
		$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;

	}