Completed
Branch develop (7eeef6)
by
unknown
23:28
created
lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php 1 patch
Indentation   +91 added lines, -91 removed lines patch added patch discarded remove patch
@@ -15,107 +15,107 @@
 block discarded – undo
15 15
  */
16 16
 class Swift_Mime_ContentEncoder_NativeQpContentEncoder implements Swift_Mime_ContentEncoder
17 17
 {
18
-    /**
19
-     * @var string|null
20
-     */
21
-    private $charset;
18
+	/**
19
+	 * @var string|null
20
+	 */
21
+	private $charset;
22 22
 
23
-    /**
24
-     * @param string|null $charset
25
-     */
26
-    public function __construct($charset = null)
27
-    {
28
-        $this->charset = $charset ?: 'utf-8';
29
-    }
23
+	/**
24
+	 * @param string|null $charset
25
+	 */
26
+	public function __construct($charset = null)
27
+	{
28
+		$this->charset = $charset ?: 'utf-8';
29
+	}
30 30
 
31
-    /**
32
-     * Notify this observer that the entity's charset has changed.
33
-     *
34
-     * @param string $charset
35
-     */
36
-    public function charsetChanged($charset)
37
-    {
38
-        $this->charset = $charset;
39
-    }
31
+	/**
32
+	 * Notify this observer that the entity's charset has changed.
33
+	 *
34
+	 * @param string $charset
35
+	 */
36
+	public function charsetChanged($charset)
37
+	{
38
+		$this->charset = $charset;
39
+	}
40 40
 
41
-    /**
42
-     * Encode $in to $out.
43
-     *
44
-     * @param Swift_OutputByteStream $os              to read from
45
-     * @param Swift_InputByteStream  $is              to write to
46
-     * @param int                    $firstLineOffset
47
-     * @param int                    $maxLineLength   0 indicates the default length for this encoding
48
-     *
49
-     * @throws RuntimeException
50
-     */
51
-    public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0)
52
-    {
53
-        if ('utf-8' !== $this->charset) {
54
-            throw new RuntimeException(sprintf('Charset "%s" not supported. NativeQpContentEncoder only supports "utf-8"', $this->charset));
55
-        }
41
+	/**
42
+	 * Encode $in to $out.
43
+	 *
44
+	 * @param Swift_OutputByteStream $os              to read from
45
+	 * @param Swift_InputByteStream  $is              to write to
46
+	 * @param int                    $firstLineOffset
47
+	 * @param int                    $maxLineLength   0 indicates the default length for this encoding
48
+	 *
49
+	 * @throws RuntimeException
50
+	 */
51
+	public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0)
52
+	{
53
+		if ('utf-8' !== $this->charset) {
54
+			throw new RuntimeException(sprintf('Charset "%s" not supported. NativeQpContentEncoder only supports "utf-8"', $this->charset));
55
+		}
56 56
 
57
-        $string = '';
57
+		$string = '';
58 58
 
59
-        while (false !== $bytes = $os->read(8192)) {
60
-            $string .= $bytes;
61
-        }
59
+		while (false !== $bytes = $os->read(8192)) {
60
+			$string .= $bytes;
61
+		}
62 62
 
63
-        $is->write($this->encodeString($string));
64
-    }
63
+		$is->write($this->encodeString($string));
64
+	}
65 65
 
66
-    /**
67
-     * Get the MIME name of this content encoding scheme.
68
-     *
69
-     * @return string
70
-     */
71
-    public function getName()
72
-    {
73
-        return 'quoted-printable';
74
-    }
66
+	/**
67
+	 * Get the MIME name of this content encoding scheme.
68
+	 *
69
+	 * @return string
70
+	 */
71
+	public function getName()
72
+	{
73
+		return 'quoted-printable';
74
+	}
75 75
 
76
-    /**
77
-     * Encode a given string to produce an encoded string.
78
-     *
79
-     * @param string $string
80
-     * @param int    $firstLineOffset if first line needs to be shorter
81
-     * @param int    $maxLineLength   0 indicates the default length for this encoding
82
-     *
83
-     * @throws RuntimeException
84
-     *
85
-     * @return string
86
-     */
87
-    public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0)
88
-    {
89
-        if ('utf-8' !== $this->charset) {
90
-            throw new RuntimeException(sprintf('Charset "%s" not supported. NativeQpContentEncoder only supports "utf-8"', $this->charset));
91
-        }
76
+	/**
77
+	 * Encode a given string to produce an encoded string.
78
+	 *
79
+	 * @param string $string
80
+	 * @param int    $firstLineOffset if first line needs to be shorter
81
+	 * @param int    $maxLineLength   0 indicates the default length for this encoding
82
+	 *
83
+	 * @throws RuntimeException
84
+	 *
85
+	 * @return string
86
+	 */
87
+	public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0)
88
+	{
89
+		if ('utf-8' !== $this->charset) {
90
+			throw new RuntimeException(sprintf('Charset "%s" not supported. NativeQpContentEncoder only supports "utf-8"', $this->charset));
91
+		}
92 92
 
93
-        return $this->standardize(quoted_printable_encode($string));
94
-    }
93
+		return $this->standardize(quoted_printable_encode($string));
94
+	}
95 95
 
96
-    /**
97
-     * Make sure CRLF is correct and HT/SPACE are in valid places.
98
-     *
99
-     * @param string $string
100
-     *
101
-     * @return string
102
-     */
103
-    protected function standardize($string)
104
-    {
105
-        // transform CR or LF to CRLF
106
-        $string = preg_replace('~=0D(?!=0A)|(?<!=0D)=0A~', '=0D=0A', $string);
107
-        // transform =0D=0A to CRLF
108
-        $string = str_replace(["\t=0D=0A", ' =0D=0A', '=0D=0A'], ["=09\r\n", "=20\r\n", "\r\n"], $string);
96
+	/**
97
+	 * Make sure CRLF is correct and HT/SPACE are in valid places.
98
+	 *
99
+	 * @param string $string
100
+	 *
101
+	 * @return string
102
+	 */
103
+	protected function standardize($string)
104
+	{
105
+		// transform CR or LF to CRLF
106
+		$string = preg_replace('~=0D(?!=0A)|(?<!=0D)=0A~', '=0D=0A', $string);
107
+		// transform =0D=0A to CRLF
108
+		$string = str_replace(["\t=0D=0A", ' =0D=0A', '=0D=0A'], ["=09\r\n", "=20\r\n", "\r\n"], $string);
109 109
 
110
-        switch (\ord(substr($string, -1))) {
111
-            case 0x09:
112
-                $string = substr_replace($string, '=09', -1);
113
-                break;
114
-            case 0x20:
115
-                $string = substr_replace($string, '=20', -1);
116
-                break;
117
-        }
110
+		switch (\ord(substr($string, -1))) {
111
+			case 0x09:
112
+				$string = substr_replace($string, '=09', -1);
113
+				break;
114
+			case 0x20:
115
+				$string = substr_replace($string, '=20', -1);
116
+				break;
117
+		}
118 118
 
119
-        return $string;
120
-    }
119
+		return $string;
120
+	}
121 121
 }
Please login to merge, or discard this patch.
swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php 1 patch
Indentation   +67 added lines, -67 removed lines patch added patch discarded remove patch
@@ -17,80 +17,80 @@
 block discarded – undo
17 17
  */
18 18
 class Swift_Mime_ContentEncoder_QpContentEncoderProxy implements Swift_Mime_ContentEncoder
19 19
 {
20
-    /**
21
-     * @var Swift_Mime_ContentEncoder_QpContentEncoder
22
-     */
23
-    private $safeEncoder;
20
+	/**
21
+	 * @var Swift_Mime_ContentEncoder_QpContentEncoder
22
+	 */
23
+	private $safeEncoder;
24 24
 
25
-    /**
26
-     * @var Swift_Mime_ContentEncoder_NativeQpContentEncoder
27
-     */
28
-    private $nativeEncoder;
25
+	/**
26
+	 * @var Swift_Mime_ContentEncoder_NativeQpContentEncoder
27
+	 */
28
+	private $nativeEncoder;
29 29
 
30
-    /**
31
-     * @var string|null
32
-     */
33
-    private $charset;
30
+	/**
31
+	 * @var string|null
32
+	 */
33
+	private $charset;
34 34
 
35
-    /**
36
-     * Constructor.
37
-     *
38
-     * @param string|null $charset
39
-     */
40
-    public function __construct(Swift_Mime_ContentEncoder_QpContentEncoder $safeEncoder, Swift_Mime_ContentEncoder_NativeQpContentEncoder $nativeEncoder, $charset)
41
-    {
42
-        $this->safeEncoder = $safeEncoder;
43
-        $this->nativeEncoder = $nativeEncoder;
44
-        $this->charset = $charset;
45
-    }
35
+	/**
36
+	 * Constructor.
37
+	 *
38
+	 * @param string|null $charset
39
+	 */
40
+	public function __construct(Swift_Mime_ContentEncoder_QpContentEncoder $safeEncoder, Swift_Mime_ContentEncoder_NativeQpContentEncoder $nativeEncoder, $charset)
41
+	{
42
+		$this->safeEncoder = $safeEncoder;
43
+		$this->nativeEncoder = $nativeEncoder;
44
+		$this->charset = $charset;
45
+	}
46 46
 
47
-    /**
48
-     * Make a deep copy of object.
49
-     */
50
-    public function __clone()
51
-    {
52
-        $this->safeEncoder = clone $this->safeEncoder;
53
-        $this->nativeEncoder = clone $this->nativeEncoder;
54
-    }
47
+	/**
48
+	 * Make a deep copy of object.
49
+	 */
50
+	public function __clone()
51
+	{
52
+		$this->safeEncoder = clone $this->safeEncoder;
53
+		$this->nativeEncoder = clone $this->nativeEncoder;
54
+	}
55 55
 
56
-    /**
57
-     * {@inheritdoc}
58
-     */
59
-    public function charsetChanged($charset)
60
-    {
61
-        $this->charset = $charset;
62
-        $this->safeEncoder->charsetChanged($charset);
63
-    }
56
+	/**
57
+	 * {@inheritdoc}
58
+	 */
59
+	public function charsetChanged($charset)
60
+	{
61
+		$this->charset = $charset;
62
+		$this->safeEncoder->charsetChanged($charset);
63
+	}
64 64
 
65
-    /**
66
-     * {@inheritdoc}
67
-     */
68
-    public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0)
69
-    {
70
-        $this->getEncoder()->encodeByteStream($os, $is, $firstLineOffset, $maxLineLength);
71
-    }
65
+	/**
66
+	 * {@inheritdoc}
67
+	 */
68
+	public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0)
69
+	{
70
+		$this->getEncoder()->encodeByteStream($os, $is, $firstLineOffset, $maxLineLength);
71
+	}
72 72
 
