mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 11:09:18 +02:00
- AdminLogger: JSON-lines → /var/log/xamxam.log (prod) / storage/logs/admin.log (dev) + best-effort DB mirror to admin_audit_log table - DB: admin_audit_log table, share_links.is_archived column - ShareLink: archive() replaces delete(), toggleActive() returns new state, listActive()/listArchived() split, validateLink blocks archived slugs - All action handlers wired: publish, unpublish, visibility, delete, csv/db export, tfe add/edit, tags, pages, apropos, form-help, access-request, maintenance, settings (formulaire toggles, objet types, smtp update), smtp-test - acces.php: archive button replaces delete; collapsible archived links section - setup-server.sh: provision /var/log/xamxam.log (www-data:xamxam 640)
33 lines
903 B
PHP
33 lines
903 B
PHP
<?php
|
|
/**
|
|
* Export the whole SQLite database as a file download.
|
|
*
|
|
* Thin dispatcher — delegates to ExportController.
|
|
*/
|
|
require_once __DIR__ . "/../../../bootstrap.php";
|
|
require_once __DIR__ . '/../../../src/AdminAuth.php';
|
|
AdminAuth::requireLogin();
|
|
|
|
require_once APP_ROOT . '/src/Controllers/ExportController.php';
|
|
require_once APP_ROOT . '/src/AdminLogger.php';
|
|
$controller = ExportController::create();
|
|
|
|
$dbPath = $controller->getDatabasePath();
|
|
|
|
if (!file_exists($dbPath)) {
|
|
http_response_code(500);
|
|
exit('Base de données introuvable.');
|
|
}
|
|
|
|
$filename = 'xamxam-db-' . date('Y-m-d') . '.sqlite';
|
|
|
|
header('Content-Type: application/octet-stream');
|
|
header('Content-Disposition: attachment; filename="' . $filename . '"');
|
|
header('Content-Length: ' . filesize($dbPath));
|
|
header('Cache-Control: no-cache, must-revalidate');
|
|
|
|
AdminLogger::make()->logDbExport();
|
|
|
|
readfile($dbPath);
|
|
exit;
|