Files
2026-03-05 10:25:39 +01:00

131 lines
5.2 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
if (($_GET['page'] ?? '') !== 'maintenance') return;
if (session_status() !== PHP_SESSION_ACTIVE) session_start();
$roles = (array)($_SESSION['role'] ?? []);
if (!in_array('admin', $roles, true)) {
echo '<div class="container my-4"><div class="alert alert-danger">'.htmlspecialchars(($translations['non_autorise'] ?? 'Accès refusé.'), ENT_QUOTES, 'UTF-8').'</div></div>';
return;
}
$e = static fn($s) => htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8');
$siteRoot = realpath(__DIR__ . '/../../');
$statDir = function($path){
$n=0; $s=0;
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS));
foreach($it as $f){
if($f->isFile()){ $n++; $s += $f->getSize(); }
}
return [$n,$s];
};
$uploads = $siteRoot.'/messages/uploads';
$backups = $siteRoot.'/backups/db';
$logsDir = $siteRoot.'/logs';
@is_dir($backups) || @mkdir($backups,0755,true);
$uploadsStat = is_dir($uploads) ? $statDir($uploads) : [0,0];
$backupsList = array_map('basename', glob($backups.'/db_*.sql*') ?: []);
usort($backupsList, fn($a,$b)=>strcmp($b,$a));
$lastBackup = $backupsList[0] ?? ($translations['maint_none'] ?? '(aucun)');
?>
<div class="shadow p-4 rounded bg-light">
<div class="container my-4">
<h3 class="mb-3"><?= $e($translations['maintenance'] ?? 'Centre de maintenance') ?></h3>
<div class="row g-3">
<div class="col-md-6">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title"><?= $e($translations['backup_db'] ?? 'Sauvegardes DB') ?></h5>
<p class="mb-1">
<strong><?= $e($translations['maint_last_backup'] ?? 'Dernier backup:') ?></strong>
<?= $e($lastBackup) ?>
</p>
<p class="text-muted small">
<?= $e($translations['maint_folder'] ?? 'Dossier:') ?>
<code><?= $e($backups) ?></code>
</p>
<a class="btn btn-dark" href="?page=backup_db">
<?= $e($translations['maint_manage_backups'] ?? 'Gérer les sauvegardes') ?>
</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title"><?= $e($translations['maint_uploads_messaging'] ?? 'Uploads messagerie') ?></h5>
<p class="mb-1">
<strong><?= $e($translations['maint_files'] ?? 'Fichiers:') ?></strong>
<?= (int)$uploadsStat[0] ?>
— <strong><?= $e($translations['maint_size'] ?? 'Taille:') ?></strong>
<?= number_format($uploadsStat[1]/1024/1024, 2) ?> MB
</p>
<p class="text-muted small">
<?= $e($translations['maint_folder'] ?? 'Dossier:') ?>
<code><?= $e($uploads) ?></code>
</p>
<a class="btn btn-outline-dark" href="?page=purger_mess_upload">
<?= $e($translations['purger_mess_upload'] ?? 'Purger orphelins') ?>
</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title"><?= $e($translations['purger_messages'] ?? 'Conversations supprimées') ?></h5>
<p class="text-muted small"><?= $e($translations['maint_purge_conversations_help'] ?? 'Supprimer définitivement les conversations retirées des deux côtés.') ?></p>
<a class="btn btn-outline-dark" href="?page=purge_conversations">
<?= $e($translations['maint_open'] ?? 'Ouvrir') ?>
</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title"><?= $e($translations['afficher_logs'] ?? 'Journaux & erreurs') ?></h5>
<p class="text-muted small"><?= $e($translations['maint_logs_help'] ?? 'Consulter, télécharger, vider, appliquer la rotation.') ?></p>
<a class="btn btn-outline-dark" href="?page=logs">
<?= $e($translations['maint_view_logs'] ?? 'Voir les logs') ?>
</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title"><?= $e($translations['cleanup_rdv'] ?? 'Nettoyage RDV') ?></h5>
<p class="text-muted small"><?= $e($translations['maint_cleanup_rdv_help'] ?? 'Lister & purger les rendez-vous non désirés.') ?></p>
<a class="btn btn-outline-dark" href="?page=cleanup_rdv">
<?= $e($translations['maint_open'] ?? 'Ouvrir') ?>
</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title"><?= $e($translations['audit'] ?? 'Journal d’audit') ?></h5>
<p class="text-muted small"><?= $e($translations['maint_audit_help'] ?? 'Historique des actions administrateur.') ?></p>
<a class="btn btn-outline-dark" href="?page=audit">
<?= $e($translations['maint_consult'] ?? 'Consulter') ?>
</a>
</div>
</div>
</div>
</div>
</div>
</div>