73
-    /**
74
-     * {@inheritdoc}
75
-     */
76
-    public function getName()
77
-    {
78
-        return 'quoted-printable';
79
-    }
73
+	/**
74
+	 * {@inheritdoc}
75
+	 */
76
+	public function getName()
77
+	{
78
+		return 'quoted-printable';
79
+	}
80 80
 
81
-    /**
82
-     * {@inheritdoc}
83
-     */
84
-    public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0)
85
-    {
86
-        return $this->getEncoder()->encodeString($string, $firstLineOffset, $maxLineLength);
87
-    }
81
+	/**
82
+	 * {@inheritdoc}
83
+	 */
84
+	public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0)
85
+	{
86
+		return $this->getEncoder()->encodeString($string, $firstLineOffset, $maxLineLength);
87
+	}
88 88
 
89
-    /**
90
-     * @return Swift_Mime_ContentEncoder
91
-     */
92
-    private function getEncoder()
93
-    {
94
-        return 'utf-8' === $this->charset ? $this->nativeEncoder : $this->safeEncoder;
95
-    }
89
+	/**
90
+	 * @return Swift_Mime_ContentEncoder
91
+	 */
92
+	private function getEncoder()
93
+	{
94
+		return 'utf-8' === $this->charset ? $this->nativeEncoder : $this->safeEncoder;
95
+	}
96 96
 }
Please login to merge, or discard this patch.
htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php 1 patch
Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -15,27 +15,27 @@
 block discarded – undo
15 15
  */
16 16
 class Swift_Mime_EmbeddedFile extends Swift_Mime_Attachment
17 17
 {
18
-    /**
19
-     * Creates a new Attachment with $headers and $encoder.
20
-     *
21
-     * @param array $mimeTypes optional
22
-     */
23
-    public function __construct(Swift_Mime_SimpleHeaderSet $headers, Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache, Swift_IdGenerator $idGenerator, $mimeTypes = [])
24
-    {
25
-        parent::__construct($headers, $encoder, $cache, $idGenerator, $mimeTypes);
26
-        $this->setDisposition('inline');
27
-        $this->setId($this->getId());
28
-    }
18
+	/**
19
+	 * Creates a new Attachment with $headers and $encoder.
20
+	 *
21
+	 * @param array $mimeTypes optional
22
+	 */
23
+	public function __construct(Swift_Mime_SimpleHeaderSet $headers, Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache, Swift_IdGenerator $idGenerator, $mimeTypes = [])
24
+	{
25
+		parent::__construct($headers, $encoder, $cache, $idGenerator, $mimeTypes);
26
+		$this->setDisposition('inline');
27
+		$this->setId($this->getId());
28
+	}
29 29
 
30
-    /**
31
-     * Get the nesting level of this EmbeddedFile.
32
-     *
33
-     * Returns {@see LEVEL_RELATED}.
34
-     *
35
-     * @return int
36
-     */
37
-    public function getNestingLevel()
38
-    {
39
-        return self::LEVEL_RELATED;
40
-    }
30
+	/**
31
+	 * Get the nesting level of this EmbeddedFile.
32
+	 *
33
+	 * Returns {@see LEVEL_RELATED}.
34
+	 *
35
+	 * @return int
36
+	 */
37
+	public function getNestingLevel()
38
+	{
39
+		return self::LEVEL_RELATED;
40
+	}
41 41
 }
Please login to merge, or discard this patch.
htdocs/includes/swiftmailer/lib/classes/Swift/Mime/IdGenerator.php 1 patch
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -13,42 +13,42 @@
 block discarded – undo
13 13
  */
14 14
 class Swift_Mime_IdGenerator implements Swift_IdGenerator
15 15
 {
16
-    private $idRight;
16
+	private $idRight;
17 17
 
18
-    /**
19
-     * @param string $idRight
20
-     */
21
-    public function __construct($idRight)
22
-    {
23
-        $this->idRight = $idRight;
24
-    }
18
+	/**
19
+	 * @param string $idRight
20
+	 */
21
+	public function __construct($idRight)
22
+	{
23
+		$this->idRight = $idRight;
24
+	}
25 25
 
26
-    /**
27
-     * Returns the right-hand side of the "@" used in all generated IDs.
28
-     *
29
-     * @return string
30
-     */
31
-    public function getIdRight()
32
-    {
33
-        return $this->idRight;
34
-    }
26
+	/**
27
+	 * Returns the right-hand side of the "@" used in all generated IDs.
28
+	 *
29
+	 * @return string
30
+	 */
31
+	public function getIdRight()
32
+	{
33
+		return $this->idRight;
34
+	}
35 35
 
36
-    /**
37
-     * Sets the right-hand side of the "@" to use in all generated IDs.
38
-     *
39
-     * @param string $idRight
40
-     */
41
-    public function setIdRight($idRight)
42
-    {
43
-        $this->idRight = $idRight;
44
-    }
36
+	/**
37
+	 * Sets the right-hand side of the "@" to use in all generated IDs.
38
+	 *
39
+	 * @param string $idRight
40
+	 */
41
+	public function setIdRight($idRight)
42
+	{
43
+		$this->idRight = $idRight;
44
+	}
45 45
 
46
-    /**
47
-     * @return string
48
-     */
49
-    public function generateId()
50
-    {
51
-        // 32 hex values for the left part
52
-        return bin2hex(random_bytes(16)).'@'.$this->idRight;
53
-    }
46
+	/**
47
+	 * @return string
48
+	 */
49
+	public function generateId()
50
+	{
51
+		// 32 hex values for the left part
52
+		return bin2hex(random_bytes(16)).'@'.$this->idRight;
53
+	}
54 54
 }
Please login to merge, or discard this patch.
htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php 1 patch
Indentation   +624 added lines, -624 removed lines patch added patch discarded remove patch
@@ -15,628 +15,628 @@
 block discarded – undo
15 15
  */
16 16
 class Swift_Mime_SimpleMessage extends Swift_Mime_MimePart
