function substract_from_reseller_props($reseller_id, $domain_id)
{
    // function update reseller props bevore deleting account
    list($rdmn_current, $rdmn_max, $rsub_current, $rsub_max, $rals_current, $rals_max, $rmail_current, $rmail_max, $rftp_current, $rftp_max, $rsql_db_current, $rsql_db_max, $rsql_user_current, $rsql_user_max, $rtraff_current, $rtraff_max, $rdisk_current, $rdisk_max) = generate_reseller_props($reseller_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);
    $rdmn_current -= 1;
    if ($sub_max != -1) {
        $rsub_current -= $sub_max;
    }
    if ($als_max != -1) {
        $rals_current -= $als_max;
    }
    $rmail_current -= $mail_max;
    $rftp_current -= $ftp_max;
    if ($sql_db_max != -1) {
        $rsql_db_current -= $sql_db_max;
    }
    if ($sql_user_max != -1) {
        $rsql_user_current -= $sql_user_max;
    }
    $rtraff_current -= $traff_max;
    $rdisk_current -= $disk_max;
    $rprops = "{$rdmn_current};{$rdmn_max};";
    $rprops .= "{$rsub_current};{$rsub_max};";
    $rprops .= "{$rals_current};{$rals_max};";
    $rprops .= "{$rmail_current};{$rmail_max};";
    $rprops .= "{$rftp_current};{$rftp_max};";
    $rprops .= "{$rsql_db_current};{$rsql_db_max};";
    $rprops .= "{$rsql_user_current};{$rsql_user_max};";
    $rprops .= "{$rtraff_current};{$rtraff_max};";
    $rprops .= "{$rdisk_current};{$rdisk_max};";
    update_reseller_props($reseller_id, $rprops);
}
Example #2
0
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 check_reseller_data($reseller_id, $rip_lst, $reseller_ips)
{
    $reseller_max_domain_cnt = $_POST['nreseller_max_domain_cnt'];
    $reseller_max_subdomain_cnt = $_POST['nreseller_max_subdomain_cnt'];
    $reseller_max_alias_cnt = $_POST['nreseller_max_alias_cnt'];
    $reseller_max_mail_cnt = $_POST['nreseller_max_mail_cnt'];
    $reseller_max_ftp_cnt = $_POST['nreseller_max_ftp_cnt'];
    $reseller_max_sql_db_cnt = $_POST['nreseller_max_sql_db_cnt'];
    $reseller_max_sql_user_cnt = $_POST['nreseller_max_sql_user_cnt'];
    $reseller_max_traffic = $_POST['nreseller_max_traffic'];
    $reseller_max_disk = $_POST['nreseller_max_disk'];
    list($udmn_current, $udmn_max, $udmn_uf, $usub_current, $usub_max, $usub_uf, $uals_current, $uals_max, $uals_uf, $umail_current, $umail_max, $umail_uf, $uftp_current, $uftp_max, $uftp_uf, $usql_db_current, $usql_db_max, $usql_db_uf, $usql_user_current, $usql_user_max, $usql_user_uf, $utraff_current, $utraff_max, $utraff_uf, $udisk_current, $udisk_max, $udisk_uf) = generate_reseller_users_props($reseller_id);
    list($rdmn_current, $rdmn_max, $rsub_current, $rsub_max, $rals_current, $rals_max, $rmail_current, $rmail_max, $rftp_current, $rftp_max, $rsql_db_current, $rsql_db_max, $rsql_user_current, $rsql_user_max, $rtraff_current, $rtraff_max, $rdisk_current, $rdisk_max) = generate_reseller_props($reseller_id);
    $err = '_off_';
    calculate_new_reseller_vals($reseller_max_domain_cnt, $rdmn_current, $rdmn_max, $udmn_current, $rdmn_current, $udmn_uf, $err, tr('Domain'));
    if ($err == '_off_') {
        calculate_new_reseller_vals($reseller_max_subdomain_cnt, $rsub_current, $rsub_max, $usub_current, $rsub_current, $usub_uf, $err, tr('Subdomain'));
    }
    if ($err == '_off_') {
        calculate_new_reseller_vals($reseller_max_alias_cnt, $rals_current, $rals_max, $uals_current, $uals_max, $uals_uf, $err, tr('Alias'));
    }
    if ($err == '_off_') {
        calculate_new_reseller_vals($reseller_max_mail_cnt, $rmail_current, $rmail_max, $umail_current, $umail_max, $umail_uf, $err, tr('Mail'));
    }
    if ($err == '_off_') {
        calculate_new_reseller_vals($reseller_max_ftp_cnt, $rftp_current, $rftp_max, $uftp_current, $uftp_max, $uftp_uf, $err, tr('FTP'));
    }
    if ($err == '_off_') {
        calculate_new_reseller_vals($reseller_max_sql_db_cnt, $rsql_db_current, $rsql_db_max, $usql_db_current, $usql_db_max, $usql_db_uf, $err, tr('SQL Database'));
    }
    if ($err == '_off_') {
        calculate_new_reseller_vals($reseller_max_sql_user_cnt, $rsql_user_current, $rsql_user_max, $usql_user_current, $usql_user_max, $usql_user_uf, $err, tr('SQL User'));
    }
    if ($err == '_off_') {
        calculate_new_reseller_vals($reseller_max_traffic, $rtraff_current, $rtraff_max, $utraff_current / 1024 / 1024, $utraff_max, $utraff_uf, $err, tr('Traffic'));
    }
    if ($err == '_off_') {
        calculate_new_reseller_vals($reseller_max_disk, $rdisk_current, $rdisk_max, $udisk_current / 1024 / 1024, $udisk_max, $udisk_uf, $err, tr('Disk'));
        //							($data,               $r,           &$rmax,         $u,                         $umax,       $uf,    &$err, $obj)
    }
    if ($err == '_off_') {
        check_user_ip_data($reseller_id, $rip_lst, $reseller_ips, $err);
    }
    if ($err != '_off_') {
        set_page_message($err);
        return false;
    }
    return true;
}
function generate_reseller_entry(&$tpl, $reseller_id, $reseller_name, $row)
{
    global $crnt_month, $crnt_year;
    list($rdmn_current, $rdmn_max, $rsub_current, $rsub_max, $rals_current, $rals_max, $rmail_current, $rmail_max, $rftp_current, $rftp_max, $rsql_db_current, $rsql_db_max, $rsql_user_current, $rsql_user_max, $rtraff_current, $rtraff_max, $rdisk_current, $rdisk_max) = generate_reseller_props($reseller_id);
    list($udmn_current, $udmn_max, $udmn_uf, $usub_current, $usub_max, $usub_uf, $uals_current, $uals_max, $uals_uf, $umail_current, $umail_max, $umail_uf, $uftp_current, $uftp_max, $uftp_uf, $usql_db_current, $usql_db_max, $usql_db_uf, $usql_user_current, $usql_user_max, $usql_user_uf, $utraff_current, $utraff_max, $utraff_uf, $udisk_current, $udisk_max, $udisk_uf) = generate_reseller_users_props($reseller_id);
    $rtraff_max = $rtraff_max * 1024 * 1024;
    $rtraff_current = $rtraff_current * 1024 * 1024;
    $rdisk_max = $rdisk_max * 1024 * 1024;
    $rdisk_current = $rdisk_current * 1024 * 1024;
    $utraff_max = $utraff_max * 1024 * 1024;
    $udisk_max = $udisk_max * 1024 * 1024;
    $traff_percent = calc_bar_value($utraff_current, $rtraff_max, 400);
    list($traff_percent, $traff_red, $traff_green) = make_usage_vals($utraff_current, $rtraff_max);
    list($disk_percent, $disk_red, $disk_green) = make_usage_vals($udisk_current, $rdisk_max);
    $traff_show_percent = $traff_percent;
    $disk_show_percent = $disk_percent;
    if ($traff_percent > 100) {
        $traff_percent = 100;
    }
    if ($disk_percent > 100) {
        $disk_percent = 100;
    }
    if ($row % 2 == 0) {
        $tpl->assign(array('ITEM_CLASS' => 'content'));
    } else {
        $tpl->assign(array('ITEM_CLASS' => 'content2'));
    }
    $tpl->assign(array('RESELLER_NAME' => $reseller_name, 'RESELLER_ID' => $reseller_id, 'MONTH' => $crnt_month, 'YEAR' => $crnt_year, 'TRAFF_SHOW_PERCENT' => $traff_show_percent, 'TRAFF_PERCENT' => $traff_percent, 'TRAFF_USED' => make_hr($utraff_current), 'TRAFF_CURRENT' => make_hr($rtraff_current), 'TRAFF_MAX' => $rtraff_max ? make_hr($rtraff_max) : tr('unlimited'), 'DISK_SHOW_PERCENT' => $disk_show_percent, 'DISK_PERCENT' => $disk_percent, 'DISK_USED' => make_hr($udisk_current), 'DISK_CURRENT' => make_hr($rdisk_current), 'DISK_MAX' => $rdisk_max ? make_hr($rdisk_max) : tr('unlimited'), 'DMN_USED' => $udmn_current, 'DMN_CURRENT' => $rdmn_current, 'DMN_MAX' => $rdmn_max ? $rdmn_max : tr('unlimited'), 'SUB_USED' => $usub_current, 'SUB_CURRENT' => $rsub_current, 'SUB_MAX' => $rsub_max ? $rsub_max : tr('unlimited'), 'ALS_USED' => $uals_current, 'ALS_CURRENT' => $rals_current, 'ALS_MAX' => $rals_max ? $rals_max : tr('unlimited'), 'MAIL_USED' => $umail_current, 'MAIL_CURRENT' => $rmail_current, 'MAIL_MAX' => $rmail_max ? $rmail_max : tr('unlimited'), 'FTP_USED' => $uftp_current, 'FTP_CURRENT' => $rftp_current, 'FTP_MAX' => $rftp_max ? $rftp_max : tr('unlimited'), 'SQL_DB_USED' => $usql_db_current, 'SQL_DB_CURRENT' => $rsql_db_current, 'SQL_DB_MAX' => $rsql_db_max ? $rsql_db_max : tr('unlimited'), 'TR_OF' => tr('of'), 'SQL_USER_USED' => $usql_user_current, 'SQL_USER_CURRENT' => $rsql_user_current, 'SQL_USER_MAX' => $rsql_user_max ? $rsql_user_max : tr('unlimited')));
    $tpl->parse('RESELLER_ENTRY', '.reseller_entry');
}
Example #5
0
/**
 * Check reseller data
 *
 * @param array &$errFields  rerefence to the error indicators of input fields
 * @return boolean TRUE if all data are valid, FALSE otherwise
 */
