<?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/functions_backup.php';
require_once dirname(__DIR__) . '/includes/auth.php';
require_once dirname(__DIR__) . '/includes/layout.php';
requirePermission('backup_restore');

$files = array_values(array_filter(listBackupFiles(), function ($file) {
    return in_array(($file['export_type'] ?? ''), ['full_db', 'melonlite_json_backup'], true);
}));

renderHeader('전체 복원', 'backup');
?>
<div class="settings-page backup-center-page">
    <div class="page-title-section">
        <h1 class="page-main-title">전체 DB 복원</h1>
        <p class="page-subtitle">전체 복원은 현재 DB를 크게 바꾸는 위험 작업입니다. 선택 데이터 병합은 백업 센터의 가져오기 기능을 사용하세요.</p>
    </div>

    <div class="notice notice-danger">
        복원 실행 전 현재 DB는 자동 안전 백업됩니다. 그래도 복원 파일과 체크섬을 확인한 뒤 진행하세요.
    </div>

    <div class="settings-card">
        <div class="settings-card-header">
            <h2>복원 가능한 전체 백업</h2>
            <a class="btn btn-secondary btn-sm" href="backup_center.php">백업 센터로 돌아가기</a>
        </div>
        <?php if (empty($files)): ?>
            <p class="empty-text">복원 가능한 전체 DB 백업 파일이 없습니다.</p>
        <?php else: ?>
            <div class="backup-file-list">
                <?php foreach ($files as $file): ?>
                    <article class="backup-file-card">
                        <div class="backup-file-main">
                            <strong><?php echo h($file['file_name']); ?></strong>
                            <small><?php echo h(date('Y-m-d H:i:s', (int)$file['modified_at'])); ?> · <?php echo number_format((int)$file['file_size']); ?> bytes</small>
                            <small>체크섬: <?php echo !empty($file['checksum']) ? h(substr((string)$file['checksum'], 0, 24)) : '없음'; ?></small>
                        </div>
                        <div class="backup-file-status">
                            <span class="status-badge <?php echo !empty($file['valid']) ? 'ok' : 'danger'; ?>"><?php echo !empty($file['valid']) ? '검증 통과' : '복원 차단'; ?></span>
                            <?php if (!empty($file['errors'])): ?><small><?php echo h(implode(' ', $file['errors'])); ?></small><?php endif; ?>
                        </div>
                        <div class="backup-file-actions">
                            <a href="backup_download.php?file=<?php echo urlencode($file['file_name']); ?>" class="btn btn-secondary btn-sm" data-no-pjax download>다운로드</a>
                            <?php if (!empty($file['valid'])): ?>
                                <form action="restore_run.php" method="POST" onsubmit="return confirm('정말 이 백업으로 전체 DB를 복원할까요? 현재 DB는 먼저 안전 백업됩니다.');">
                                    <?php echo csrfInput(); ?>
                                    <input type="hidden" name="backup_file" value="<?php echo h($file['file_name']); ?>">
                                    <input type="text" name="confirm_phrase" class="form-control danger-confirm-input" placeholder="복원합니다" required>
                                    <button type="submit" class="btn btn-danger btn-sm">전체 복원</button>
                                </form>
                            <?php endif; ?>
                        </div>
                    </article>
                <?php endforeach; ?>
            </div>
        <?php endif; ?>
    </div>
</div>
<?php renderFooter(); ?>