17 17
 {
18
-    const PRIORITY_HIGHEST = 1;
19
-    const PRIORITY_HIGH = 2;
20
-    const PRIORITY_NORMAL = 3;
21
-    const PRIORITY_LOW = 4;
22
-    const PRIORITY_LOWEST = 5;
23
-
24
-    /**
25
-     * Create a new SimpleMessage with $headers, $encoder and $cache.
26
-     *
27
-     * @param string $charset
28
-     */
29
-    public function __construct(Swift_Mime_SimpleHeaderSet $headers, Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache, Swift_IdGenerator $idGenerator, $charset = null)
30
-    {
31
-        parent::__construct($headers, $encoder, $cache, $idGenerator, $charset);
32
-        $this->getHeaders()->defineOrdering([
33
-            'Return-Path',
34
-            'Received',
35
-            'DKIM-Signature',
36
-            'DomainKey-Signature',
37
-            'Sender',
38
-            'Message-ID',
39
-            'Date',
40
-            'Subject',
41
-            'From',
42
-            'Reply-To',
43
-            'To',
44
-            'Cc',
45
-            'Bcc',
46
-            'MIME-Version',
47
-            'Content-Type',
48
-            'Content-Transfer-Encoding',
49
-            ]);
50
-        $this->getHeaders()->setAlwaysDisplayed(['Date', 'Message-ID', 'From']);
51
-        $this->getHeaders()->addTextHeader('MIME-Version', '1.0');
52
-        $this->setDate(new DateTimeImmutable());
53
-        $this->setId($this->getId());
54
-        $this->getHeaders()->addMailboxHeader('From');
55
-    }
56
-
57
-    /**
58
-     * Always returns {@link LEVEL_TOP} for a message instance.
59
-     *
60
-     * @return int
61
-     */
62
-    public function getNestingLevel()
63
-    {
64
-        return self::LEVEL_TOP;
65
-    }
66
-
67
-    /**
68
-     * Set the subject of this message.
69
-     *
70
-     * @param string $subject
71
-     *
72
-     * @return $this
73
-     */
74
-    public function setSubject($subject)
75
-    {
76
-        if (!$this->setHeaderFieldModel('Subject', $subject)) {
77
-            $this->getHeaders()->addTextHeader('Subject', $subject);
78
-        }
79
-
80
-        return $this;
81
-    }
82
-
83
-    /**
84
-     * Get the subject of this message.
85
-     *
86
-     * @return string
87
-     */
88
-    public function getSubject()
89
-    {
90
-        return $this->getHeaderFieldModel('Subject');
91
-    }
92
-
93
-    /**
94
-     * Set the date at which this message was created.
95
-     *
96
-     * @return $this
97
-     */
98
-    public function setDate(DateTimeInterface $dateTime)
99
-    {
100
-        if (!$this->setHeaderFieldModel('Date', $dateTime)) {
101
-            $this->getHeaders()->addDateHeader('Date', $dateTime);
102
-        }
103
-
104
-        return $this;
105
-    }
106
-
107
-    /**
108
-     * Get the date at which this message was created.
109
-     *
110
-     * @return DateTimeInterface
111
-     */
112
-    public function getDate()
113
-    {
114
-        return $this->getHeaderFieldModel('Date');
115
-    }
116
-
117
-    /**
118
-     * Set the return-path (the bounce address) of this message.
119
-     *
120
-     * @param string $address
121
-     *
122
-     * @return $this
123
-     */
124
-    public function setReturnPath($address)
125
-    {
126
-        if (!$this->setHeaderFieldModel('Return-Path', $address)) {
127
-            $this->getHeaders()->addPathHeader('Return-Path', $address);
128
-        }
129
-
130
-        return $this;
131
-    }
132
-
133
-    /**
134
-     * Get the return-path (bounce address) of this message.
135
-     *
136
-     * @return string
137
-     */
138
-    public function getReturnPath()
139
-    {
140
-        return $this->getHeaderFieldModel('Return-Path');
141
-    }
142
-
143
-    /**
144
-     * Set the sender of this message.
145
-     *
146
-     * This does not override the From field, but it has a higher significance.
147
-     *
148
-     * @param string $address
149
-     * @param string $name    optional
150
-     *
151
-     * @return $this
152
-     */
153
-    public function setSender($address, $name = null)
154
-    {
155
-        if (!\is_array($address) && isset($name)) {
156
-            $address = [$address => $name];
157
-        }
158
-
159
-        if (!$this->setHeaderFieldModel('Sender', (array) $address)) {
160
-            $this->getHeaders()->addMailboxHeader('Sender', (array) $address);
161
-        }
162
-
163
-        return $this;
164
-    }
165
-
166
-    /**
167
-     * Get the sender of this message.
168
-     *
169
-     * @return string
170
-     */
171
-    public function getSender()
172
-    {
173
-        return $this->getHeaderFieldModel('Sender');
174
-    }
175
-
176
-    /**
177
-     * Add a From: address to this message.
178
-     *
179
-     * If $name is passed this name will be associated with the address.
180
-     *
181
-     * @param string $address
182
-     * @param string $name    optional
183
-     *
184
-     * @return $this
185
-     */
186
-    public function addFrom($address, $name = null)
187
-    {
188
-        $current = $this->getFrom();
189
-        $current[$address] = $name;
190
-
191
-        return $this->setFrom($current);
192
-    }
193
-
194
-    /**
195
-     * Set the from address of this message.
196
-     *
197
-     * You may pass an array of addresses if this message is from multiple people.
198
-     *
199
-     * If $name is passed and the first parameter is a string, this name will be
200
-     * associated with the address.
201
-     *
202
-     * @param string|array $addresses
203
-     * @param string       $name      optional
204
-     *
205
-     * @return $this
206
-     */
207
-    public function setFrom($addresses, $name = null)
208
-    {
209
-        if (!\is_array($addresses) && isset($name)) {
210
-            $addresses = [$addresses => $name];
211
-        }
212
-
213
-        if (!$this->setHeaderFieldModel('From', (array) $addresses)) {
214
-            $this->getHeaders()->addMailboxHeader('From', (array) $addresses);
215
-        }
216
-
217
-        return $this;
218
-    }
219
-
220
-    /**
221
-     * Get the from address of this message.
222
-     *
223
-     * @return mixed
224
-     */
225
-    public function getFrom()
226
-    {
227
-        return $this->getHeaderFieldModel('From');
228
-    }
229
-
230
-    /**
231
-     * Add a Reply-To: address to this message.
232
-     *
233
-     * If $name is passed this name will be associated with the address.
234
-     *
235
-     * @param string $address
236
-     * @param string $name    optional
237
-     *
238
-     * @return $this
239
-     */
240
-    public function addReplyTo($address, $name = null)
241
-    {
242
-        $current = $this->getReplyTo();
243
-        $current[$address] = $name;
244
-
245
-        return $this->setReplyTo($current);
246
-    }
247
-
248
-    /**
249
-     * Set the reply-to address of this message.
250
-     *
251
-     * You may pass an array of addresses if replies will go to multiple people.
252
-     *
253
-     * If $name is passed and the first parameter is a string, this name will be
254
-     * associated with the address.
255
-     *
256
-     * @param mixed  $addresses
257
-     * @param string $name      optional
258
-     *
259
-     * @return $this
260
-     */
261
-    public function setReplyTo($addresses, $name = null)
262
-    {
263
-        if (!\is_array($addresses) && isset($name)) {
264
-            $addresses = [$addresses => $name];
265
-        }
266
-
267
-        if (!$this->setHeaderFieldModel('Reply-To', (array) $addresses)) {
268
-            $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses);
269
-        }
270
-
271
-        return $this;
272
-    }
273
-
274
-    /**
275
-     * Get the reply-to address of this message.
276
-     *
277
-     * @return string
278
-     */
279
-    public function getReplyTo()
280
-    {
281
-        return $this->getHeaderFieldModel('Reply-To');
282
-    }
283
-
284
-    /**
285
-     * Add a To: address to this message.
286
-     *
287
-     * If $name is passed this name will be associated with the address.
288
-     *
289
-     * @param string $address
290
-     * @param string $name    optional
291
-     *
292
-     * @return $this
293
-     */
294
-    public function addTo($address, $name = null)
295
-    {
296
-        $current = $this->getTo();
297
-        $current[$address] = $name;
298
-
299
-        return $this->setTo($current);
300
-    }
301
-
302
-    /**
303
-     * Set the to addresses of this message.
304
-     *
305
-     * If multiple recipients will receive the message an array should be used.
306
-     * Example: array('[email protected]', '[email protected]' => 'A name')
307
-     *
308
-     * If $name is passed and the first parameter is a string, this name will be
309
-     * associated with the address.
310
-     *
311
-     * @param mixed  $addresses
312
-     * @param string $name      optional
313
-     *
314
-     * @return $this
315
-     */
316
-    public function setTo($addresses, $name = null)
317
-    {
318
-        if (!\is_array($addresses) && isset($name)) {
319
-            $addresses = [$addresses => $name];
320
-        }
321
-
322
-        if (!$this->setHeaderFieldModel('To', (array) $addresses)) {
323
-            $this->getHeaders()->addMailboxHeader('To', (array) $addresses);
324
-        }
325
-
326
-        return $this;
327
-    }
328
-
329
-    /**
330
-     * Get the To addresses of this message.
331
-     *
332
-     * @return array
333
-     */
334
-    public function getTo()
335
-    {
336
-        return $this->getHeaderFieldModel('To');
337
-    }
338
-
339
-    /**
340
-     * Add a Cc: address to this message.
341
-     *
342
-     * If $name is passed this name will be associated with the address.
343
-     *
344
-     * @param string $address
345
-     * @param string $name    optional
346
-     *
347
-     * @return $this
348
-     */
349
-    public function addCc($address, $name = null)
350
-    {
351
-        $current = $this->getCc();
352
-        $current[$address] = $name;
353
-
354
-        return $this->setCc($current);
355
-    }
356
-
357
-    /**
358
-     * Set the Cc addresses of this message.
359
-     *
360
-     * If $name is passed and the first parameter is a string, this name will be
361
-     * associated with the address.
362
-     *
363
-     * @param mixed  $addresses
364
-     * @param string $name      optional
365
-     *
366
-     * @return $this
367
-     */
368
-    public function setCc($addresses, $name = null)
369
-    {
370
-        if (!\is_array($addresses) && isset($name)) {
371
-            $addresses = [$addresses => $name];
372
-        }
373
-
374
-        if (!$this->setHeaderFieldModel('Cc', (array) $addresses)) {
375
-            $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses);
376
-        }
377
-
378
-        return $this;
379
-    }
380
-
381
-    /**
382
-     * Get the Cc address of this message.
383
-     *
384
-     * @return array
385
-     */
386
-    public function getCc()
387
-    {
388
-        return $this->getHeaderFieldModel('Cc');
389
-    }
390
-
391
-    /**
392
-     * Add a Bcc: address to this message.
393
-     *
394
-     * If $name is passed this name will be associated with the address.
395
-     *
396
-     * @param string $address
397
-     * @param string $name    optional
398
-     *
399
-     * @return $this
400
-     */
401
-    public function addBcc($address, $name = null)
402
-    {
403
-        $current = $this->getBcc();
404
-        $current[$address] = $name;
405
-
406
-        return $this->setBcc($current);
407
-    }
408
-
409
-    /**
410
-     * Set the Bcc addresses of this message.
411
-     *
412
-     * If $name is passed and the first parameter is a string, this name will be
413
-     * associated with the address.
414
-     *
415
-     * @param mixed  $addresses
416
-     * @param string $name      optional
417
-     *
418
-     * @return $this
419
-     */
420
-    public function setBcc($addresses, $name = null)
421
-    {
422
-        if (!\is_array($addresses) && isset($name)) {
423
-            $addresses = [$addresses => $name];
424
-        }
425
-
426
-        if (!$this->setHeaderFieldModel('Bcc', (array) $addresses)) {
427
-            $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses);
428
-        }
429
-
430
-        return $this;
431
-    }
432
-
433
-    /**
434
-     * Get the Bcc addresses of this message.
435
-     *
436
-     * @return array
437
-     */
438
-    public function getBcc()
439
-    {
440
-        return $this->getHeaderFieldModel('Bcc');
441
-    }
442
-
443
-    /**
444
-     * Set the priority of this message.
445
-     *
446
-     * The value is an integer where 1 is the highest priority and 5 is the lowest.
447
-     *
448
-     * @param int $priority
449
-     *
450
-     * @return $this
451
-     */
452
-    public function setPriority($priority)
453
-    {
454
-        $priorityMap = [
455
-            self::PRIORITY_HIGHEST => 'Highest',
456
-            self::PRIORITY_HIGH => 'High',
457
-            self::PRIORITY_NORMAL => 'Normal',
458
-            self::PRIORITY_LOW => 'Low',
459
-            self::PRIORITY_LOWEST => 'Lowest',
460
-            ];
461
-        $pMapKeys = array_keys($priorityMap);
462
-        if ($priority > max($pMapKeys)) {
463
-            $priority = max($pMapKeys);
464
-        } elseif ($priority < min($pMapKeys)) {
465
-            $priority = min($pMapKeys);
466
-        }
467
-        if (!$this->setHeaderFieldModel('X-Priority',
468
-            sprintf('%d (%s)', $priority, $priorityMap[$priority]))) {
469
-            $this->getHeaders()->addTextHeader('X-Priority',
470
-                sprintf('%d (%s)', $priority, $priorityMap[$priority]));
471
-        }
472
-
473
-        return $this;
474
-    }
475
-
476
-    /**
477
-     * Get the priority of this message.
478
-     *
479
-     * The returned value is an integer where 1 is the highest priority and 5
480
-     * is the lowest.
481
-     *
482
-     * @return int
483
-     */
484
-    public function getPriority()
485
-    {
486
-        list($priority) = sscanf($this->getHeaderFieldModel('X-Priority'),
487
-            '%[1-5]'
488
-            );
489
-
490
-        return $priority ?? 3;
491
-    }
492
-
493
-    /**
494
-     * Ask for a delivery receipt from the recipient to be sent to $addresses.
495
-     *
496
-     * @param array $addresses
497
-     *
498
-     * @return $this
499
-     */
500
-    public function setReadReceiptTo($addresses)
501
-    {
502
-        if (!$this->setHeaderFieldModel('Disposition-Notification-To', $addresses)) {
503
-            $this->getHeaders()
504
-                ->addMailboxHeader('Disposition-Notification-To', $addresses);
505
-        }
506
-
507
-        return $this;
508
-    }
509
-
510
-    /**
511
-     * Get the addresses to which a read-receipt will be sent.
512
-     *
513
-     * @return string
514
-     */
515
-    public function getReadReceiptTo()
516
-    {
517
-        return $this->getHeaderFieldModel('Disposition-Notification-To');
518
-    }
519
-
520
-    /**
521
-     * Attach a {@link Swift_Mime_SimpleMimeEntity} such as an Attachment or MimePart.
522
-     *
523
-     * @return $this
524
-     */
525
-    public function attach(Swift_Mime_SimpleMimeEntity $entity)
526
-    {
527
-        $this->setChildren(array_merge($this->getChildren(), [$entity]));
528
-
529
-        return $this;
530
-    }
531
-
532
-    /**
533
-     * Remove an already attached entity.
534
-     *
535
-     * @return $this
536
-     */
537
-    public function detach(Swift_Mime_SimpleMimeEntity $entity)
538
-    {
539
-        $newChildren = [];
540
-        foreach ($this->getChildren() as $child) {
541
-            if ($entity !== $child) {
542
-                $newChildren[] = $child;
543
-            }
544
-        }
545
-        $this->setChildren($newChildren);
546
-
547
-        return $this;
548
-    }
549
-
550
-    /**
551
-     * Attach a {@link Swift_Mime_SimpleMimeEntity} and return it's CID source.
552
-     *
553
-     * This method should be used when embedding images or other data in a message.
554
-     *
555
-     * @return string
556
-     */
557
-    public function embed(Swift_Mime_SimpleMimeEntity $entity)
558
-    {
559
-        $this->attach($entity);
560
-
561
-        return 'cid:'.$entity->getId();
562
-    }
563
-
564
-    /**
565
-     * Get this message as a complete string.
566
-     *
567
-     * @return string
568
-     */
569
-    public function toString()
570
-    {
571
-        if (\count($children = $this->getChildren()) > 0 && '' != $this->getBody()) {
572
-            $this->setChildren(array_merge([$this->becomeMimePart()], $children));
573
-            $string = parent::toString();
574
-            $this->setChildren($children);
575
-        } else {
576
-            $string = parent::toString();
577
-        }
578
-
579
-        return $string;
580
-    }
581
-
582
-    /**
583
-     * Returns a string representation of this object.
584
-     *
585
-     * @see toString()
586
-     *
587
-     * @return string
588
-     */
589
-    public function __toString()
590
-    {
591
-        return $this->toString();
592
-    }
593
-
594
-    /**
595
-     * Write this message to a {@link Swift_InputByteStream}.
596
-     */
597
-    public function toByteStream(Swift_InputByteStream $is)
598
-    {
599
-        if (\count($children = $this->getChildren()) > 0 && '' != $this->getBody()) {
600
-            $this->setChildren(array_merge([$this->becomeMimePart()], $children));
601
-            parent::toByteStream($is);
602
-            $this->setChildren($children);
603
-        } else {
604
-            parent::toByteStream($is);
605
-        }
606
-    }
607
-
608
-    /** @see Swift_Mime_SimpleMimeEntity::getIdField() */
609
-    protected function getIdField()
610
-    {
611
-        return 'Message-ID';
612
-    }
613
-
614
-    /** Turn the body of this message into a child of itself if needed */
615
-    protected function becomeMimePart()
616
-    {
617
-        $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(),
618
-            $this->getCache(), $this->getIdGenerator(), $this->userCharset
619
-            );
620
-        $part->setContentType($this->userContentType);
621
-        $part->setBody($this->getBody());
622
-        $part->setFormat($this->userFormat);
623
-        $part->setDelSp($this->userDelSp);
624
-        $part->setNestingLevel($this->getTopNestingLevel());
625
-
626
-        return $part;
627
-    }
628
-
629
-    /** Get the highest nesting level nested inside this message */
630
-    private function getTopNestingLevel()
631
-    {
632
-        $highestLevel = $this->getNestingLevel();
633
-        foreach ($this->getChildren() as $child) {
634
-            $childLevel = $child->getNestingLevel();
635
-            if ($highestLevel < $childLevel) {
636
-                $highestLevel = $childLevel;
637
-            }
638
-        }
639
-
640
-        return $highestLevel;
641
-    }
18
+	const PRIORITY_HIGHEST = 1;
19
+	const PRIORITY_HIGH = 2;
20
+	const PRIORITY_NORMAL = 3;
21
+	const PRIORITY_LOW = 4;
22
+	const PRIORITY_LOWEST = 5;
23
+
24
+	/**
25
+	 * Create a new SimpleMessage with $headers, $encoder and $cache.
26
+	 *
27
+	 * @param string $charset
28
+	 */
29
+	public function __construct(Swift_Mime_SimpleHeaderSet $headers, Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache, Swift_IdGenerator $idGenerator, $charset = null)
30
+	{
31
+		parent::__construct($headers, $encoder, $cache, $idGenerator, $charset);
32
+		$this->getHeaders()->defineOrdering([
33
+			'Return-Path',
34
+			'Received',
35
+			'DKIM-Signature',
36
+			'DomainKey-Signature',
37
+			'Sender',
38
+			'Message-ID',
39
+			'Date',
40
+			'Subject',
41
+			'From',
42
+			'Reply-To',
43
+			'To',
44
+			'Cc',
45
+			'Bcc',
46
+			'MIME-Version',
47
+			'Content-Type',
48
+			'Content-Transfer-Encoding',
49
+			]);
50
+		$this->getHeaders()->setAlwaysDisplayed(['Date', 'Message-ID', 'From']);
51
+		$this->getHeaders()->addTextHeader('MIME-Version', '1.0');
52
+		$this->setDate(new DateTimeImmutable());
53
+		$this->setId($this->getId());
54
+		$this->getHeaders()->addMailboxHeader('From');
55
+	}
56
+
57
+	/**
58
+	 * Always returns {@link LEVEL_TOP} for a message instance.
59
+	 *
60
+	 * @return int
61
+	 */
62
+	public function getNestingLevel()
63
+	{
64
+		return self::LEVEL_TOP;
65
+	}
66
+
67
+	/**
68
+	 * Set the subject of this message.
69
+	 *
70
+	 * @param string $subject
71
+	 *
72
+	 * @return $this
73
+	 */
74
+	public function setSubject($subject)
75
+	{
76
+		if (!$this->setHeaderFieldModel('Subject', $subject)) {
77
+			$this->getHeaders()->addTextHeader('Subject', $subject);
78
+		}
79
+
80
+		return $this;
81
+	}
82
+
83
+	/**
84
+	 * Get the subject of this message.
85
+	 *
86
+	 * @return string
87
+	 */
88
+	public function getSubject()
89
+	{
90
+		return $this->getHeaderFieldModel('Subject');
91
+	}
92
+
93
+	/**
94
+	 * Set the date at which this message was created.
95
+	 *
96
+	 * @return $this
97
+	 */
98
+	public function setDate(DateTimeInterface $dateTime)
99
+	{
100
+		if (!$this->setHeaderFieldModel('Date', $dateTime)) {
101
+			$this->getHeaders()->addDateHeader('Date', $dateTime);
102
+		}
103
+
104
+		return $this;
105
+	}
106
+
107
+	/**
108
+	 * Get the date at which this message was created.
109
+	 *
110
+	 * @return DateTimeInterface
111
+	 */
112
+	public function getDate()
113
+	{
114
+		return $this->getHeaderFieldModel('Date');
115
+	}
116
+
117
+	/**
118
+	 * Set the return-path (the bounce address) of this message.
119
+	 *
120
+	 * @param string $address
121
+	 *
122
+	 * @return $this
123
+	 */
124
+	public function setReturnPath($address)
125
+	{
126
+		if (!$this->setHeaderFieldModel('Return-Path', $address)) {
127
+			$this->getHeaders()->addPathHeader('Return-Path', $address);
128
+		}
129
+
130
+		return $this;
131
+	}
132
+
133
+	/**
134
+	 * Get the return-path (bounce address) of this message.
135
+	 *
136
+	 * @return string
137
+	 */
138
+	public function getReturnPath()
139
+	{
140
+		return $this->getHeaderFieldModel('Return-Path');
141
+	}
142
+
143
+	/**
144
+	 * Set the sender of this message.
145
+	 *
146
+	 * This does not override the From field, but it has a higher significance.
147
+	 *
148
+	 * @param string $address
149
+	 * @param string $name    optional
150
+	 *
151
+	 * @return $this
152
+	 */
153
+	public function setSender($address, $name = null)
154
+	{
155
+		if (!\is_array($address) && isset($name)) {
156
+			$address = [$address => $name];
157
+		}
158
+
159
+		if (!$this->setHeaderFieldModel('Sender', (array) $address)) {
160
+			$this->getHeaders()->addMailboxHeader('Sender', (array) $address);
161
+		}
162
+
163
+		return $this;
164
+	}
165
+
166
+	/**
167
+	 * Get the sender of this message.
168
+	 *
169
+	 * @return string
170
+	 */
171
+	public function getSender()
172
+	{
173
+		return $this->getHeaderFieldModel('Sender');
174
+	}
175
+
176
+	/**
177
+	 * Add a From: address to this message.
178
+	 *
179
+	 * If $name is passed this name will be associated with the address.
180
+	 *
181
+	 * @param string $address
182
+	 * @param string $name    optional
183
+	 *
184
+	 * @return $this
185
+	 */
186
+	public function addFrom($address, $name = null)
187
+	{
188
+		$current = $this->getFrom();
189
+		$current[$address] = $name;
190
+
191
+		return $this->setFrom($current);
192
+	}
193
+
194
+	/**
195
+	 * Set the from address of this message.
196
+	 *
197
+	 * You may pass an array of addresses if this message is from multiple people.
198
+	 *
199
+	 * If $name is passed and the first parameter is a string, this name will be
200
+	 * associated with the address.
201
+	 *
202
+	 * @param string|array $addresses
203
+	 * @param string       $name      optional
204
+	 *
205
+	 * @return $this
206
+	 */
207
+	public function setFrom($addresses, $name = null)
208
+	{
209
+		if (!\is_array($addresses) && isset($name)) {
210
+			$addresses = [$addresses => $name];
211
+		}
212
+
213
+		if (!$this->setHeaderFieldModel('From', (array) $addresses)) {
214
+			$this->getHeaders()->addMailboxHeader('From', (array) $addresses);
215
+		}
216
+
217
+		return $this;
218
+	}
219
+
220
+	/**
221
+	 * Get the from address of this message.
222
+	 *
223
+	 * @return mixed
224
+	 */
225
+	public function getFrom()
226
+	{
227
+		return $this->getHeaderFieldModel('From');
228
+	}
229
+
230
+	/**
231
+	 * Add a Reply-To: address to this message.
232
+	 *
233
+	 * If $name is passed this name will be associated with the address.
234
+	 *
235
+	 * @param string $address
236
+	 * @param string $name    optional
237
+	 *
238
+	 * @return $this
239
+	 */
240
+	public function addReplyTo($address, $name = null)
241
+	{
242
+		$current = $this->getReplyTo();
243
+		$current[$address] = $name;
244
+
245
+		return $this->setReplyTo($current);
246
+	}
247
+
248
+	/**
249
+	 * Set the reply-to address of this message.
250
+	 *
251
+	 * You may pass an array of addresses if replies will go to multiple people.
252
+	 *
253
+	 * If $name is passed and the first parameter is a string, this name will be
254
+	 * associated with the address.
255
+	 *
256
+	 * @param mixed  $addresses
257
+	 * @param string $name      optional
258
+	 *
259
+	 * @return $this
260
+	 */
261
+	public function setReplyTo($addresses, $name = null)
262
+	{
263
+		if (!\is_array($addresses) && isset($name)) {
264
+			$addresses = [$addresses => $name];
265
+		}
266
+
267
+		if (!$this->setHeaderFieldModel('Reply-To', (array) $addresses)) {
268
+			$this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses);
269
+		}
270
+
271
+		return $this;
272
+	}
273
+
274
+	/**
275
+	 * Get the reply-to address of this message.
276
+	 *
277
+	 * @return string
278
+	 */
279
+	public function getReplyTo()
280
+	{
281
+		return $this->getHeaderFieldModel('Reply-To');
282
+	}
283
+
284
+	/**
285
+	 * Add a To: address to this message.
286
+	 *
287
+	 * If $name is passed this name will be associated with the address.
288
+	 *
289
+	 * @param string $address
290
+	 * @param string $name    optional
291
+	 *
292
+	 * @return $this
293
+	 */
294
+	public function addTo($address, $name = null)
295
+	{
296
+		$current = $this->getTo();
297
+		$current[$address] = $name;
298
+
299
+		return $this->setTo($current);
300
+	}
301
+
302
+	/**
303
+	 * Set the to addresses of this message.
304
+	 *
305
+	 * If multiple recipients will receive the message an array should be used.
306
+	 * Example: array('[email protected]', '[email protected]' => 'A name')
307
+	 *
308
+	 * If $name is passed and the first parameter is a string, this name will be
309
+	 * associated with the address.
310
+	 *
311
+	 * @param mixed  $addresses
312
+	 * @param string $name      optional
313
+	 *
314
+	 * @return $this
315
+	 */
316
+	public function setTo($addresses, $name = null)
317
+	{
318
+		if (!\is_array($addresses) && isset($name)) {
319
+			$addresses = [$addresses => $name];
320
+		}
321
+
322
+		if (!$this->setHeaderFieldModel('To', (array) $addresses)) {
323
+			$this->getHeaders()->addMailboxHeader('To', (array) $addresses);
324
+		}
325
+
326
+		return $this;
327
+	}
328
+
329
+	/**
330
+	 * Get the To addresses of this message.
331
+	 *
332
+	 * @return array
333
+	 */
334
+	public function getTo()
335
+	{
336
+		return $this->getHeaderFieldModel('To');
337
+	}
338
+
339
+	/**
340
+	 * Add a Cc: address to this message.
341
+	 *
342
+	 * If $name is passed this name will be associated with the address.
343
+	 *
344
+	 * @param string $address
345
+	 * @param string $name    optional
346
+	 *
347
+	 * @return $this
348
+	 */
349
+	public function addCc($address, $name = null)
350
+	{
351
+		$current = $this->getCc();
352
+		$current[$address] = $name;
353
+
354
+		return $this->setCc($current);
355
+	}
356
+
357
+	/**
358
+	 * Set the Cc addresses of this message.
359
+	 *
360
+	 * If $name is passed and the first parameter is a string, this name will be
361
+	 * associated with the address.
362
+	 *
363
+	 * @param mixed  $addresses
364
+	 * @param string $name      optional
365
+	 *
366
+	 * @return $this
367
+	 */
368
+	public function setCc($addresses, $name = null)
369
+	{
370
+		if (!\is_array($addresses) && isset($name)) {
371
+			$addresses = [$addresses => $name];
372
+		}
373
+
374
+		if (!$this->setHeaderFieldModel('Cc', (array) $addresses)) {
375
+			$this->getHeaders()->addMailboxHeader('Cc', (array) $addresses);
376
+		}
377
+
378
+		return $this;
379
+	}
380
+
381
+	/**
382
+	 * Get the Cc address of this message.
383
+	 *
384
+	 * @return array
385
+	 */
386
+	public function getCc()
387
+	{
388
+		return $this->getHeaderFieldModel('Cc');
389
+	}
390
+
391
+	/**
392
+	 * Add a Bcc: address to this message.
393
+	 *
394
+	 * If $name is passed this name will be associated with the address.
395
+	 *
396
+	 * @param string $address
397
+	 * @param string $name    optional
398
+	 *
399
+	 * @return $this
400
+	 */
401
+	public function addBcc($address, $name = null)
402
+	{
403
+		$current = $this->getBcc();
404
+		$current[$address] = $name;
405
+
406
+		return $this->setBcc($current);
407
+	}
408
+
409
+	/**
410
+	 * Set the Bcc addresses of this message.
411
+	 *
412
+	 * If $name is passed and the first parameter is a string, this name will be
413
+	 * associated with the address.
414
+	 *
415
+	 * @param mixed  $addresses
416
+	 * @param string $name      optional
417
+	 *
418
+	 * @return $this
419
+	 */
420
+	public function setBcc($addresses, $name = null)
421
+	{
422
+		if (!\is_array($addresses) && isset($name)) {
423
+			$addresses = [$addresses => $name];
424
+		}
425
+
426
+		if (!$this->setHeaderFieldModel('Bcc', (array) $addresses)) {
427
+			$this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses);
428
+		}
429
+
430
+		return $this;
431
+	}
432
+
433
+	/**
434
+	 * Get the Bcc addresses of this message.
435
+	 *
436
+	 * @return array
437
+	 */
438
+	public function getBcc()
439
+	{
440
+		return $this->getHeaderFieldModel('Bcc');
441
+	}
442
+
443
+	/**
444
+	 * Set the priority of this message.
445
+	 *
446
+	 * The value is an integer where 1 is the highest priority and 5 is the lowest.
447
+	 *
448
+	 * @param int $priority
449
+	 *
450
+	 * @return $this
451
+	 */
452
+	public function setPriority($priority)
453
+	{
454
+		$priorityMap = [
455
+			self::PRIORITY_HIGHEST => 'Highest',
456
+			self::PRIORITY_HIGH => 'High',
457
+			self::PRIORITY_NORMAL => 'Normal',
458
+			self::PRIORITY_LOW => 'Low',
459
+			self::PRIORITY_LOWEST => 'Lowest',
460
+			];
461
+		$pMapKeys = array_keys($priorityMap);
462
+		if ($priority > max($pMapKeys)) {
463
+			$priority = max($pMapKeys);
464
+		} elseif ($priority < min($pMapKeys)) {
465
+			$priority = min($pMapKeys);
466
+		}
467
+		if (!$this->setHeaderFieldModel('X-Priority',
468
+			sprintf('%d (%s)', $priority, $priorityMap[$priority]))) {
469
+			$this->getHeaders()->addTextHeader('X-Priority',
470
+				sprintf('%d (%s)', $priority, $priorityMap[$priority]));
471
+		}
472
+
473
+		return $this;
474
+	}
475
+
476
+	/**
477
+	 * Get the priority of this message.
478
+	 *
479
+	 * The returned value is an integer where 1 is the highest priority and 5
480
+	 * is the lowest.
481
+	 *
482
+	 * @return int
483
+	 */
484
+	public function getPriority()
485
+	{
486
+		list($priority) = sscanf($this->getHeaderFieldModel('X-Priority'),
487
+			'%[1-5]'
488
+			);
489
+
490
+		return $priority ?? 3;
491
+	}
492
+
493
+	/**
494
+	 * Ask for a delivery receipt from the recipient to be sent to $addresses.
495
+	 *
496
+	 * @param array $addresses
497
+	 *
498
+	 * @return $this
499
+	 */
500
+	public function setReadReceiptTo($addresses)
501
+	{
502
+		if (!$this->setHeaderFieldModel('Disposition-Notification-To', $addresses)) {
503
+			$this->getHeaders()
504
+				->addMailboxHeader('Disposition-Notification-To', $addresses);
505
+		}
506
+
507
+		return $this;
508
+	}
509
+
510
+	/**
511
+	 * Get the addresses to which a read-receipt will be sent.
512
+	 *
513
+	 * @return string
514
+	 */
515
+	public function getReadReceiptTo()
516
+	{
517
+		return $this->getHeaderFieldModel('Disposition-Notification-To');
518
+	}
519
+
520
+	/**
521
+	 * Attach a {@link Swift_Mime_SimpleMimeEntity} such as an Attachment or MimePart.
522
+	 *
523
+	 * @return $this
524
+	 */
525
+	public function attach(Swift_Mime_SimpleMimeEntity $entity)
526
+	{
527
+		$this->setChildren(array_merge($this->getChildren(), [$entity]));
528
+
529
+		return $this;
530
+	}
531
+
532
+	/**
533
+	 * Remove an already attached entity.
534
+	 *
535
+	 * @return $this
536
+	 */
537
+	public function detach(Swift_Mime_SimpleMimeEntity $entity)
538
+	{
539
+		$newChildren = [];
540
+		foreach ($this->getChildren() as $child) {
541
+			if ($entity !== $child) {
542
+				$newChildren[] = $child;
543
+			}
544
+		}
545
+		$this->setChildren($newChildren);
546
+
547
+		return $this;
548
+	}
549
+
550
+	/**
551
+	 * Attach a {@link Swift_Mime_SimpleMimeEntity} and return it's CID source.
552
+	 *
553
+	 * This method should be used when embedding images or other data in a message.
554
+	 *
555
+	 * @return string
556
+	 */
557
+	public function embed(Swift_Mime_SimpleMimeEntity $entity)
558
+	{
559
+		$this->attach($entity);
560
+
561
+		return 'cid:'.$entity->getId();
562
+	}
563
+
564
+	/**
565
+	 * Get this message as a complete string.
566
+	 *
567
+	 * @return string
568
+	 */
569
+	public function toString()
570
+	{
571
+		if (\count($children = $this->getChildren()) > 0 && '' != $this->getBody()) {
572
+			$this->setChildren(array_merge([$this->becomeMimePart()], $children));
573
+			$string = parent::toString();
574
+			$this->setChildren($children);
575
+		} else {
576
+			$string = parent::toString();
577
+		}
578
+
579
+		return $string;
580
+	}
581
+
582
+	/**
583
+	 * Returns a string representation of this object.
584
+	 *
585
+	 * @see toString()
586
+	 *
587
+	 * @return string
588
+	 */
589
+	public function __toString()
590
+	{
591
+		return $this->toString();
592
+	}
593
+
594
+	/**
595
+	 * Write this message to a {@link Swift_InputByteStream}.
596
+	 */
597
+	public function toByteStream(Swift_InputByteStream $is)
598
+	{
599
+		if (\count($children = $this->getChildren()) > 0 && '' != $this->getBody()) {
600
+			$this->setChildren(array_merge([$this->becomeMimePart()], $children));
601
+			parent::toByteStream($is);
602
+			$this->setChildren($children);
603
+		} else {
604
+			parent::toByteStream($is);
605
+		}
606
+	}
607
+
608
+	/** @see Swift_Mime_SimpleMimeEntity::getIdField() */
609
+	protected function getIdField()
610
+	{
611
+		return 'Message-ID';
612
+	}
613
+
614
+	/** Turn the body of this message into a child of itself if needed */
615
+	protected function becomeMimePart()
616
+	{
617
+		$part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(),
618
+			$this->getCache(), $this->getIdGenerator(), $this->userCharset
619
+			);
620
+		$part->setContentType($this->userContentType);
621
+		$part->setBody($this->getBody());
622
+		$part->setFormat($this->userFormat);
623
+		$part->setDelSp($this->userDelSp);
624
+		$part->setNestingLevel($this->getTopNestingLevel());
625
+
626
+		return $part;
627
+	}
628
+
629
+	/** Get the highest nesting level nested inside this message */
630
+	private function getTopNestingLevel()
631
+	{
632
+		$highestLevel = $this->getNestingLevel();
633
+		foreach ($this->getChildren() as $child) {
634
+			$childLevel = $child->getNestingLevel();
635
+			if ($highestLevel < $childLevel) {
636
+				$highestLevel = $childLevel;
637
+			}
638
+		}
639
+
640
+		return $highestLevel;
641
+	}
642 642
 }