function check_data(&$errFields)
{
    $cfg = EasySCP_Registry::get('Config');
    // Get needed data
    $rdata =& get_data();
    /**
     * Check for new password
     */
    if (!empty($_POST['pass0']) || !empty($_POST['pass1'])) {
        if (!chk_password($_POST['pass0'])) {
            if ($cfg->PASSWD_STRONG) {
                set_page_message(sprintf(tr('The password must be at least %s chars long and contain letters and numbers to be valid.'), $cfg->PASSWD_CHARS), 'warning');
            } else {
                set_page_message(sprintf(tr('Password data is shorter than %s signs or includes not permitted signs!'), $cfg->PASSWD_CHARS), 'warning');
            }
            $errFields[] = 'PWD_ERR';
        }
        if ($_POST['pass0'] != $_POST['pass1']) {
            set_page_message(tr('Entered passwords do not match!'), 'warning');
            $errFields[] = 'PWD_ERR';
            $errFields[] = 'PWDR_ERR';
        }
    }
    /**
     * Check for mail address
     */
    if (!chk_email($rdata['email'])) {
        set_page_message(tr('Incorrect email syntax!'), 'warning');
        $errFields[] = 'EMAIL_ERR';
    }
    list($udmn_current, , $udmn_uf, $usub_current, , $usub_uf, $uals_current, , $uals_uf, $umail_current, , $umail_uf, $uftp_current, , $uftp_uf, $usql_db_current, , $usql_db_uf, $usql_user_current, , $usql_user_uf, $utraff_current, , $utraff_uf, $udisk_current, , $udisk_uf) = generate_reseller_users_props($rdata['edit_id']);
    list($rdmn_current, , $rsub_current, , $rals_current, , $rmail_current, , $rftp_current, , $rsql_db_current, , $rsql_user_current, , $rtraff_current, , $rdisk_current, ) = generate_reseller_props($rdata['edit_id']);
    /**
     * Check for new domains limit
     */
    if (easyscp_limit_check($rdata['max_dmn_cnt'], null)) {
        $rs = _check_new_limit($rdata['max_dmn_cnt'], $rdmn_current, $udmn_current, $udmn_uf, tr('Domains'));
    } else {
        set_page_message(tr('Incorrect domains limit!'), 'warning');
        $rs = false;
    }
    if (!$rs) {
        $errFields[] = 'DMN_ERR';
    }
    /**
     * Check for new subdomains limit
     */
    if (easyscp_limit_check($rdata['max_sub_cnt'])) {
        $rs = _check_new_limit($rdata['max_sub_cnt'], $rsub_current, $usub_current, $usub_uf, tr('Subdomains'));
    } else {
        set_page_message(tr('Incorrect subdomains limit!'), 'warning');
        $rs = false;
    }
    if (!$rs) {
        $errFields[] = 'SUB_ERR';
    }
    /**
     * Check for new domain alias limit
     */
    if (easyscp_limit_check($rdata['max_als_cnt'])) {
        $rs = _check_new_limit($rdata['max_als_cnt'], $rals_current, $uals_current, $uals_uf, tr('Aliases'));
    } else {
        set_page_message(tr('Incorrect aliases limit!'), 'warning');
        $rs = false;
    }
    if (!$rs) {
        $errFields[] = 'ALS_ERR';
    }
    /**
     * Check for new mail accounts limit
     */
    if (easyscp_limit_check($rdata['max_mail_cnt'])) {
        $rs = _check_new_limit($rdata['max_mail_cnt'], $rmail_current, $umail_current, $umail_uf, tr('Mail'));
    } else {
        set_page_message(tr('Incorrect mail accounts limit!'), 'warning');
        $rs = false;
    }
    if (!$rs) {
        $errFields[] = 'MAIL_ERR';
    }
    /**
     * Check for new Ftp accounts limit
     */
    if (easyscp_limit_check($rdata['max_ftp_cnt'])) {
        $rs = _check_new_limit($rdata['max_ftp_cnt'], $rftp_current, $uftp_current, $uftp_uf, tr('FTP'));
    } else {
        set_page_message(tr('Incorrect FTP accounts limit!'), 'warning');
        $rs = false;
    }
    if (!$rs) {
        $errFields[] = 'FTP_ERR';
    }
    /**
     * Check for new Sql databases limit
     */
    if (!($rs = easyscp_limit_check($rdata['max_sql_db_cnt']))) {
        set_page_message(tr('Incorrect SQL databases limit!'), 'warning');
    } else {
        if ($rdata['max_sql_db_cnt'] == -1 && $rdata['max_sql_user_cnt'] != -1) {
            set_page_message(tr('SQL databases limit is <em>disabled</em> but SQL users limit not!'), 'warning');
            $rs = false;
        } else {
            $rs = _check_new_limit($rdata['max_sql_db_cnt'], $rsql_db_current, $usql_db_current, $usql_db_uf, tr('SQL Databases'));
        }
    }
    if (!$rs) {
        $errFields[] = 'SQLD_ERR';
    }
    /**
     * Check for new Sql users limit
     */
    if (!($rs = easyscp_limit_check($rdata['max_sql_user_cnt']))) {
        set_page_message(tr('Incorrect SQL users limit!'), 'warning');
    } else {
        if ($rdata['max_sql_db_cnt'] != -1 && $rdata['max_sql_user_cnt'] == -1) {
            set_page_message(tr('SQL users limit is <em>disabled</em> but SQL databases limit not!'), 'warning');
            $rs = false;
        } else {
            $rs = _check_new_limit($rdata['max_sql_user_cnt'], $rsql_user_current, $usql_user_current, $usql_user_uf, tr('SQL Users'));
        }
    }
    if (!$rs) {
        $errFields[] = 'SQLU_ERR';
    }
    /**
     * Check for new traffic limit
     */
    if (easyscp_limit_check($rdata['max_traff_amnt'], null)) {
        $rs = _check_new_limit($rdata['max_traff_amnt'], $rtraff_current, $utraff_current / 1024 / 1024, $utraff_uf, tr('Web Traffic'));
    } else {
        set_page_message(tr('Incorrect traffic limit!'), 'warning');
        $rs = false;
    }
    if (!$rs) {
        $errFields[] = 'TRF_ERR';
    }
    /**
     * Check for new diskspace limit
     */
    if (easyscp_limit_check($rdata['max_disk_amnt'], null)) {
        $rs = _check_new_limit($rdata['max_disk_amnt'], $rdisk_current, $udisk_current / 1024 / 1024, $udisk_uf, tr('Disk storage'));
    } else {
        set_page_message(tr('Incorrect disk quota limit!'), 'warning');
        $rs = false;
    }
    if (!$rs) {
        $errFields[] = 'DISK_ERR';
    }
    /**
     * Check for IP adresses
     */
    if ($rdata['reseller_ips'] == '') {
        set_page_message(tr('You must assign at least one IP number for a reseller!'), 'warning');
    }
    check_user_ip_data($rdata['edit_id'], $rdata['rip_lst'], $rdata['reseller_ips']);
}
Example #6
0
/**
 * @param EasySCP_TemplateEngine $tpl
 * @param int $reseller_id
 * @param string $reseller_name
 * @param int $row
 * @return void
 */
