some code-reduction

Signed-off-by: Michael Kaufmann (d00p) <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann (d00p)
2018-03-12 10:45:46 +01:00
parent 66ebfaf21b
commit c920bf6a63
7 changed files with 261 additions and 335 deletions

View File

@@ -15,7 +15,7 @@
* @since 0.10.0 * @since 0.10.0
* *
*/ */
abstract class ApiCommand abstract class ApiCommand extends ApiParameter
{ {
/** /**
@@ -53,13 +53,6 @@ abstract class ApiCommand
*/ */
private $mail = null; private $mail = null;
/**
* array of parameters passed to the command
*
* @var array
*/
private $cmd_params = null;
/** /**
* language strings array * language strings array
* *
@@ -103,14 +96,12 @@ abstract class ApiCommand
{ {
global $lng, $version, $dbversion, $branding; global $lng, $version, $dbversion, $branding;
parent::__construct($params);
$this->version = $version; $this->version = $version;
$this->dbversion = $dbversion; $this->dbversion = $dbversion;
$this->branding = $branding; $this->branding = $branding;
if (! is_null($params)) {
$params = $this->trimArray($params);
}
$this->cmd_params = $params;
if (! empty($header)) { if (! empty($header)) {
$this->readUserData($header); $this->readUserData($header);
} elseif (! empty($userinfo)) { } elseif (! empty($userinfo)) {
@@ -268,97 +259,6 @@ abstract class ApiCommand
return $this->user_data; return $this->user_data;
} }
/**
* get specific parameter from the parameterlist;
* check for existence and != empty if needed.
* Maybe more in the future
*
* @param string $param
* parameter to get out of the request-parameter list
* @param bool $optional
* default: false
* @param mixed $default
* value which is returned if optional=true and param is not set
*
* @throws Exception
* @return mixed
*/
protected function getParam($param = null, $optional = false, $default = '')
{
// does it exist?
if (! isset($this->cmd_params[$param])) {
if ($optional === false) {
// get module + function for better error-messages
$inmod = $this->getModFunctionString();
throw new Exception('Requested parameter "' . $param . '" could not be found for "' . $inmod . '"', 404);
}
return $default;
}
// is it empty? - test really on string, as value 0 is being seen as empty by php
if ($this->cmd_params[$param] === "") {
if ($optional === false) {
// get module + function for better error-messages
$inmod = $this->getModFunctionString();
throw new Exception('Requested parameter "' . $param . '" is empty where it should not be for "' . $inmod . '"', 406);
}
return '';
}
// everything else is fine
return $this->cmd_params[$param];
}
/**
* get specific parameter which also has and unlimited-field
*
* @param string $param
* parameter to get out of the request-parameter list
* @param string $ul_field
* parameter to get out of the request-parameter list
* @param bool $optional
* default: false
* @param mixed $default
* value which is returned if optional=true and param is not set
*
* @return mixed
*/
protected function getUlParam($param = null, $ul_field = null, $optional = false, $default = 0)
{
$param_value = intval_ressource($this->getParam($param, $optional, $default));
$ul_field_value = $this->getParam($ul_field, true, 0);
if ($ul_field_value != 0) {
$param_value = - 1;
}
return $param_value;
}
/**
* update value of parameter
*
* @param string $param
* @param mixed $value
*
* @throws Exception
* @return boolean
*/
protected function updateParam($param, $value = null)
{
if (isset($this->cmd_params[$param])) {
$this->cmd_params[$param] = $value;
return true;
}
throw new Exception("Unable to update parameter '" . $param . "' as it does not exist", 500);
}
/**
* return list of all parameters
*
* @return array
*/
protected function getParamList()
{
return $this->cmd_params;
}
/** /**
* return logger instance * return logger instance
* *
@@ -471,6 +371,38 @@ abstract class ApiCommand
return $customer_ids; return $customer_ids;
} }
/**
* returns an array of customer data for customer, or by customer-id/loginname for admin/reseller
*
* @param int $customerid
* optional, required if loginname is empty
* @param string $loginname
* optional, required of customerid is empty
* @param string $customer_resource_check
* optional, when called as admin, check the resources of the target customer
*
* @throws Exception
* @return array
*/
protected function getCustomerData($customer_resource_check = '')
{
if ($this->isAdmin()) {
$customerid = $this->getParam('customerid', true, 0);
$loginname = $this->getParam('loginname', true, '');
$customer = $this->apiCall('Customers.get', array(
'id' => $customerid,
'loginname' => $loginname
));
// check whether the customer has enough resources
if (! empty($customer_resource_check) && $customer[$customer_resource_check . '_used'] >= $customer[$customer_resource_check] && $customer[$customer_resource_check] != '-1') {
throw new Exception("Customer has no more resources available", 406);
}
} else {
$customer = $this->getUserData();
}
return $customer;
}
/** /**
* increase/decrease a resource field for customers/admins * increase/decrease a resource field for customers/admins
* *
@@ -493,35 +425,6 @@ abstract class ApiCommand
), true, true); ), true, true);
} }
/**
* returns "module::function()" for better error-messages (missing parameter etc.)
* makes debugging a whole lot more comfortable
*
* @return string
*/
private function getModFunctionString()
{
$_class = get_called_class();
$level = 2;
if (version_compare(PHP_VERSION, "5.4.0", "<")) {
$trace = debug_backtrace();
} else {
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
}
while (true) {
$class = $trace[$level]['class'];
$func = $trace[$level]['function'];
if ($class != $_class) {
$level ++;
if ($level > 5) {
break;
}
continue;
}
return $class . ':' . $func;
}
}
/** /**
* read user data from database by api-request-header fields * read user data from database by api-request-header fields
* *
@@ -563,22 +466,4 @@ abstract class ApiCommand
} }
throw new Exception("Invalid API credentials", 400); throw new Exception("Invalid API credentials", 400);
} }
/**
* run 'trim' function on an array recursively
*
* @param array $input
*
* @return array
*/
private function trimArray($input)
{
if (! is_array($input)) {
return trim($input);
}
return array_map(array(
$this,
'trimArray'
), $input);
}
} }

