diff --git a/logs.php b/logs.php index 62f6669..fb25edf 100644 --- a/logs.php +++ b/logs.php @@ -19,6 +19,31 @@ if ($_SESSION['admin_id'] != $firstId) { exit; } +// Supprimer les logs de plus d'un mois +$db->exec('DELETE FROM admin_logs WHERE created_at < datetime("now", "-1 month")'); + +// Tableau de traduction des actions +$actionTranslations = [ + 'ADD_USER' => 'Ajouter un utilisateur', + 'EDIT_USER' => 'Modifier un utilisateur', + 'DELETE_USER' => 'Supprimer un utilisateur', + 'CREATE_FOLDER' => 'Créer un dossier', + 'EDIT_FOLDER' => 'Modifier un dossier', + 'DELETE_FOLDER' => 'Supprimer un dossier', + 'CREATE_PRIVATE_FOLDER' => 'Créer un dossier privé', + 'EDIT_PRIVATE_FOLDER' => 'Modifier un dossier privé', + 'DELETE_PRIVATE_FOLDER' => 'Supprimer un dossier privé', + 'UPLOAD_IMAGES' => 'Téléverser des images', + 'DELETE_IMAGES' => 'Supprimer des images', + 'MOVE_IMAGES' => 'Déplacer des images', + 'UPLOAD_PRIVATE_IMAGES' => 'Téléverser des images privées', + 'DELETE_PRIVATE_IMAGES' => 'Supprimer des images privées', + 'GENERATE_SHARE_LINK' => 'Générer un lien de partage', + 'CLEAN_EXPIRED_KEYS' => 'Nettoyer les clés expirées', + 'DELETE_SHARE_KEY' => 'Supprimer une clé de partage', + 'UPDATE_SETTINGS' => 'Modifier les paramètres' +]; + // Pagination $page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1; $perPage = 50; @@ -27,6 +52,7 @@ $offset = ($page - 1) * $perPage; // Filtres $actionType = isset($_GET['action_type']) ? $_GET['action_type'] : ''; $adminFilter = isset($_GET['admin']) ? intval($_GET['admin']) : 0; +$dateRange = isset($_GET['date_range']) ? $_GET['date_range'] : ''; // Construction de la requête $whereClause = []; @@ -42,6 +68,23 @@ if ($adminFilter) { $params[':admin_id'] = $adminFilter; } +if ($dateRange) { + switch ($dateRange) { + case '24h': + $whereClause[] = 'created_at >= datetime("now", "-1 day")'; + break; + case '48h': + $whereClause[] = 'created_at >= datetime("now", "-2 days")'; + break; + case '72h': + $whereClause[] = 'created_at >= datetime("now", "-3 days")'; + break; + case '1week': + $whereClause[] = 'created_at >= datetime("now", "-7 days")'; + break; + } +} + $whereSQL = !empty($whereClause) ? 'WHERE ' . implode(' AND ', $whereClause) : ''; // Récupérer le nombre total de logs @@ -74,6 +117,30 @@ while ($row = $result->fetchArray(SQLITE3_ASSOC)) { $logs[] = $row; } +function getLogActionClass($actionType) { + if (strpos(strtolower($actionType), 'create') !== false || + strpos(strtolower($actionType), 'add') !== false || + strpos(strtolower($actionType), 'upload') !== false || + strpos(strtolower($actionType), 'generate') !== false) { + return 'log-action-create'; + } + + if (strpos(strtolower($actionType), 'edit') !== false || + strpos(strtolower($actionType), 'update') !== false || + strpos(strtolower($actionType), 'modify') !== false || + strpos(strtolower($actionType), 'move') !== false) { + return 'log-action-edit'; + } + + if (strpos(strtolower($actionType), 'delete') !== false || + strpos(strtolower($actionType), 'remove') !== false || + strpos(strtolower($actionType), 'clean') !== false) { + return 'log-action-delete'; + } + + return ''; +} + // Récupérer la liste des admins pour le filtre $admins = []; $result = $db->query('SELECT id, username FROM admins ORDER BY username'); @@ -120,7 +187,7 @@ $config = getSiteConfig(); @@ -139,6 +206,17 @@ $config = getSiteConfig(); +