(no commit message)
[paste/515.git] / Classes / MailLogger.php
1 <?php\r
2 namespace Mogic\Extname;\r
3 \r
4 use \TYPO3\CMS\Core\Log\LogLevel;\r
5 use \TYPO3\CMS\Core\Utility\GeneralUtility;\r
6 \r
7 /**\r
8  * Log all mails sent via the TYPO3 Mailer\r
9  *\r
10  * @author Christian Weiske <weiske@mogic.com>\r
11  */\r
12 class MailLogger implements \Swift_Events_SendListener\r
13 {\r
14     /**\r
15      * The Mailer class has just been initialized (__construct)\r
16      *\r
17      * @param object $mailer TYPO3 mailer instance\r
18      *\r
19      * @return void\r
20      */\r
21     public function postInitializeMailer(\TYPO3\CMS\Core\Mail\Mailer $mailer)\r
22     {\r
23         $mailer->registerPlugin($this);\r
24     }\r
25 \r
26     /**\r
27      * Invoked immediately before the Message is sent.\r
28      *\r
29      * @param Swift_Events_SendEvent $evt Event to handle\r
30      *\r
31      * @return void\r
32      */\r
33     public function beforeSendPerformed(\Swift_Events_SendEvent $evt)\r
34     {\r
35     }\r
36 \r
37     /**\r
38      * Invoked immediately after the Message is sent.\r
39      *\r
40      * @param Swift_Events_SendEvent $evt Event to handle\r
41      *\r
42      * @return void\r
43      */\r
44     public function sendPerformed(\Swift_Events_SendEvent $evt)\r
45     {\r
46         $level = LogLevel::INFO;\r
47         switch ($evt->getResult()) {\r
48         case \Swift_Events_SendEvent::RESULT_PENDING:\r
49             $status = 'pending';\r
50             break;\r
51         case \Swift_Events_SendEvent::RESULT_SPOOLED:\r
52             $status = 'spooled';\r
53             break;\r
54         case \Swift_Events_SendEvent::RESULT_SUCCESS:\r
55             $status = 'success';\r
56             break;\r
57         case \Swift_Events_SendEvent::RESULT_TENTATIVE:\r
58             $status = 'some failures';\r
59             $level = LogLevel::ERROR;\r
60             break;\r
61         case \Swift_Events_SendEvent::RESULT_FAILED:\r
62             $status = 'failed';\r
63             $level = LogLevel::ERROR;\r
64             break;\r
65         }\r
66 \r
67         $failed = $evt->getFailedRecipients();\r
68 \r
69         $to = $evt->getMessage()->getTo();\r
70 \r
71         $message = 'Mail sent:'\r
72             . ' status=' . $status\r
73             . ' to ' . implode(',', array_keys($to));\r
74         if (count($failed)) {\r
75             $message .= ' failed: ' . implode(',', $failed);\r
76         }\r
77 \r
78         /* @var $logger \TYPO3\CMS\Core\Log\Logger */\r
79         $logger = GeneralUtility::makeInstance('TYPO3\CMS\Core\Log\LogManager')\r
80             ->getLogger(__CLASS__);\r
81         $logger->log($level, $message);\r
82     }\r
83 }\r
84 ?>\r