| Current Path : /var/www/clients/client3/web2/web/lists/admin/plugins/Common/ |
| Current File : /var/www/clients/client3/web2/web/lists/admin/plugins/Common/UniqueLogger.php |
<?php
/*
* CommonPlugin for phplist
*
* This file is a part of CommonPlugin.
*
* @category phplist
* @package CommonPlugin
* @author Duncan Cameron
* @copyright 2011-2023 Duncan Cameron
* @license http://www.gnu.org/licenses/gpl.html GNU General Public License, Version 3
*/
/*
* This class wraps a Logger in order to log a message only once within a session.
*/
namespace phpList\plugin\Common;
use Psr\Log\LoggerInterface;
use Psr\Log\LoggerTrait;
class UniqueLogger implements LoggerInterface
{
use LoggerTrait;
private $logger;
public function __construct($logger)
{
$this->logger = $logger;
}
/**
* Extends the parent method by ensuring that a message is logged only once within a session.
*
* @param string $level
* @param string $message
* @param array $context
*/
public function log($level, $message, array $context = array())
{
if (!isset($_SESSION[__CLASS__])) {
$_SESSION[__CLASS__] = [];
}
$key = md5($message);
if (!isset($_SESSION[__CLASS__][$key])) {
$this->logger->log($level, $message, $context);
$_SESSION[__CLASS__][$key] = $message;
}
}
}