/** * Update resellers limit * * @throws iMSCP_Exception_Database * @param int $toReseller Reseller for which the givens customer are moved to * @param int $fromReseller Reseller for wich the givens customers are moved from * @param array $users List of user to move * @param array $errorsStack Error stack * @return bool */ function admin_updateResellerLimits($toReseller, $fromReseller, $users, &$errorsStack) { $toResellerProperties = imscp_getResellerProperties($toReseller); $fromResellerProperties = imscp_getResellerProperties($fromReseller, true); $usersList = explode(';', $users); for ($i = 0, $countUsersList = count($usersList) - 1; $i < $countUsersList; $i++) { $stmt = exec_query('SELECT domain_name FROM domain WHERE domain_admin_id = ?', $usersList[$i]); if ($stmt->rowCount()) { $domainName = $stmt->fields['domain_name']; list($subdomainsLimit, , $domainAliasesLimit, , $mailAccountsLimit, , $ftpAccountsLimit, , $sqlDatabasesLimit, , $sqlUsersLimit, , $trafficLimit, $diskspaceLimit) = shared_getCustomerProps($usersList[$i]); calculate_reseller_dvals($toResellerProperties['current_dmn_cnt'], $toResellerProperties['max_dmn_cnt'], $src_dmn_current, $fromResellerProperties['max_dmn_cnt'], 1, $errorsStack, 'Domain', $domainName); if ($errorsStack == '_off_') { calculate_reseller_dvals($toResellerProperties['current_sub_cnt'], $toResellerProperties['max_sub_cnt'], $fromResellerProperties['current_sub_cnt'], $fromResellerProperties['max_sub_cnt'], $subdomainsLimit, $errorsStack, 'Subdomain', $domainName); calculate_reseller_dvals($toResellerProperties['current_als_cnt'], $toResellerProperties['max_als_cnt'], $fromResellerProperties['current_als_cnt'], $fromResellerProperties['max_als_cnt'], $domainAliasesLimit, $errorsStack, 'Alias', $domainName); calculate_reseller_dvals($toResellerProperties['current_mail_cnt'], $toResellerProperties['max_mail_cnt'], $fromResellerProperties['current_mail_cnt'], $fromResellerProperties['max_mail_cnt'], $mailAccountsLimit, $errorsStack, 'Mail', $domainName); calculate_reseller_dvals($toResellerProperties['current_ftp_cnt'], $toResellerProperties['max_ftp_cnt'], $fromResellerProperties['current_ftp_cnt'], $fromResellerProperties['max_ftp_cnt'], $ftpAccountsLimit, $errorsStack, 'FTP', $domainName); calculate_reseller_dvals($toResellerProperties['current_sql_db_cnt'], $toResellerProperties['max_sql_db_cnt'], $fromResellerProperties['current_sql_db_cnt'], $fromResellerProperties['max_sql_db_cnt'], $sqlDatabasesLimit, $errorsStack, 'SQL Database', $domainName); calculate_reseller_dvals($toResellerProperties['current_sql_user_cnt'], $toResellerProperties['max_sql_user_cnt'], $fromResellerProperties['current_sql_user_cnt'], $fromResellerProperties['max_sql_user_cnt'], $sqlUsersLimit, $errorsStack, 'SQL User', $domainName); calculate_reseller_dvals($toResellerProperties['current_traff_amnt'], $toResellerProperties['max_traff_amnt'], $fromResellerProperties['current_traff_amnt'], $fromResellerProperties['max_traff_amnt'], $trafficLimit, $errorsStack, 'Traffic', $domainName); calculate_reseller_dvals($toResellerProperties['current_disk_amnt'], $toResellerProperties['max_disk_amnt'], $fromResellerProperties['current_disk_amnt'], $fromResellerProperties['max_disk_amnt'], $diskspaceLimit, $errorsStack, 'Disk', $domainName); } if ($errorsStack != '_off_') { return false; } } else { } } // Update reseller properties /** @var $db iMSCP_Database */ $db = iMSCP_Database::getInstance(); try { $db->beginTransaction(); $newFromResellerProperties = "{$fromResellerProperties['current_dmn_cnt']};{$fromResellerProperties['max_dmn_cnt']};"; $newFromResellerProperties .= "{$fromResellerProperties['current_sub_cnt']};{$fromResellerProperties['max_sub_cnt']};"; $newFromResellerProperties .= "{$fromResellerProperties['current_als_cnt']};{$fromResellerProperties['max_als_cnt']};"; $newFromResellerProperties .= "{$fromResellerProperties['current_mail_cnt']};{$fromResellerProperties['max_mail_cnt']};"; $newFromResellerProperties .= "{$fromResellerProperties['current_ftp_cnt']};{$fromResellerProperties['max_ftp_cnt']};"; $newFromResellerProperties .= "{$fromResellerProperties['current_sql_db_cnt']};{$fromResellerProperties['max_sql_db_cnt']};"; $newFromResellerProperties .= "{$fromResellerProperties['current_sql_user_cnt']};{$fromResellerProperties['max_sql_user_cnt']};"; $newFromResellerProperties .= "{$fromResellerProperties['current_traff_amnt']};{$fromResellerProperties['max_traff_amnt']};"; $newFromResellerProperties .= "{$fromResellerProperties['current_disk_amnt']};{$fromResellerProperties['max_disk_amnt']};"; update_reseller_props($fromReseller, $newFromResellerProperties); $newToResellerProperties = "{$toResellerProperties['current_dmn_cnt']};{$toResellerProperties['max_dmn_cnt']};"; $newToResellerProperties .= "{$toResellerProperties['current_sub_cnt']};{$toResellerProperties['max_sub_cnt']};"; $newToResellerProperties .= "{$toResellerProperties['current_als_cnt']};{$toResellerProperties['max_als_cnt']};"; $newToResellerProperties .= "{$toResellerProperties['current_mail_cnt']};{$toResellerProperties['max_mail_cnt']};"; $newToResellerProperties .= "{$toResellerProperties['current_ftp_cnt']};{$toResellerProperties['max_ftp_cnt']};"; $newToResellerProperties .= "{$toResellerProperties['current_sql_db_cnt']};{$toResellerProperties['max_sql_db_cnt']};"; $newToResellerProperties .= "{$toResellerProperties['current_sql_user_cnt']};{$toResellerProperties['max_sql_user_cnt']};"; $newToResellerProperties .= "{$toResellerProperties['current_traff_amnt']};{$toResellerProperties['max_traff_amnt']};"; $newToResellerProperties .= "{$toResellerProperties['current_disk_amnt']};{$toResellerProperties['max_disk_amnt']};"; update_reseller_props($toReseller, $newToResellerProperties); for ($i = 0, $countUsersList = count($usersList) - 1; $i < $countUsersList; $i++) { $query = 'UPDATE `admin` SET `created_by` = ? WHERE `admin_id` = ?'; exec_query($query, array($toReseller, $usersList[$i])); } $db->commit(); } catch (iMSCP_Exception_Database $e) { $db->rollBack(); throw $e; } return true; }
function manage_reseller_limits($dest_reseller, $src_reseller, $users, &$err) { $sql = EasySCP_Registry::get('Db'); list($dest_dmn_current, $dest_dmn_max, $dest_sub_current, $dest_sub_max, $dest_als_current, $dest_als_max, $dest_mail_current, $dest_mail_max, $dest_ftp_current, $dest_ftp_max, $dest_sql_db_current, $dest_sql_db_max, $dest_sql_user_current, $dest_sql_user_max, $dest_traff_current, $dest_traff_max, $dest_disk_current, $dest_disk_max) = generate_reseller_props($dest_reseller); list($src_dmn_current, $src_dmn_max, $src_sub_current, $src_sub_max, $src_als_current, $src_als_max, $src_mail_current, $src_mail_max, $src_ftp_current, $src_ftp_max, $src_sql_db_current, $src_sql_db_max, $src_sql_user_current, $src_sql_user_max, $src_traff_current, $src_traff_max, $src_disk_current, $src_disk_max) = generate_reseller_props($src_reseller); $users_array = explode(";", $users); for ($i = 0, $cnt_users_array = count($users_array) - 1; $i < $cnt_users_array; $i++) { $query = "\n\t\t\tSELECT\n\t\t\t\t`domain_id`, `domain_name`\n\t\t\tFROM\n\t\t\t\t`domain`\n\t\t\tWHERE\n\t\t\t\t`domain_admin_id` = ?\n\t\t"; $rs = exec_query($sql, $query, $users_array[$i]); $domain_name = $rs->fields['domain_name']; $domain_id = $rs->fields['domain_id']; list(, $sub_max, , $als_max, , $mail_max, , $ftp_max, , $sql_db_max, , $sql_user_max, $traff_max, $disk_max) = generate_user_props($domain_id); calculate_reseller_dvals($dest_dmn_current, $dest_dmn_max, $src_dmn_current, $src_dmn_max, 1, $err, 'Domain', $domain_name); if ($err == '_off_') { calculate_reseller_dvals($dest_sub_current, $dest_sub_max, $src_sub_current, $src_sub_max, $sub_max, $err, 'Subdomain', $domain_name); calculate_reseller_dvals($dest_als_current, $dest_als_max, $src_als_current, $src_als_max, $als_max, $err, 'Alias', $domain_name); calculate_reseller_dvals($dest_mail_current, $dest_mail_max, $src_mail_current, $src_mail_max, $mail_max, $err, 'Mail', $domain_name); calculate_reseller_dvals($dest_ftp_current, $dest_ftp_max, $src_ftp_current, $src_ftp_max, $ftp_max, $err, 'FTP', $domain_name); calculate_reseller_dvals($dest_sql_db_current, $dest_sql_db_max, $src_sql_db_current, $src_sql_db_max, $sql_db_max, $err, 'SQL Database', $domain_name); calculate_reseller_dvals($dest_sql_user_current, $dest_sql_user_max, $src_sql_user_current, $src_sql_user_max, $sql_user_max, $err, 'SQL User', $domain_name); calculate_reseller_dvals($dest_traff_current, $dest_traff_max, $src_traff_current, $src_traff_max, $traff_max, $err, 'Traffic', $domain_name); calculate_reseller_dvals($dest_disk_current, $dest_disk_max, $src_disk_current, $src_disk_max, $disk_max, $err, 'Disk', $domain_name); } if ($err != '_off_') { return false; } } // Let's Make Necessary Updates; $src_reseller_props = "{$src_dmn_current};{$src_dmn_max};"; $src_reseller_props .= "{$src_sub_current};{$src_sub_max};"; $src_reseller_props .= "{$src_als_current};{$src_als_max};"; $src_reseller_props .= "{$src_mail_current};{$src_mail_max};"; $src_reseller_props .= "{$src_ftp_current};{$src_ftp_max};"; $src_reseller_props .= "{$src_sql_db_current};{$src_sql_db_max};"; $src_reseller_props .= "{$src_sql_user_current};{$src_sql_user_max};"; $src_reseller_props .= "{$src_traff_current};{$src_traff_max};"; $src_reseller_props .= "{$src_disk_current};{$src_disk_max};"; update_reseller_props($src_reseller, $src_reseller_props); $dest_reseller_props = "{$dest_dmn_current};{$dest_dmn_max};"; $dest_reseller_props .= "{$dest_sub_current};{$dest_sub_max};"; $dest_reseller_props .= "{$dest_als_current};{$dest_als_max};"; $dest_reseller_props .= "{$dest_mail_current};{$dest_mail_max};"; $dest_reseller_props .= "{$dest_ftp_current};{$dest_ftp_max};"; $dest_reseller_props .= "{$dest_sql_db_current};{$dest_sql_db_max};"; $dest_reseller_props .= "{$dest_sql_user_current};{$dest_sql_user_max};"; $dest_reseller_props .= "{$dest_traff_current};{$dest_traff_max};"; $dest_reseller_props .= "{$dest_disk_current};{$dest_disk_max};"; update_reseller_props($dest_reseller, $dest_reseller_props); for ($i = 0, $cnt_users_array = count($users_array) - 1; $i < $cnt_users_array; $i++) { $query = "UPDATE `admin` SET `created_by` = ? WHERE `admin_id` = ?"; exec_query($sql, $query, array($dest_reseller, $users_array[$i])); $query = "UPDATE `domain` SET `domain_created_id` = ? WHERE `domain_admin_id` = ?"; exec_query($sql, $query, array($dest_reseller, $users_array[$i])); } return true; }
function manage_reseller_limits($dest_reseller, $src_reseller, $users, &$err) { global $sql; list($dest_dmn_current, $dest_dmn_max, $dest_sub_current, $dest_sub_max, $dest_als_current, $dest_als_max, $dest_mail_current, $dest_mail_max, $dest_ftp_current, $dest_ftp_max, $dest_sql_db_current, $dest_sql_db_max, $dest_sql_user_current, $dest_sql_user_max, $dest_traff_current, $dest_traff_max, $dest_disk_current, $dest_disk_max) = generate_reseller_props($dest_reseller); list($src_dmn_current, $src_dmn_max, $src_sub_current, $src_sub_max, $src_als_current, $src_als_max, $src_mail_current, $src_mail_max, $src_ftp_current, $src_ftp_max, $src_sql_db_current, $src_sql_db_max, $src_sql_user_current, $src_sql_user_max, $src_traff_current, $src_traff_max, $src_disk_current, $src_disk_max) = generate_reseller_props($src_reseller); $users_array = explode(";", $users); for ($i = 0; $i < count($users_array) - 1; $i++) { $query = <<<SQL_QUERY select domain_id, domain_name from domain where domain_admin_id = ? SQL_QUERY; $rs = exec_query($sql, $query, array($users_array[$i])); $domain_name = $rs->fields['domain_name']; $domain_id = $rs->fields['domain_id']; list($sub_current, $sub_max, $als_current, $als_max, $mail_current, $mail_max, $ftp_current, $ftp_max, $sql_db_current, $sql_db_max, $sql_user_current, $sql_user_max, $traff_max, $disk_max) = generate_user_props($domain_id); calculate_reseller_vals($dest_dmn_current, $dest_dmn_max, $src_dmn_current, $src_dmn_max, 1, $err, 'Domain', $domain_name); if ($err == '_off_') { calculate_reseller_dvals($dest_sub_current, $dest_sub_max, $src_sub_current, $src_sub_max, $sub_max, $err, 'Subdomain', $domain_name); } if ($err == '_off_') { calculate_reseller_dvals($dest_als_current, $dest_als_max, $src_als_current, $src_als_max, $als_max, $err, 'Alias', $domain_name); } if ($err == '_off_') { calculate_reseller_vals($dest_mail_current, $dest_mail_max, $src_mail_current, $src_mail_max, $mail_max, $err, 'Mail', $domain_name); } if ($err == '_off_') { calculate_reseller_vals($dest_ftp_current, $dest_ftp_max, $src_ftp_current, $src_ftp_max, $ftp_max, $err, 'FTP', $domain_name); } if ($err == '_off_') { calculate_reseller_dvals($dest_sql_db_current, $dest_sql_db_max, $src_sql_db_current, $src_sql_db_max, $sql_db_max, $err, 'SQL Database', $domain_name); } if ($err == '_off_') { calculate_reseller_dvals($dest_sql_user_current, $dest_sql_user_max, $src_sql_user_current, $src_sql_user_max, $sql_user_max, $err, 'SQL User', $domain_name); } if ($err == '_off_') { calculate_reseller_vals($dest_traff_current, $dest_traff_max, $src_traff_current, $src_traff_max, $traff_max, $err, 'Traffic', $domain_name); } if ($err == '_off_') { calculate_reseller_vals($dest_disk_current, $dest_disk_max, $src_disk_current, $src_disk_max, $disk_max, $err, 'Disk', $domain_name); } if ($err != '_off_') { return false; } } // // Let's Make Necessary Updates; // $src_reseller_props = "{$src_dmn_current};{$src_dmn_max};"; $src_reseller_props .= "{$src_sub_current};{$src_sub_max};"; $src_reseller_props .= "{$src_als_current};{$src_als_max};"; $src_reseller_props .= "{$src_mail_current};{$src_mail_max};"; $src_reseller_props .= "{$src_ftp_current};{$src_ftp_max};"; $src_reseller_props .= "{$src_sql_db_current};{$src_sql_db_max};"; $src_reseller_props .= "{$src_sql_user_current};{$src_sql_user_max};"; $src_reseller_props .= "{$src_traff_current};{$src_traff_max};"; $src_reseller_props .= "{$src_disk_current};{$src_disk_max};"; update_reseller_props($src_reseller, $src_reseller_props); $dest_reseller_props = "{$dest_dmn_current};{$dest_dmn_max};"; $dest_reseller_props .= "{$dest_sub_current};{$dest_sub_max};"; $dest_reseller_props .= "{$dest_als_current};{$dest_als_max};"; $dest_reseller_props .= "{$dest_mail_current};{$dest_mail_max};"; $dest_reseller_props .= "{$dest_ftp_current};{$dest_ftp_max};"; $dest_reseller_props .= "{$dest_sql_db_current};{$dest_sql_db_max};"; $dest_reseller_props .= "{$dest_sql_user_current};{$dest_sql_user_max};"; $dest_reseller_props .= "{$dest_traff_current};{$dest_traff_max};"; $dest_reseller_props .= "{$dest_disk_current};{$dest_disk_max};"; update_reseller_props($dest_reseller, $dest_reseller_props); for ($i = 0; $i < count($users_array) - 1; $i++) { $query = "update admin set created_by = ? where admin_id = ?"; exec_query($sql, $query, array($dest_reseller, $users_array[$i])); $query = "update domain set domain_created_id = ? where domain_admin_id = ?"; exec_query($sql, $query, array($dest_reseller, $users_array[$i])); } }