*/ class Swift_Mime_ContentEncoder_QpContentEncoderProxy implements Swift_Mime_ContentEncoder { /** * @var Swift_Mime_ContentEncoder_QpContentEncoder */ private $safeEncoder; /** * @var Swift_Mime_ContentEncoder_NativeQpContentEncoder */ private $nativeEncoder; /** * @var null|string */ private $charset; /** * Constructor. * * @param Swift_Mime_ContentEncoder_QpContentEncoder $safeEncoder * @param Swift_Mime_ContentEncoder_NativeQpContentEncoder $nativeEncoder * @param string|null $charset */ public function __construct(Swift_Mime_ContentEncoder_QpContentEncoder $safeEncoder, Swift_Mime_ContentEncoder_NativeQpContentEncoder $nativeEncoder, $charset) { $this->safeEncoder = $safeEncoder; $this->nativeEncoder = $nativeEncoder; $this->charset = $charset; } /** * Make a deep copy of object. */ public function __clone() { $this->safeEncoder = clone $this->safeEncoder; $this->nativeEncoder = clone $this->nativeEncoder; } /** * {@inheritdoc} */ public function charsetChanged($charset) { $this->charset = $charset; $this->safeEncoder->charsetChanged($charset); } /** * {@inheritdoc} */ public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) { $this->getEncoder()->encodeByteStream($os, $is, $firstLineOffset, $maxLineLength); } /** * {@inheritdoc} */ public function getName() { return 'quoted-printable'; } /** * {@inheritdoc} */ public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) { return $this->getEncoder()->encodeString($string, $firstLineOffset, $maxLineLength); } /** * @return Swift_Mime_ContentEncoder */ private function getEncoder() { return 'utf-8' === $this->charset ? $this->nativeEncoder : $this->safeEncoder; } }