Please login to merge, or discard this patch.
swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/Base64HeaderEncoder.php 1 patch
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -15,41 +15,41 @@
 block discarded – undo
15 15
  */
16 16
 class Swift_Mime_HeaderEncoder_Base64HeaderEncoder extends Swift_Encoder_Base64Encoder implements Swift_Mime_HeaderEncoder
17 17
 {
18
-    /**
19
-     * Get the name of this encoding scheme.
20
-     * Returns the string 'B'.
21
-     *
22
-     * @return string
23
-     */
24
-    public function getName()
25
-    {
26
-        return 'B';
27
-    }
18
+	/**
19
+	 * Get the name of this encoding scheme.
20
+	 * Returns the string 'B'.
21
+	 *
22
+	 * @return string
23
+	 */
24
+	public function getName()
25
+	{
26
+		return 'B';
27
+	}
28 28
 
29
-    /**
30
-     * Takes an unencoded string and produces a Base64 encoded string from it.
31
-     *
32
-     * If the charset is iso-2022-jp, it uses mb_encode_mimeheader instead of
33
-     * default encodeString, otherwise pass to the parent method.
34
-     *
35
-     * @param string $string          string to encode
36
-     * @param int    $firstLineOffset
37
-     * @param int    $maxLineLength   optional, 0 indicates the default of 76 bytes
38
-     * @param string $charset
39
-     *
40
-     * @return string
41
-     */
42
-    public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0, $charset = 'utf-8')
43
-    {
44
-        if ('iso-2022-jp' === strtolower($charset ?? '')) {
45
-            $old = mb_internal_encoding();
46
-            mb_internal_encoding('utf-8');
47
-            $newstring = mb_encode_mimeheader($string, $charset, $this->getName(), "\r\n");
48
-            mb_internal_encoding($old);
29
+	/**
30
+	 * Takes an unencoded string and produces a Base64 encoded string from it.
31
+	 *
32
+	 * If the charset is iso-2022-jp, it uses mb_encode_mimeheader instead of
33
+	 * default encodeString, otherwise pass to the parent method.
34
+	 *
35
+	 * @param string $string          string to encode
36
+	 * @param int    $firstLineOffset
37
+	 * @param int    $maxLineLength   optional, 0 indicates the default of 76 bytes
38
+	 * @param string $charset
39
+	 *
40
+	 * @return string
41
+	 */
42
+	public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0, $charset = 'utf-8')
43
+	{
44
+		if ('iso-2022-jp' === strtolower($charset ?? '')) {
45
+			$old = mb_internal_encoding();
46
+			mb_internal_encoding('utf-8');
47
+			$newstring = mb_encode_mimeheader($string, $charset, $this->getName(), "\r\n");
48
+			mb_internal_encoding($old);
49 49
 
50
-            return $newstring;
51
-        }
50
+			return $newstring;
51
+		}
52 52
 
53
-        return parent::encodeString($string, $firstLineOffset, $maxLineLength);
54
-    }
53
+		return parent::encodeString($string, $firstLineOffset, $maxLineLength);
54
+	}
55 55
 }
