<?php
require_once dirname(__DIR__) . '/config/config.php';
require_once dirname(__DIR__) . '/includes/db.php';
require_once dirname(__DIR__) . '/includes/functions.php';
require_once dirname(__DIR__) . '/includes/auth.php';
requirePermission('missing_files_manage');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: missing_files.php?status=error&message=' . urlencode('파일 없음 관리는 POST 방식으로만 실행됩니다.'));
    exit;
}
requireCsrfToken();

try {
    $action = (string)($_POST['action'] ?? '');
    $songId = (int)($_POST['song_id'] ?? 0);
    if ($songId <= 0) throw new Exception('잘못된 곡 ID입니다.');

    $pdo = getDBConnection();
    if ($action === 'clear_missing') {
        $stmt = $pdo->prepare("UPDATE songs SET is_missing = 0, missing_checked_at = NOW(), updated_at = NOW() WHERE id = :id");
        $stmt->execute([':id' => $songId]);
        $message = '파일 없음 상태를 해제했습니다. 실제 파일 존재 여부는 다음 스캔에서 다시 확인됩니다.';
    } elseif ($action === 'hide_song') {
        $stmt = $pdo->prepare("UPDATE songs SET is_hidden = 1, updated_at = NOW() WHERE id = :id");
        $stmt->execute([':id' => $songId]);
        $message = '일반 목록에서 숨김 처리했습니다.';
    } else {
        throw new Exception('알 수 없는 작업입니다.');
    }

    header('Location: missing_files.php?status=success&message=' . urlencode($message));
} catch (Exception $e) {
    header('Location: missing_files.php?status=error&message=' . urlencode($e->getMessage()));
}
exit;
