/**
 * 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;
}
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 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]));
    }
}