<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 내 VPN서버관리: 판매자(mb_id) 소유로 등록된 VPN 서버들을 카드 목록으로 표시합니다.
// 서버 등록은 각 VPN 박스의 system_info.php 에서 판매자 인증을 거쳐 이루어집니다.

$table = $g5['apms_vpn_server'];

// 보기 방식: card(카드형) / compact(컴팩트형) / list(목록형) — 서버 대수가 많을 때도
// 한눈에 관리할 수 있도록 밀도가 다른 3가지 보기를 제공한다.
$view_mode = isset($_GET['view']) ? trim((string)$_GET['view']) : 'card';
if (!in_array($view_mode, array('card', 'compact', 'list'), true)) {
    $view_mode = 'card';
}
$rows_by_view = array('card' => 24, 'compact' => 60, 'list' => 100);

$page = isset($page) && (int)$page > 0 ? (int)$page : 1;
$rows = $rows_by_view[$view_mode];

$mb_id_esc = sql_real_escape_string($mb_id);

$row_count = sql_fetch(" select count(*) as cnt from {$table} where pt_id = '{$mb_id_esc}' ");
$total_count = (int)($row_count['cnt'] ?? 0);
$total_page = (int)ceil($total_count / $rows);
if ($page < 1) $page = 1;
$from_record = ($page - 1) * $rows;

// 상품등급 배지 색상/부제 (VPN 박스 system_info.php 의 등급 산정과 동일한 5단계)
$grade_meta = array(
    'MAX'   => array('color' => '#dc3545', 'sub' => '최상위형'),
    'ULTRA' => array('color' => '#8b5cf6', 'sub' => '고성능형'),
    'PRO'   => array('color' => '#28a745', 'sub' => '전문형'),
    'PLUS'  => array('color' => '#007bff', 'sub' => '보급형'),
    'BASIC' => array('color' => '#6c757d', 'sub' => '입문형')
);

$list = array();
$sql = " select * from {$table} where pt_id = '{$mb_id_esc}' order by vs_registered_at desc limit {$from_record}, {$rows} ";
$result = sql_query($sql);
for ($i = 0; $row = sql_fetch_array($result); $i++) {
    // 15분 이내 하트비트/등록 응답이 있으면 온라인으로 간주
    $last_seen_ts = $row['vs_last_seen_at'] ? strtotime($row['vs_last_seen_at']) : 0;
    $row['is_online'] = ($last_seen_ts > 0) && ((G5_SERVER_TIME - $last_seen_ts) < 900);

    $meta = isset($grade_meta[$row['vs_grade']]) ? $grade_meta[$row['vs_grade']] : array('color' => '#6c757d', 'sub' => '');
    $row['grade_color'] = $meta['color'];
    $row['grade_sub'] = $meta['sub'];

    $list[$i] = $row;
}

$write_pages = (G5_IS_MOBILE) ? $config['cf_mobile_pages'] : $config['cf_write_pages'];
$list_page = './?ap=myvpnservers&amp;view=' . $view_mode . '&amp;page=';

include_once($skin_path . '/itemlist_myvpnservers.skin.php');

?>
