| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- <?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.
 -  */
 - 
 - 
 - /**
 -  * Handles Quoted Printable (QP) Transfer Encoding in Swift Mailer.
 -  * @package Swift
 -  * @subpackage Mime
 -  * @author Chris Corbyn
 -  */
 - class Swift_Mime_ContentEncoder_QpContentEncoder extends Swift_Encoder_QpEncoder
 -   implements Swift_Mime_ContentEncoder
 - {
 - 
 -   /**
 -    * Creates a new QpContentEncoder for the given CharacterStream.
 -    * @param Swift_CharacterStream $charStream to use for reading characters
 -    * @param Swift_StreamFilter $filter if canonicalization should occur
 -    * @param boolean $dotEscape if dot stuffing workaround must be enabled
 -    */
 -   public function __construct(Swift_CharacterStream $charStream,
 -     Swift_StreamFilter $filter = null, $dotEscape=false)
 -   {
 -     parent::__construct($charStream, $filter);
 -     if ($dotEscape) {
 -       /* Encode . as =2e for buggy remote servers */
 -       unset($this->_safeMap[0x2e]);
 -     }
 -   }
 - 
 -   /**
 -    * Encode stream $in to stream $out.
 -    * QP encoded strings have a maximum line length of 76 characters.
 -    * If the first line needs to be shorter, indicate the difference with
 -    * $firstLineOffset.
 -    * @param Swift_OutputByteStream $os output stream
 -    * @param Swift_InputByteStream $is input stream
 -    * @param int $firstLineOffset
 -    * @param int $maxLineLength
 -    */
 -   public function encodeByteStream(
 -     Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0,
 -     $maxLineLength = 0)
 -   {
 -     if ($maxLineLength > 76 || $maxLineLength <= 0)
 -     {
 -       $maxLineLength = 76;
 -     }
 - 
 -     $thisLineLength = $maxLineLength - $firstLineOffset;
 - 
 -     $this->_charStream->flushContents();
 -     $this->_charStream->importByteStream($os);
 -     
 -     $currentLine = '';
 -     $prepend = '';
 -     $size=$lineLen=0;
 - 
 -     while (false !== $bytes = $this->_nextSequence())
 -     {
 -       //If we're filtering the input
 -       if (isset($this->_filter))
 -       {
 -         //If we can't filter because we need more bytes
 -         while ($this->_filter->shouldBuffer($bytes))
 -         {
 -           //Then collect bytes into the buffer
 -           if (false === $moreBytes = $this->_nextSequence(1))
 -           {
 -             break;
 -           }
 - 
 -           foreach ($moreBytes as $b)
 -           {
 -             $bytes[] = $b;
 -           }
 -         }
 -         //And filter them
 -         $bytes = $this->_filter->filter($bytes);
 -       }
 - 
 -       $enc = $this->_encodeByteSequence($bytes, $size);
 -       if ($currentLine && $lineLen+$size >= $thisLineLength)
 -       {
 -         $is->write($prepend . $this->_standardize($currentLine));
 -         $currentLine = '';
 -         $prepend = "=\r\n";
 -         $thisLineLength = $maxLineLength;
 -         $lineLen=0;
 -       }
 -       $lineLen+=$size;
 -       $currentLine .= $enc;
 -     }
 -     if (strlen($currentLine))
 -     {
 -       $is->write($prepend . $this->_standardize($currentLine));
 -     }
 -   }
 - 
 -   /**
 -    * Get the name of this encoding scheme.
 -    * Returns the string 'quoted-printable'.
 -    * @return string
 -    */
 -   public function getName()
 -   {
 -     return 'quoted-printable';
 -   }
 - 
 - }
 
 
  |