add possibility to move customers to another admin/reseller, fixes #1166
Signed-off-by: Michael Kaufmann (d00p) <d00p@froxlor.org>
This commit is contained in:
@@ -1000,6 +1000,24 @@ if ($page == 'customers'
|
|||||||
}
|
}
|
||||||
$result = Database::pexecute_first($result_stmt, $result_data);
|
$result = Database::pexecute_first($result_stmt, $result_data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* information for moving customer
|
||||||
|
*/
|
||||||
|
$available_admins_stmt = Database::prepare("
|
||||||
|
SELECT * FROM `" . TABLE_PANEL_ADMINS . "`
|
||||||
|
WHERE (`customers` = '-1' OR `customers` < `customers_used`)"
|
||||||
|
);
|
||||||
|
Database::pexecute($available_admins_stmt);
|
||||||
|
$admin_select = makeoption("-----", 0, true, true, true);
|
||||||
|
$admin_select_cnt = 0;
|
||||||
|
while ($available_admin = $available_admins_stmt->fetch()) {
|
||||||
|
$admin_select .= makeoption($available_admin['name']." (".$available_admin['loginname'].")", $available_admin['adminid'], null, true, true);
|
||||||
|
$admin_select_cnt++;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* end of moving customer stuff
|
||||||
|
*/
|
||||||
|
|
||||||
if ($result['loginname'] != '') {
|
if ($result['loginname'] != '') {
|
||||||
|
|
||||||
if (isset($_POST['send'])
|
if (isset($_POST['send'])
|
||||||
@@ -1020,6 +1038,8 @@ if ($page == 'customers'
|
|||||||
$password = validate($_POST['new_customer_password'], 'new password');
|
$password = validate($_POST['new_customer_password'], 'new password');
|
||||||
$gender = intval_ressource($_POST['gender']);
|
$gender = intval_ressource($_POST['gender']);
|
||||||
|
|
||||||
|
$move_to_admin = intval_ressource($_POST['move_to_admin']);
|
||||||
|
|
||||||
$diskspace = intval_ressource($_POST['diskspace']);
|
$diskspace = intval_ressource($_POST['diskspace']);
|
||||||
if (isset($_POST['diskspace_ul'])) {
|
if (isset($_POST['diskspace_ul'])) {
|
||||||
$diskspace = - 1;
|
$diskspace = - 1;
|
||||||
@@ -1498,6 +1518,17 @@ if ($page == 'customers'
|
|||||||
$admin_update_query.= " WHERE `adminid` = '" . (int)$result['adminid'] . "'";
|
$admin_update_query.= " WHERE `adminid` = '" . (int)$result['adminid'] . "'";
|
||||||
Database::query($admin_update_query);
|
Database::query($admin_update_query);
|
||||||
$log->logAction(ADM_ACTION, LOG_INFO, "edited user '" . $result['loginname'] . "'");
|
$log->logAction(ADM_ACTION, LOG_INFO, "edited user '" . $result['loginname'] . "'");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* move customer to another admin/reseller; #1166
|
||||||
|
*/
|
||||||
|
if ($move_to_admin > 0 && $move_to_admin != $result['adminid']) {
|
||||||
|
$move_result = moveCustomerToAdmin($id, $move_to_admin);
|
||||||
|
if ($move_result != true) {
|
||||||
|
standard_error('moveofcustomerfailed', $move_result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$redirect_props = Array(
|
$redirect_props = Array(
|
||||||
'page' => $page,
|
'page' => $page,
|
||||||
's' => $s
|
's' => $s
|
||||||
|
|||||||
@@ -252,6 +252,18 @@ return array(
|
|||||||
'value' => array($result['perlenabled'])
|
'value' => array($result['perlenabled'])
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
),
|
||||||
|
'section_d' => array(
|
||||||
|
'title' => $lng['admin']['movetoadmin'],
|
||||||
|
'image' => 'icons/user_edit.png',
|
||||||
|
'visible' => ($admin_select_cnt > 1),
|
||||||
|
'fields' => array(
|
||||||
|
'move_to_admin' => array(
|
||||||
|
'label' => $lng['admin']['movecustomertoadmin'],
|
||||||
|
'type' => 'select',
|
||||||
|
'select_var' => $admin_select
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
57
lib/functions/froxlor/function.moveCustomerToAdmin.php
Normal file
57
lib/functions/froxlor/function.moveCustomerToAdmin.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to move a given customer to a given admin/reseller
|
||||||
|
* and update all its references accordingly
|
||||||
|
*
|
||||||
|
* @param int $id customer-id
|
||||||
|
* @param int $adminid target-admin-id
|
||||||
|
*
|
||||||
|
* @return true on sucess, error-message on failure
|
||||||
|
*/
|
||||||
|
function moveCustomerToAdmin($id = 0, $adminid = 0) {
|
||||||
|
if ($id <= 0 || $adminid <= 0) {
|
||||||
|
return "no valid id's given";
|
||||||
|
}
|
||||||
|
|
||||||
|
// get current admin-id
|
||||||
|
$cAdmin_stmt = Database::prepare ( "
|
||||||
|
SELECT `adminid` FROM `" . TABLE_PANEL_CUSTOMERS . "`
|
||||||
|
WHERE `customerid` = :cid
|
||||||
|
" );
|
||||||
|
$cAdmin = Database::pexecute_first ( $cAdmin_stmt, array (
|
||||||
|
'cid' => $id
|
||||||
|
) );
|
||||||
|
|
||||||
|
// Update customer entry
|
||||||
|
$updCustomer_stmt = Database::prepare ( "
|
||||||
|
UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `adminid` = :adminid WHERE `customerid` = :cid
|
||||||
|
" );
|
||||||
|
Database::pexecute ( $updCustomer_stmt, array (
|
||||||
|
'adminid' => $cAdmin ['adminid'],
|
||||||
|
'cid' => $id
|
||||||
|
) );
|
||||||
|
|
||||||
|
// Update customer-domains
|
||||||
|
$updDomains_stmt = Database::prepare ( "
|
||||||
|
UPDATE `" . TABLE_PANEL_DOMAINS . "` SET `adminid` = :adminid WHERE `customerid` = :cid
|
||||||
|
" );
|
||||||
|
Database::pexecute ( $updDomains_stmt, array (
|
||||||
|
'adminid' => $cAdmin ['adminid'],
|
||||||
|
'cid' => $id
|
||||||
|
) );
|
||||||
|
|
||||||
|
// Update customer-tickets
|
||||||
|
$updTickets_stmt = Database::prepare ( "
|
||||||
|
UPDATE `" . TABLE_PANEL_TICKETS . "` SET `adminid` = :adminid WHERE `customerid` = :cid
|
||||||
|
" );
|
||||||
|
Database::pexecute ( $updTickets_stmt, array (
|
||||||
|
'adminid' => $cAdmin ['adminid'],
|
||||||
|
'cid' => $id
|
||||||
|
) );
|
||||||
|
|
||||||
|
// now, recalculate the resource-usage for the old and the new admin
|
||||||
|
updateCounters ( false );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -1836,3 +1836,7 @@ $lng['serversettings']['panel_password_special_char']['description'] = 'One of t
|
|||||||
$lng['phpfpm']['use_mod_proxy']['title'] = 'Use mod_proxy / mod_proxy_fcgi';
|
$lng['phpfpm']['use_mod_proxy']['title'] = 'Use mod_proxy / mod_proxy_fcgi';
|
||||||
$lng['phpfpm']['use_mod_proxy']['description'] = 'Activate to use php-fpm via mod_proxy_fcgi. Requires at least apache-2.4.9';
|
$lng['phpfpm']['use_mod_proxy']['description'] = 'Activate to use php-fpm via mod_proxy_fcgi. Requires at least apache-2.4.9';
|
||||||
$lng['error']['no_phpinfo'] = 'Sorry, unable to read phpinfo()';
|
$lng['error']['no_phpinfo'] = 'Sorry, unable to read phpinfo()';
|
||||||
|
|
||||||
|
$lng['admin']['movetoadmin'] = 'Move customer';
|
||||||
|
$lng['admin']['movecustomertoadmin'] = 'Move customer to the selected admin/reseller<br /><small>Leave this empty for no change.<br />If the desired admin does not show up in the list, his customer-limit has been reached.</small>';
|
||||||
|
$lng['error']['moveofcustomerfailed'] = 'Moving the customer to the selected admin/reseller failed. Keep in mind that all other changes to the customer were applied successfully at this stage.<br><br>Error-message: %s';
|
||||||
|
|||||||
Reference in New Issue
Block a user