<?php
if (!defined("_GNUBOARD_")) exit;

/**
 * vpnlink_settings 테이블에서 전역 설정값을 읽어오는 헬퍼
 */

function get_vpnlink_setting($key, $default = "")
{
    $safe = addslashes(substr((string)$key, 0, 64));
    $row = sql_fetch("SELECT sv_value FROM vpnlink_settings WHERE sv_key = \"$safe\" LIMIT 1", false);
    if ($row && $row["sv_value"] !== "") return $row["sv_value"];
    return $default;
}

function set_vpnlink_setting($key, $value, $comment = "")
{
    $sk = addslashes(substr((string)$key,   0, 64));
    $sv = addslashes(substr((string)$value, 0, 255));
    $sc = addslashes(substr((string)$comment, 0, 255));
    $exists = sql_fetch("SELECT sv_key FROM vpnlink_settings WHERE sv_key = \"$sk\" LIMIT 1", false);
    if ($exists) {
        sql_query("UPDATE vpnlink_settings SET sv_value = \"$sv\", sv_updated_at = NOW() WHERE sv_key = \"$sk\"", false);
    } else {
        sql_query("INSERT INTO vpnlink_settings (sv_key, sv_value, sv_comment) VALUES (\"$sk\", \"$sv\", \"$sc\")", false);
    }
}

/**
 * 전역 출금 수수료값 반환 (double)
 * 값 <= 100 : 퍼센트(%)  |  값 > 100 : 고정 Point
 */
function get_vpnlink_withdraw_fee()
{
    return (double)get_vpnlink_setting("withdraw_fee", "0");
}

/**
 * 최저 출금 수수료값 반환 (int, Point)
 * 0이면 최저 수수료 미적용
 */
function get_vpnlink_withdraw_min_fee()
{
    return (int)get_vpnlink_setting("withdraw_min_fee", "0");
}

/**
 * 수수료 계산: max(비율/고정 계산값, 최저수수료)
 */
function calc_vpnlink_withdraw_fee($amount)
{
    $fee_raw = get_vpnlink_withdraw_fee();
    if ($fee_raw <= 100.0) {
        $fee = (int)round($amount * ($fee_raw / 100.0));
    } else {
        $fee = (int)$fee_raw;
    }
    $min_fee = get_vpnlink_withdraw_min_fee();
    if ($min_fee > 0 && $fee < $min_fee) {
        $fee = $min_fee;
    }
    return $fee;
}
