Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
199 lars 1
<?php namespace Clockwork\Support\Swift;
2
 
3
use Clockwork\Request\Timeline\Timeline as ClockworkTimeline;
4
 
5
use Swift_Events_SendEvent;
6
use Swift_Events_SendListener;
7
 
8
// Adds records of sent email to the Clockwork timeline
9
class SwiftPluginClockworkTimeline implements Swift_Events_SendListener
10
{
11
	// Clockwork timeline instance
12
	protected $timeline;
13
 
14
	public function __construct(ClockworkTimeline $timeline)
15
	{
16
		$this->timeline = $timeline;
17
	}
18
 
19
	// Invoked immediately before a message is sent
20
	public function beforeSendPerformed(Swift_Events_SendEvent $evt)
21
	{
22
		$message = $evt->getMessage();
23
 
24
		$headers = [];
25
		foreach ($message->getHeaders()->getAll() as $header) {
26
			$headers[$header->getFieldName()] = $header->getFieldBody();
27
		}
28
 
29
		$this->timeline->event('Sending an email message', [
30
			'name'  => 'email ' . $message->getId(),
31
			'start' => $time = microtime(true),
32
			'data'  => [
33
				'from'    => $this->addressToString($message->getFrom()),
34
				'to'      => $this->addressToString($message->getTo()),
35
				'subject' => $message->getSubject(),
36
				'headers' => $headers
37
			]
38
		]);
39
	}
40
 
41
	// Invoked immediately after a message is sent
42
	public function sendPerformed(Swift_Events_SendEvent $evt)
43
	{
44
		$message = $evt->getMessage();
45
 
46
		$this->timeline->event('email ' . $message->getId())->end();
47
	}
48
 
49
	protected function addressToString($address)
50
	{
51
		if (! $address) return;
52
 
53
		foreach ($address as $email => $name) {
54
			$address[$email] = $name ? "$name <$email>" : $email;
55
		}
56
 
57
		return implode(', ', $address);
58
	}
59
}