View File

@@ -0,0 +1,180 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package API
* @since 0.10.0
*
*/
abstract class ApiParameter
{
/**
* array of parameters passed to the command
*
* @var array
*/
private $cmd_params = null;
/**
*
* @param array $params
* optional, array of parameters (var=>value) for the command
*
* @throws Exception
*/
public function __construct($params = null)
{
if (! is_null($params)) {
$params = $this->trimArray($params);
}
$this->cmd_params = $params;
}
/**
* get specific parameter from the parameterlist;
* check for existence and != empty if needed.
* Maybe more in the future
*
* @param string $param
* parameter to get out of the request-parameter list
* @param bool $optional
* default: false
* @param mixed $default
* value which is returned if optional=true and param is not set
*
* @throws Exception
* @return mixed
*/
protected function getParam($param = null, $optional = false, $default = '')
{
// does it exist?
if (! isset($this->cmd_params[$param])) {
if ($optional === false) {
// get module + function for better error-messages
$inmod = $this->getModFunctionString();
throw new Exception('Requested parameter "' . $param . '" could not be found for "' . $inmod . '"', 404);
}
return $default;
}
// is it empty? - test really on string, as value 0 is being seen as empty by php
if ($this->cmd_params[$param] === "") {
if ($optional === false) {
// get module + function for better error-messages
$inmod = $this->getModFunctionString();
throw new Exception('Requested parameter "' . $param . '" is empty where it should not be for "' . $inmod . '"', 406);
}
return '';
}
// everything else is fine
return $this->cmd_params[$param];
}
/**
* get specific parameter which also has and unlimited-field
*
* @param string $param
* parameter to get out of the request-parameter list
* @param string $ul_field
* parameter to get out of the request-parameter list
* @param bool $optional
* default: false
* @param mixed $default
* value which is returned if optional=true and param is not set
*
* @return mixed
*/
protected function getUlParam($param = null, $ul_field = null, $optional = false, $default = 0)
{
$param_value = intval_ressource($this->getParam($param, $optional, $default));
$ul_field_value = $this->getParam($ul_field, true, 0);
if ($ul_field_value != 0) {
$param_value = - 1;
}
return $param_value;
}
/**
* update value of parameter
*
* @param string $param
* @param mixed $value
*
* @throws Exception
* @return boolean
*/
protected function updateParam($param, $value = null)
{
if (isset($this->cmd_params[$param])) {
$this->cmd_params[$param] = $value;
return true;
}
throw new Exception("Unable to update parameter '" . $param . "' as it does not exist", 500);
}
/**
* return list of all parameters
*
* @return array
*/
protected function getParamList()
{
return $this->cmd_params;
}
/**
* returns "module::function()" for better error-messages (missing parameter etc.)
* makes debugging a whole lot more comfortable
*
* @return string
*/
private function getModFunctionString()
{
$_class = get_called_class();
$level = 2;
if (version_compare(PHP_VERSION, "5.4.0", "<")) {
$trace = debug_backtrace();
} else {
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
}
while (true) {
$class = $trace[$level]['class'];
$func = $trace[$level]['function'];
if ($class != $_class) {
$level ++;
if ($level > 5) {
break;
}
continue;
}
return $class . ':' . $func;
}
}
/**
* run 'trim' function on an array recursively
*
* @param array $input
*
* @return array
*/
private function trimArray($input)
{
if (! is_array($input)) {
return trim($input);
}
return array_map(array(
$this,
'trimArray'
), $input);
}
}

