From 2bc88a39a47624ca77ec33e07e5bfdf1b1584f2f Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Tue, 26 Jan 2010 12:13:16 -0700 Subject: [PATCH] Fix handling multiple patterns in listMailboxes() --- framework/Imap_Client/lib/Horde/Imap/Client/Base.php | 6 +++++- framework/Imap_Client/lib/Horde/Imap/Client/Socket.php | 10 +++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/framework/Imap_Client/lib/Horde/Imap/Client/Base.php b/framework/Imap_Client/lib/Horde/Imap/Client/Base.php index 08791e8bd..7fab6ece0 100644 --- a/framework/Imap_Client/lib/Horde/Imap/Client/Base.php +++ b/framework/Imap_Client/lib/Horde/Imap/Client/Base.php @@ -870,7 +870,11 @@ abstract class Horde_Imap_Client_Base public function listMailboxes($pattern, $mode = Horde_Imap_Client::MBOX_ALL, $options = array()) { - $ret = $this->_listMailboxes(Horde_Imap_Client_Utf7imap::Utf8ToUtf7Imap($pattern), $mode, $options); + $pattern = is_array($pattern) + ? array_map(array('Horde_Imap_Client_Utf7imap', 'Utf8ToUtf7Imap'), $pattern) + : Horde_Imap_Client_Utf7imap::Utf8ToUtf7Imap($pattern); + + $ret = $this->_listMailboxes($pattern, $mode, $options); if (!empty($options['sort'])) { Horde_Imap_Client_Sort::sortMailboxes($ret, array('delimiter' => empty($options['sort_delimiter']) ? '.' : $options['sort_delimiter'], 'index' => false, 'keysort' => empty($options['flat']))); diff --git a/framework/Imap_Client/lib/Horde/Imap/Client/Socket.php b/framework/Imap_Client/lib/Horde/Imap/Client/Socket.php index f0d14c843..fc6af55c8 100644 --- a/framework/Imap_Client/lib/Horde/Imap/Client/Socket.php +++ b/framework/Imap_Client/lib/Horde/Imap/Client/Socket.php @@ -1024,7 +1024,7 @@ class Horde_Imap_Client_Socket extends Horde_Imap_Client_Base if (is_array($pattern)) { $cmd .= '('; foreach ($pattern as $val) { - $cmd .= $this->utils->escape($pattern) . ' '; + $cmd .= $this->utils->escape($val) . ' '; } $cmd = rtrim($cmd) . ')'; } else { @@ -1039,6 +1039,14 @@ class Horde_Imap_Client_Socket extends Horde_Imap_Client_Base $cmd .= ' RETURN (' . implode(' ', $return_opts) . ')'; } } else { + if (is_array($pattern)) { + $return_array = array(); + foreach ($pattern as $val) { + $return_array = array_merge($return_array, $this->_getMailboxList($val, $mode, $options, $subscribed)); + } + return $return_array; + } + $cmd = (($mode == Horde_Imap_Client::MBOX_SUBSCRIBED) ? 'LSUB' : 'LIST') . ' "" ' . $this->utils->escape($pattern); } -- 2.11.0