diff --git a/lib/Froxlor/Api/Commands/Customers.php b/lib/Froxlor/Api/Commands/Customers.php index 2a0669c3..06ab8a92 100644 --- a/lib/Froxlor/Api/Commands/Customers.php +++ b/lib/Froxlor/Api/Commands/Customers.php @@ -468,43 +468,38 @@ class Customers extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resource $ins_data['customerid'] = $customerid; // update admin resource-usage - $admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` + 1"; - if ($mysqls != '-1') { - $admin_update_query .= ", `mysqls_used` = `mysqls_used` + 0" . (int) $mysqls; + Admins::increaseUsage($this->getUserDetail('adminid'), 'mysqls_used', '', (int) $mysqls); } if ($emails != '-1') { - $admin_update_query .= ", `emails_used` = `emails_used` + 0" . (int) $emails; + Admins::increaseUsage($this->getUserDetail('adminid'), 'emails_used', '', (int) $emails); } if ($email_accounts != '-1') { - $admin_update_query .= ", `email_accounts_used` = `email_accounts_used` + 0" . (int) $email_accounts; + Admins::increaseUsage($this->getUserDetail('adminid'), 'email_accounts_used', '', (int) $email_accounts); } if ($email_forwarders != '-1') { - $admin_update_query .= ", `email_forwarders_used` = `email_forwarders_used` + 0" . (int) $email_forwarders; + Admins::increaseUsage($this->getUserDetail('adminid'), 'email_forwarders_used', '', (int) $email_forwarders); } if ($email_quota != '-1') { - $admin_update_query .= ", `email_quota_used` = `email_quota_used` + 0" . (int) $email_quota; + Admins::increaseUsage($this->getUserDetail('adminid'), 'email_quota_used', '', (int) $email_quota); } if ($subdomains != '-1') { - $admin_update_query .= ", `subdomains_used` = `subdomains_used` + 0" . (int) $subdomains; + Admins::increaseUsage($this->getUserDetail('adminid'), 'subdomains_used', '', (int) $subdomains); } if ($ftps != '-1') { - $admin_update_query .= ", `ftps_used` = `ftps_used` + 0" . (int) $ftps; + Admins::increaseUsage($this->getUserDetail('adminid'), 'ftps_used', '', (int) $ftps); } if (($diskspace / 1024) != '-1') { - $admin_update_query .= ", `diskspace_used` = `diskspace_used` + 0" . (int) $diskspace; + Admins::increaseUsage($this->getUserDetail('adminid'), 'diskspace_used', '', (int) $diskspace); } - $admin_update_query .= " WHERE `adminid` = '" . (int) $this->getUserDetail('adminid') . "'"; - Database::query($admin_update_query); - // update last guid Settings::Set('system.lastguid', $guid, true); @@ -1499,44 +1494,41 @@ class Customers extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resource ), true, true); // update admin-resource-usage - $admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` - 1 "; - $admin_update_query .= ", `domains_used` = `domains_used` - 0" . (int) ($domains_deleted - $result['subdomains_used']); + Admins::decreaseUsage($this->getUserDetail('adminid'), 'customers_used'); + Admins::decreaseUsage($this->getUserDetail('adminid'), 'domains_used', '', (int) ($domains_deleted - $result['subdomains_used'])); if ($result['mysqls'] != '-1') { - $admin_update_query .= ", `mysqls_used` = `mysqls_used` - 0" . (int) $result['mysqls']; + Admins::decreaseUsage($this->getUserDetail('adminid'), 'mysqls_used', '', (int) $result['mysqls']); } if ($result['emails'] != '-1') { - $admin_update_query .= ", `emails_used` = `emails_used` - 0" . (int) $result['emails']; + Admins::decreaseUsage($this->getUserDetail('adminid'), 'emails_used', '', (int) $result['emails']); } if ($result['email_accounts'] != '-1') { - $admin_update_query .= ", `email_accounts_used` = `email_accounts_used` - 0" . (int) $result['email_accounts']; + Admins::decreaseUsage($this->getUserDetail('adminid'), 'email_accounts_used', '', (int) $result['email_accounts']); } if ($result['email_forwarders'] != '-1') { - $admin_update_query .= ", `email_forwarders_used` = `email_forwarders_used` - 0" . (int) $result['email_forwarders']; + Admins::decreaseUsage($this->getUserDetail('adminid'), 'email_forwarders_used', '', (int) $result['email_forwarders']); } if ($result['email_quota'] != '-1') { - $admin_update_query .= ", `email_quota_used` = `email_quota_used` - 0" . (int) $result['email_quota']; + Admins::decreaseUsage($this->getUserDetail('adminid'), 'email_quota_used', '', (int) $result['email_quota']); } if ($result['subdomains'] != '-1') { - $admin_update_query .= ", `subdomains_used` = `subdomains_used` - 0" . (int) $result['subdomains']; + Admins::decreaseUsage($this->getUserDetail('adminid'), 'subdomains_used', '', (int) $result['subdomains']); } if ($result['ftps'] != '-1') { - $admin_update_query .= ", `ftps_used` = `ftps_used` - 0" . (int) $result['ftps']; + Admins::decreaseUsage($this->getUserDetail('adminid'), 'ftps_used', '', (int) $result['ftps']); } if (($result['diskspace'] / 1024) != '-1') { - $admin_update_query .= ", `diskspace_used` = `diskspace_used` - 0" . (int) $result['diskspace']; + Admins::decreaseUsage($this->getUserDetail('adminid'), 'diskspace_used', '', (int) $result['diskspace']); } - $admin_update_query .= " WHERE `adminid` = '" . (int) $result['adminid'] . "'"; - Database::query($admin_update_query); - // rebuild configs \Froxlor\System\Cronjob::inserttask('1'); diff --git a/lib/Froxlor/Api/Commands/EmailAccounts.php b/lib/Froxlor/Api/Commands/EmailAccounts.php index 7a40dbf7..12f73b44 100644 --- a/lib/Froxlor/Api/Commands/EmailAccounts.php +++ b/lib/Froxlor/Api/Commands/EmailAccounts.php @@ -187,10 +187,6 @@ class EmailAccounts extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Reso Customers::increaseUsage($customer['customerid'], 'email_accounts_used'); Customers::increaseUsage($customer['customerid'], 'email_quota_used', '', $quota); - // update admin usage - Admins::increaseUsage($customer['adminid'], 'email_accounts_used'); - Admins::increaseUsage($customer['adminid'], 'email_quota_used', '', $quota); - if ($sendinfomail) { // replacer array for mail to create account on server $replace_arr = array( @@ -480,9 +476,6 @@ class EmailAccounts extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Reso // decrease usage for customer Customers::decreaseUsage($customer['customerid'], 'email_accounts_used'); Customers::decreaseUsage($customer['customerid'], 'email_quota_used', '', $quota); - // decrease admin usage - Admins::decreaseUsage($customer['adminid'], 'email_accounts_used'); - Admins::decreaseUsage($customer['adminid'], 'email_quota_used', '', $quota); $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_INFO, "[API] deleted email account for '" . $result['email_full'] . "'"); return $this->response(200, "successfull", $result); diff --git a/lib/Froxlor/Api/Commands/EmailForwarders.php b/lib/Froxlor/Api/Commands/EmailForwarders.php index eff71377..01819836 100644 --- a/lib/Froxlor/Api/Commands/EmailForwarders.php +++ b/lib/Froxlor/Api/Commands/EmailForwarders.php @@ -97,9 +97,6 @@ class EmailForwarders extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Re // update customer usage Customers::increaseUsage($customer['customerid'], 'email_forwarders_used'); - // update admin usage - Admins::increaseUsage($customer['adminid'], 'email_forwarders_used'); - $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_INFO, "[API] added email forwarder for '" . $result['email_full'] . "'"); $result = $this->apiCall('Emails.get', array( @@ -199,9 +196,6 @@ class EmailForwarders extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Re // update customer usage Customers::decreaseUsage($customer['customerid'], 'email_forwarders_used'); - // update admin usage - Admins::decreaseUsage($customer['adminid'], 'email_forwarders_used'); - $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_INFO, "[API] deleted email forwarder for '" . $result['email_full'] . "'"); $result = $this->apiCall('Emails.get', array( diff --git a/lib/Froxlor/Api/Commands/Emails.php b/lib/Froxlor/Api/Commands/Emails.php index 89619abb..470d75b4 100644 --- a/lib/Froxlor/Api/Commands/Emails.php +++ b/lib/Froxlor/Api/Commands/Emails.php @@ -132,9 +132,6 @@ class Emails extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt // update customer usage Customers::increaseUsage($customer['customerid'], 'emails_used'); - // update admin usage - Admins::increaseUsage($customer['adminid'], 'emails_used'); - $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_INFO, "[API] added email address '" . $email_full . "'"); $result = $this->apiCall('Emails.get', array( @@ -381,7 +378,6 @@ class Emails extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt "id" => $id ), true, true); Customers::decreaseUsage($customer['customerid'], 'emails_used'); - Admins::decreaseUsage($customer['customerid'], 'emails_used'); $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_INFO, "[API] deleted email address '" . $result['email_full'] . "'"); return $this->response(200, "successfull", $result); diff --git a/lib/Froxlor/Api/Commands/Ftps.php b/lib/Froxlor/Api/Commands/Ftps.php index 915d3005..f4fda2d4 100644 --- a/lib/Froxlor/Api/Commands/Ftps.php +++ b/lib/Froxlor/Api/Commands/Ftps.php @@ -179,8 +179,6 @@ class Ftps extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEntit Customers::increaseUsage($customer['customerid'], 'ftps_used'); Customers::increaseUsage($customer['customerid'], 'ftp_lastaccountnumber'); - // update admin usage - Admins::increaseUsage($customer['adminid'], 'ftps_used'); $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_INFO, "[API] added ftp-account '" . $username . " (" . $path . ")'"); \Froxlor\System\Cronjob::inserttask(5); @@ -545,8 +543,6 @@ class Ftps extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEntit // decrease ftp-user usage for customer $resetaccnumber = ($customer_data['ftps_used'] == '1') ? " , `ftp_lastaccountnumber`='0'" : ''; Customers::decreaseUsage($customer_data['customerid'], 'ftps_used', $resetaccnumber); - // update admin usage - Admins::decreaseUsage(($this->isAdmin() ? $customer_data['adminid'] : $this->getUserDetail('adminid')), 'ftps_used'); $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_WARNING, "[API] deleted ftp-user '" . $result['username'] . "'"); return $this->response(200, "successfull", $result); diff --git a/lib/Froxlor/Api/Commands/Mysqls.php b/lib/Froxlor/Api/Commands/Mysqls.php index 45063458..a2ff23d1 100644 --- a/lib/Froxlor/Api/Commands/Mysqls.php +++ b/lib/Froxlor/Api/Commands/Mysqls.php @@ -110,9 +110,6 @@ class Mysqls extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt Customers::increaseUsage($customer['customerid'], 'mysqls_used'); Customers::increaseUsage($customer['customerid'], 'mysql_lastaccountnumber'); - // update admin usage - Admins::increaseUsage($this->getUserDetail('adminid'), 'mysqls_used'); - // send info-mail? if ($sendinfomail == 1) { $pma = $this->lng['admin']['notgiven']; @@ -476,8 +473,6 @@ class Mysqls extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt // reduce mysql-usage-counter $resetaccnumber = ($mysql_used == '1') ? " , `mysql_lastaccountnumber` = '0' " : ''; Customers::decreaseUsage($customer['customerid'], 'mysqls_used', $resetaccnumber); - // update admin usage - Admins::decreaseUsage(($this->isAdmin() ? $customer['adminid'] : $this->getUserDetail('adminid')), 'mysqls_used'); $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_WARNING, "[API] deleted database '" . $result['databasename'] . "'"); return $this->response(200, "successfull", $result); diff --git a/lib/Froxlor/Api/Commands/SubDomains.php b/lib/Froxlor/Api/Commands/SubDomains.php index d6262ed4..e0f452b4 100644 --- a/lib/Froxlor/Api/Commands/SubDomains.php +++ b/lib/Froxlor/Api/Commands/SubDomains.php @@ -310,7 +310,6 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc \Froxlor\System\Cronjob::inserttask('4'); Customers::increaseUsage($customer['customerid'], 'subdomains_used'); - Admins::increaseUsage(($this->isAdmin() ? $customer['adminid'] : $this->getUserDetail('adminid')), 'subdomains_used'); $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_INFO, "[API] added subdomain '" . $completedomain . "'"); @@ -832,8 +831,6 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc // reduce subdomain-usage-counter Customers::decreaseUsage($customer['customerid'], 'subdomains_used'); - // update admin usage - Admins::decreaseUsage(($this->isAdmin() ? $customer['adminid'] : $this->getUserDetail('adminid')), 'subdomains_used'); $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_WARNING, "[API] deleted subdomain '" . $result['domain'] . "'"); return $this->response(200, "successfull", $result); diff --git a/lib/Froxlor/User.php b/lib/Froxlor/User.php index d15dbe8e..2cec316b 100644 --- a/lib/Froxlor/User.php +++ b/lib/Froxlor/User.php @@ -212,16 +212,18 @@ class User Database::pexecute($admins_stmt, array()); while ($admin = $admins_stmt->fetch(\PDO::FETCH_ASSOC)) { - $admin_customers_stmt = Database::prepare('SELECT COUNT(*) AS `number_customers` FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `adminid` = :aid'); - $admin_customers = Database::pexecute_first($admin_customers_stmt, array( + $admin_customers_stmt = Database::prepare('SELECT * FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `adminid` = :aid'); + Database::pexecute($admin_customers_stmt, array( "aid" => $admin['adminid'] )); - $admin['customers_used_new'] = $admin_customers['number_customers']; + $admin_customers = $admin_customers_stmt->fetchAll(\PDO::FETCH_ASSOC); + $admin['customers_used_new'] = count($admin_customers); - $admin_domains_stmt = Database::prepare('SELECT COUNT(*) AS `number_domains` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `adminid` = :aid AND `isemaildomain` = "1"'); + $admin_domains_stmt = Database::prepare('SELECT COUNT(*) AS `number_domains` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `adminid` = :aid'); $admin_domains = Database::pexecute_first($admin_domains_stmt, array( "aid" => $admin['adminid'] )); + // substract the amount of domains that are std-subdomains later when we iterated through all customers and now for sure $admin['domains_used_new'] = $admin_domains['number_domains']; $cur_adm = $admin['adminid']; @@ -245,6 +247,27 @@ class User $admin[$field . '_new'] = $admin_resources[$cur_adm][$field]; } + foreach ($admin_customers as $acustomer) { + foreach (array( + 'diskspace_used', + 'traffic_used', + 'mysqls_used', + 'ftps_used', + 'emails_used', + 'email_accounts_used', + 'email_forwarders_used', + 'email_quota_used', + 'subdomains_used' + ) as $field) { + $admin[$field . '_new'] += $acustomer[$field]; + } + // check for std-subdomain + if ($acustomer['standardsubdomain'] > 0) { + // std-subdomain does not count to assign resource + $admin['domains_used_new']--; + } + } + $stmt = Database::prepare('UPDATE `' . TABLE_PANEL_ADMINS . '` SET `customers_used` = :customers_used, `domains_used` = :domains_used,