View File

@@ -69,21 +69,8 @@ class EmailForwarders extends ApiCommand implements ResourceEntity
standard_error('destinationalreadyexist', $destination, true); standard_error('destinationalreadyexist', $destination, true);
} }
// get needed customer info to reduce the email-address-counter by one // get needed customer info to reduce the email-forwarder-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData('email_forwarders');
// get customer id
$customer_id = $this->getParam('customerid');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
// check whether the customer has enough resources to get the mail-forwarder added
if ($customer['email_forwarders_used'] >= $customer['email_forwarders'] && $customer['email_forwarders'] != '-1') {
throw new Exception("Customer has no more resources available", 406);
}
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
// add destination to address // add destination to address
$result['destination'] .= ' ' . $destination; $result['destination'] .= ' ' . $destination;
@@ -93,13 +80,13 @@ class EmailForwarders extends ApiCommand implements ResourceEntity
"); ");
$params = array( $params = array(
"dest" => makeCorrectDestination($result['destination']), "dest" => makeCorrectDestination($result['destination']),
"cid" => $customer_id, "cid" => $customer['customerid'],
"id" => $id "id" => $id
); );
Database::pexecute($stmt, $params, true, true); Database::pexecute($stmt, $params, true, true);
// update customer usage // update customer usage
Customers::increaseUsage($customer_id, 'email_forwarders_used'); Customers::increaseUsage($customer['customerid'], 'email_forwarders_used');
// update admin usage // update admin usage
Admins::increaseUsage($customer['adminid'], 'email_forwarders_used'); Admins::increaseUsage($customer['adminid'], 'email_forwarders_used');
@@ -169,17 +156,8 @@ class EmailForwarders extends ApiCommand implements ResourceEntity
$result['destination'] = explode(' ', $result['destination']); $result['destination'] = explode(' ', $result['destination']);
if (isset($result['destination'][$forwarderid]) && $result['email'] != $result['destination'][$forwarderid]) { if (isset($result['destination'][$forwarderid]) && $result['email'] != $result['destination'][$forwarderid]) {
// get needed customer info to reduce the email-address-counter by one // get needed customer info to reduce the email-forwarder-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData();
// get customer id
$customer_id = $this->getParam('customer_id');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
// get specific forwarder // get specific forwarder
$forwarder = $result['destination'][$forwarderid]; $forwarder = $result['destination'][$forwarderid];
@@ -207,7 +185,7 @@ class EmailForwarders extends ApiCommand implements ResourceEntity
)); ));
// update customer usage // update customer usage
Customers::decreaseUsage($customer_id, 'email_forwarders_used'); Customers::decreaseUsage($customer['customerid'], 'email_forwarders_used');
// update admin usage // update admin usage
Admins::decreaseUsage($customer['adminid'], 'email_forwarders_used'); Admins::decreaseUsage($customer['adminid'], 'email_forwarders_used');

