Init Git Prod Mars 2026

This commit is contained in:
Oleg Barykin committed 2026-03-05 10:25:39 +01:00
commit d81efe93b1
362 files changed
+86627

No files matched your search

+130
View File
@@ -0,0 +1,130 @@
<?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>