Skip to content

Commit

Permalink
[mms] Horde_Mime_Headers#parseHeaders() now accepts resources and Hor…
Browse files Browse the repository at this point in the history
…de_Stream objects.
  • Loading branch information
slusarz committed Mar 5, 2014
1 parent a890f1b commit 719482a
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 12 deletions.
10 changes: 10 additions & 0 deletions framework/Mime/doc/Horde/Mime/UPGRADING
Expand Up @@ -11,6 +11,16 @@
This lists the API changes between releases of the package.


Upgrading to 2.3
================

- Horde_Mime_Headers

- parseHeaders()

The $text parameter now accepts both resources and Horde_Stream objects.


Upgrading to 2.2
================

Expand Down
18 changes: 12 additions & 6 deletions framework/Mime/lib/Horde/Mime/Headers.php
Expand Up @@ -632,10 +632,9 @@ protected function _sanityCheck($data)

/**
* Builds a Horde_Mime_Headers object from header text.
* This function can be called statically:
* $headers = Horde_Mime_Headers::parseHeaders().
*
* @param string $text A text string containing the headers.
* @param mixed $text A text string (or, as of 2.3.0, a Horde_Stream
* object or stream resource) containing the headers.
*
* @return Horde_Mime_Headers A new Horde_Mime_Headers object.
*/
Expand All @@ -645,9 +644,16 @@ static public function parseHeaders($text)
$mime = self::mimeParamFields();
$to_process = array();

foreach (explode("\n", $text) as $val) {
$val = rtrim($val, "\r\n");
if (empty($val)) {
if ($text instanceof Horde_Stream) {
$stream = $text;
$stream->rewind();
} else {
$stream = new Horde_Stream_Temp();
$stream->add($text, true);
}

while (!$stream->eof()) {
if (!($val = rtrim($stream->getToChar("\n", false), "\r"))) {
break;
}

Expand Down
12 changes: 6 additions & 6 deletions framework/Mime/package.xml
Expand Up @@ -19,16 +19,16 @@
</lead>
<date>2014-02-11</date>
<version>
<release>2.2.10</release>
<api>2.2.0</api>
<release>2.3.0</release>
<api>2.3.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
<notes>
*
* [mms] Horde_Mime_Headers#parseHeaders() now accepts resources and Horde_Stream objects.
</notes>
<contents>
<dir baseinstalldir="/" name="/">
Expand Down Expand Up @@ -1257,15 +1257,15 @@
</release>
<release>
<version>
<release>2.2.10</release>
<api>2.2.0</api></version>
<release>2.3.0</release>
<api>2.3.0</api></version>
<stability>
<release>stable</release>
<api>stable</api></stability>
<date>2014-02-10</date>
<license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
<notes>
*
* [mms] Horde_Mime_Headers#parseHeaders() now accepts resources and Horde_Stream objects.
</notes>
</release>
</changelog>
Expand Down
19 changes: 19 additions & 0 deletions framework/Mime/test/Horde/Mime/HeadersTest.php
Expand Up @@ -183,4 +183,23 @@ public function testBug12189()
$this->assertNotNull($hdrs->getValue('From'));
}

public function testParseHeadersGivingStreamResource()
{
$fp = fopen(__DIR__ . '/fixtures/multiple_to.txt', 'r');
$hdrs = Horde_Mime_Headers::parseHeaders($fp);
fclose($fp);

$this->assertNotEmpty($hdrs->getValue('To'));
}

public function testParseHeadersGivingHordeStreamObject()
{
$stream = new Horde_Stream_Existing(array(
'stream' => fopen(__DIR__ . '/fixtures/multiple_to.txt', 'r')
));
$hdrs = Horde_Mime_Headers::parseHeaders($stream);

$this->assertNotEmpty($hdrs->getValue('To'));
}

}

0 comments on commit 719482a

Please sign in to comment.