. */ namespace SP\Providers\Log; use SP\Core\Events\Event; use SP\Core\Events\EventReceiver; use SP\DataModel\EventlogData; use SP\Providers\EventsTrait; use SP\Providers\Provider; use SP\Services\EventLog\EventlogService; use SplSubject; /** * Class LogHandler * * @package SP\Providers\Log */ class LogHandler extends Provider implements EventReceiver { use EventsTrait; const EVENTS = [ 'create.', 'delete.', 'edit.', 'exception', 'save.', 'show.account.pass', 'show.account.link', 'copy.account.pass', 'clear.eventlog', 'login.', 'logout', 'track.', 'acl.deny', 'check.tempMasterPassword', 'expire.tempMasterPassword', 'refresh.masterPassword', 'update.', 'import.ldap.', 'run.', 'send.mail', 'show.authToken' ]; /** * @var EventlogService */ protected $eventlogService; /** * @var string */ protected $events; /** * Receive update from subject * * @link http://php.net/manual/en/splobserver.update.php * @param SplSubject $subject
* The SplSubject notifying the observer of an update. *
* @return void * @since 5.1.0 */ public function update(SplSubject $subject) { // TODO: Implement update() method. } /** * Inicialización del observador */ public function init() { // TODO: Implement init() method. } /** * Evento de actualización * * @param string $eventType Nombre del evento * @param Event $event Objeto del evento */ public function updateEvent($eventType, Event $event) { $eventlogData = new EventlogData(); $eventlogData->setAction($eventType); $eventlogData->setLevel('INFO'); if (($e = $event->getSource()) instanceof \Exception) { /** @var \Exception $e */ $eventlogData->setDescription(__($e->getMessage())); $eventlogData->setLevel('ERROR'); } elseif (($eventMessage = $event->getEventMessage()) !== null) { $eventlogData->setDescription($eventMessage->composeText()); } try { $this->eventlogService->create($eventlogData); } catch (\Exception $e) { processException($e); } } /** * Devuelve los eventos que implementa el observador en formato cadena * * @return string */ public function getEventsString() { return $this->events; } /** * Devuelve los eventos que implementa el observador * * @return array */ public function getEvents() { return self::EVENTS; } protected function initialize() { $this->eventlogService = $this->dic->get(EventlogService::class); $configEvents = $this->config->getConfigData()->getLogEvents(); if (count($configEvents) === 0) { $this->events = $this->parseEventsToRegex(self::EVENTS); } else { $this->events = $this->parseEventsToRegex($configEvents); } } }