<?php
/**
 * ============================================================
 *  フロント入口（フロントコントローラ）
 *  - ?p=<slug> でページを表示（未指定なら home）
 *  - クエリ方式なので mod_rewrite が無いサーバーでも確実に動く
 * ============================================================
 */

// 動作要件チェックを最初に（PHP8構文の本体より前。古いPHP/SQLite無し等は案内画面で停止）
require_once __DIR__ . '/requirements.php';

require_once __DIR__ . '/config.php';
require_once CMS_CORE . '/frame.php';

header('Content-Type: text/html; charset=utf-8');

// slug を取得・サニタイズ
$slug = isset($_GET['p']) ? (string)$_GET['p'] : 'home';
$slug = preg_replace('/[^a-zA-Z0-9_\-]/', '', $slug);
if ($slug === '') $slug = 'home';

// プラグインがこのリクエストを引き受けるか（一覧・詳細など）。
// 例：?p=news&id=123 の詳細表示。引き受けたら完成HTMLを返す。
$pluginHtml = cms_plugin_handle_route($slug);
if ($pluginHtml !== null) {
    echo $pluginHtml;
    exit;
}

$page = page_find($slug);

// 下書き（非公開）ページは、ログイン中の管理者以外には存在しないものとして扱う（404）
if ($page && ($page['status'] ?? 'public') === 'draft' && empty($_SESSION['admin_id'])) {
    $page = null;
}

if (!$page) {
    http_response_code(404);
    $frameKey = active_frame_key();
    echo '<!doctype html><html lang="ja"><meta charset="utf-8">';
    echo '<title>404 Not Found</title>';
    echo '<style>body{font-family:system-ui,sans-serif;padding:3rem;color:#333;text-align:center}'
       . 'a{color:#2563eb}</style>';
    echo '<h1>404</h1><p>ページ「' . h($slug) . '」は見つかりませんでした。</p>';
    echo '<p><a href="' . h(page_url('home')) . '">トップに戻る</a></p>';
    exit;
}

echo render_site_page($page);
