Add stream fetch() output to Cclient driver
authorMichael M Slusarz <slusarz@curecanti.org>
Mon, 6 Jul 2009 03:52:58 +0000 (21:52 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Mon, 6 Jul 2009 03:52:58 +0000 (21:52 -0600)
framework/Imap_Client/lib/Horde/Imap/Client/Cclient.php
framework/Imap_Client/lib/Horde/Imap/Client/Socket.php

index e759156..542dbf8 100644 (file)
@@ -1010,6 +1010,12 @@ class Horde_Imap_Client_Cclient extends Horde_Imap_Client_Base
                     } else {
                         $ret[$id]['fullmsg'] = $tmp;
                     }
+
+                    if (!empty($c_val['stream'])) {
+                        $ptr = fopen('php://temp', 'r+');
+                        fwrite($ptr, $tmp);
+                        $ret[$id]['fullmsg'] = $ptr;
+                    }
                 }
                 break;
 
@@ -1045,9 +1051,14 @@ class Horde_Imap_Client_Cclient extends Horde_Imap_Client_Base
                             $tmp = substr($tmp, $val['start'], $val['length']);
                         }
 
-                        if (!empty($val['parse']) &&
-                            ($type == Horde_Imap_Client::FETCH_BODYPART)) {
-                            $tmp = Horde_Mime_Headers::parseHeaders($tmp);
+                        if ($type == Horde_Imap_Client::FETCH_BODYPART) {
+                            if (!empty($val['parse'])) {
+                                $tmp = Horde_Mime_Headers::parseHeaders($tmp);
+                            } elseif (!empty($val['stream'])) {
+                                $ptr = fopen('php://temp', 'r+');
+                                fwrite($ptr, $tmp);
+                                $tmp = $ptr;
+                            }
                         }
 
                         $ret[$id][$label][$val['id']] = $tmp;
@@ -1086,6 +1097,12 @@ class Horde_Imap_Client_Cclient extends Horde_Imap_Client_Base
                                 $ret[$id]['bodytext'][$val['id']] = $tmp;
                             }
                         }
+
+                        if (!empty($val['stream'])) {
+                            $ptr = fopen('php://temp', 'r+');
+                            fwrite($ptr, $ret[$id]['bodytext'][$val['id']);
+                            $ret[$id]['bodytext'][$val['id']] = $ptr;
+                        }
                     }
                 }
                 break;
index 52b05a0..24b2ce1 100644 (file)
@@ -2176,8 +2176,7 @@ class Horde_Imap_Client_Socket extends Horde_Imap_Client_Base
                     case Horde_Imap_Client::FETCH_HEADERS:
                         if (empty($val['label'])) {
                             throw new Horde_Imap_Client_Exception('Need a unique label when doing a headers field search.');
-                        }
-                        if (empty($val['headers'])) {
+                        } elseif (empty($val['headers'])) {
                             throw new Horde_Imap_Client_Exception('Need headers to query when doing a headers field search.');
                         }
                         $fp['parseheaders'] = !empty($val['parse']);