46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php namespace Clockwork\DataSource;
 | |
| 
 | |
| use Clockwork\Request\Request;
 | |
| use Clockwork\Request\Timeline\Timeline;
 | |
| use Clockwork\Support\Swift\SwiftPluginClockworkTimeline;
 | |
| 
 | |
| use Swift_Mailer;
 | |
| 
 | |
| // Data source for Swift mailer, provides sent emails
 | |
| class SwiftDataSource extends DataSource
 | |
| {
 | |
| 	// Swift instance
 | |
| 	protected $swift;
 | |
| 
 | |
| 	// Clockwork timeline instance
 | |
| 	protected $timeline;
 | |
| 
 | |
| 	// Create a new data source, takes a Swift instance as an argument
 | |
| 	public function __construct(Swift_Mailer $swift)
 | |
| 	{
 | |
| 		$this->swift = $swift;
 | |
| 
 | |
| 		$this->timeline = new Timeline;
 | |
| 	}
 | |
| 
 | |
| 	// Listen to the email events
 | |
| 	public function listenToEvents()
 | |
| 	{
 | |
| 		$this->swift->registerPlugin(new SwiftPluginClockworkTimeline($this->timeline));
 | |
| 	}
 | |
| 
 | |
| 	// Adds send emails to the request
 | |
| 	public function resolve(Request $request)
 | |
| 	{
 | |
| 		$request->emailsData = array_merge($request->emailsData, $this->timeline->finalize());
 | |
| 
 | |
| 		return $request;
 | |
| 	}
 | |
| 
 | |
| 	// Reset the data source to an empty state, clearing any collected data
 | |
| 	public function reset()
 | |
| 	{
 | |
| 		$this->timeline = new Timeline;
 | |
| 	}
 | |
| }
 | 