function generate_reseller_entry($tpl, $reseller_id, $reseller_name, $row)
{
    global $crnt_month, $crnt_year;
    list($rdmn_current, $rdmn_max, $rsub_current, $rsub_max, $rals_current, $rals_max, $rmail_current, $rmail_max, $rftp_current, $rftp_max, $rsql_db_current, $rsql_db_max, $rsql_user_current, $rsql_user_max, $rtraff_current, $rtraff_max, $rdisk_current, $rdisk_max) = generate_reseller_props($reseller_id);
    list($udmn_current, , , $usub_current, , , $uals_current, , , $umail_current, , , $uftp_current, , , $usql_db_current, , , $usql_user_current, , , $utraff_current, , , $udisk_current, , ) = generate_reseller_users_props($reseller_id);
    $rtraff_max = $rtraff_max * 1024 * 1024;
    $rtraff_current = $rtraff_current * 1024 * 1024;
    $rdisk_max = $rdisk_max * 1024 * 1024;
    $rdisk_current = $rdisk_current * 1024 * 1024;
    $traff_show_percent = calc_bar_value($utraff_current, $rtraff_max, 400);
    $disk_show_percent = calc_bar_value($udisk_current, $rdisk_max, 400);
    if ($rtraff_max > 0) {
        $traff_percent = $utraff_current / $rtraff_max * 100 < 99.7 ? $utraff_current / $rtraff_max * 100 : 99.7;
    } else {
        $traff_percent = 0;
    }
    if ($rdisk_max > 0) {
        $disk_percent = $udisk_current / $rdisk_max * 100 < 99.7 ? $udisk_current / $rdisk_max * 100 : 99.7;
    } else {
        $disk_percent = 0;
    }
    $tpl->append(array('RESELLER_NAME' => tohtml($reseller_name), 'RESELLER_ID' => $reseller_id, 'MONTH' => $crnt_month, 'YEAR' => $crnt_year, 'TRAFF_SHOW_PERCENT' => $traff_show_percent, 'TRAFF_PERCENT' => $traff_percent, 'TRAFF_MSG' => $rtraff_max ? tr('%1$s / %2$s <br/>of<br/> <strong>%3$s</strong>', sizeit($utraff_current), sizeit($rtraff_current), sizeit($rtraff_max)) : tr('%1$s / %2$s <br/>of<br/> <strong>unlimited</strong>', sizeit($utraff_current), sizeit($rtraff_current)), 'DISK_SHOW_PERCENT' => $disk_show_percent, 'DISK_PERCENT' => $disk_percent, 'DISK_MSG' => $rdisk_max ? tr('%1$s / %2$s <br/>of<br/> <strong>%3$s</strong>', sizeit($udisk_current), sizeit($rdisk_current), sizeit($rdisk_max)) : tr('%1$s / %2$s <br/>of<br/> <strong>unlimited</strong>', sizeit($udisk_current), sizeit($rdisk_current)), 'DMN_MSG' => $rdmn_max ? tr('%1$d / %2$d <br/>of<br/> <strong>%3$d</strong>', $udmn_current, $rdmn_current, $rdmn_max) : tr('%1$d / %2$d <br/>of<br/> <strong>unlimited</strong>', $udmn_current, $rdmn_current), 'SUB_MSG' => $rsub_max > 0 ? tr('%1$d / %2$d <br/>of<br/> <strong>%3$d</strong>', $usub_current, $rsub_current, $rsub_max) : ($rsub_max === "-1" ? tr('<strong>disabled</strong>') : tr('%1$d / %2$d <br/>of<br/> <strong>unlimited</strong>', $usub_current, $rsub_current)), 'ALS_MSG' => $rals_max > 0 ? tr('%1$d / %2$d <br/>of<br/> <strong>%3$d</strong>', $uals_current, $rals_current, $rals_max) : ($rals_max === "-1" ? tr('<strong>disabled</strong>') : tr('%1$d / %2$d <br/>of<br/> <strong>unlimited</strong>', $uals_current, $rals_current)), 'MAIL_MSG' => $rmail_max > 0 ? tr('%1$d / %2$d <br/>of<br/> <strong>%3$d</strong>', $umail_current, $rmail_current, $rmail_max) : ($rmail_max === "-1" ? tr('<strong>disabled</strong>') : tr('%1$d / %2$d <br/>of<br/> <strong>unlimited</strong>', $umail_current, $rmail_current)), 'FTP_MSG' => $rftp_max > 0 ? tr('%1$d / %2$d <br/>of<br/> <strong>%3$d</strong>', $uftp_current, $rftp_current, $rftp_max) : ($rftp_max === "-1" ? tr('<strong>disabled</strong>') : tr('%1$d / %2$d <br/>of<br/> <strong>unlimited</strong>', $uftp_current, $rftp_current)), 'SQL_DB_MSG' => $rsql_db_max > 0 ? tr('%1$d / %2$d <br/>of<br/> <strong>%3$d</strong>', $usql_db_current, $rsql_db_current, $rsql_db_max) : ($rsql_db_max === "-1" ? tr('<strong>disabled</strong>') : tr('%1$d / %2$d <br/>of<br/> <strong>unlimited</strong>', $usql_db_current, $rsql_db_current)), 'SQL_USER_MSG' => $rsql_user_max > 0 ? tr('%1$d / %2$d <br/>of<br/> <strong>%3$d</strong>', $usql_user_current, $rsql_user_current, $rsql_user_max) : ($rsql_user_max === "-1" ? tr('<strong>disabled</strong>') : tr('%1$d / %2$d <br/>of<br/> <strong>unlimited</strong>', $usql_user_current, $rsql_user_current))));
}
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]));
    }
}