1<?php 2 3/* 4 * This file is part of SwiftMailer. 5 * (c) 2004-2009 Chris Corbyn 6 * 7 * For the full copyright and license information, please view the LICENSE 8 * file that was distributed with this source code. 9 */ 10 11 12/** 13 * Does real time reporting of pass/fail for each recipient. 14 * @package Swift 15 * @subpackage Plugins 16 * @author Chris Corbyn 17 */ 18class Swift_Plugins_ReporterPlugin 19 implements Swift_Events_SendListener 20{ 21 22 /** 23 * The reporter backend which takes notifications. 24 * @var Swift_Plugin_Reporter 25 * @access private 26 */ 27 private $_reporter; 28 29 /** 30 * Create a new ReporterPlugin using $reporter. 31 * @param Swift_Plugins_Reporter $reporter 32 */ 33 public function __construct(Swift_Plugins_Reporter $reporter) 34 { 35 $this->_reporter = $reporter; 36 } 37 38 /** 39 * Not used. 40 */ 41 public function beforeSendPerformed(Swift_Events_SendEvent $evt) 42 { 43 } 44 45 /** 46 * Invoked immediately after the Message is sent. 47 * @param Swift_Events_SendEvent $evt 48 */ 49 public function sendPerformed(Swift_Events_SendEvent $evt) 50 { 51 $message = $evt->getMessage(); 52 $failures = array_flip($evt->getFailedRecipients()); 53 foreach ((array) $message->getTo() as $address => $null) 54 { 55 $this->_reporter->notify( 56 $message, $address, (array_key_exists($address, $failures) 57 ? Swift_Plugins_Reporter::RESULT_FAIL 58 : Swift_Plugins_Reporter::RESULT_PASS) 59 ); 60 } 61 foreach ((array) $message->getCc() as $address => $null) 62 { 63 $this->_reporter->notify( 64 $message, $address, (array_key_exists($address, $failures) 65 ? Swift_Plugins_Reporter::RESULT_FAIL 66 : Swift_Plugins_Reporter::RESULT_PASS) 67 ); 68 } 69 foreach ((array) $message->getBcc() as $address => $null) 70 { 71 $this->_reporter->notify( 72 $message, $address, (array_key_exists($address, $failures) 73 ? Swift_Plugins_Reporter::RESULT_FAIL 74 : Swift_Plugins_Reporter::RESULT_PASS) 75 ); 76 } 77 } 78 79} 80