Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/** This file is part of SwiftMailer.* (c) 2004-2009 Chris Corbyn** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*///@require 'Swift/Encoder.php';//@require 'Swift/CharacterStream.php';/*** Handles RFC 2231 specified Encoding in Swift Mailer.* @package Swift* @subpackage Encoder* @author Chris Corbyn*/class Swift_Encoder_Rfc2231Encoder implements Swift_Encoder{/*** A character stream to use when reading a string as characters instead of bytes.* @var Swift_CharacterStream* @access private*/private $_charStream;/*** Creates a new Rfc2231Encoder using the given character stream instance.* @param Swift_CharacterStream*/public function __construct(Swift_CharacterStream $charStream){$this->_charStream = $charStream;}/*** Takes an unencoded string and produces a string encoded according to* RFC 2231 from it.* @param string $string to encode* @param int $firstLineOffset* @param int $maxLineLength, optional, 0 indicates the default of 75 bytes* @return string*/public function encodeString($string, $firstLineOffset = 0,$maxLineLength = 0){$lines = array(); $lineCount = 0;$lines[] = '';$currentLine =& $lines[$lineCount++];if (0 >= $maxLineLength){$maxLineLength = 75;}$this->_charStream->flushContents();$this->_charStream->importString($string);$thisLineLength = $maxLineLength - $firstLineOffset;while (false !== $char = $this->_charStream->read(4)){$encodedChar = rawurlencode($char);if (0 != strlen($currentLine)&& strlen($currentLine . $encodedChar) > $thisLineLength){$lines[] = '';$currentLine =& $lines[$lineCount++];$thisLineLength = $maxLineLength;}$currentLine .= $encodedChar;}return implode("\r\n", $lines);}/*** Updates the charset used.* @param string $charset*/public function charsetChanged($charset){$this->_charStream->setCharacterSet($charset);}}