Blame view

framework/dev/TestMailer.php 2.24 KB
0084d336   Administrator   Importers CRUD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
  <?php
  /**
   * @package framework
   * @subpackage email
   */
  class TestMailer extends Mailer {
  	protected $emailsSent = array();
  	
  	/**
  	 * Send a plain-text email.
  	 * TestMailer will merely record that the email was asked to be sent, without sending anything.
  	 */
  	public function sendPlain($to, $from, $subject, $plainContent, $attachedFiles = false, $customHeaders = false) {
  		$this->emailsSent[] = array(
  			'type' => 'plain',
  			'to' => $to,
  			'from' => $from,
  			'subject' => $subject,
  
  			'content' => $plainContent,
  			'plainContent' => $plainContent,
  
  			'attachedFiles' => $attachedFiles,
  			'customHeaders' => $customHeaders,
  		);
  		
  		return true;
  	}
  	
  	/**
  	 * Send a multi-part HTML email
  	 * TestMailer will merely record that the email was asked to be sent, without sending anything.
  	 */
  	public function sendHTML($to, $from, $subject, $htmlContent, $attachedFiles = false, $customHeaders = false,
  			$plainContent = false, $inlineImages = false) {
  
  		$this->emailsSent[] = array(
  			'type' => 'html',
  			'to' => $to,
  			'from' => $from,
  			'subject' => $subject,
  
  			'content' => $htmlContent,
  			'plainContent' => $plainContent,
  			'htmlContent' => $htmlContent,
  
  			'attachedFiles' => $attachedFiles,
  			'customHeaders' => $customHeaders,
  			'inlineImages' => $inlineImages,
  		);
  		
  		return true;
  	}
  	
  	/**
  	 * Clear the log of emails sent
  	 */
  	public function clearEmails() {
  		$this->emailsSent = array();
  	}
  	
  	/**
  	 * Search for an email that was sent.
  	 * All of the parameters can either be a string, or, if they start with "/", a PREG-compatible regular expression.
  	 * @param $to
  	 * @param $from
  	 * @param $subject
  	 * @param $content
  	 * @return array Contains the keys: 'type', 'to', 'from', 'subject', 'content', 'plainContent', 'attachedFiles',
  	 *               'customHeaders', 'htmlContent', 'inlineImages'
  	 */
  	public function findEmail($to, $from = null, $subject = null, $content = null) {
  		foreach($this->emailsSent as $email) {
  			$matched = true;
  
  			foreach(array('to','from','subject','content') as $field) {
  				if($value = $$field) {
  					if($value[0] == '/') $matched = preg_match($value, $email[$field]);
  					else $matched = ($value == $email[$field]);
  					if(!$matched) break;
  				}
  			}
  			
  			if($matched) return $email;
  		}
  	}
  
  
  }