Please login to merge, or discard this patch.
swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php 1 patch
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -15,51 +15,51 @@
 block discarded – undo
15 15
  */
16 16
 class Swift_Mime_HeaderEncoder_QpHeaderEncoder extends Swift_Encoder_QpEncoder implements Swift_Mime_HeaderEncoder
17 17
 {
18
-    /**
19
-     * Creates a new QpHeaderEncoder for the given CharacterStream.
20
-     *
21
-     * @param Swift_CharacterStream $charStream to use for reading characters
22
-     */
23
-    public function __construct(Swift_CharacterStream $charStream)
24
-    {
25
-        parent::__construct($charStream);
26
-    }
18
+	/**
19
+	 * Creates a new QpHeaderEncoder for the given CharacterStream.
20
+	 *
21
+	 * @param Swift_CharacterStream $charStream to use for reading characters
22
+	 */
23
+	public function __construct(Swift_CharacterStream $charStream)
24
+	{
25
+		parent::__construct($charStream);
26
+	}
27 27
 
28
-    protected function initSafeMap()
29
-    {
30
-        foreach (array_merge(
31
-            range(0x61, 0x7A), range(0x41, 0x5A),
32
-            range(0x30, 0x39), [0x20, 0x21, 0x2A, 0x2B, 0x2D, 0x2F]
33
-        ) as $byte) {
34
-            $this->safeMap[$byte] = \chr($byte);
35
-        }
36
-    }
28
+	protected function initSafeMap()
29
+	{
30
+		foreach (array_merge(
31
+			range(0x61, 0x7A), range(0x41, 0x5A),
32
+			range(0x30, 0x39), [0x20, 0x21, 0x2A, 0x2B, 0x2D, 0x2F]
33
+		) as $byte) {
34
+			$this->safeMap[$byte] = \chr($byte);
35
+		}
36
+	}
37 37
 
38
-    /**
39
-     * Get the name of this encoding scheme.
40
-     *
41
-     * Returns the string 'Q'.
42
-     *
43
-     * @return string
44
-     */
45
-    public function getName()
46
-    {
47
-        return 'Q';
48
-    }
38
+	/**
39
+	 * Get the name of this encoding scheme.
40
+	 *
41
+	 * Returns the string 'Q'.
42
+	 *
43
+	 * @return string
44
+	 */
45
+	public function getName()
46
+	{
47
+		return 'Q';
48
+	}
49 49
 
50
-    /**
51
-     * Takes an unencoded string and produces a QP encoded string from it.
52
-     *
53
-     * @param string $string          string to encode
54
-     * @param int    $firstLineOffset optional
55
-     * @param int    $maxLineLength   optional, 0 indicates the default of 76 chars
56
-     *
57
-     * @return string
58
-     */
59
-    public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0)
60
-    {
61
-        return str_replace([' ', '=20', "=\r\n"], ['_', '_', "\r\n"],
62
-            parent::encodeString($string, $firstLineOffset, $maxLineLength)
63
-        );
64
-    }
50
+	/**
51
+	 * Takes an unencoded string and produces a QP encoded string from it.
52
+	 *
53
+	 * @param string $string          string to encode
54
+	 * @param int    $firstLineOffset optional
55
+	 * @param int    $maxLineLength   optional, 0 indicates the default of 76 chars
56
+	 *
57
+	 * @return string
58
+	 */
59
+	public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0)
60
+	{
61
+		return str_replace([' ', '=20', "=\r\n"], ['_', '_', "\r\n"],
62
+			parent::encodeString($string, $firstLineOffset, $maxLineLength)
63
+		);
64
+	}
65 65
 }
