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

/**
 * VPNLink 통신판매중개 플랫폼 안내문 출력 라이브러리
 *
 * - 안내문 본문은 g5_content(내용관리)에 저장되어 관리자모드 > 환경설정 > 내용관리에서 수정 가능
 * - co_id 규칙: vplat_{키}  (예: vplat_list, vplat_item, vplat_cart, vplat_order, vplat_orderdone, vplat_role)
 * - DB에 해당 co_id가 없으면 기본 문안을 자동 등록(INSERT IGNORE)한 뒤 출력
 * - 사용법(페이지/스킨 어디서나): echo vpnlink_platform_notice('cart');
 */

function vpnlink_platform_notice_defaults()
{
    return array(
        'list' => array(
            'subject' => '거래 안내',
            'show_title' => true,
            'content' =>
                '<p>VPNLink는 판매자와 구매자를 연결하는 <strong>통신판매중개 플랫폼</strong>입니다.</p>'
                .'<p>각 상품의 판매자는 플랫폼 회원이며, 상품의 내용·이용조건 및 계약이행의 책임은 해당 판매자에게 있습니다.</p>'
                .'<p>VPNLink는 안전한 주문·결제 시스템과 운영정책에 따른 취소·환불 절차를 제공하며, 거래 과정에서 발생하는 불편사항에 대해서는 중립적인 입장에서 해결을 지원합니다.</p>',
        ),
        'item' => array(
            'subject' => '거래 안내',
            'show_title' => true,
            'content' =>
                '<p>본 상품은 VPNLink 플랫폼에 등록된 판매자가 판매하는 상품입니다.</p>'
                .'<p>VPNLink는 <strong>통신판매중개자</strong>로서 거래를 중개하며, 상품의 제공 및 계약이행의 직접 당사자가 아닙니다.</p>'
                .'<p>판매자는 관련 법령과 플랫폼 운영정책을 준수하여 상품을 제공하여야 합니다.</p>'
                .'<p>구매자는 주문 전에 상품설명 및 이용조건을 충분히 확인하시기 바랍니다.</p>'
                .'<p>취소 및 환불은 플랫폼 운영정책에 따라 자동 또는 시스템화된 절차에 의해 처리되며, 필요한 경우 운영자가 사실관계를 확인하여 공정하게 처리합니다.</p>'
                .'<p>거래 과정에서 발생하는 불편사항은 VPNLink가 중립적인 입장에서 해결을 지원합니다.</p>',
        ),
        'cart' => array(
            'subject' => '장바구니 거래 안내',
            'show_title' => false,
            'content' =>
                '<p>장바구니에 담긴 상품은 각각 해당 판매자가 판매하는 상품입니다.</p>'
                .'<p>VPNLink는 거래를 중개하는 플랫폼이며, 취소 및 환불은 플랫폼 운영정책에 따라 처리됩니다.</p>',
        ),
        'order' => array(
            'subject' => '주문 전 확인사항',
            'show_title' => true,
            'content' =>
                '<ul>'
                .'<li>본 주문은 해당 판매자와 체결되는 거래입니다.</li>'
                .'<li>VPNLink는 통신판매중개 플랫폼을 운영하며 거래를 중개합니다.</li>'
                .'<li>상품의 내용, 제공, 이용조건 및 계약이행의 책임은 판매자에게 있습니다.</li>'
                .'<li>취소 및 환불은 플랫폼 운영정책에 따라 자동 또는 시스템화된 절차에 의해 처리되며, 필요한 경우 운영자의 확인 절차를 거쳐 처리될 수 있습니다.</li>'
                .'<li>고객 불편사항은 VPNLink가 운영정책에 따라 중립적으로 조정 및 해결을 지원할 수 있습니다.</li>'
                .'</ul>'
                .'<p class="vplat-agree">위 내용을 확인하였으며, 주문을 계속 진행하시는 경우 이에 동의하신 것으로 간주됩니다.</p>',
        ),
        'orderdone' => array(
            'subject' => '취소·환불 안내',
            'show_title' => false,
            'content' =>
                '<p>취소 및 환불은 판매자와 직접 연락하지 않아도 VPNLink 시스템을 통해 신청하실 수 있습니다.</p>'
                .'<p>플랫폼은 운영정책에 따라 자동 또는 시스템화된 절차로 처리하거나, 필요한 경우 확인 절차를 거쳐 공정하게 처리합니다.</p>',
        ),
        'role' => array(
            'subject' => 'VPNLink의 역할',
            'show_title' => true,
            'content' =>
                '<p>VPNLink는 판매자와 구매자를 연결하는 <strong>통신판매중개 플랫폼</strong>입니다.</p>'
                .'<p>상품의 판매, 서비스 제공 및 계약이행은 각 판매자의 책임으로 이루어집니다.</p>'
                .'<p>VPNLink는 주문, 결제, 취소 및 환불 시스템을 운영하고 있으며, 운영정책에 따라 자동 또는 시스템화된 절차를 제공합니다.</p>'
                .'<p>거래 과정에서 발생하는 분쟁이나 불편사항에 대해서는 관련 자료를 검토하여 운영정책에 따라 공정하고 중립적인 해결을 지원합니다.</p>',
        ),
    );
}

