1. sfMailerMessageLoggerPlugin.class.php
  2. /** * sfMailerMessageLoggerPlugin is a Swift plugin to log all sent messages. * * @package symfony * @subpackage mailer * @author Fabien Potencier * @version SVN: $Id: sfMailerMessageLoggerPlugin.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ */
  3. class sfMailerMessageLoggerPlugin implements Swift_Events_SendListener
  4. {
  5. protected
  6. $messages = array(),
  7. $dispatcher = null;
  8. /**
  9. * Constructor.
  10. *
  11. * @param sfEventDispatcher $dispatcher An event dispatcher instance
  12. */
  13. public function __construct(sfEventDispatcher $dispatcher)
  14. {
  15. $this->dispatcher = $dispatcher;
  16. }
  17. /**
  18. * Clears all the messages.
  19. */
  20. public function clear()
  21. {
  22. $this->messages = array();
  23. }
  24. /**
  25. * Gets all logged messages.
  26. *
  27. * @return array An array of message instances
  28. */
  29. public function getMessages()
  30. {
  31. return $this->messages;
  32. }
  33. /**
  34. * Returns the number of logged messages.
  35. *
  36. * @return int The number if logged messages
  37. */
  38. public function countMessages()
  39. {
  40. return count($this->messages);
  41. }
  42. /**
  43. * Invoked immediately before the Message is sent.
  44. *
  45. * @param Swift_Events_SendEvent $evt
  46. */
  47. public function beforeSendPerformed(Swift_Events_SendEvent $evt)
  48. {
  49. $this->messages[] = $message = clone $evt->getMessage();
  50. $to = null === $message->getTo() ? '' : implode(', ', array_keys($message->getTo()));
  51. $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Sending email "%s" to "%s"', $message->getSubject(), $to))));
  52. }
  53. /**
  54. * Invoked immediately after the Message is sent.
  55. *
  56. * @param Swift_Events_SendEvent $evt
  57. */
  58. public function sendPerformed(Swift_Events_SendEvent $evt)
  59. {
  60. }
  61. }

Debug toolbar