Please login to merge, or discard this patch.
swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php 1 patch
Indentation   +167 added lines, -167 removed lines patch added patch discarded remove patch
@@ -19,171 +19,171 @@
 block discarded – undo
19 19
  */
20 20
 class Swift_Mime_Headers_IdentificationHeader extends Swift_Mime_Headers_AbstractHeader
21 21
 {
22
-    /**
23
-     * The IDs used in the value of this Header.
24
-     *
25
-     * This may hold multiple IDs or just a single ID.
26
-     *
27
-     * @var string[]
28
-     */
29
-    private $ids = [];
30
-
31
-    /**
32
-     * The strict EmailValidator.
33
-     *
34
-     * @var EmailValidator
35
-     */
36
-    private $emailValidator;
37
-
38
-    private $addressEncoder;
39
-
40
-    /**
41
-     * Creates a new IdentificationHeader with the given $name and $id.
42
-     *
43
-     * @param string $name
44
-     */
45
-    public function __construct($name, EmailValidator $emailValidator, Swift_AddressEncoder $addressEncoder = null)
46
-    {
47
-        $this->setFieldName($name);
48
-        $this->emailValidator = $emailValidator;
49
-        $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder();
50
-    }
51
-
52
-    /**
53
-     * Get the type of Header that this instance represents.
54
-     *
55
-     * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX
56
-     * @see TYPE_DATE, TYPE_ID, TYPE_PATH
57
-     *
58
-     * @return int
59
-     */
60
-    public function getFieldType()
61
-    {
62
-        return self::TYPE_ID;
63
-    }
64
-
65
-    /**
66
-     * Set the model for the field body.
67
-     *
68
-     * This method takes a string ID, or an array of IDs.
69
-     *
70
-     * @param mixed $model
71
-     *
72
-     * @throws Swift_RfcComplianceException
73
-     */
74
-    public function setFieldBodyModel($model)
75
-    {
76
-        $this->setId($model);
77
-    }
78
-
79
-    /**
80
-     * Get the model for the field body.
81
-     *
82
-     * This method returns an array of IDs
83
-     *
84
-     * @return array
85
-     */
86
-    public function getFieldBodyModel()
87
-    {
88
-        return $this->getIds();
89
-    }
90
-
91
-    /**
92
-     * Set the ID used in the value of this header.
93
-     *
94
-     * @param string|array $id
95
-     *
96
-     * @throws Swift_RfcComplianceException
97
-     */
98
-    public function setId($id)
99
-    {
100
-        $this->setIds(\is_array($id) ? $id : [$id]);
101
-    }
102
-
103
-    /**
104
-     * Get the ID used in the value of this Header.
105
-     *
106
-     * If multiple IDs are set only the first is returned.
107
-     *
108
-     * @return string
109
-     */
110
-    public function getId()
111
-    {
112
-        if (\count($this->ids) > 0) {
113
-            return $this->ids[0];
114
-        }
115
-    }
116
-
117
-    /**
118
-     * Set a collection of IDs to use in the value of this Header.
119
-     *
120
-     * @param string[] $ids
121
-     *
122
-     * @throws Swift_RfcComplianceException
123
-     */
124
-    public function setIds(array $ids)
125
-    {
126
-        $actualIds = [];
127
-
128
-        foreach ($ids as $id) {
129
-            $this->assertValidId($id);
130
-            $actualIds[] = $id;
131
-        }
132
-
133
-        $this->clearCachedValueIf($this->ids != $actualIds);
134
-        $this->ids = $actualIds;
135
-    }
136
-
137
-    /**
138
-     * Get the list of IDs used in this Header.
139
-     *
140
-     * @return string[]
141
-     */
142
-    public function getIds()
143
-    {
144
-        return $this->ids;
145
-    }
146
-
147
-    /**
148
-     * Get the string value of the body in this Header.
149
-     *
150
-     * This is not necessarily RFC 2822 compliant since folding white space will
151
-     * not be added at this stage (see {@see toString()} for that).
152
-     *
153
-     * @see toString()
154
-     *
155
-     * @throws Swift_RfcComplianceException
156
-     *
157
-     * @return string
158
-     */
159
-    public function getFieldBody()
160
-    {
161
-        if (!$this->getCachedValue()) {
162
-            $angleAddrs = [];
163
-
164
-            foreach ($this->ids as $id) {
165
-                $angleAddrs[] = '<'.$this->addressEncoder->encodeString($id).'>';
166
-            }
167
-
168
-            $this->setCachedValue(implode(' ', $angleAddrs));
169
-        }
170
-
171
-        return $this->getCachedValue();
172
-    }
173
-
174
-    /**
175
-     * Throws an Exception if the id passed does not comply with RFC 2822.
176
-     *
177
-     * @param string $id
178
-     *
179
-     * @throws Swift_RfcComplianceException
180
-     */
181
-    private function assertValidId($id)
182
-    {
183
-        $emailValidation = class_exists(MessageIDValidation::class) ? new MessageIDValidation() : new RFCValidation();
184
-
185
-        if (!$this->emailValidator->isValid($id, $emailValidation)) {
186
-            throw new Swift_RfcComplianceException('Invalid ID given <'.$id.'>');
187
-        }
188
-    }
22
+	/**
23
+	 * The IDs used in the value of this Header.
24
+	 *
25
+	 * This may hold multiple IDs or just a single ID.
26
+	 *
27
+	 * @var string[]
28
+	 */
29
+	private $ids = [];
30
+
31
+	/**
32
+	 * The strict EmailValidator.
33
+	 *
34
+	 * @var EmailValidator
35
+	 */
36
+	private $emailValidator;
37
+
38
+	private $addressEncoder;
39
+
40
+	/**
41
+	 * Creates a new IdentificationHeader with the given $name and $id.
42
+	 *
43
+	 * @param string $name
44
+	 */
45
+	public function __construct($name, EmailValidator $emailValidator, Swift_AddressEncoder $addressEncoder = null)
46
+	{
47
+		$this->setFieldName($name);
48
+		$this->emailValidator = $emailValidator;
49
+		$this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder();
50
+	}
51
+
52
+	/**
53
+	 * Get the type of Header that this instance represents.
54
+	 *
55
+	 * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX
56
+	 * @see TYPE_DATE, TYPE_ID, TYPE_PATH
57
+	 *
58
+	 * @return int
59
+	 */
60
+	public function getFieldType()
61
+	{
62
+		return self::TYPE_ID;
63
+	}
64
+
65
+	/**
66
+	 * Set the model for the field body.
67
+	 *
68
+	 * This method takes a string ID, or an array of IDs.
69
+	 *
70
+	 * @param mixed $model
71
+	 *
72
+	 * @throws Swift_RfcComplianceException
73
+	 */
74
+	public function setFieldBodyModel($model)
75
+	{
76
+		$this->setId($model);
77
+	}
78
+
79
+	/**
80
+	 * Get the model for the field body.
81
+	 *
82
+	 * This method returns an array of IDs
83
+	 *
84
+	 * @return array
85
+	 */
86
+	public function getFieldBodyModel()
87
+	{
88
+		return $this->getIds();
89
+	}
90
+
91
+	/**
92
+	 * Set the ID used in the value of this header.
93
+	 *
94
+	 * @param string|array $id
95
+	 *
96
+	 * @throws Swift_RfcComplianceException
97
+	 */
98
+	public function setId($id)
99
+	{
100
+		$this->setIds(\is_array($id) ? $id : [$id]);
101
+	}
102
+
103
+	/**
104
+	 * Get the ID used in the value of this Header.
105
+	 *
106
+	 * If multiple IDs are set only the first is returned.
107
+	 *
108
+	 * @return string
109
+	 */
110
+	public function getId()
111
+	{
112
+		if (\count($this->ids) > 0) {
113
+			return $this->ids[0];
114
+		}
115
+	}
116
+
117
+	/**
118
+	 * Set a collection of IDs to use in the value of this Header.
119
+	 *
120
+	 * @param string[] $ids
121
+	 *
122
+	 * @throws Swift_RfcComplianceException
123
+	 */
124
+	public function setIds(array $ids)
125
+	{
126
+		$actualIds = [];
127
+
128
+		foreach ($ids as $id) {
129
+			$this->assertValidId($id);
130
+			$actualIds[] = $id;
131
+		}
132
+
133
+		$this->clearCachedValueIf($this->ids != $actualIds);
134
+		$this->ids = $actualIds;
135
+	}
136
+
137
+	/**
138
+	 * Get the list of IDs used in this Header.
139
+	 *
140
+	 * @return string[]
141
+	 */
142
+	public function getIds()
143
+	{
144
+		return $this->ids;
145
+	}
146
+
147
+	/**
148
+	 * Get the string value of the body in this Header.
149
+	 *
150
+	 * This is not necessarily RFC 2822 compliant since folding white space will
151
+	 * not be added at this stage (see {@see toString()} for that).
152
+	 *
153
+	 * @see toString()
154
+	 *
155
+	 * @throws Swift_RfcComplianceException
156
+	 *
157
+	 * @return string
158
+	 */
159
+	public function getFieldBody()
160
+	{
161
+		if (!$this->getCachedValue()) {
162
+			$angleAddrs = [];
163
+
164
+			foreach ($this->ids as $id) {
165
+				$angleAddrs[] = '<'.$this->addressEncoder->encodeString($id).'>';
166
+			}
167
+
168
+			$this->setCachedValue(implode(' ', $angleAddrs));
169
+		}
170
+
171
+		return $this->getCachedValue();
172
+	}
173
+
174
+	/**
175
+	 * Throws an Exception if the id passed does not comply with RFC 2822.
176
+	 *
177
+	 * @param string $id
178
+	 *
179
+	 * @throws Swift_RfcComplianceException
180
+	 */
181
+	private function assertValidId($id)
182
+	{
183
+		$emailValidation = class_exists(MessageIDValidation::class) ? new MessageIDValidation() : new RFCValidation();
184
+
185
+		if (!$this->emailValidator->isValid($id, $emailValidation)) {
186
+			throw new Swift_RfcComplianceException('Invalid ID given <'.$id.'>');
187
+		}
188
+	}
189 189
 }
