diff options
Diffstat (limited to 'Postman/Postman-Mail/Zend-1.12.10/Mail/Part/File.php')
-rw-r--r-- | Postman/Postman-Mail/Zend-1.12.10/Mail/Part/File.php | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/Postman/Postman-Mail/Zend-1.12.10/Mail/Part/File.php b/Postman/Postman-Mail/Zend-1.12.10/Mail/Part/File.php deleted file mode 100644 index dbe34c2..0000000 --- a/Postman/Postman-Mail/Zend-1.12.10/Mail/Part/File.php +++ /dev/null @@ -1,198 +0,0 @@ -<?php -/** - * Zend Framework - * - * LICENSE - * - * This source file is subject to the new BSD license that is bundled - * with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://framework.zend.com/license/new-bsd - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@zend.com so we can send you a copy immediately. - * - * @category Zend - * @package Postman_Zend_Mail - * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) - * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id$ - */ - - -/** - * @see Postman_Zend_Mime_Decode - */ -require_once 'Zend/Mime/Decode.php'; - -/** - * @see Postman_Zend_Mail_Part - */ -require_once 'Zend/Mail/Part.php'; - - -/** - * @category Zend - * @package Postman_Zend_Mail - * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) - * @license http://framework.zend.com/license/new-bsd New BSD License - */ -class Postman_Zend_Mail_Part_File extends Postman_Zend_Mail_Part -{ - protected $_contentPos = array(); - protected $_partPos = array(); - protected $_fh; - - /** - * Public constructor - * - * This handler supports the following params: - * - file filename or open file handler with message content (required) - * - startPos start position of message or part in file (default: current position) - * - endPos end position of message or part in file (default: end of file) - * - * @param array $params full message with or without headers - * @throws Postman_Zend_Mail_Exception - */ - public function __construct(array $params) - { - if (empty($params['file'])) { - /** - * @see Postman_Zend_Mail_Exception - */ - require_once 'Zend/Mail/Exception.php'; - throw new Postman_Zend_Mail_Exception('no file given in params'); - } - - if (!is_resource($params['file'])) { - $this->_fh = fopen($params['file'], 'r'); - } else { - $this->_fh = $params['file']; - } - if (!$this->_fh) { - /** - * @see Postman_Zend_Mail_Exception - */ - require_once 'Zend/Mail/Exception.php'; - throw new Postman_Zend_Mail_Exception('could not open file'); - } - if (isset($params['startPos'])) { - fseek($this->_fh, $params['startPos']); - } - $header = ''; - $endPos = isset($params['endPos']) ? $params['endPos'] : null; - while (($endPos === null || ftell($this->_fh) < $endPos) && trim($line = fgets($this->_fh))) { - $header .= $line; - } - - Postman_Zend_Mime_Decode::splitMessage($header, $this->_headers, $null); - - $this->_contentPos[0] = ftell($this->_fh); - if ($endPos !== null) { - $this->_contentPos[1] = $endPos; - } else { - fseek($this->_fh, 0, SEEK_END); - $this->_contentPos[1] = ftell($this->_fh); - } - if (!$this->isMultipart()) { - return; - } - - $boundary = $this->getHeaderField('content-type', 'boundary'); - if (!$boundary) { - /** - * @see Postman_Zend_Mail_Exception - */ - require_once 'Zend/Mail/Exception.php'; - throw new Postman_Zend_Mail_Exception('no boundary found in content type to split message'); - } - - $part = array(); - $pos = $this->_contentPos[0]; - fseek($this->_fh, $pos); - while (!feof($this->_fh) && ($endPos === null || $pos < $endPos)) { - $line = fgets($this->_fh); - if ($line === false) { - if (feof($this->_fh)) { - break; - } - /** - * @see Postman_Zend_Mail_Exception - */ - require_once 'Zend/Mail/Exception.php'; - throw new Postman_Zend_Mail_Exception('error reading file'); - } - - $lastPos = $pos; - $pos = ftell($this->_fh); - $line = trim($line); - - if ($line == '--' . $boundary) { - if ($part) { - // not first part - $part[1] = $lastPos; - $this->_partPos[] = $part; - } - $part = array($pos); - } else if ($line == '--' . $boundary . '--') { - $part[1] = $lastPos; - $this->_partPos[] = $part; - break; - } - } - $this->_countParts = count($this->_partPos); - - } - - - /** - * Body of part - * - * If part is multipart the raw content of this part with all sub parts is returned - * - * @return string body - * @throws Postman_Zend_Mail_Exception - */ - public function getContent($stream = null) - { - fseek($this->_fh, $this->_contentPos[0]); - if ($stream !== null) { - return stream_copy_to_stream($this->_fh, $stream, $this->_contentPos[1] - $this->_contentPos[0]); - } - $length = $this->_contentPos[1] - $this->_contentPos[0]; - return $length < 1 ? '' : fread($this->_fh, $length); - } - - /** - * Return size of part - * - * Quite simple implemented currently (not decoding). Handle with care. - * - * @return int size - */ - public function getSize() { - return $this->_contentPos[1] - $this->_contentPos[0]; - } - - /** - * Get part of multipart message - * - * @param int $num number of part starting with 1 for first part - * @return Postman_Zend_Mail_Part wanted part - * @throws Postman_Zend_Mail_Exception - */ - public function getPart($num) - { - --$num; - if (!isset($this->_partPos[$num])) { - /** - * @see Postman_Zend_Mail_Exception - */ - require_once 'Zend/Mail/Exception.php'; - throw new Postman_Zend_Mail_Exception('part not found'); - } - - return new self(array('file' => $this->_fh, 'startPos' => $this->_partPos[$num][0], - 'endPos' => $this->_partPos[$num][1])); - } -} |