<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

// 아래 return 주석을 풀면 사용안함
//return;

// 내가 쓴 비밀글만 보기 (관리자 제외)
add_event('common_header', function () {
    global $g5, $member, $is_admin;

    $script = basename($_SERVER['SCRIPT_NAME']);
    if (!in_array($script, ['view.php','password.php','password_member.php'], true)) return;

    // 파라미터
    $bo_table = isset($_REQUEST['bo_table']) ? trim($_REQUEST['bo_table']) : '';
    $wr_id    = isset($_REQUEST['wr_id'])    ? (int) $_REQUEST['wr_id']    : 0;
    if (!$bo_table || !$wr_id) return;

    // 글 정보
    $write_table = $g5['write_prefix'] . $bo_table;
    $row = sql_fetch("SELECT wr_option, mb_id FROM {$write_table} WHERE wr_id = '{$wr_id}' ");
    if (!$row) return;

    // 비밀글이 아니면 패스
    $opt = ','.(string)$row['wr_option'].','; // 안전한 포함 체크
    if (strpos($opt, ',secret,') === false) return;

    // 관리자 통과
    if ($is_admin) return;

    // 공통: 목록 URL (루프 방지용)
    $list_url = G5_BBS_URL . '/board.php?bo_table=' . urlencode($bo_table);

    // 작성자만 통과 (단, 비회원 작성 비밀글은 password 절차로 넘김)
    if ($script === 'view.php') {
        // 비회원 작성 비밀글 기존 비밀번호 확인 진행
        if (empty($row['mb_id'])) {
            return;
        }

        // 회원 작성 비밀글: 작성자 본인만 통과
        if (empty($member['mb_id'])) {
            alert('비밀글은 작성자만 열람할 수 있습니다. 로그인 후 이용해주세요.',
                  G5_BBS_URL . "/login.php?url=" . urlencode($list_url));
            exit;
        }
        if ($member['mb_id'] !== $row['mb_id']) {
            alert('내가 쓴 비밀글이 아닙니다.', $list_url);
            exit;
        }
        return;
    }

    // 비회원 글은 비밀번호 확인, 회원 글은 작성자만
    if ($script === 'password.php' || $script === 'password_member.php') {
        // 비회원 작성 비밀글: 비밀번호 확인 절차 진행
        if (empty($row['mb_id'])) {
            return;
        }

        // 회원 작성 비밀글: 작성자만 허용
        if (empty($member['mb_id']) || $member['mb_id'] !== $row['mb_id']) {
            alert('내가 작성한 비밀글이 아닙니다.', $list_url);
            exit;
        }
        return;
    }
});