Please login to merge, or discard this patch.
includes/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php 1 patch
Indentation   +237 added lines, -237 removed lines patch added patch discarded remove patch
@@ -15,241 +15,241 @@
 block discarded – undo
15 15
  */
16 16
 class Swift_Mime_Headers_ParameterizedHeader extends Swift_Mime_Headers_UnstructuredHeader
17 17
 {
18
-    /**
19
-     * RFC 2231's definition of a token.
20
-     *
21
-     * @var string
22
-     */
23
-    const TOKEN_REGEX = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)';
24
-
25
-    /**
26
-     * The Encoder used to encode the parameters.
27
-     *
28
-     * @var Swift_Encoder
29
-     */
30
-    private $paramEncoder;
31
-
32
-    /**
33
-     * The parameters as an associative array.
34
-     *
35
-     * @var string[]
36
-     */
37
-    private $params = [];
38
-
39
-    /**
40
-     * Creates a new ParameterizedHeader with $name.
41
-     *
42
-     * @param string $name
43
-     */
44
-    public function __construct($name, Swift_Mime_HeaderEncoder $encoder, Swift_Encoder $paramEncoder = null)
45
-    {
46
-        parent::__construct($name, $encoder);
47
-        $this->paramEncoder = $paramEncoder;
48
-    }
49
-
50
-    /**
51
-     * Get the type of Header that this instance represents.
52
-     *
53
-     * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX
54
-     * @see TYPE_DATE, TYPE_ID, TYPE_PATH
55
-     *
56
-     * @return int
57
-     */
58
-    public function getFieldType()
59
-    {
60
-        return self::TYPE_PARAMETERIZED;
61
-    }
62
-
63
-    /**
64
-     * Set the character set used in this Header.
65
-     *
66
-     * @param string $charset
67
-     */
68
-    public function setCharset($charset)
69
-    {
70
-        parent::setCharset($charset);
71
-        if (isset($this->paramEncoder)) {
72
-            $this->paramEncoder->charsetChanged($charset);
73
-        }
74
-    }
75
-
76
-    /**
77
-     * Set the value of $parameter.
78
-     *
79
-     * @param string $parameter
80
-     * @param string $value
81
-     */
82
-    public function setParameter($parameter, $value)
83
-    {
84
-        $this->setParameters(array_merge($this->getParameters(), [$parameter => $value]));
85
-    }
86
-
87
-    /**
88
-     * Get the value of $parameter.
89
-     *
90
-     * @param string $parameter
91
-     *
92
-     * @return string
93
-     */
94
-    public function getParameter($parameter)
95
-    {
96
-        $params = $this->getParameters();
97
-
98
-        return $params[$parameter] ?? null;
99
-    }
100
-
101
-    /**
102
-     * Set an associative array of parameter names mapped to values.
103
-     *
104
-     * @param string[] $parameters
105
-     */
106
-    public function setParameters(array $parameters)
107
-    {
108
-        $this->clearCachedValueIf($this->params != $parameters);
109
-        $this->params = $parameters;
110
-    }
111
-
112
-    /**
113
-     * Returns an associative array of parameter names mapped to values.
114
-     *
115
-     * @return string[]
116
-     */
117
-    public function getParameters()
118
-    {
119
-        return $this->params;
120
-    }
121
-
122
-    /**
123
-     * Get the value of this header prepared for rendering.
124
-     *
125
-     * @return string
126
-     */
127
-    public function getFieldBody() //TODO: Check caching here
128
-    {
129
-        $body = parent::getFieldBody();
130
-        foreach ($this->params as $name => $value) {
131
-            if (null !== $value) {
132
-                // Add the parameter
133
-                $body .= '; '.$this->createParameter($name, $value);
134
-            }
135
-        }
136
-
137
-        return $body;
138
-    }
139
-
140
-    /**
141
-     * Generate a list of all tokens in the final header.
142
-     *
143
-     * This doesn't need to be overridden in theory, but it is for implementation
144
-     * reasons to prevent potential breakage of attributes.
145
-     *
146
-     * @param string $string The string to tokenize
147
-     *
148
-     * @return array An array of tokens as strings
149
-     */
150
-    protected function toTokens($string = null)
151
-    {
152
-        $tokens = parent::toTokens(parent::getFieldBody());
153
-
154
-        // Try creating any parameters
155
-        foreach ($this->params as $name => $value) {
156
-            if (null !== $value) {
157
-                // Add the semi-colon separator
158
-                $tokens[\count($tokens) - 1] .= ';';
159
-                $tokens = array_merge($tokens, $this->generateTokenLines(
160
-                    ' '.$this->createParameter($name, $value)
161
-                    ));
162
-            }
163
-        }
164
-
165
-        return $tokens;
166
-    }
167
-
168
-    /**
169
-     * Render a RFC 2047 compliant header parameter from the $name and $value.
170
-     *
171
-     * @param string $name
172
-     * @param string $value
173
-     *
174
-     * @return string
175
-     */
176
-    private function createParameter($name, $value)
177
-    {
178
-        $origValue = $value;
179
-
180
-        $encoded = false;
181
-        // Allow room for parameter name, indices, "=" and DQUOTEs
182
-        $maxValueLength = $this->getMaxLineLength() - \strlen($name.'=*N"";') - 1;
183
-        $firstLineOffset = 0;
184
-
185
-        // If it's not already a valid parameter value...
186
-        if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
187
-            // TODO: text, or something else??
188
-            // ... and it's not ascii
189
-            if (!preg_match('/^[\x00-\x08\x0B\x0C\x0E-\x7F]*$/D', $value)) {
190
-                $encoded = true;
191
-                // Allow space for the indices, charset and language
192
-                $maxValueLength = $this->getMaxLineLength() - \strlen($name.'*N*="";') - 1;
193
-                $firstLineOffset = \strlen(
194
-                    $this->getCharset()."'".$this->getLanguage()."'"
195
-                    );
196
-            }
197
-        }
198
-
199
-        // Encode if we need to
200
-        if ($encoded || \strlen($value) > $maxValueLength) {
201
-            if (isset($this->paramEncoder)) {
202
-                $value = $this->paramEncoder->encodeString(
203
-                    $origValue, $firstLineOffset, $maxValueLength, $this->getCharset()
204
-                    );
205
-            } else {
206
-                // We have to go against RFC 2183/2231 in some areas for interoperability
207
-                $value = $this->getTokenAsEncodedWord($origValue);
208
-                $encoded = false;
209
-            }
210
-        }
211
-
212
-        $valueLines = isset($this->paramEncoder) ? explode("\r\n", $value) : [$value];
213
-
214
-        // Need to add indices
215
-        if (\count($valueLines) > 1) {
216
-            $paramLines = [];
217
-            foreach ($valueLines as $i => $line) {
218
-                $paramLines[] = $name.'*'.$i.
219
-                    $this->getEndOfParameterValue($line, true, 0 == $i);
220
-            }
221
-
222
-            return implode(";\r\n ", $paramLines);
223
-        } else {
224
-            return $name.$this->getEndOfParameterValue(
225
-                $valueLines[0], $encoded, true
226
-                );
227
-        }
228
-    }
229
-
230
-    /**
231
-     * Returns the parameter value from the "=" and beyond.
232
-     *
233
-     * @param string $value     to append
234
-     * @param bool   $encoded
235
-     * @param bool   $firstLine
236
-     *
237
-     * @return string
238
-     */
239
-    private function getEndOfParameterValue($value, $encoded = false, $firstLine = false)
240
-    {
241
-        if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
242
-            $value = '"'.$value.'"';
243
-        }
244
-        $prepend = '=';
245
-        if ($encoded) {
246
-            $prepend = '*=';
247
-            if ($firstLine) {
248
-                $prepend = '*='.$this->getCharset()."'".$this->getLanguage().
249
-                    "'";
250
-            }
251
-        }
252
-
253
-        return $prepend.$value;
254
-    }
18
+	/**
19
+	 * RFC 2231's definition of a token.
20
+	 *
21
+	 * @var string
22
+	 */
23
+	const TOKEN_REGEX = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)';
24
+
25
+	/**
26
+	 * The Encoder used to encode the parameters.
27
+	 *
28
+	 * @var Swift_Encoder
29
+	 */
30
+	private $paramEncoder;
31
+
32
+	/**
33
+	 * The parameters as an associative array.
34
+	 *
35
+	 * @var string[]
36
+	 */
37
+	private $params = [];
38
+
39
+	/**
40
+	 * Creates a new ParameterizedHeader with $name.
41
+	 *
42
+	 * @param string $name
43
+	 */
44
+	public function __construct($name, Swift_Mime_HeaderEncoder $encoder, Swift_Encoder $paramEncoder = null)
45
+	{
46
+		parent::__construct($name, $encoder);
47
+		$this->paramEncoder = $paramEncoder;
48
+	}
49
+
50
+	/**
51
+	 * Get the type of Header that this instance represents.
52
+	 *
53
+	 * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX
54
+	 * @see TYPE_DATE, TYPE_ID, TYPE_PATH
55
+	 *
56
+	 * @return int
57
+	 */
58
+	public function getFieldType()
59
+	{
60
+		return self::TYPE_PARAMETERIZED;
61
+	}
62
+
63
+	/**
64
+	 * Set the character set used in this Header.
65
+	 *
66
+	 * @param string $charset
67
+	 */
68
+	public function setCharset($charset)
69
+	{
70
+		parent::setCharset($charset);
71
+		if (isset($this->paramEncoder)) {
72
+			$this->paramEncoder->charsetChanged($charset);
73
+		}
74
+	}
75
+
76
+	/**
77
+	 * Set the value of $parameter.
78
+	 *
79
+	 * @param string $parameter
80
+	 * @param string $value
81
+	 */
82
+	public function setParameter($parameter, $value)
83
+	{
84
+		$this->setParameters(array_merge($this->getParameters(), [$parameter => $value]));
85
+	}
86
+
87
+	/**
88
+	 * Get the value of $parameter.
89
+	 *
90
+	 * @param string $parameter
91
+	 *
92
+	 * @return string
93
+	 */
94
+	public function getParameter($parameter)
95
+	{
96
+		$params = $this->getParameters();
97
+
98
+		return $params[$parameter] ?? null;
99
+	}
100
+
101
+	/**
102
+	 * Set an associative array of parameter names mapped to values.
103
+	 *
104
+	 * @param string[] $parameters
105
+	 */
106
+	public function setParameters(array $parameters)
107
+	{
108
+		$this->clearCachedValueIf($this->params != $parameters);
109
+		$this->params = $parameters;
110
+	}
111
+
112
+	/**
113
+	 * Returns an associative array of parameter names mapped to values.
114
+	 *
115
+	 * @return string[]
116
+	 */
117
+	public function getParameters()
118
+	{
119
+		return $this->params;
120
+	}
121
+
122
+	/**
123
+	 * Get the value of this header prepared for rendering.
124
+	 *
125
+	 * @return string
126
+	 */
127
+	public function getFieldBody() //TODO: Check caching here
128
+	{
129
+		$body = parent::getFieldBody();
130
+		foreach ($this->params as $name => $value) {
131
+			if (null !== $value) {
132
+				// Add the parameter
133
+				$body .= '; '.$this->createParameter($name, $value);
134
+			}
135
+		}
136
+
137
+		return $body;
138
+	}
139
+
140
+	/**
141
+	 * Generate a list of all tokens in the final header.
142
+	 *
143
+	 * This doesn't need to be overridden in theory, but it is for implementation
144
+	 * reasons to prevent potential breakage of attributes.
145
+	 *
146
+	 * @param string $string The string to tokenize
147
+	 *
148
+	 * @return array An array of tokens as strings
149
+	 */
150
+	protected function toTokens($string = null)
151
+	{
152
+		$tokens = parent::toTokens(parent::getFieldBody());
153
+
154
+		// Try creating any parameters
155
+		foreach ($this->params as $name => $value) {
156
+			if (null !== $value) {
157
+				// Add the semi-colon separator
158
+				$tokens[\count($tokens) - 1] .= ';';
159
+				$tokens = array_merge($tokens, $this->generateTokenLines(
160
+					' '.$this->createParameter($name, $value)
161
+					));
162
+			}
163
+		}
164
+
165
+		return $tokens;
166
+	}
167
+
168
+	/**
169
+	 * Render a RFC 2047 compliant header parameter from the $name and $value.
170
+	 *
171
+	 * @param string $name
172
+	 * @param string $value
173
+	 *
174
+	 * @return string
175
+	 */
176
+	private function createParameter($name, $value)
177
+	{
178
+		$origValue = $value;
179
+
180
+		$encoded = false;
181
+		// Allow room for parameter name, indices, "=" and DQUOTEs
182
+		$maxValueLength = $this->getMaxLineLength() - \strlen($name.'=*N"";') - 1;
183
+		$firstLineOffset = 0;
184
+
185
+		// If it's not already a valid parameter value...
186
+		if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
187
+			// TODO: text, or something else??
188
+			// ... and it's not ascii
189
+			if (!preg_match('/^[\x00-\x08\x0B\x0C\x0E-\x7F]*$/D', $value)) {
190
+				$encoded = true;
191
+				// Allow space for the indices, charset and language
192
+				$maxValueLength = $this->getMaxLineLength() - \strlen($name.'*N*="";') - 1;
193
+				$firstLineOffset = \strlen(
194
+					$this->getCharset()."'".$this->getLanguage()."'"
195
+					);
196
+			}
197
+		}
198
+
199
+		// Encode if we need to
200
+		if ($encoded || \strlen($value) > $maxValueLength) {
201
+			if (isset($this->paramEncoder)) {
202
+				$value = $this->paramEncoder->encodeString(
203
+					$origValue, $firstLineOffset, $maxValueLength, $this->getCharset()
204
+					);
205
+			} else {
206
+				// We have to go against RFC 2183/2231 in some areas for interoperability
207
+				$value = $this->getTokenAsEncodedWord($origValue);
208
+				$encoded = false;
209
+			}
210
+		}
211
+
212
+		$valueLines = isset($this->paramEncoder) ? explode("\r\n", $value) : [$value];
213
+
214
+		// Need to add indices
215
+		if (\count($valueLines) > 1) {
216
+			$paramLines = [];
217
+			foreach ($valueLines as $i => $line) {
218
+				$paramLines[] = $name.'*'.$i.
219
+					$this->getEndOfParameterValue($line, true, 0 == $i);
220
+			}
221
+
222
+			return implode(";\r\n ", $paramLines);
223
+		} else {
224
+			return $name.$this->getEndOfParameterValue(
225
+				$valueLines[0], $encoded, true
226
+				);
227
+		}
228
+	}
229
+
230
+	/**
231
+	 * Returns the parameter value from the "=" and beyond.
232
+	 *
233
+	 * @param string $value     to append
234
+	 * @param bool   $encoded
235
+	 * @param bool   $firstLine
236
+	 *
237
+	 * @return string
238
+	 */
239
+	private function getEndOfParameterValue($value, $encoded = false, $firstLine = false)
240
+	{
241
+		if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
242
+			$value = '"'.$value.'"';
243
+		}
244
+		$prepend = '=';
245
+		if ($encoded) {
246
+			$prepend = '*=';
247
+			if ($firstLine) {
248
+				$prepend = '*='.$this->getCharset()."'".$this->getLanguage().
249
+					"'";
250
+			}
251
+		}
252
+
253
+		return $prepend.$value;
254
+	}
255 255
 }
Please login to merge, or discard this patch.