41 $this->_factory = $factory;
42 if (isset($charset)) {
54 $this->_charset = $charset;
55 $this->_factory->charsetChanged($charset);
68 $this->_factory->createMailboxHeader($name, $addresses));
80 $this->_factory->createDateHeader($name, $timestamp));
92 $this->_factory->createTextHeader($name, $value));
104 $this->
_storeHeader($name, $this->_factory->createParameterizedHeader($name, $value, $params));
115 $this->
_storeHeader($name, $this->_factory->createIdHeader($name, $ids));
126 $this->
_storeHeader($name, $this->_factory->createPathHeader($name, $path));
139 public function has($name, $index = 0)
141 $lowerName = strtolower($name);
143 return array_key_exists($lowerName, $this->_headers) && array_key_exists($index, $this->_headers[$lowerName]);
160 $this->
_storeHeader($header->getFieldName(), $header, $index);
174 public function get($name, $index = 0)
176 if ($this->
has($name, $index)) {
177 $lowerName = strtolower($name);
179 return $this->_headers[$lowerName][$index];
194 foreach ($this->_headers as $collection) {
195 $headers = array_merge($headers, $collection);
201 $lowerName = strtolower($name);
202 if (!array_key_exists($lowerName, $this->_headers)) {
206 return $this->_headers[$lowerName];
218 uksort($headers, array($this,
'_sortHeaders'));
221 return array_keys($headers);
232 public function remove($name, $index = 0)
234 $lowerName = strtolower($name);
235 unset($this->_headers[$lowerName][$index]);
245 $lowerName = strtolower($name);
246 unset($this->_headers[$lowerName]);
268 $this->_order = array_flip(array_map(
'strtolower', $sequence));
280 $this->_required = array_flip(array_map(
'strtolower', $names));
303 uksort($headers, array($this,
'_sortHeaders'));
305 foreach ($headers as $collection) {
306 foreach ($collection as $header) {
307 if ($this->
_isDisplayed($header) || $header->getFieldBody() !=
'') {
308 $string .= $header->toString();
331 if (!isset($this->_headers[strtolower($name)])) {
332 $this->_headers[strtolower($name)] = array();
334 if (!isset($offset)) {
335 $this->_headers[strtolower($name)][] = $header;
337 $this->_headers[strtolower($name)][$offset] = $header;
344 return count($this->_order) > 0;
350 $lowerA = strtolower($a);
351 $lowerB = strtolower($b);
352 $aPos = array_key_exists($lowerA, $this->_order)
353 ? $this->_order[$lowerA]
355 $bPos = array_key_exists($lowerB, $this->_order)
356 ? $this->_order[$lowerB]
365 return ($aPos < $bPos) ? -1 : 1;
371 return array_key_exists(strtolower($header->
getFieldName()), $this->_required);
377 foreach ($this->_headers as $headerGroup) {
378 foreach ($headerGroup as $header) {
379 $header->setCharset($charset);
390 foreach ($this->_headers as $groupKey => $headerGroup) {
391 foreach ($headerGroup as $key => $header) {
392 $this->_headers[$groupKey][$key] = clone $header;