// 안내문 1회 조회 캐시
function vpnlink_platform_notice_row($co_id, $default_subject, $default_content)
{
    global $g5;
    static $cache = array();

    if (isset($cache[$co_id])) return $cache[$co_id];

    $row = sql_fetch(" select co_id, co_subject, co_content, co_html from {$g5['content_table']} where co_id = '".sql_real_escape_string($co_id)."' ", false);

    if (!$row || !isset($row['co_id']) || !$row['co_id']) {
        // 관리자 내용관리에서 수정할 수 있도록 기본 문안을 자동 등록
        $esc_id      = sql_real_escape_string($co_id);
        $esc_subject = sql_real_escape_string($default_subject);
        $esc_content = sql_real_escape_string($default_content);
        sql_query(" insert ignore into {$g5['content_table']}
                        set co_id = '{$esc_id}',
                            co_html = 1,
                            co_subject = '{$esc_subject}',
                            co_content = '{$esc_content}',
                            co_mobile_content = '',
                            co_skin = '',
                            co_mobile_skin = '',
                            co_tag_filter_use = 0,
                            co_hit = 0,
                            co_include_head = '',
                            co_include_tail = '' ", false);
        $row = array('co_id' => $co_id, 'co_subject' => $default_subject, 'co_content' => $default_content, 'co_html' => 1);
    }

    $cache[$co_id] = $row;
    return $row;
}

// 공용 스타일(요청당 1회 출력)
function vpnlink_platform_notice_css()
{
    static $printed = false;
    if ($printed) return '';
    $printed = true;

    return '<style>
.vplat-notice{box-sizing:border-box;margin:15px 0;padding:14px 16px;border:1px solid #dbe3ea;border-left:4px solid #5b8dd6;border-radius:6px;background:#f7fafd;color:#3d4a57;font-size:13px;line-height:1.65;word-break:keep-all;clear:both;text-align:left}
.vplat-notice .vplat-title{margin:0 0 8px;font-size:14px;font-weight:bold;color:#2c5a9e}
.vplat-notice .vplat-title .fa{margin-right:6px}
.vplat-notice p{margin:0 0 6px;padding:0}
.vplat-notice p:last-child{margin-bottom:0}
.vplat-notice ul{margin:0 0 6px;padding-left:0;list-style:none}
.vplat-notice ul li{position:relative;padding-left:12px;margin-bottom:4px}
.vplat-notice ul li:before{content:"\2022";position:absolute;left:0;color:#5b8dd6}
.vplat-notice .vplat-agree{margin-top:8px;padding-top:8px;border-top:1px dashed #c9d6e4;font-weight:bold;color:#2c5a9e}
.vplat-notice .vplat-edit{float:right;font-size:11px;color:#8a97a5;text-decoration:underline}
.vplat-notice.vplat-compact{padding:10px 14px;font-size:12px}
[data-site-theme=dark] .vplat-notice{background:#1e2530;border-color:#39434f;border-left-color:#5b8dd6;color:#b8c2cd}
[data-site-theme=dark] .vplat-notice .vplat-title,[data-site-theme=dark] .vplat-notice .vplat-agree{color:#79a7e8}
[data-site-theme=dark] .vplat-notice .vplat-agree{border-top-color:#39434f}
@media (max-width:768px){.vplat-notice{margin:12px 0;padding:12px;font-size:12px}.vplat-notice .vplat-title{font-size:13px}}
</style>';
}

/**
 * 플랫폼 안내문 박스 HTML 반환
 *
 * @param string $key  list|item|cart|order|orderdone|role
 * @param array  $opt  compact(bool) 좁은 영역용, class(string) 추가 클래스
 * @return string
 */
function vpnlink_platform_notice($key, $opt = array())
{
    global $is_admin;

    $defaults = vpnlink_platform_notice_defaults();
    if (!isset($defaults[$key])) return '';

    $def   = $defaults[$key];
    $co_id = 'vplat_'.$key;

    $row = vpnlink_platform_notice_row($co_id, $def['subject'], $def['content']);

    $subject = trim($row['co_subject']) !== '' ? $row['co_subject'] : $def['subject'];
    $content = trim($row['co_content']) !== '' ? $row['co_content'] : $def['content'];

    // 내용관리에서 co_html=0(텍스트)로 저장한 경우 대비
    if (isset($row['co_html']) && !$row['co_html']) {
        $content = nl2br(get_text($content, 0));
    }

    $class = 'vplat-notice';
    if (!empty($opt['compact'])) $class .= ' vplat-compact';
    if (!empty($opt['class']))   $class .= ' '.$opt['class'];

    $html  = vpnlink_platform_notice_css();
    $html .= '<div class="'.$class.'" role="note">';
    if ($is_admin == 'super') {
        $html .= '<a class="vplat-edit" href="'.G5_ADMIN_URL.'/contentform.php?w=u&amp;co_id='.urlencode($co_id).'" target="_blank" title="안내문 수정(내용관리)">수정</a>';
    }
    if (!empty($def['show_title'])) {
        $html .= '<div class="vplat-title"><i class="fa fa-info-circle" aria-hidden="true"></i>'.get_text($subject).'</div>';
    }
    $html .= $content;
    $html .= '</div>';

    return $html;
}
