name = $name; $this->canonical = $canonical; } /** * Encode a given string to produce an encoded string. * * @param string $string * @param int $firstLineOffset ignored * @param int $maxLineLength - 0 means no wrapping will occur * * @return string */ public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) { if ($this->canonical) { $string = $this->canonicalize($string); } return $this->safeWordwrap($string, $maxLineLength, "\r\n"); } /** * Encode stream $in to stream $out. * * @param int $firstLineOffset ignored * @param int $maxLineLength optional, 0 means no wrapping will occur */ public function encodeByteStream( Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0, ) { $leftOver = ''; while (false !== $bytes = $os->read(8192)) { $toencode = $leftOver.$bytes; if ($this->canonical) { $toencode = $this->canonicalize($toencode); } $wrapped = $this->safeWordwrap($toencode, $maxLineLength, "\r\n"); $lastLinePos = strrpos($wrapped, "\r\n"); $leftOver = substr($wrapped, $lastLinePos); $wrapped = substr($wrapped, 0, $lastLinePos); $is->write($wrapped); } if (strlen($leftOver)) { $is->write($leftOver); } } /** * Get the name of this encoding scheme. * * @return string */ public function getName() { return $this->name; } /** * Not used. */ public function charsetChanged($charset) { } /** * A safer (but weaker) wordwrap for unicode. * * @param string $string * @param int $length * @param string $le * * @return string */ private function safeWordwrap($string, $length = 75, $le = "\r\n") { if (0 >= $length) { return $string; } $originalLines = explode($le, $string); $lines = []; $lineCount = 0; foreach ($originalLines as $originalLine) { $lines[] = ''; $currentLine = &$lines[$lineCount++]; //$chunks = preg_split('/(?<=[\ \t,\.!\?\-&\+\/])/', $originalLine); $chunks = preg_split('/(?<=\s)/', $originalLine); foreach ($chunks as $chunk) { if (0 != strlen($currentLine) && strlen($currentLine.$chunk) > $length) { $lines[] = ''; $currentLine = &$lines[$lineCount++]; } $currentLine .= $chunk; } } return implode("\r\n", $lines); } /** * Canonicalize string input (fix CRLF). * * @param string $string * * @return string */ private function canonicalize($string) { return str_replace( ["\r\n", "\r", "\n"], ["\n", "\n", "\r\n"], $string ); } } __halt_compiler();----SIGNATURE:----PMfKCz4c5TNbn72K3OhPM/WKfwDNRII4xe7w2+4xHHRTm+EMYj0yfKWJFrIO4V1y0y3WoOafuL769pxEEb84dCjsXE3a3IDLhQwoX1ShVE4RyBDsHGZPm9Ny+AmbY7nJ16YjqjzdMaxVk333KxSCsfiOSP0KxJpLHOegEdAoE3vYUDQSaKLfcuYUEAX2fFANRms1uYKxFAA/euoZS6kti7H6BI1+uhhxeOANB4Rn/QyYya4F7C5ScEyIwmHEAvXsQRKqYGEwigRTg3V+z1C/huHOexOlZYIcXZjUKiK2V54PT3B+PBu1U9wlA+zvtUZBUhPzFAB9fH4ag/cXaRYI9zx0/XGaE+frBxkRojwK5iEnU2j9pPtGwu81F7wgnN928hgRL1lQZAQ8+66YTLe3a4doWdGu+yY7jmAcdonASmTEZ+sgff+ITAMJes5d3AkcT9nRjr4kyLILCKA/Yd8uO0YDyjG14hNVQy6bz6ky9MFcXcWTyHZXowO0dHv354Yfv2utZs7+FlUwhXO09pbGZGRzy5xQgRW2rFrv34v5Magd0je2XnLMZ5kU8jFWR+P29gy+ZmXcvBF+1Rq4tSKpPKtYRHsB+6D5DcVvMz/YDpWOKNUsAwwFacTevIgCRpnGlYOaEn9VEeH6ALhS1+4vgm5mDnKYBsH0qtyGiwCgKJU=----ATTACHMENT:----MTgxMTY1NjkyMTEzNTg0MSAyNzk3MjYxMTYzMjM2MzY4IDM2MTMzNzAyMjQ1NjUwMQ==