diff --git a/app/classes/log.php b/app/classes/log.php index 66130a7..c1f92fd 100644 --- a/app/classes/log.php +++ b/app/classes/log.php @@ -29,14 +29,12 @@ class Log { } /** - * Delegate insertLog to underlying logger - * - * @param mixed $userId + * PSR-3 compatible log method + * @param string $level * @param string $message - * @param string|null $scope - * @return mixed True on success or error message + * @param array $context */ - public function insertLog($userId, string $message, ?string $scope = null) { - return $this->logger->insertLog($userId, $message, $scope); + public function log(string $level, string $message, array $context = []): void { + $this->logger->log($level, $message, $context); } } diff --git a/app/core/NullLogger.php b/app/core/NullLogger.php index 3651672..5bde2e5 100644 --- a/app/core/NullLogger.php +++ b/app/core/NullLogger.php @@ -8,17 +8,7 @@ namespace App\Core; class NullLogger { /** - * No-op insertLog. - * - * @param mixed $userId - * @param string $message - * @param string|null $type - * @return void - */ - public function insertLog($userId, string $message, ?string $type = null): void {} - - /** - * PSR-3 log stub. + * PSR-3 compatible log stub. * @param string $level * @param string $message * @param array $context diff --git a/app/helpers/logger_loader.php b/app/helpers/logger_loader.php index 2037a5b..6793bc2 100644 --- a/app/helpers/logger_loader.php +++ b/app/helpers/logger_loader.php @@ -4,7 +4,7 @@ * Returns a logger instance: plugin Log if available, otherwise NullLogger. * * @param mixed $database Database or DatabaseConnector instance. - * @return mixed Logger instance with insertLog() method. + * @return mixed Logger instance with PSR-3 log() compatible method. */ function getLoggerInstance($database) { if (class_exists('Log')) { diff --git a/plugins/logs/models/Log.php b/plugins/logs/models/Log.php index 24ce1b8..4ad4486 100644 --- a/plugins/logs/models/Log.php +++ b/plugins/logs/models/Log.php @@ -21,36 +21,6 @@ class Log { $this->db = $database->getConnection(); } - /** - * Insert a log event into the database. - * - * @param int $userId The ID of the user associated with the log event. - * @param string $message The log message to insert. - * @param string $scope The scope of the log event (e.g., 'user', 'system'). Default is 'user'. - * - * @return bool|string True on success, or an error message on failure. - */ - public function insertLog($userId, $message, $scope = 'user') { - try { - $sql = 'INSERT INTO log - (user_id, scope, message) - VALUES - (:user_id, :scope, :message)'; - - $query = $this->db->prepare($sql); - $query->execute([ - ':user_id' => $userId, - ':scope' => $scope, - ':message' => $message, - ]); - - return true; - - } catch (Exception $e) { - return $e->getMessage(); - } - } - /** * Retrieve log entries from the database. * @@ -67,8 +37,8 @@ class Log { $where_clauses = []; // Base query with user join - $base_sql = 'SELECT l.*, u.username - FROM log l + $base_sql = 'SELECT l.*, u.username + FROM log l LEFT JOIN user u ON l.user_id = u.id'; // Add scope condition @@ -120,10 +90,29 @@ class Log { return $query->fetchAll(PDO::FETCH_ASSOC); } - // PSR-3 style log method + /** + * PSR-3 style log method - inserts a log event into the database. + * + * @param string $level The log level (emergency, alert, critical, error, warning, notice, info, debug). + * @param string $message The log message to insert. + * @param string $scope The scope of the log event (e.g., 'user', 'system'). Default is 'system'. + */ public function log(string $level, string $message, array $context = []): void { $userId = $context['user_id'] ?? null; $scope = $context['scope'] ?? 'system'; - $this->insertLog($userId, "[$level] " . $message, $scope); + try { + $sql = 'INSERT INTO log + (user_id, scope, message) + VALUES + (:user_id, :scope, :message)'; + $query = $this->db->prepare($sql); + $query->execute([ + ':user_id' => $userId, + ':scope' => $scope, + ':message' => "[$level] " . $message, + ]); + } catch (Exception $e) { + // swallowing exceptions or here we could log to error log for testing + } } }