OLDBOY/skin/board/outline_target/view.skin.php
<?php
if (!defined('_GNUBOARD_')) exit;

add_stylesheet('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">', 0);
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.view.css">', 0);
include_once(G5_LIB_PATH.'/thumbnail.lib.php');

if (!function_exists('x2_base64url_encode')) {
    function x2_base64url_encode($data)
    {
        return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
    }
}

if (!function_exists('x2_jwt_hs256')) {
    function x2_jwt_hs256(array $payload, $secret)
    {
        $header = ['alg' => 'HS256', 'typ' => 'JWT'];
        $h = x2_base64url_encode(json_encode($header));
        $p = x2_base64url_encode(json_encode($payload));
        $s = hash_hmac('sha256', $h.'.'.$p, $secret, true);
        return $h.'.'.$p.'.'.x2_base64url_encode($s);
    }
}

if (!function_exists('x2_http_get_json')) {
    function x2_http_get_json($url, array $headers = [])
    {
        if (!function_exists('curl_init')) {
            return null;
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
        curl_setopt($ch, CURLOPT_TIMEOUT, 8);
        if (!empty($headers)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }

        $response = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($response === false || $http_code < 200 || $http_code >= 300) {
            return null;
        }

        $decoded = json_decode($response, true);
        return is_array($decoded) ? $decoded : null;
    }
}

if (!function_exists('x2_to_float')) {
    function x2_to_float($value)
    {
        $clean = preg_replace('/[^0-9.\-]/', '', (string)$value);
        return ($clean === '' || $clean === '-' || $clean === '.') ? 0.0 : (float)$clean;
    }
}

if (!function_exists('x2_fetch_upbit_current_asset')) {
    function x2_fetch_upbit_current_asset()
    {
        $key_candidates = [
            '/home/www/DB/key_upbit_trade.php',
            isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'].'/DB/key_upbit_trade.php' : ''
        ];

        $UPBIT_ACCESS_KEY = '';
        $UPBIT_SECRET_KEY = '';

        foreach ($key_candidates as $key_path) {
            if ($key_path && file_exists($key_path)) {
                include $key_path;
                if (!empty($UPBIT_ACCESS_KEY) && !empty($UPBIT_SECRET_KEY)) {
                    break;
                }
            }
        }

        if (empty($UPBIT_ACCESS_KEY) || empty($UPBIT_SECRET_KEY)) {
            return 0.0;
        }

        $payload = [
            'access_key' => $UPBIT_ACCESS_KEY,
            'nonce' => md5(uniqid('', true))
        ];

        $jwt = x2_jwt_hs256($payload, $UPBIT_SECRET_KEY);
        $accounts = x2_http_get_json('https://api.upbit.com/v1/accounts', ['Authorization: Bearer '.$jwt]);

        if (!is_array($accounts)) {
            return 0.0;
        }

        $total = 0.0;
        $need_markets = [];
        $holding_map = [];
        $avg_map = [];

        foreach ($accounts as $account) {
            $currency = strtoupper($account['currency'] ?? '');
            $balance = (float)($account['balance'] ?? 0);
            $locked = (float)($account['locked'] ?? 0);
            $amount = $balance + $locked;

            if ($amount <= 0) {
                continue;
            }

            if ($currency === 'KRW') {
                $total += $amount;
                continue;
            }

            $market = 'KRW-'.$currency;
            $holding_map[$market] = $amount;
            $avg_map[$market] = (float)($account['avg_buy_price'] ?? 0);
            $need_markets[] = $market;
        }

        if (!empty($need_markets)) {
            $price_map = [];
            $need_markets = array_values(array_unique($need_markets));
            $chunks = array_chunk($need_markets, 100);

            foreach ($chunks as $markets) {
                $url = 'https://api.upbit.com/v1/ticker?markets='.urlencode(implode(',', $markets));
                $ticker_rows = x2_http_get_json($url);
                if (!is_array($ticker_rows)) {
                    continue;
                }
                foreach ($ticker_rows as $ticker_row) {
                    $market = $ticker_row['market'] ?? '';
                    $trade_price = (float)($ticker_row['trade_price'] ?? 0);
                    if ($market !== '' && $trade_price > 0) {
                        $price_map[$market] = $trade_price;
                    }
                }
            }

            foreach ($holding_map as $market => $quantity) {
                $market_price = isset($price_map[$market]) ? (float)$price_map[$market] : 0;
                if ($market_price <= 0 && isset($avg_map[$market])) {
                    $market_price = (float)$avg_map[$market];
                }
                $total += $quantity * $market_price;
            }
        }

        return $total;
    }
}

$view_content = get_view_thumbnail($view['content']);
$x2_txt_raw = isset($view['x2_txt']) ? $view['x2_txt'] : '';
$code_filename = $bo_table.'-'.$view['wr_id'].'.php';

$content_text = trim(strip_tags($view_content));
$has_images = false;
$has_files = false;
$has_links = false;

if (!empty($view['file']['count'])) {
    for ($i = 0; $i < count($view['file']); $i++) {
        if (!isset($view['file'][$i]['source'])) continue;
        if (isset($view['file'][$i]['view']) && $view['file'][$i]['view']) {
            $has_images = true;
        } else {
            $has_files = true;
        }
    }
}

for ($i = 1; $i <= (int)count($view['link']); $i++) {
    if (!empty($view['link'][$i])) {
        $has_links = true;
        break;
    }
}

$has_content = ($has_images || $content_text !== '');

$memo_text = isset($view['x2_memo']) ? trim($view['x2_memo']) : '';
$memo_clean = isset($view['x2_memo_clean']) && $view['x2_memo_clean'] === '1';

$tag_source = isset($view['wr_1']) ? $view['wr_1'] : '';
$tag_items = array_filter(array_map('trim', explode(',', $tag_source)));
$trade_item_source = isset($view['x2_trade_item']) ? $view['x2_trade_item'] : '';
$trade_items = array_values(array_filter(array_map('trim', explode(',', $trade_item_source))));

$make_search_href = function($field, $value) use ($bo_table) {
    return G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&sfl='.$field.'&stx='.urlencode($value);
};

$format_thousand = function($value) {
    $raw = trim((string)$value);
    if ($raw === '') return '';

    $normalized = str_replace(',', '', $raw);
    if (!preg_match('/^-?\d+(\.\d+)?$/', $normalized)) return $raw;

    $negative = '';
    if (strpos($normalized, '-') === 0) {
        $negative = '-';
        $normalized = substr($normalized, 1);
    }

    $parts = explode('.', $normalized, 2);
    $int_part = isset($parts[0]) ? $parts[0] : '0';
    $dec_part = isset($parts[1]) ? $parts[1] : '';

    $formatted = number_format((int)$int_part);
    if ($dec_part !== '') {
        $formatted .= '.'.$dec_part;
    }

    return $negative.$formatted;
};

$x2_base_amount_raw = isset($view['x2_base_amount']) ? trim($view['x2_base_amount']) : '';
$x2_target_amount_raw = isset($view['x2_target_amount']) ? trim($view['x2_target_amount']) : '';
$x2_target_type_raw = isset($view['x2_target_type']) ? trim($view['x2_target_type']) : '';
$x2_unit_base_raw = isset($view['x2_unit_base']) ? trim($view['x2_unit_base']) : '';
$x2_unit_add_raw = isset($view['x2_unit_add']) ? trim($view['x2_unit_add']) : '';
$x2_unit_max_raw = isset($view['x2_unit_max']) ? trim($view['x2_unit_max']) : '';
$x2_current_asset_raw = isset($view['x2_current_asset']) ? trim($view['x2_current_asset']) : '';
$x2_profit_amount_raw = isset($view['x2_profit_amount']) ? trim($view['x2_profit_amount']) : '';
$x2_profit_rate_raw = isset($view['x2_profit_rate']) ? trim($view['x2_profit_rate']) : '';
$x2_reach_rate_raw = isset($view['x2_reach_rate']) ? trim($view['x2_reach_rate']) : '';
$x2_base_increase_rate_raw = isset($view['x2_base_increase_rate']) ? trim($view['x2_base_increase_rate']) : '';
$x2_max_increase_rate_raw = isset($view['x2_max_increase_rate']) ? trim($view['x2_max_increase_rate']) : '';

$x2_base_amount_num = x2_to_float($x2_base_amount_raw);
$x2_target_amount_num = x2_to_float($x2_target_amount_raw);
$x2_unit_base_num = x2_to_float($x2_unit_base_raw);
$x2_unit_add_num = x2_to_float($x2_unit_add_raw);
$x2_unit_max_num = x2_to_float($x2_unit_max_raw);

$x2_current_asset_num = ($x2_current_asset_raw !== '') ? x2_to_float($x2_current_asset_raw) : x2_fetch_upbit_current_asset();
$x2_current_asset_value = ($x2_current_asset_raw !== '') ? $x2_current_asset_raw : number_format($x2_current_asset_num, 0, '.', ',');

$x2_profit_amount_num = $x2_current_asset_num - $x2_base_amount_num;
$x2_profit_amount_value = ($x2_profit_amount_raw !== '') ? $x2_profit_amount_raw : number_format($x2_profit_amount_num, 0, '.', ',');

$x2_profit_rate_num = ($x2_base_amount_num != 0.0) ? (($x2_profit_amount_num / $x2_base_amount_num) * 100) : 0.0;
$x2_profit_rate_value = ($x2_profit_rate_raw !== '') ? $x2_profit_rate_raw : number_format($x2_profit_rate_num, 2, '.', '');

$x2_reach_rate_num = 0.0;
if (($x2_target_amount_num - $x2_base_amount_num) != 0.0) {
    $x2_reach_rate_num = (($x2_current_asset_num - $x2_base_amount_num) / ($x2_target_amount_num - $x2_base_amount_num)) * 100;
}
$x2_reach_rate_value = ($x2_reach_rate_raw !== '') ? $x2_reach_rate_raw : number_format($x2_reach_rate_num, 2, '.', '');

$x2_base_increase_rate_num = ($x2_unit_base_num != 0.0) ? ((($x2_unit_add_num - $x2_unit_base_num) / $x2_unit_base_num) * 100) : 0.0;
$x2_base_increase_rate_value = ($x2_base_increase_rate_raw !== '') ? $x2_base_increase_rate_raw : number_format($x2_base_increase_rate_num, 2, '.', '');

$x2_max_increase_rate_num = ($x2_unit_base_num != 0.0) ? ((($x2_unit_max_num - $x2_unit_base_num) / $x2_unit_base_num) * 100) : 0.0;
$x2_max_increase_rate_value = ($x2_max_increase_rate_raw !== '') ? $x2_max_increase_rate_raw : number_format($x2_max_increase_rate_num, 2, '.', '');

$x2_current_asset_view = $x2_current_asset_value !== '' ? $format_thousand($x2_current_asset_value) : '-';
$x2_profit_amount_view = $x2_profit_amount_value !== '' ? $format_thousand($x2_profit_amount_value) : '-';
$x2_profit_rate_view = $x2_profit_rate_value !== '' ? $format_thousand($x2_profit_rate_value).'%' : '-';
$x2_reach_rate_view = $x2_reach_rate_value !== '' ? $format_thousand($x2_reach_rate_value).'%' : '-';
$x2_base_increase_rate_view = $x2_base_increase_rate_value !== '' ? $format_thousand($x2_base_increase_rate_value).'%' : '-';
$x2_max_increase_rate_view = $x2_max_increase_rate_value !== '' ? $format_thousand($x2_max_increase_rate_value).'%' : '-';

$x2_progress_done = !empty($view['x2_run']) && (string)$view['x2_run'] === '1';
$x2_progress_text = $x2_progress_done ? '완료' : '진행';
$x2_progress_class = $x2_progress_done ? 'value-status-done' : 'value-status-progress';
$x2_reach_rate_class = ($x2_current_asset_num < $x2_base_amount_num) ? 'value-red' : 'value-green';

$x2_live_current = ($x2_current_asset_raw === '');
$x2_live_profit = ($x2_profit_amount_raw === '');
$x2_live_profit_rate = ($x2_profit_rate_raw === '');
$x2_live_reach_rate = ($x2_reach_rate_raw === '');

$x2_base_amount_view = $x2_base_amount_raw !== '' ? $format_thousand($x2_base_amount_raw) : '-';
$x2_target_amount_view = $x2_target_amount_raw !== '' ? $format_thousand($x2_target_amount_raw) : '-';
$x2_target_type_view = $x2_target_type_raw !== '' ? get_text($x2_target_type_raw) : '-';
$x2_unit_base_view = $x2_unit_base_raw !== '' ? $format_thousand($x2_unit_base_raw) : '-';
$x2_unit_add_view = $x2_unit_add_raw !== '' ? $format_thousand($x2_unit_add_raw) : '-';
$x2_unit_max_view = $x2_unit_max_raw !== '' ? $format_thousand($x2_unit_max_raw) : '-';

$same_category_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&sca='.urlencode(isset($view['ca_name']) ? $view['ca_name'] : '');
$same_ca2_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&s_ca2='.urlencode(isset($view['x2_ca2']) ? $view['x2_ca2'] : '');
$same_ca3_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&s_ca3='.urlencode(isset($view['x2_ca3']) ? $view['x2_ca3'] : '');

$same_top_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&is_top=y&sfl=x2_top&stx=1';
$same_label_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&is_label=y&sfl=x2_label&stx=1';
$same_ok_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&is_ok=y&sfl=x2_ok&stx=1';
$same_set_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&is_set=y&sfl=x2_set&stx=1';

$recent_ca3_rows = array();
$prev_ca3_rows = array();
if (!empty($view['x2_ca3'])) {
    $x2_ca3_sql = sql_real_escape_string($view['x2_ca3']);
    $wr_id_sql = (int)$view['wr_id'];

    $sql_recent = " SELECT wr_id, wr_subject, wr_datetime
                    FROM {$write_table}
                    WHERE wr_is_comment = '0'
                      AND x2_ca3 = '{$x2_ca3_sql}'
                      AND wr_id > '{$wr_id_sql}'
                    ORDER BY wr_id DESC
                    LIMIT 3 ";
    $rs_recent = sql_query($sql_recent, false);
    if ($rs_recent) {
        while ($row = sql_fetch_array($rs_recent)) {
            $recent_ca3_rows[] = $row;
        }
    }

    $sql_prev = " SELECT wr_id, wr_subject, wr_datetime
                  FROM {$write_table}
                  WHERE wr_is_comment = '0'
                    AND x2_ca3 = '{$x2_ca3_sql}'
                    AND wr_id < '{$wr_id_sql}'
                  ORDER BY wr_id DESC
                  LIMIT 3 ";
    $rs_prev = sql_query($sql_prev, false);
    if ($rs_prev) {
        while ($row = sql_fetch_array($rs_prev)) {
            $prev_ca3_rows[] = $row;
        }
    }
}

$extract_wr_id = function($href) {
    if (!$href) return 0;
    if (preg_match('/[?&]wr_id=(\d+)/', $href, $m)) {
        return (int)$m[1];
    }
    return 0;
};

$load_nav_meta = function($target_wr_id) use ($write_table) {
    $meta = array();
    if (!$target_wr_id) return $meta;
    $sql = " SELECT ca_name, x2_ca2, x2_ca3, x2_ca4, x2_top, x2_label, x2_ok, x2_set
             FROM {$write_table}
             WHERE wr_id = '{$target_wr_id}' ";
    $row = sql_fetch($sql, false);
    if (is_array($row)) $meta = $row;
    return $meta;
};

$prev_meta = $load_nav_meta($extract_wr_id($prev_href));
$next_meta = $load_nav_meta($extract_wr_id($next_href));

$render_nav_meta = function($meta) {
    if (empty($meta)) return '';
    $parts = array();

    if (!empty($meta['ca_name'])) $parts[] = '<span class="nav-meta-chip">분류: '.get_text($meta['ca_name']).'</span>';
    if (!empty($meta['x2_ca2'])) $parts[] = '<span class="nav-meta-chip">구분: '.get_text($meta['x2_ca2']).'</span>';
    if (!empty($meta['x2_ca3'])) $parts[] = '<span class="nav-meta-chip">형태: '.get_text($meta['x2_ca3']).'</span>';
    if (!empty($meta['x2_ca4'])) $parts[] = '<span class="nav-meta-chip">종류: '.get_text($meta['x2_ca4']).'</span>';

    $extra = array();
    if (!empty($meta['x2_top']) && $meta['x2_top'] == '1') $extra[] = '우선';
    if (!empty($meta['x2_label']) && $meta['x2_label'] == '1') $extra[] = '라벨';
    if (!empty($meta['x2_ok']) && $meta['x2_ok'] == '1') $extra[] = '완성';
    if (!empty($meta['x2_set']) && $meta['x2_set'] == '1') $extra[] = '세트';
    if (!empty($extra)) $parts[] = '<span class="nav-meta-chip">옵션: '.implode(', ', $extra).'</span>';

    return implode('', $parts);
};
?>

<article id="VIEW">
    <div class="Board-Info-Header">
        <div>
            <span class="terminal-label">CORE TERMINAL</span>
            <div class="board-title"><i class="fa-solid fa-database board-title-icon"></i><?php echo $board['bo_subject']; ?></div>
        </div>
        <div class="Btns-Right">
            <button onclick="location.href='<?php echo $list_href; ?>'"><i class="fa-solid fa-list"></i> LIST</button>
            <?php if ($update_href) { ?><button onclick="location.href='<?php echo $update_href; ?>'"><i class="fa-solid fa-pen-to-square"></i> EDIT</button><?php } ?>
            <?php if ($write_href) { ?><button onclick="location.href='<?php echo $write_href; ?>'" class="Write-Btn"><i class="fa-solid fa-pen"></i> WRITE</button><?php } ?>
        </div>
    </div>

    <header class="Header-Main-Section">
        <h1><?php echo get_text($view['wr_subject']); ?></h1>
        <div class="wr-datetime"><i class="fa-regular fa-clock datetime-icon"></i> DATE: <?php echo date('Y-m-d H:i', strtotime($view['wr_datetime'])); ?></div>
    </header>



        <?php if ($has_files || $has_links) { ?>
        <div class="View-Attached-Data">
            <?php if ($has_files) { ?>
            <div class="section-title-row"><i class="fa-solid fa-paperclip"></i> 첨부파일</div>
            <?php
            if ($view['file']['count']) {
                for ($i=0; $i<count($view['file']); $i++) {
                    if (!isset($view['file'][$i]['source']) || isset($view['file'][$i]['view'])) continue;
            ?>
            <a href="<?php echo $view['file'][$i]['href']; ?>" class="data-item file-item view_file_download">
                <div class="data-info">
                    <i class="fa-solid fa-download"></i>
                    <div>
                        <span class="data-name"><?php echo $view['file'][$i]['source']; ?></span>
                        <?php if(!empty($view['file'][$i]['bf_content'])) { ?><span class="data-description"><?php echo $view['file'][$i]['bf_content']; ?></span><?php } ?>
                    </div>
                </div>
                <div class="data-meta"><span><?php echo $view['file'][$i]['size']; ?></span></div>
            </a>
            <?php
                }
            }
            ?>
            <?php } ?>

            <?php if ($has_links) { ?>
            <div class="section-title-row links-under-files"><i class="fa-solid fa-link"></i> 링크</div>
            <?php
            for ($i=1; $i<=count($view['link']); $i++) {
                if (empty($view['link'][$i])) continue;
                $link = cut_str($view['link'][$i], 120);
            ?>
            <a href="<?php echo $view['link_href'][$i] ?>" target="_blank" class="data-item link-item-card">
                <div class="data-info"><i class="fa-solid fa-link"></i><span class="data-name"><?php echo $link ?></span></div>
                <span class="data-meta">OPEN</span>
            </a>
            <?php } ?>
            <?php } ?>
        </div>
        <?php } ?>

    <section class="Extra-Category-Area meta-section">
        <div class="section-title-row"><i class="fa-solid fa-folder-tree"></i> 분류 정보</div>
           <div class="meta-item-grid" id="x2_live_metrics"
               data-base-num="<?php echo $x2_base_amount_num; ?>"
               data-target-num="<?php echo $x2_target_amount_num; ?>"
               data-live-current="<?php echo $x2_live_current ? '1' : '0'; ?>"
               data-live-profit="<?php echo $x2_live_profit ? '1' : '0'; ?>"
               data-live-profit-rate="<?php echo $x2_live_profit_rate ? '1' : '0'; ?>"
               data-live-reach-rate="<?php echo $x2_live_reach_rate ? '1' : '0'; ?>">
            <?php if(!empty($view['ca_name'])) { ?><a href="<?php echo $same_category_href; ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-folder"></i> 분류</span><span class="item-value"><?php echo get_text($view['ca_name']); ?></span></a><?php } ?>
            <?php if(!empty($view['x2_ca2'])) { ?><a href="<?php echo $same_ca2_href; ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-layer-group"></i> 구분</span><span class="item-value"><?php echo get_text($view['x2_ca2']); ?></span></a><?php } ?>
            <?php if(!empty($view['x2_ca3'])) { ?><a href="<?php echo $same_ca3_href; ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-shapes"></i> 형태</span><span class="item-value"><?php echo get_text($view['x2_ca3']); ?></span></a><?php } ?>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-spinner"></i> 진행</span><span class="item-value <?php echo $x2_progress_class; ?>"><?php echo $x2_progress_text; ?></span></span>
            <?php if(!empty($view['x2_ca4'])) { ?><span class="meta-item"><span class="item-label"><i class="fa-solid fa-cubes"></i> 종류</span><span class="item-value"><?php echo get_text($view['x2_ca4']); ?></span></span><?php } ?>
        </div>
    </section>

    <section class="View-Option-Area option-primary-area">
        <div class="section-title-row"><i class="fa-solid fa-circle-info"></i> 핵심 항목</div>
        <div class="meta-item-grid">
            <?php if(!empty($view['x2_top']) && $view['x2_top'] == '1') { ?><a href="<?php echo $same_top_href; ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-thumbtack"></i> 우선</span><span class="item-value">TOP</span></a><?php } ?>
            <?php if(!empty($view['x2_label']) && $view['x2_label'] == '1') { ?><a href="<?php echo $same_label_href; ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-star"></i> 라벨</span><span class="item-value">LABEL</span></a><?php } ?>
            <?php if(!empty($view['x2_ok']) && $view['x2_ok'] == '1') { ?><a href="<?php echo $same_ok_href; ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-check"></i> 완성</span><span class="item-value">DONE</span></a><?php } ?>
            <?php if(!empty($view['x2_set']) && $view['x2_set'] == '1') { ?><a href="<?php echo $same_set_href; ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-boxes-stacked"></i> 세트</span><span class="item-value">SET</span></a><?php } ?>
            <?php if(!empty($view['x2_core']) && $view['x2_core'] == '1') { ?><span class="meta-item"><span class="item-label"><i class="fa-solid fa-circle-dot"></i> 핵심 부분</span><span class="item-value">ON</span></span><?php } ?>
        </div>
    </section>

    <section class="View-Option-Area option-secondary-area">
        <div class="section-title-row"><i class="fa-solid fa-sliders"></i> 추가 옵션</div>
        <div class="meta-item-grid">
            <?php if ($x2_base_amount_raw !== '') { ?>
            <a href="<?php echo $make_search_href('x2_base_amount', $x2_base_amount_raw); ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-sack-dollar"></i> 기본금액</span><span class="item-value value-green"><?php echo $x2_base_amount_view; ?></span></a>
            <?php } else { ?>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-sack-dollar"></i> 기본금액</span><span class="item-value">-</span></span>
            <?php } ?>

            <?php if ($x2_target_amount_raw !== '') { ?>
            <a href="<?php echo $make_search_href('x2_target_amount', $x2_target_amount_raw); ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-bullseye"></i> 목표금액</span><span class="item-value value-blue"><?php echo $x2_target_amount_view; ?></span></a>
            <?php } else { ?>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-bullseye"></i> 목표금액</span><span class="item-value">-</span></span>
            <?php } ?>

            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-wallet"></i> 현재자산</span><span class="item-value value-green" id="x2_live_current_asset"><?php echo $x2_current_asset_view; ?></span></span>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-coins"></i> 수익금</span><span class="item-value value-blue" id="x2_live_profit_amount"><?php echo $x2_profit_amount_view; ?></span></span>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-percent"></i> 수익률</span><span class="item-value value-blue" id="x2_live_profit_rate"><?php echo $x2_profit_rate_view; ?></span></span>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-chart-simple"></i> 도달률</span><span class="item-value <?php echo $x2_reach_rate_class; ?>" id="x2_live_reach_rate"><?php echo $x2_reach_rate_view; ?></span></span>

            <?php if ($x2_target_type_raw !== '') { ?>
            <a href="<?php echo $make_search_href('x2_target_type', $x2_target_type_raw); ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-list-check"></i> 목표형태</span><span class="item-value"><?php echo $x2_target_type_view; ?></span></a>
            <?php } else { ?>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-list-check"></i> 목표형태</span><span class="item-value">-</span></span>
            <?php } ?>
        </div>
    </section>

    <section class="View-Option-Area option-secondary-area">
        <div class="section-title-row"><i class="fa-solid fa-coins"></i> 매매 금액</div>
        <div class="meta-item-grid">
            <?php if ($x2_unit_base_raw !== '') { ?>
            <a href="<?php echo $make_search_href('x2_unit_base', $x2_unit_base_raw); ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-cube"></i> 기본단위</span><span class="item-value value-green"><?php echo $x2_unit_base_view; ?></span></a>
            <?php } else { ?>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-cube"></i> 기본단위</span><span class="item-value">-</span></span>
            <?php } ?>

            <?php if ($x2_unit_add_raw !== '') { ?>
            <a href="<?php echo $make_search_href('x2_unit_add', $x2_unit_add_raw); ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-plus"></i> 추가단위</span><span class="item-value value-yellow"><?php echo $x2_unit_add_view; ?></span></a>
            <?php } else { ?>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-plus"></i> 추가단위</span><span class="item-value">-</span></span>
            <?php } ?>

            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-chart-line"></i> 기본증가율</span><span class="item-value value-yellow"><?php echo $x2_base_increase_rate_view; ?></span></span>

            <?php if ($x2_unit_max_raw !== '') { ?>
            <a href="<?php echo $make_search_href('x2_unit_max', $x2_unit_max_raw); ?>" class="meta-item info-link"><span class="item-label"><i class="fa-solid fa-arrows-up-to-line"></i> 최대단위</span><span class="item-value value-red"><?php echo $x2_unit_max_view; ?></span></a>
            <?php } else { ?>
            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-arrows-up-to-line"></i> 최대단위</span><span class="item-value">-</span></span>
            <?php } ?>

            <span class="meta-item"><span class="item-label"><i class="fa-solid fa-chart-column"></i> 최대증가율</span><span class="item-value value-red"><?php echo $x2_max_increase_rate_view; ?></span></span>
        </div>
    </section>

    <section class="View-Option-Area option-secondary-area">
        <div class="section-title-row"><i class="fa-solid fa-chart-line"></i> 매매 종목</div>
        <div class="trade-tag-list">
            <?php if (!empty($trade_items)) { ?>
                <?php foreach ($trade_items as $trade_item) { ?>
                    <a href="<?php echo $make_search_href('x2_trade_item', $trade_item); ?>" class="trade-tag-link"><?php echo get_text($trade_item); ?></a>
                <?php } ?>
            <?php } else { ?>
                <span class="trade-tag-empty">-</span>
            <?php } ?>
        </div>
    </section>

    <?php if ($has_content) { ?>
    <div class="View-Content">
        <div class="section-title-row"><i class="fa-solid fa-file-lines"></i> 내용</div>
        <div class="View-Body-Inner">
            <div id="bo_v_atc">
                <div id="bo_v_img">
                    <?php
                    if ($view['file']['count']) {
                        for ($i = 0; $i < count($view['file']); $i++) {
                            if (isset($view['file'][$i]['view']) && $view['file'][$i]['view']) {
                                echo get_view_thumbnail($view['file'][$i]['view']);
                            }
                        }
                    }
                    ?>
                </div>
                <div id="bo_v_con"><?php echo $view_content; ?></div>
            </div>
        </div>
    </div>
    <?php } ?>

    <?php if($view['x2_text']) { ?>
    <div class="Additional-Code-Area">
        <div class="code-header">
            <span class="code-title"><i class="fa-solid fa-code"></i> 추가 내용</span>
            <div class="code-actions">
                <button type="button" class="code-action-btn" id="copyX2TxtBtn"><i class="fa-regular fa-copy"></i> COPY</button>
                <button type="button" class="code-action-btn" id="downloadX2TxtBtn"><i class="fa-solid fa-download"></i> DOWNLOAD</button>
            </div>
        </div>
        <pre class="code-body"><code><?php echo htmlspecialchars($view['x2_text']); ?></code></pre>
    </div>
    <?php } ?>

    <?php if ($memo_text !== '') { ?>
    <div class="Work-Memo-View-Area <?php echo $memo_clean ? 'is-cleaned' : ''; ?>">
        <div class="work-memo-title"><i class="fa-solid fa-note-sticky"></i> MEMO</div>
        <?php if ($memo_clean) { ?><div class="memo-clean-badge"><i class="fa-solid fa-trash-can"></i> 메모 삭제 상태</div><?php } ?>
        <div class="work-memo-content"><?php echo nl2br(get_text($memo_text)); ?></div>
    </div>
    <?php } ?>

    <?php if (!empty($view['x2_ca3']) && (!empty($recent_ca3_rows) || !empty($prev_ca3_rows))) { ?>
    <section class="View-Option-Area option-secondary-area">
        <?php if (!empty($recent_ca3_rows)) { ?>
        <div class="section-title-row"><i class="fa-solid fa-clock-rotate-left"></i> 최근 "<?php echo get_text($view['x2_ca3']); ?>" 데이터</div>
        <ul class="related-list">
            <?php foreach ($recent_ca3_rows as $row) { ?>
            <li>
                <a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&wr_id=<?php echo (int)$row['wr_id']; ?>">
                    <span class="related-subject"><?php echo get_text($row['wr_subject']); ?></span>
                    <span class="related-date"><?php echo date('Y-m-d H:i', strtotime($row['wr_datetime'])); ?></span>
                </a>
            </li>
            <?php } ?>
        </ul>
        <?php } ?>

        <?php if (!empty($prev_ca3_rows)) { ?>
        <div class="section-title-row related-prev-title"><i class="fa-solid fa-clock"></i> 이전 "<?php echo get_text($view['x2_ca3']); ?>" 데이터</div>
        <ul class="related-list">
            <?php foreach ($prev_ca3_rows as $row) { ?>
            <li>
                <a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&wr_id=<?php echo (int)$row['wr_id']; ?>">
                    <span class="related-subject"><?php echo get_text($row['wr_subject']); ?></span>
                    <span class="related-date"><?php echo date('Y-m-d H:i', strtotime($row['wr_datetime'])); ?></span>
                </a>
            </li>
            <?php } ?>
        </ul>
        <?php } ?>
    </section>
    <?php } ?>

    <?php if (!empty($tag_items)) { ?>
    <div class="View-Tag-Area">
        <?php foreach ($tag_items as $tag) { ?>
            <a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&sfl=wr_1&stx=<?php echo urlencode($tag); ?>" class="tag-item"># <?php echo get_text($tag); ?></a>
        <?php } ?>
    </div>
    <?php } ?>

    <nav class="Post-Navigation">
        <?php if ($prev_href) { ?>
            <a href="<?php echo $prev_href; ?>" class="prev-link">
                <span class="nav-label"><i class="fa-solid fa-chevron-left"></i> PREVIOUS POST</span>
                <p class="nav-subject"><?php echo $prev_wr_subject; ?></p>
                <div class="nav-meta-wrap"><?php echo $render_nav_meta($prev_meta); ?></div>
            </a>
        <?php } else { ?>
            <div class="nav-empty prev-empty">FIRST POST</div>
        <?php } ?>

        <?php if ($next_href) { ?>
            <a href="<?php echo $next_href; ?>" class="next-link">
                <span class="nav-label">NEXT POST <i class="fa-solid fa-chevron-right"></i></span>
                <p class="nav-subject"><?php echo $next_wr_subject; ?></p>
                <div class="nav-meta-wrap"><?php echo $render_nav_meta($next_meta); ?></div>
            </a>
        <?php } else { ?>
            <div class="nav-empty next-empty">LAST POST</div>
        <?php } ?>
    </nav>

    <footer class="View-Bottom-Control">
        <div class="Admin-Control">
            <?php if ($delete_href) { ?><button onclick="if(confirm('정말 삭제하시겠습니까?')) location.href='<?php echo $delete_href; ?>';"><i class="fa-solid fa-trash-can"></i> DELETE</button><?php } ?>
            <?php if ($copy_href) { ?><button onclick="window.open('<?php echo $copy_href; ?>', 'copy_win', 'width=600,height=500');"><i class="fa-solid fa-copy"></i> COPY</button><?php } ?>
            <?php if ($move_href) { ?><button onclick="window.open('<?php echo $move_href; ?>', 'move_win', 'width=600,height=500');"><i class="fa-solid fa-truck-moving"></i> MOVE</button><?php } ?>
        </div>
        <button onclick="location.href='<?php echo $list_href; ?>'" class="List-Btn-Footer"><i class="fa-solid fa-list-ul"></i> BACK TO LIST</button>
    </footer>
</article>

<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
<?php include_once("{$board_skin_path}/view/view.script.php"); ?>