$userId, 'action' => $action, 'description' => $description, 'ip_address' => $_SERVER['REMOTE_ADDR'] ?? 'Unknown', 'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown' ]; $db->insert('activity_log', $data); return true; } /** * @param $userId * @param null $page * @param $limit */ public static function getActivityLog($userId = null, $page = 1, $limit = 10) { $db = Database::getInstance(); $offset = ($page - 1) * $limit; $conditions = []; $params = []; if ($userId) { $conditions[] = "a.user_id = ?"; $params[] = $userId; } $whereClause = empty($conditions) ? "" : " WHERE ".implode(' AND ', $conditions); // Get total count $countQuery = "SELECT COUNT(*) FROM activity_log a".$whereClause; $totalCount = $db->fetchColumn($countQuery, $params); // Get data with pagination $query = " SELECT a.*, u.username FROM activity_log a LEFT JOIN users u ON a.user_id = u.id $whereClause ORDER BY a.created_at DESC LIMIT ? OFFSET ? "; $queryParams = array_merge($params, [$limit, $offset]); $logs = $db->fetchAll($query, $queryParams); return [ 'logs' => $logs, 'pagination' => [ 'total' => $totalCount, 'page' => $page, 'limit' => $limit, 'pages' => ceil($totalCount / $limit) ] ]; } }