PageRenderTime 31ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/framework/vendor/swift/lib/classes/Swift/Mime/SimpleHeaderFactory.php

http://zoop.googlecode.com/
PHP | 187 lines | 96 code | 17 blank | 74 comment | 8 complexity | 4d88cb7cb21a2872165fb807de5fc633 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1
  1. <?php
  2. /*
  3. * This file is part of SwiftMailer.
  4. * (c) 2004-2009 Chris Corbyn
  5. *
  6. * For the full copyright and license information, please view the LICENSE
  7. * file that was distributed with this source code.
  8. */
  9. //@require 'Swift/Mime/HeaderFactory.php';
  10. //@require 'Swift/Mime/HeaderEncoder.php';
  11. //@require 'Swift/Encoder.php';
  12. //@require 'Swift/Mime/Headers/MailboxHeader.php';
  13. //@require 'Swift/Mime/Headers/DateHeader.php';
  14. //@require 'Swift/Mime/Headers/UnstructuredHeader.php';
  15. //@require 'Swift/Mime/Headers/ParameterizedHeader.php';
  16. //@require 'Swift/Mime/Headers/IdentificationHeader.php';
  17. //@require 'Swift/Mime/Headers/PathHeader.php';
  18. /**
  19. * Creates MIME headers.
  20. * @package Swift
  21. * @subpackage Mime
  22. * @author Chris Corbyn
  23. */
  24. class Swift_Mime_SimpleHeaderFactory implements Swift_Mime_HeaderFactory
  25. {
  26. /** The HeaderEncoder used by these headers */
  27. private $_encoder;
  28. /** The Encoder used by parameters */
  29. private $_paramEncoder;
  30. /** The charset of created Headers */
  31. private $_charset;
  32. /**
  33. * Creates a new SimpleHeaderFactory using $encoder and $paramEncoder.
  34. * @param Swift_Mime_HeaderEncoder $encoder
  35. * @param Swift_Encoder $paramEncoder
  36. * @param string $charset
  37. */
  38. public function __construct(Swift_Mime_HeaderEncoder $encoder,
  39. Swift_Encoder $paramEncoder, $charset = null)
  40. {
  41. $this->_encoder = $encoder;
  42. $this->_paramEncoder = $paramEncoder;
  43. $this->_charset = $charset;
  44. }
  45. /**
  46. * Create a new Mailbox Header with a list of $addresses.
  47. * @param string $name
  48. * @param array|string $addresses
  49. * @return Swift_Mime_Header
  50. */
  51. public function createMailboxHeader($name, $addresses = null)
  52. {
  53. $header = new Swift_Mime_Headers_MailboxHeader($name, $this->_encoder);
  54. if (isset($addresses))
  55. {
  56. $header->setFieldBodyModel($addresses);
  57. }
  58. $this->_setHeaderCharset($header);
  59. return $header;
  60. }
  61. /**
  62. * Create a new Date header using $timestamp (UNIX time).
  63. * @param string $name
  64. * @param int $timestamp
  65. * @return Swift_Mime_Header
  66. */
  67. public function createDateHeader($name, $timestamp = null)
  68. {
  69. $header = new Swift_Mime_Headers_DateHeader($name);
  70. if (isset($timestamp))
  71. {
  72. $header->setFieldBodyModel($timestamp);
  73. }
  74. $this->_setHeaderCharset($header);
  75. return $header;
  76. }
  77. /**
  78. * Create a new basic text header with $name and $value.
  79. * @param string $name
  80. * @param string $value
  81. * @return Swift_Mime_Header
  82. */
  83. public function createTextHeader($name, $value = null)
  84. {
  85. $header = new Swift_Mime_Headers_UnstructuredHeader($name, $this->_encoder);
  86. if (isset($value))
  87. {
  88. $header->setFieldBodyModel($value);
  89. }
  90. $this->_setHeaderCharset($header);
  91. return $header;
  92. }
  93. /**
  94. * Create a new ParameterizedHeader with $name, $value and $params.
  95. * @param string $name
  96. * @param string $value
  97. * @param array $params
  98. * @return Swift_Mime_ParameterizedHeader
  99. */
  100. public function createParameterizedHeader($name, $value = null,
  101. $params = array())
  102. {
  103. $header = new Swift_Mime_Headers_ParameterizedHeader($name,
  104. $this->_encoder, (strtolower($name) == 'content-disposition')
  105. ? $this->_paramEncoder
  106. : null
  107. );
  108. if (isset($value))
  109. {
  110. $header->setFieldBodyModel($value);
  111. }
  112. foreach ($params as $k => $v)
  113. {
  114. $header->setParameter($k, $v);
  115. }
  116. $this->_setHeaderCharset($header);
  117. return $header;
  118. }
  119. /**
  120. * Create a new ID header for Message-ID or Content-ID.
  121. * @param string $name
  122. * @param string|array $ids
  123. * @return Swift_Mime_Header
  124. */
  125. public function createIdHeader($name, $ids = null)
  126. {
  127. $header = new Swift_Mime_Headers_IdentificationHeader($name);
  128. if (isset($ids))
  129. {
  130. $header->setFieldBodyModel($ids);
  131. }
  132. $this->_setHeaderCharset($header);
  133. return $header;
  134. }
  135. /**
  136. * Create a new Path header with an address (path) in it.
  137. * @param string $name
  138. * @param string $path
  139. * @return Swift_Mime_Header
  140. */
  141. public function createPathHeader($name, $path = null)
  142. {
  143. $header = new Swift_Mime_Headers_PathHeader($name);
  144. if (isset($path))
  145. {
  146. $header->setFieldBodyModel($path);
  147. }
  148. $this->_setHeaderCharset($header);
  149. return $header;
  150. }
  151. /**
  152. * Notify this observer that the entity's charset has changed.
  153. * @param string $charset
  154. */
  155. public function charsetChanged($charset)
  156. {
  157. $this->_charset = $charset;
  158. $this->_encoder->charsetChanged($charset);
  159. $this->_paramEncoder->charsetChanged($charset);
  160. }
  161. // -- Private methods
  162. /** Apply the charset to the Header */
  163. private function _setHeaderCharset(Swift_Mime_Header $header)
  164. {
  165. if (isset($this->_charset))
  166. {
  167. $header->setCharset($this->_charset);
  168. }
  169. }
  170. }