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;
}
Example #3
0
/**
 * Check input data
 * @param int $reseller_id
 * @param int $user_id
 */
function check_user_data($reseller_id, $user_id)
{
    $sql = EasySCP_Registry::get('Db');
    global $sub, $als, $mail, $ftp, $sql_db, $sql_user, $traff, $disk, $domain_php, $domain_php_edit, $domain_cgi, $domain_ssl, $allowbackup, $domain_dns, $domain_expires, $countbackup;
    $domain_expires_date = isset($_POST['dmn_expire_date']) ? clean_input($_POST['dmn_expire_date']) : 0;
    $domain_expires_never = isset($_POST['dmn_expire_never']) ? $_POST['dmn_expire_never'] : "off";
    $sub = clean_input($_POST['dom_sub']);
    $als = clean_input($_POST['dom_alias']);
    $mail = clean_input($_POST['dom_mail_acCount']);
    $ftp = clean_input($_POST['dom_ftp_acCounts']);
    $sql_db = clean_input($_POST['dom_sqldb']);
    $sql_user = clean_input($_POST['dom_sql_users']);
    $traff = clean_input($_POST['dom_traffic']);
    $disk = clean_input($_POST['dom_disk']);
    // $domain_ip = $_POST['domain_ip'];
    $domain_php = preg_replace("/\\_/", "", $_POST['domain_php']);
    $domain_php_edit = preg_replace("/\\_/", "", $_POST['domain_php_edit']);
    $domain_cgi = preg_replace("/\\_/", "", $_POST['domain_cgi']);
    $domain_ssl = preg_replace("/\\_/", "", $_POST['domain_ssl']);
    $domain_dns = preg_replace("/\\_/", "", $_POST['domain_dns']);
    $allowbackup = preg_replace("/\\_/", "", $_POST['backup']);
    $countbackup = preg_replace("/\\_/", "", $_POST['countbackup']);
    $ed_error = '';
    list($rsub_max, $rals_max, $rmail_max, $rftp_max, $rsql_db_max, $rsql_user_max) = check_reseller_permissions($_SESSION['user_id'], 'all_permissions');
    if ($rsub_max == "-1") {
        $sub = "-1";
    } elseif (!easyscp_limit_check($sub, -1)) {
        $ed_error .= tr('Incorrect subdomains limit!');
    }
    if ($rals_max == "-1") {
        $als = "-1";
    } elseif (!easyscp_limit_check($als, -1)) {
        $ed_error .= tr('Incorrect aliases limit!');
    }
    if ($rmail_max == "-1") {
        $mail = "-1";
    } elseif (!easyscp_limit_check($mail, -1)) {
        $ed_error .= tr('Incorrect mail accounts limit!');
    }
    if ($rftp_max == "-1") {
        $ftp = "-1";
    } elseif (!easyscp_limit_check($ftp, -1)) {
        $ed_error .= tr('Incorrect FTP accounts limit!');
    }
    if ($rsql_db_max == "-1") {
        $sql_db = "-1";
    } elseif (!easyscp_limit_check($sql_db, -1)) {
        $ed_error .= tr('Incorrect SQL users limit!');
    } else {
        if ($sql_db == -1 && $sql_user != -1) {
            $ed_error .= tr('SQL databases limit is <em>disabled</em>!');
        }
    }
    if ($rsql_user_max == "-1") {
        $sql_user = "******";
    } elseif (!easyscp_limit_check($sql_user, -1)) {
        $ed_error .= tr('Incorrect SQL databases limit!');
    } else {
        if ($sql_user == -1 && $sql_db != -1) {
            $ed_error .= tr('SQL users limit is <em>disabled</em>!');
        }
    }
    if (!easyscp_limit_check($traff, null)) {
        $ed_error .= tr('Incorrect traffic limit!');
    }
    if (!easyscp_limit_check($disk, null)) {
        $ed_error .= tr('Incorrect disk quota limit!');
    }
    list($usub_current, $usub_max, $uals_current, $uals_max, $umail_current, $umail_max, $uftp_current, $uftp_max, $usql_db_current, $usql_db_max, $usql_user_current, $usql_user_max, $utraff_max, $udisk_max) = generate_user_props($user_id);
    $previous_utraff_max = $utraff_max;
    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) = get_reseller_default_props($sql, $reseller_id);
    list(, , , , , , $utraff_current, $udisk_current) = generate_user_traffic($user_id);
    if (empty($ed_error)) {
        calculate_user_dvals($sub, $usub_current, $usub_max, $rsub_current, $rsub_max, $ed_error, tr('Subdomain'));
        calculate_user_dvals($als, $uals_current, $uals_max, $rals_current, $rals_max, $ed_error, tr('Alias'));
        calculate_user_dvals($mail, $umail_current, $umail_max, $rmail_current, $rmail_max, $ed_error, tr('Mail'));
        calculate_user_dvals($ftp, $uftp_current, $uftp_max, $rftp_current, $rftp_max, $ed_error, tr('FTP'));
        calculate_user_dvals($sql_db, $usql_db_current, $usql_db_max, $rsql_db_current, $rsql_db_max, $ed_error, tr('SQL Database'));
    }
    if (empty($ed_error)) {
        $query = "\n\t\t\tSELECT\n\t\t\t\tCOUNT(distinct su.sqlu_name) AS cnt\n\t\t\tFROM\n\t\t\t\t`sql_user` AS su,\n\t\t\t\t`sql_database` AS sd\n\t\t\tWHERE\n\t\t\t\tsu.`sqld_id` = sd.`sqld_id`\n\t\t\tAND\n\t\t\t\tsd.`domain_id` = ?\n\t\t;";
        $rs = exec_query($sql, $query, $_SESSION['edit_id']);
        calculate_user_dvals($sql_user, $rs->fields['cnt'], $usql_user_max, $rsql_user_current, $rsql_user_max, $ed_error, tr('SQL User'));
    }
    if (empty($ed_error)) {
        calculate_user_dvals($traff, $utraff_current / 1024 / 1024, $utraff_max, $rtraff_current, $rtraff_max, $ed_error, tr('Traffic'));
        calculate_user_dvals($disk, $udisk_current / 1024 / 1024, $udisk_max, $rdisk_current, $rdisk_max, $ed_error, tr('Disk'));
    }
    if (empty($ed_error)) {
        // Set domains status to 'change' to update mod_cband's limit
        if ($previous_utraff_max != $utraff_max) {
            $query = "UPDATE `domain` SET `status` = 'change' WHERE `domain_id` = ?";
            exec_query($sql, $query, $user_id);
            $query = "UPDATE `subdomain` SET `status` = 'change' WHERE `domain_id` = ?";
            exec_query($sql, $query, $user_id);
            send_request('110 DOMAIN domain ' . $user_id);
        }
        $user_props = "{$usub_current};{$usub_max};";
        $user_props .= "{$uals_current};{$uals_max};";
        $user_props .= "{$umail_current};{$umail_max};";
        $user_props .= "{$uftp_current};{$uftp_max};";
        $user_props .= "{$usql_db_current};{$usql_db_max};";
        $user_props .= "{$usql_user_current};{$usql_user_max};";
        $user_props .= "{$utraff_max};";
        $user_props .= "{$udisk_max};";
        // $user_props .= "$domain_ip;";
        $user_props .= "{$domain_php};";
        $user_props .= "{$domain_php_edit};";
        $user_props .= "{$domain_cgi};";
        $user_props .= "{$domain_ssl};";
        $user_props .= "{$allowbackup};";
        $user_props .= "{$domain_dns};";
        $user_props .= "{$countbackup}";
        update_user_props($user_id, $user_props);
        $domain_expires = $_SESSION['domain_expires'];
        // Set domain expire date
        if ($domain_expires_never != "on") {
            $domain_expires = strtotime($domain_expires_date);
        } else {
            $domain_expires = "0";
        }
        update_expire_date($user_id, $domain_expires);
        $reseller_props = "{$rdmn_current};{$rdmn_max};";
        $reseller_props .= "{$rsub_current};{$rsub_max};";
        $reseller_props .= "{$rals_current};{$rals_max};";
        $reseller_props .= "{$rmail_current};{$rmail_max};";
        $reseller_props .= "{$rftp_current};{$rftp_max};";
        $reseller_props .= "{$rsql_db_current};{$rsql_db_max};";
        $reseller_props .= "{$rsql_user_current};{$rsql_user_max};";
        $reseller_props .= "{$rtraff_current};{$rtraff_max};";
        $reseller_props .= "{$rdisk_current};{$rdisk_max}";
        if (!update_reseller_props($reseller_id, $reseller_props)) {
            set_page_message(tr('Domain properties could not be updated!'), 'error');
            return false;
        }
        // Backup Settings
        $query = "UPDATE `domain` SET `allowbackup` = ? WHERE `domain_id` = ?";
        exec_query($sql, $query, array($allowbackup, $user_id));
        // update the sql quotas, too
        $query = "SELECT `domain_name` FROM `domain` WHERE `domain_id` = ?";
        $rs = exec_query($sql, $query, array($user_id));
        $temp_dmn_name = $rs->fields['domain_name'];
        $query = "SELECT COUNT(`name`) AS cnt FROM `quotalimits` WHERE `name` = ?";
        $rs = exec_query($sql, $query, $temp_dmn_name);
        if ($rs->fields['cnt'] > 0) {
            // we need to update it
            if ($disk == 0) {
                $dlim = 0;
            } else {
                $dlim = $disk * 1024 * 1024;
            }
            $query = "UPDATE `quotalimits` SET `bytes_in_avail` = ? WHERE `name` = ?";
            exec_query($sql, $query, array($dlim, $temp_dmn_name));
        }
        set_page_message(tr('Domain properties updated successfully!'), 'success');
        return true;
    } else {
        set_page_message($ed_error, 'error');
        return false;
    }
}
 $user_props .= "{$utraff_max};";
 $user_props .= "{$udisk_max};";
 //$user_props .= "$domain_ip;";
 $user_props .= "{$domain_php};";
 $user_props .= "{$domain_cgi}";
 update_user_props($dmn_id, $user_props);
 $reseller_props = "{$rdmn_current};{$rdmn_max};";
 $reseller_props .= "{$rsub_current};{$rsub_max};";
 $reseller_props .= "{$rals_current};{$rals_max};";
 $reseller_props .= "{$rmail_current};{$rmail_max};";
 $reseller_props .= "{$rftp_current};{$rftp_max};";
 $reseller_props .= "{$rsql_db_current};{$rsql_db_max};";
 $reseller_props .= "{$rsql_user_current};{$rsql_user_max};";
 $reseller_props .= "{$rtraff_current};{$rtraff_max};";
 $reseller_props .= "{$rdisk_current};{$rdisk_max}";
 update_reseller_props($reseller_id, $reseller_props);
 // update the sql quotas too
 $query = "select domain_name from domain where domain_id=?";
 $rs = exec_query($sql, $query, array($dmn_id));
 $temp_dmn_name = $rs->fields['domain_name'];
 $query = "SELECT count(name) as cnt from quotalimits where name=?";
 $rs = exec_query($sql, $query, array($temp_dmn_name));
 if ($rs->fields['cnt'] > 0) {
     // we need to update it
     if ($disk == 0) {
         $dlim = 0;
     } else {
         $dlim = $disk * 1024 * 1024;
     }
     $query = "UPDATE quotalimits SET bytes_in_avail=? WHERE name=?";
     $rs = exec_query($sql, $query, array($dlim, $temp_dmn_name));
/**
 * 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 check_user_data(&$tpl, &$sql, $reseller_id, $user_id)
{
    global $sub, $als, $mail, $ftp, $sql_db, $sql_user, $traff, $disk, $sql, $domain_ip, $domain_php, $domain_cgi;
    $sub = $_POST['dom_sub'];
    $als = $_POST['dom_alias'];
    $mail = $_POST['dom_mail_acCount'];
    $ftp = $_POST['dom_ftp_acCounts'];
    $sql_db = $_POST['dom_sqldb'];
    $sql_user = $_POST['dom_sql_users'];
    $traff = $_POST['dom_traffic'];
    $disk = $_POST['dom_disk'];
    //$domain_ip = $_POST['domain_ip'];
    $domain_php = $_POST['domain_php'];
    $domain_cgi = $_POST['domain_cgi'];
    $ed_error = '_off_';
    if (!vhcs_limit_check($sub, 999)) {
        $ed_error = tr('Incorrect subdomain range or syntax!');
    } else {
        if (!vhcs_limit_check($als, 999)) {
            $ed_error = tr('Incorrect alias range or syntax!');
        } else {
            if (!vhcs_limit_check($mail, 999)) {
                $ed_error = tr('Incorrect mail account range or syntax!');
            } else {
                if (!vhcs_limit_check($ftp, 999) || $ftp == -1) {
                    $ed_error = tr('Incorrect FTP account range or syntax!');
                } else {
                    if (!vhcs_limit_check($sql_db, 999)) {
                        $ed_error = tr('Incorrect SQL user range or syntax!');
                    } else {
                        if (!vhcs_limit_check($sql_user, 999)) {
                            $ed_error = tr('Incorrect SQL database range or syntax!');
                        } else {
                            if (!vhcs_limit_check($traff, 1024 * 1024) || $traff == -1) {
                                $ed_error = tr('Incorrect traffic range or syntax!');
                            } else {
                                if (!vhcs_limit_check($disk, 1024 * 1024) || $disk == -1) {
                                    $ed_error = tr('Incorrect disk range or syntax!');
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    //$user_props = generate_user_props($user_id);
    //$reseller_props = generate_reseller_props($reseller_id);
    list($usub_current, $usub_max, $uals_current, $uals_max, $umail_current, $umail_max, $uftp_current, $uftp_max, $usql_db_current, $usql_db_max, $usql_user_current, $usql_user_max, $utraff_max, $udisk_max) = generate_user_props($user_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) = get_reseller_default_props($sql, $reseller_id);
    //generate_reseller_props($reseller_id);
    list($a, $b, $c, $d, $e, $f, $utraff_current, $udisk_current, $i, $h) = generate_user_traffic($user_id);
    if ($ed_error == '_off_') {
        calculate_user_dvals($sub, $usub_current, $usub_max, $rsub_current, $rsub_max, $ed_error, tr('Subdomain'));
    }
    if ($ed_error == '_off_') {
        calculate_user_dvals($als, $uals_current, $uals_max, $rals_current, $rals_max, $ed_error, tr('Alias'));
    }
    if ($ed_error == '_off_') {
        calculate_user_vals($mail, $umail_current, $umail_max, $rmail_current, $rmail_max, $ed_error, tr('Mail'));
    }
    if ($ed_error == '_off_') {
        calculate_user_vals($ftp, $uftp_current, $uftp_max, $rftp_current, $rftp_max, $ed_error, tr('FTP'));
    }
    if ($ed_error == '_off_') {
        calculate_user_dvals($sql_db, $usql_db_current, $usql_db_max, $rsql_db_current, $rsql_db_max, $ed_error, tr('SQL Database'));
    }
    if ($ed_error == '_off_') {
        $query = <<<SQL_QUERY
\t\t\tSELECT
\t\t\t\tCOUNT(su.sqlu_id) as cnt
\t\t\tFROM
\t\t\t\tsql_user as su, sql_database as sd
\t\t\tWHERE
\t\t\t\tsu.sqld_id = sd.sqld_id
\t\t\tAND
\t\t\t\tsd.domain_id = ?
SQL_QUERY;
        $rs = exec_query($sql, $query, array($_SESSION['user_id']));
        calculate_user_dvals($sql_user, $rs->fields['cnt'], $usql_user_max, $rsql_user_current, $rsql_user_max, $ed_error, tr('SQL User'));
    }
    if ($ed_error == '_off_') {
        calculate_user_vals($traff, $utraff_current / 1024 / 1024, $utraff_max, $rtraff_current, $rtraff_max, $ed_error, tr('Traffic'));
    }
    if ($ed_error == '_off_') {
        calculate_user_vals($disk, $udisk_current / 1024 / 1024, $udisk_max, $rdisk_current, $rdisk_max, $ed_error, tr('Disk'));
    }
    if ($ed_error == '_off_') {
        $user_props = "{$usub_current};{$usub_max};";
        $user_props .= "{$uals_current};{$uals_max};";
        $user_props .= "{$umail_current};{$umail_max};";
        $user_props .= "{$uftp_current};{$uftp_max};";
        $user_props .= "{$usql_db_current};{$usql_db_max};";
        $user_props .= "{$usql_user_current};{$usql_user_max};";
        $user_props .= "{$utraff_max};";
        $user_props .= "{$udisk_max};";
        //$user_props .= "$domain_ip;";
        $user_props .= "{$domain_php};";
        $user_props .= "{$domain_cgi}";
        update_user_props($user_id, $user_props);
        $reseller_props = "{$rdmn_current};{$rdmn_max};";
        $reseller_props .= "{$rsub_current};{$rsub_max};";
        $reseller_props .= "{$rals_current};{$rals_max};";
        $reseller_props .= "{$rmail_current};{$rmail_max};";
        $reseller_props .= "{$rftp_current};{$rftp_max};";
        $reseller_props .= "{$rsql_db_current};{$rsql_db_max};";
        $reseller_props .= "{$rsql_user_current};{$rsql_user_max};";
        $reseller_props .= "{$rtraff_current};{$rtraff_max};";
        $reseller_props .= "{$rdisk_current};{$rdisk_max}";
        update_reseller_props($reseller_id, $reseller_props);
        // update the sql quotas too
        $query = "select domain_name from domain where domain_id=?";
        $rs = exec_query($sql, $query, array($user_id));
        $temp_dmn_name = $rs->fields['domain_name'];
        $query = "SELECT count(name) as cnt from quotalimits where name=?";
        $rs = exec_query($sql, $query, array($temp_dmn_name));
        if ($rs->fields['cnt'] > 0) {
            // we need to update it
            if ($disk == 0) {
                $dlim = 0;
            } else {
                $dlim = $disk * 1024 * 1024;
            }
            $query = "UPDATE quotalimits SET bytes_in_avail=? WHERE name=?";
            $rs = exec_query($sql, $query, array($dlim, $temp_dmn_name));
        }
        set_page_message(tr('Domain properties updated successfully!'));
        return true;
    } else {
        $tpl->assign('MESSAGE', $ed_error);
        $tpl->parse('PAGE_MESSAGE', 'page_message');
        return false;
    }
}
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]));
    }
}