<?php use App\Core\Csrf;use App\Core\Permission; ?>
<link rel="stylesheet" href="/public/assets/css/cda-backups.css">
<section class="backup-hero"><div><span>CDA CORE</span><h1>Centre de sauvegarde</h1><p>État installé fidèle : code, base et documents métier, sans archives précédentes ni caches.</p></div><div class="backup-health"><b>●</b><div><strong><?= htmlspecialchars($dbName) ?></strong><small>Base détectée</small></div></div></section>
<section class="backup-summary"><article><span>Dernière sauvegarde</span><strong><?= $jobs ? htmlspecialchars(date('d/m/Y H:i',strtotime($jobs[0]['created_at']))) : 'Aucune' ?></strong></article><article><span>Sauvegardes</span><strong><?= count($jobs) ?></strong></article><article><span>Stockage</span><strong>Local Laragon</strong></article></section>
<?php if(Permission::can('backups.create')): ?><form method="post" action="/public/studio/sauvegardes/creer" class="backup-create"><?= Csrf::field() ?><div><h2>Nouvel instantané fidèle</h2><p>Inclut le code réellement installé, la base MySQL et les documents. Exclut les anciennes sauvegardes, mises à jour, caches, sessions et journaux.</p></div><button>Créer maintenant</button></form><?php endif; ?>
<?php $isLocal = strtolower((string)($_ENV['APP_ENV'] ?? 'production')) === 'local'; ?>
<?php if($isLocal && Permission::can('backups.download')): ?><form method="post" action="/public/studio/sauvegardes/export-developpeur" class="backup-create" onsubmit="return confirm('Créer un export développeur ZIP non chiffré ? Il sera expurgé des secrets et n’est autorisé qu’en local.');"><?= Csrf::field() ?><div><h2>Export développeur sécurisé</h2><p>ZIP non chiffré réservé au poste local. Inclut le code installé et la base SQL, mais exclut .env, clés, sauvegardes, journaux, sessions et caches.</p></div><button>Exporter pour développement</button></form><?php endif; ?>
<section class="backup-list"><header><h2>Historique</h2></header><?php if(!$jobs): ?><div class="empty">Aucune sauvegarde disponible.</div><?php endif; ?><?php foreach($jobs as $job): ?><article><div class="backup-icon">💾</div><div class="backup-main"><strong><?= htmlspecialchars(strtoupper($job['type_backup'])) ?> — <?= htmlspecialchars((string)$job['version_erp']) ?></strong><span><?= htmlspecialchars(date('d/m/Y H:i:s',strtotime($job['created_at']))) ?> · <?= htmlspecialchars((string)($job['cree_par_nom']?:'Système')) ?></span><small><?= htmlspecialchars((string)($job['message']?:'')) ?></small></div><div class="backup-size"><?= $job['taille_totale'] ? number_format($job['taille_totale']/1048576,2,',',' ').' Mo' : '—' ?></div><span class="status s-<?= htmlspecialchars($job['statut']) ?>"><?= htmlspecialchars($job['statut']) ?></span><div class="backup-actions"><?php if($job['statut']==='succes'&&Permission::can('backups.download')): ?><a href="/public/studio/sauvegardes/telecharger?id=<?= (int)$job['id'] ?>">Télécharger</a><?php endif; ?><?php if($job['statut']==='succes'&&Permission::can('backups.restore')): ?><form method="post" action="/public/studio/sauvegardes/restaurer" onsubmit="return confirm('Restaurer cette sauvegarde complète ?');"><?= Csrf::field() ?><input type="hidden" name="id" value="<?= (int)$job['id'] ?>"><button>Restaurer</button></form><?php endif; ?><?php if(Permission::can('backups.delete')): ?><form method="post" action="/public/studio/sauvegardes/supprimer" onsubmit="return confirm('Supprimer définitivement cette sauvegarde ?');"><?= Csrf::field() ?><input type="hidden" name="id" value="<?= (int)$job['id'] ?>"><button class="danger">Supprimer</button></form><?php endif; ?></div></article><?php endforeach; ?></section>
