vendor/symfony/workflow/EventListener/AuditTrailListener.php line 37

Open in your IDE?
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\Workflow\EventListener;
  11. use Psr\Log\LoggerInterface;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\Workflow\Event\Event;
  14. /**
  15. * @author Grégoire Pineau <lyrixx@lyrixx.info>
  16. */
  17. class AuditTrailListener implements EventSubscriberInterface
  18. {
  19. private $logger;
  20. public function __construct(LoggerInterface $logger)
  21. {
  22. $this->logger = $logger;
  23. }
  24. public function onLeave(Event $event)
  25. {
  26. foreach ($event->getTransition()->getFroms() as $place) {
  27. $this->logger->info(sprintf('Leaving "%s" for subject of class "%s" in workflow "%s".', $place, \get_class($event->getSubject()), $event->getWorkflowName()));
  28. }
  29. }
  30. public function onTransition(Event $event)
  31. {
  32. $this->logger->info(sprintf('Transition "%s" for subject of class "%s" in workflow "%s".', $event->getTransition()->getName(), \get_class($event->getSubject()), $event->getWorkflowName()));
  33. }
  34. public function onEnter(Event $event)
  35. {
  36. foreach ($event->getTransition()->getTos() as $place) {
  37. $this->logger->info(sprintf('Entering "%s" for subject of class "%s" in workflow "%s".', $place, \get_class($event->getSubject()), $event->getWorkflowName()));
  38. }
  39. }
  40. public static function getSubscribedEvents()
  41. {
  42. return [
  43. 'workflow.leave' => ['onLeave'],
  44. 'workflow.transition' => ['onTransition'],
  45. 'workflow.enter' => ['onEnter'],
  46. ];
  47. }
  48. }