View File

@@ -85,20 +85,7 @@ class Emails extends ApiCommand implements ResourceEntity
} }
// get needed customer info to reduce the email-address-counter by one // get needed customer info to reduce the email-address-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData('emails');
// get customer id
$customer_id = $this->getParam('customerid');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
// check whether the customer has enough resources to get the mail-address added
if ($customer['emails_used'] >= $customer['emails'] && $customer['emails'] != '-1') {
throw new Exception("Customer has no more resources available", 406);
}
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
// duplicate check // duplicate check
$stmt = Database::prepare(" $stmt = Database::prepare("
@@ -138,7 +125,7 @@ class Emails extends ApiCommand implements ResourceEntity
$address_id = Database::lastInsertId(); $address_id = Database::lastInsertId();
// update customer usage // update customer usage
Customers::increaseUsage($customer_id, 'emails_used'); Customers::increaseUsage($customer['customerid'], 'emails_used');
// update admin usage // update admin usage
Admins::increaseUsage($customer['adminid'], 'emails_used'); Admins::increaseUsage($customer['adminid'], 'emails_used');
@@ -236,16 +223,7 @@ class Emails extends ApiCommand implements ResourceEntity
$iscatchall = $this->getParam('iscatchall', true, $result['iscatchall']); $iscatchall = $this->getParam('iscatchall', true, $result['iscatchall']);
// get needed customer info to reduce the email-address-counter by one // get needed customer info to reduce the email-address-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData();
// get customer id
$customer_id = $this->getParam('customerid');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
// check for catchall-flag // check for catchall-flag
if ($iscatchall) { if ($iscatchall) {
@@ -348,16 +326,7 @@ class Emails extends ApiCommand implements ResourceEntity
$delete_userfiles = $this->getParam('delete_userfiles', true, 0); $delete_userfiles = $this->getParam('delete_userfiles', true, 0);
// get needed customer info to reduce the email-address-counter by one // get needed customer info to reduce the email-address-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData();
// get customer id
$customer_id = $this->getParam('customerid');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
// check for forwarders // check for forwarders
$number_forwarders = 0; $number_forwarders = 0;
@@ -373,7 +342,7 @@ class Emails extends ApiCommand implements ResourceEntity
if (Settings::Get('system.mail_quota_enabled') == 1) { if (Settings::Get('system.mail_quota_enabled') == 1) {
$stmt = Database::prepare("SELECT `quota` FROM `" . TABLE_MAIL_USERS . "` WHERE `customerid`= :customerid AND `id`= :id"); $stmt = Database::prepare("SELECT `quota` FROM `" . TABLE_MAIL_USERS . "` WHERE `customerid`= :customerid AND `id`= :id");
$res_quota = Database::pexecute_first($stmt, array( $res_quota = Database::pexecute_first($stmt, array(
"customerid" => $customer_id, "customerid" => $customer['customerid'],
"id" => $result['popaccountid'] "id" => $result['popaccountid']
), true, true); ), true, true);
Customers::decreaseUsage($customer['customerid'], 'email_quota_used', '', $res_quota['quota']); Customers::decreaseUsage($customer['customerid'], 'email_quota_used', '', $res_quota['quota']);
@@ -383,7 +352,7 @@ class Emails extends ApiCommand implements ResourceEntity
// delete account // delete account
$stmt = Database::prepare("DELETE FROM `" . TABLE_MAIL_USERS . "` WHERE `customerid`= :customerid AND `id`= :id"); $stmt = Database::prepare("DELETE FROM `" . TABLE_MAIL_USERS . "` WHERE `customerid`= :customerid AND `id`= :id");
Database::pexecute($stmt, array( Database::pexecute($stmt, array(
"customerid" => $customer_id, "customerid" => $customer['customerid'],
"id" => $result['popaccountid'] "id" => $result['popaccountid']
), true, true); ), true, true);
Customers::decreaseUsage($customer['customerid'], 'email_accounts_used'); Customers::decreaseUsage($customer['customerid'], 'email_accounts_used');
@@ -398,7 +367,7 @@ class Emails extends ApiCommand implements ResourceEntity
// delete address // delete address
$stmt = Database::prepare("DELETE FROM `" . TABLE_MAIL_VIRTUAL . "` WHERE `customerid`= :customerid AND `id`= :id"); $stmt = Database::prepare("DELETE FROM `" . TABLE_MAIL_VIRTUAL . "` WHERE `customerid`= :customerid AND `id`= :id");
Database::pexecute($stmt, array( Database::pexecute($stmt, array(
"customerid" => $customer_id, "customerid" => $customer['customerid'],
"id" => $id "id" => $id
), true, true); ), true, true);
Customers::decreaseUsage($customer['customerid'], 'emails_used'); Customers::decreaseUsage($customer['customerid'], 'emails_used');

View File

@@ -83,20 +83,7 @@ class Ftps extends ApiCommand implements ResourceEntity
$params = array(); $params = array();
// get needed customer info to reduce the ftp-user-counter by one // get needed customer info to reduce the ftp-user-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData('ftps');
// get customer id
$customer_id = $this->getParam('customer_id');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
// check whether the customer has enough resources to get the ftp-user added
if ($customer['ftps_used'] >= $customer['ftps'] && $customer['ftps'] != '-1') {
throw new Exception("Customer has no more resources available", 406);
}
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
if ($sendinfomail != 1) { if ($sendinfomail != 1) {
$sendinfomail = 0; $sendinfomail = 0;
@@ -114,7 +101,7 @@ class Ftps extends ApiCommand implements ResourceEntity
AND `customerid` = :customerid"); AND `customerid` = :customerid");
$ftpdomain_check = Database::pexecute_first($ftpdomain_check_stmt, array( $ftpdomain_check = Database::pexecute_first($ftpdomain_check_stmt, array(
"domain" => $ftpdomain, "domain" => $ftpdomain,
"customerid" => $customer_id "customerid" => $customer['customerid']
), true, true); ), true, true);
if ($ftpdomain_check && $ftpdomain_check['domain'] != $ftpdomain) { if ($ftpdomain_check && $ftpdomain_check['domain'] != $ftpdomain) {
@@ -144,7 +131,7 @@ class Ftps extends ApiCommand implements ResourceEntity
(`customerid`, `username`, `description`, `password`, `homedir`, `login_enabled`, `uid`, `gid`, `shell`) (`customerid`, `username`, `description`, `password`, `homedir`, `login_enabled`, `uid`, `gid`, `shell`)
VALUES (:customerid, :username, :description, :password, :homedir, 'y', :guid, :guid, :shell)"); VALUES (:customerid, :username, :description, :password, :homedir, 'y', :guid, :guid, :shell)");
$params = array( $params = array(
"customerid" => $customer_id, "customerid" => $customer['customerid'],
"username" => $username, "username" => $username,
"description" => $description, "description" => $description,
"password" => $cryptPassword, "password" => $cryptPassword,
@@ -179,14 +166,14 @@ class Ftps extends ApiCommand implements ResourceEntity
"); ");
$params = array( $params = array(
"username" => $username, "username" => $username,
"customerid" => $customer_id, "customerid" => $customer['customerid'],
"guid" => $customer['guid'] "guid" => $customer['guid']
); );
Database::pexecute($stmt, $params, true, true); Database::pexecute($stmt, $params, true, true);
// update customer usage // update customer usage
Customers::increaseUsage($customer_id, 'ftps_used'); Customers::increaseUsage($customer['customerid'], 'ftps_used');
Customers::increaseUsage($customer_id, 'ftp_lastaccountnumber'); Customers::increaseUsage($customer['customerid'], 'ftp_lastaccountnumber');
// update admin usage // update admin usage
Admins::increaseUsage($customer['adminid'], 'ftps_used'); Admins::increaseUsage($customer['adminid'], 'ftps_used');
@@ -360,16 +347,7 @@ class Ftps extends ApiCommand implements ResourceEntity
} }
// get needed customer info to reduce the ftp-user-counter by one // get needed customer info to reduce the ftp-user-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData();
// get customer id
$customer_id = $this->getParam('customer_id');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
// password update? // password update?
if ($password != '') { if ($password != '') {

View File

@@ -68,19 +68,7 @@ class Mysqls extends ApiCommand implements ResourceEntity
} }
// get needed customer info to reduce the mysql-usage-counter by one // get needed customer info to reduce the mysql-usage-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData('mysqls');
// get customer id
$customer_id = $this->getParam('customer_id');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
// check whether the customer has enough resources to get the database added
if ($customer['mysqls_used'] >= $customer['mysqls'] && $customer['mysqls'] != '-1') {
throw new Exception("Customer has no more resources available", 406);
}
} else {
$customer_id = $this->getUserDetail('customerid');
}
$newdb_params = array( $newdb_params = array(
'loginname' => ($this->isAdmin() ? $customer['loginname'] : $this->getUserDetail('loginname')), 'loginname' => ($this->isAdmin() ? $customer['loginname'] : $this->getUserDetail('loginname')),
@@ -105,7 +93,7 @@ class Mysqls extends ApiCommand implements ResourceEntity
`dbserver` = :dbserver `dbserver` = :dbserver
"); ");
$params = array( $params = array(
"customerid" => ($this->isAdmin() ? $customer['customerid'] : $this->getUserDetail('customerid')), "customerid" => $customer['customerid'],
"databasename" => $username, "databasename" => $username,
"description" => $databasedescription, "description" => $databasedescription,
"dbserver" => $dbserver "dbserver" => $dbserver
@@ -115,8 +103,8 @@ class Mysqls extends ApiCommand implements ResourceEntity
$params['id'] = $databaseid; $params['id'] = $databaseid;
// update customer usage // update customer usage
Customers::increaseUsage(($this->isAdmin() ? $customer['customerid'] : $this->getUserDetail('customerid')), 'mysqls_used'); Customers::increaseUsage($customer['customerid'], 'mysqls_used');
Customers::increaseUsage(($this->isAdmin() ? $customer['customerid'] : $this->getUserDetail('customerid')), 'mysql_lastaccountnumber'); Customers::increaseUsage($customer['customerid'], 'mysql_lastaccountnumber');
// update admin usage // update admin usage
Admins::increaseUsage($this->getUserDetail('adminid'), 'mysqls_used'); Admins::increaseUsage($this->getUserDetail('adminid'), 'mysqls_used');
@@ -132,7 +120,7 @@ class Mysqls extends ApiCommand implements ResourceEntity
Database::needSqlData(); Database::needSqlData();
$sql_root = Database::getSqlData(); $sql_root = Database::getSqlData();
Database::needRoot(false); Database::needRoot(false);
$userinfo = ($this->isAdmin() ? $customer : $this->getUserData()); $userinfo = $customer;
$replace_arr = array( $replace_arr = array(
'SALUTATION' => getCorrectUserSalutation($userinfo), 'SALUTATION' => getCorrectUserSalutation($userinfo),
@@ -351,19 +339,7 @@ class Mysqls extends ApiCommand implements ResourceEntity
} }
// get needed customer info to reduce the mysql-usage-counter by one // get needed customer info to reduce the mysql-usage-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData();
// get customer id
$customer_id = $this->getParam('customer_id');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
// check whether the customer has enough resources to get the database added
if ($customer['mysqls_used'] >= $customer['mysqls'] && $customer['mysqls'] != '-1') {
throw new Exception("Customer has no more resources available", 406);
}
} else {
$customer_id = $this->getUserDetail('customerid');
}
if ($password != '') { if ($password != '') {
// validate password // validate password
@@ -398,7 +374,7 @@ class Mysqls extends ApiCommand implements ResourceEntity
"); ");
$params = array( $params = array(
"desc" => $databasedescription, "desc" => $databasedescription,
"customerid" => ($this->isAdmin() ? $customer['customerid'] : $this->getUserDetail('customerid')), "customerid" => $customer['customerid'],
"id" => $id "id" => $id
); );
Database::pexecute($stmt, $params, true, true); Database::pexecute($stmt, $params, true, true);
@@ -519,19 +495,12 @@ class Mysqls extends ApiCommand implements ResourceEntity
), true, true); ), true, true);
// get needed customer info to reduce the mysql-usage-counter by one // get needed customer info to reduce the mysql-usage-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData();
$customer = $this->apiCall('Customers.get', array(
'id' => $result['customerid']
));
$mysql_used = $customer['mysqls_used']; $mysql_used = $customer['mysqls_used'];
$customer_id = $customer['customer_id'];
} else {
$mysql_used = $this->getUserDetail('mysqls_used');
$customer_id = $this->getUserDetail('customerid');
}
// reduce mysql-usage-counter // reduce mysql-usage-counter
$resetaccnumber = ($mysql_used == '1') ? " , `mysql_lastaccountnumber` = '0' " : ''; $resetaccnumber = ($mysql_used == '1') ? " , `mysql_lastaccountnumber` = '0' " : '';
Customers::decreaseUsage($customer_id, 'mysqls_used', $resetaccnumber); Customers::decreaseUsage($customer['customerid'], 'mysqls_used', $resetaccnumber);
// update admin usage // update admin usage
Admins::decreaseUsage(($this->isAdmin() ? $customer['adminid'] : $this->getUserDetail('adminid')), 'mysqls_used'); Admins::decreaseUsage(($this->isAdmin() ? $customer['adminid'] : $this->getUserDetail('adminid')), 'mysqls_used');

View File

@@ -78,20 +78,7 @@ class SubDomains extends ApiCommand implements ResourceEntity
} }
// get needed customer info to reduce the subdomain-usage-counter by one // get needed customer info to reduce the subdomain-usage-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData('subdomains');
// get customer id
$customer_id = $this->getParam('customer_id');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
// check whether the customer has enough resources to get the subdomain added
if ($customer['subdomains_used'] >= $customer['subdomains'] && $customer['subdomains'] != '-1') {
throw new Exception("Customer has no more resources available", 406);
}
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
// validation // validation
if (substr($subdomain, 0, 4) == 'xn--') { if (substr($subdomain, 0, 4) == 'xn--') {
@@ -127,7 +114,7 @@ class SubDomains extends ApiCommand implements ResourceEntity
"); ");
$completedomain_check = Database::pexecute_first($completedomain_stmt, array( $completedomain_check = Database::pexecute_first($completedomain_stmt, array(
"domain" => $completedomain, "domain" => $completedomain,
"customerid" => $customer_id "customerid" => $customer['customerid']
), true, true); ), true, true);
if ($completedomain_check) { if ($completedomain_check) {
@@ -153,7 +140,7 @@ class SubDomains extends ApiCommand implements ResourceEntity
"); ");
$aliasdomain_check = Database::pexecute_first($aliasdomain_stmt, array( $aliasdomain_check = Database::pexecute_first($aliasdomain_stmt, array(
"id" => $aliasdomain, "id" => $aliasdomain,
"customerid" => $customer_id "customerid" => $customer['customerid']
), true, true); ), true, true);
if ($aliasdomain_check['id'] != $aliasdomain) { if ($aliasdomain_check['id'] != $aliasdomain) {
standard_error('domainisaliasorothercustomer', '', true); standard_error('domainisaliasorothercustomer', '', true);
@@ -461,20 +448,7 @@ class SubDomains extends ApiCommand implements ResourceEntity
} }
// get needed customer info to reduce the subdomain-usage-counter by one // get needed customer info to reduce the subdomain-usage-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData();
// get customer id
$customer_id = $this->getParam('customer_id');
$customer = $this->apiCall('Customers.get', array(
'id' => $customer_id
));
// check whether the customer has enough resources to get the subdomain added
if ($customer['subdomains_used'] >= $customer['subdomains'] && $customer['subdomains'] != '-1') {
throw new Exception("Customer has no more resources available", 406);
}
} else {
$customer_id = $this->getUserDetail('customerid');
$customer = $this->getUserData();
}
$alias_stmt = Database::prepare("SELECT COUNT(`id`) AS count FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `aliasdomain`= :aliasdomain"); $alias_stmt = Database::prepare("SELECT COUNT(`id`) AS count FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `aliasdomain`= :aliasdomain");
$alias_check = Database::pexecute_first($alias_stmt, array( $alias_check = Database::pexecute_first($alias_stmt, array(
@@ -494,7 +468,7 @@ class SubDomains extends ApiCommand implements ResourceEntity
"); ");
$aliasdomain_check = Database::pexecute_first($aliasdomain_stmt, array( $aliasdomain_check = Database::pexecute_first($aliasdomain_stmt, array(
"id" => $aliasdomain, "id" => $aliasdomain,
"customerid" => $customer_id "customerid" => $customer['customerid']
), true, true); ), true, true);
if ($aliasdomain_check['id'] != $aliasdomain) { if ($aliasdomain_check['id'] != $aliasdomain) {
standard_error('domainisaliasorothercustomer', '', true); standard_error('domainisaliasorothercustomer', '', true);
@@ -743,19 +717,12 @@ class SubDomains extends ApiCommand implements ResourceEntity
$id = $result['id']; $id = $result['id'];
// get needed customer info to reduce the subdomain-usage-counter by one // get needed customer info to reduce the subdomain-usage-counter by one
if ($this->isAdmin()) { $customer = $this->getCustomerData();
$customer = $this->apiCall('Customers.get', array(
'id' => $result['customerid']
));
$subdomains_used = $customer['subdomains_used']; $subdomains_used = $customer['subdomains_used'];
$customer_id = $customer['customer_id'];
} else { if (!$this->isAdmin() && $result['caneditdomain'] == 0) {
if ($result['caneditdomain'] == 0) {
throw new Exception("You cannot edit this resource", 405); throw new Exception("You cannot edit this resource", 405);
} }
$subdomains_used = $this->getUserDetail('subdomains_used');
$customer_id = $this->getUserDetail('customerid');
}
if ($result['isemaildomain'] == '1') { if ($result['isemaildomain'] == '1') {
// check for e-mail addresses // check for e-mail addresses
@@ -764,7 +731,7 @@ class SubDomains extends ApiCommand implements ResourceEntity
WHERE `customerid` = :customerid AND `domainid` = :domainid WHERE `customerid` = :customerid AND `domainid` = :domainid
"); ");
$emails = Database::pexecute_first($emails_stmt, array( $emails = Database::pexecute_first($emails_stmt, array(
"customerid" => $customer_id, "customerid" => $customer['customerid'],
"domainid" => $id "domainid" => $id
), true, true); ), true, true);
@@ -780,7 +747,7 @@ class SubDomains extends ApiCommand implements ResourceEntity
DELETE FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `customerid` = :customerid AND `id` = :id DELETE FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `customerid` = :customerid AND `id` = :id
"); ");
Database::pexecute($stmt, array( Database::pexecute($stmt, array(
"customerid" => $customer_id, "customerid" => $customer['customerid'],
"id" => $id "id" => $id
), true, true); ), true, true);
@@ -825,7 +792,7 @@ class SubDomains extends ApiCommand implements ResourceEntity
inserttask('4'); inserttask('4');
// reduce subdomain-usage-counter // reduce subdomain-usage-counter
Customers::decreaseUsage($customer_id, 'subdomains_used'); Customers::decreaseUsage($customer['customerid'], 'subdomains_used');
// update admin usage // update admin usage
Admins::decreaseUsage(($this->isAdmin() ? $customer['adminid'] : $this->getUserDetail('adminid')), 'subdomains_used'); Admins::decreaseUsage(($this->isAdmin() ? $customer['adminid'] : $this->getUserDetail('adminid')), 'subdomains_used');