<?php 
if (!defined('_GNUBOARD_')) exit;

function checkDateExpiration($write, $board, $board_skin_path, $bo_table, $view_list = false) {
    // 입력된 필수 변수가 없는 경우 함수 종료
    if ($write == null || $board == null || $board_skin_path == null) return false;

    $array_table = array('gallery', 'notice');
    $is_expired_any = false; // 만료된 게시물이 있는지 여부를 저장

    // 공지사항 체크
    $board_notice = getBoardNotice($bo_table);

    // 만료일 설정
    $expriation_day = 15;

    // 게시글 만료 체크
    $view_data = $view_list ? $write : get_view($write, $board, $board_skin_path);
    if (isExpired($view_data, $board_notice, $bo_table, $expriation_day, $array_table)) {
        if ($view_list) {
            $is_expired_any = true;
        } else {
            return alert($expriation_day . '일이 지난 게시글은 열람할 수 없습니다.', G5_BBS_URL . '/board.php?bo_table=' . $bo_table);
        }
    }

    return $view_list ? $is_expired_any : false;
}

function getBoardNotice($bo_table) {
    $sql = "SELECT bo_notice FROM g5_board WHERE bo_table = '{$bo_table}'";
    $row = sql_fetch($sql);
    return isset($row['bo_notice']) ? array_map('trim', explode(',', $row['bo_notice'])) : [];
}

function isExpired($view_data, $board_notice, $bo_table, $expriation_day, $array_table) {
    if (!isset($view_data['wr_id'])) return false;

    $is_notice = in_array($view_data['wr_id'], $board_notice);
    $expiration_date = isset($view_data['wr_datetime']) ? date('Y-m-d H:i:s', strtotime('+' . $expriation_day . ' day', strtotime($view_data['wr_datetime']))) : null;
    $current_date = date('Y-m-d H:i:s');
    $is_expired = $expiration_date !== null && $current_date > $expiration_date;

    return $is_expired && !$is_notice && !in_array($bo_table, $array_table);
}
