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: require_once dirname(__FILE__) . '/../HeaderEncoder.php';
12: require_once dirname(__FILE__) . '/../../Encoder/Base64Encoder.php';
13:
14: /**
15: * Handles Base64 (B) Header Encoding in Swift Mailer.
16: * @package Swift
17: * @subpackage Mime
18: * @author Chris Corbyn
19: */
20: class Swift_Mime_HeaderEncoder_Base64HeaderEncoder extends Swift_Encoder_Base64Encoder implements Swift_Mime_HeaderEncoder
21: {
22: /**
23: * Get the name of this encoding scheme.
24: * Returns the string 'B'.
25: * @return string
26: */
27: public function getName()
28: {
29: return 'B';
30: }
31:
32: /**
33: * Takes an unencoded string and produces a Base64 encoded string from it.
34: * If the charset is iso-2022-jp, it uses mb_encode_mimeheader instead of
35: * default encodeString, otherwise pass to the parent method.
36: * @param string $string to encode
37: * @param int $firstLineOffset
38: * @param int $maxLineLength, optional, 0 indicates the default of 76 bytes
39: * @param string $charset
40: * @return string
41: */
42: public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0, $charset = 'utf-8')
43: {
44: if (strtolower($charset) === 'iso-2022-jp') {
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:
50: return $newstring;
51: }
52:
53: return parent::encodeString($string, $firstLineOffset, $maxLineLength);
54: }
55: }
56: