/frameworks/solar/1.1.1/source/solar/Solar/Mail/Message/Part.php
https://github.com/ggunlugu/ornekler · PHP · 436 lines · 139 code · 39 blank · 258 comment · 6 complexity · 8ba7c414c8ed72e289dc5cf1bb6138ad MD5 · raw file
- <?php
- /**
- *
- * Represents one MIME part of a Solar_Mail_Message.
- *
- * Refactored and modified from Zend_Mail_Message and related classes.
- *
- * @category Solar
- *
- * @package Solar_Mail
- *
- * @author Paul M. Jones <pmjones@solarphp.com>
- *
- * @license http://opensource.org/licenses/bsd-license.php BSD
- *
- * @version $Id: Part.php 4416 2010-02-23 19:52:43Z pmjones $
- *
- */
- class Solar_Mail_Message_Part extends Solar_Base
- {
- /**
- *
- * The character set for this part.
- *
- * @var string
- *
- */
- protected $_charset = 'utf-8';
-
- /**
- *
- * The CRLF sequence for this part.
- *
- * @var string
- *
- */
- protected $_crlf = "\r\n";
-
- /**
- *
- * The Content-Disposition for this part.
- *
- * Typically 'inline' or 'attachment'.
- *
- * @var string
- *
- */
- protected $_disposition = 'attachment';
-
- /**
- *
- * The Content-Transfer-Encoding for this part.
- *
- * @var string
- *
- */
- protected $_encoding = 'base64';
-
- /**
- *
- * When the part represents a file, use this as the filename.
- *
- * @var string
- *
- */
- protected $_filename = null;
-
- /**
- *
- * The Content-Type for this part.
- *
- * @var string
- *
- */
- protected $_type = 'application/octet-stream';
-
- /**
- *
- * The body content for this part.
- *
- * @var string
- *
- */
- protected $_content = null;
-
- /**
- *
- * The boundary string to use in this part.
- *
- * @var string
- *
- */
- protected $_boundary = null;
-
- /**
- *
- * Array of custom headers for this part.
- *
- * @var array
- *
- */
- protected $_headers = array();
-
- /**
- *
- * Sets the CRLF sequence for this part.
- *
- * @param string $crlf The CRLF line-ending string.
- *
- * @return void
- *
- */
- public function setCrlf($crlf)
- {
- $this->_crlf = $crlf;
- }
-
- /**
- *
- * Returns the CRLF sequence for this part.
- *
- * @return string
- *
- */
- public function getCrlf()
- {
- return $this->_crlf;
- }
-
- /**
- *
- * Sets the Content-Type for this part.
- *
- * @param string $type The content type, e.g. 'image/jpeg'.
- *
- * @return void
- *
- */
- public function setType($type)
- {
- $this->_type = $type;
- }
-
- /**
- *
- * Returns the Content-Type for this part.
- *
- * @return string
- *
- */
- public function getType()
- {
- return $this->_type;
- }
-
- /**
- *
- * Sets the Content-Type character set for this part.
- *
- * @param string $charset The character set.
- *
- * @return void
- *
- */
- public function setCharset($charset)
- {
- $this->_charset = $charset;
- }
-
- /**
- *
- * Returns the Content-Type character set for this part.
- *
- * @return string
- *
- */
- public function getCharset()
- {
- return $this->_charset;
- }
-
- /**
- *
- * Sets the Content-Type boundary for this part.
- *
- * @param string $boundary The boundary string.
- *
- * @return void
- *
- */
- public function setBoundary($boundary)
- {
- $this->_boundary = $boundary;
- }
-
- /**
- *
- * Returns the Content-Type boundary for this part.
- *
- * @return string
- *
- */
- public function getBoundary()
- {
- return $this->_boundary;
- }
-
- /**
- *
- * Sets the Content-Disposition for this part.
- *
- * @param string $disposition Typically 'inline' or 'attachment'.
- *
- * @return void
- *
- */
- public function setDisposition($disposition)
- {
- $this->_disposition = $disposition;
- }
-
- /**
- *
- * Returns the Content-Disposition for this part.
- *
- * @return string
- *
- */
- public function getDisposition()
- {
- return $this->_disposition;
- }
-
- /**
- *
- * Sets the Content-Disposition filename for this part.
- *
- * @param string $filename The file name.
- *
- * @return void
- *
- */
- public function setFilename($filename)
- {
- $this->_filename = $filename;
- }
-
- /**
- *
- * Returns the Content-Disposition filename for this part.
- *
- * @return string
- *
- */
- public function getFilename()
- {
- return $this->_filename;
- }
-
- /**
- *
- * Sets the Content-Transfer-Encoding for this part.
- *
- * @param string $encoding Typically 'base64' or 'quoted-printable'.
- *
- * @return void
- *
- */
- public function setEncoding($encoding)
- {
- $this->_encoding = $encoding;
- }
-
- /**
- *
- * Returns the Content-Transfer-Encoding for this part.
- *
- * @return string
- *
- */
- public function getEncoding()
- {
- return $this->_encoding;
- }
-
- /**
- *
- * Sets the body content for this part.
- *
- * @param string $content The body content.
- *
- * @return void
- *
- */
- public function setContent($content)
- {
- $this->_content = $content;
- }
-
- /**
- *
- * Returns the body content for this part.
- *
- * @return string
- *
- */
- public function getContent()
- {
- return $this->_content;
- }
-
- /**
- *
- * Sets (or resets) one header in the part.
- *
- * Canonicalizes the label, and strips CR/LF from the value, to help
- * prevent header injections.
- *
- * You can only set one label to one value; you can't have multiple
- * repetitions of the same label to get multiple values.
- *
- * @param string $label The header label.
- *
- * @param string $value The header value.
- *
- * @return void
- *
- */
- public function setHeader($label, $value)
- {
- // sanitize the header label
- $label = Solar_Mime::headerLabel($label);
-
- // not allowed to add headers for these labels
- $list = array('content-type', 'content-transfer-encoding',
- 'content-disposition');
- if (in_array(strtolower($label), $list)) {
- throw $this->_exception('ERR_USE_OTHER_METHOD', array(
- 'key' => $label,
- ));
- }
-
- // save the label and value
- $this->_headers[$label] = $value;
- }
-
- /**
- *
- * Returns the headers, a newline, and the content, all as a single block.
- *
- * @return string
- *
- */
- public function fetch()
- {
- return $this->fetchHeaders()
- . $this->_crlf
- . $this->fetchContent();
- }
-
- /**
- *
- * Returns all the headers as a string.
- *
- * @return string
- *
- */
- public function fetchHeaders()
- {
- // start with all the "custom" headers.
- // we will apply header-value encoding at the end.
- $headers = $this->_headers;
-
- // Content-Type:
- $content_type = $this->_type;
-
- if ($this->_charset) {
- $content_type .= '; charset="' . $this->_charset . '"';
- }
-
- if ($this->_boundary) {
- $content_type .= ';' . $this->_crlf
- . ' boundary="' . $this->_boundary . '"';
- }
-
- $headers['Content-Type'] = $content_type;
-
- // Content-Disposition:
- if ($this->_disposition) {
- $disposition = $this->_disposition;
- if ($this->_filename) {
- $disposition .= '; filename="' . $this->_filename . '"';
- }
- $headers['Content-Disposition'] = $disposition;
- }
-
- // Content-Transfer-Encoding:
- if ($this->_encoding) {
- $headers['Content-Transfer-Encoding'] = $this->_encoding;
- }
-
- // now loop through all the headers and build the header block,
- // using header-value encoding as we go.
- $output = '';
- foreach ($headers as $label => $value) {
- $label = Solar_Mime::headerLabel($label);
- $value = Solar_Mime::headerValue(
- $label,
- $value,
- $this->_charset,
- $this->_crlf
- );
- $output .= "$label: $value{$this->_crlf}";
- }
-
- return $output;
- }
-
- /**
- *
- * Returns the body content of this part with the proper encoding.
- *
- * @return string
- *
- */
- public function fetchContent()
- {
- $content = Solar_Mime::encode(
- $this->_encoding,
- $this->_content,
- $this->_crlf
- );
-
- return $content;
- }
- }