diff --git a/mail/inc/class.mail_bo.inc.php b/mail/inc/class.mail_bo.inc.php
index 50e047dc66..d06cdd9001 100644
--- a/mail/inc/class.mail_bo.inc.php
+++ b/mail/inc/class.mail_bo.inc.php
@@ -80,7 +80,7 @@ class mail_bo
* @var boolean
*/
static $debug = false; //true;
- static $debugTimes = true; //true;
+ static $debugTimes = false; //true;
/**
* static used to hold the mail Config values
@@ -848,6 +848,7 @@ class mail_bo
$HierarchyDelimiter[$this->icServer->ImapServerId] = $this->icServer->getDelimiter();
if (PEAR::isError($HierarchyDelimiter[$this->icServer->ImapServerId])) $HierarchyDelimiter[$this->icServer->ImapServerId] = '/';
}
+//TODO: check if $this->icServer->mailboxDelimiter is used at all
$this->icServer->mailboxDelimiter = $HierarchyDelimiter[$this->icServer->ImapServerId];
return $HierarchyDelimiter[$this->icServer->ImapServerId];
}
@@ -1976,7 +1977,7 @@ class mail_bo
{
//error_log(__METHOD__.__LINE__.' using Cached folderObjects'.array2string($folders2return[$this->icServer->ImapServerId]));
if (self::$debugTimes) self::logRunTimes($starttime,null,'from Cache',__METHOD__.__LINE__);
- return $folders2return[$this->icServer->ImapServerId];
+ //return $folders2return[$this->icServer->ImapServerId];
}
}
$isUWIMAP = false;
@@ -2022,22 +2023,25 @@ class mail_bo
if(is_array($singleNameSpace)) {
// fetch and sort the subscribed folders
- $subscribedMailboxes = $this->icServer->listSubscribedMailboxes($foldersNameSpace[$type]['prefix']);
- if (empty($subscribedMailboxes) && $type == 'shared')
+ try
{
- $subscribedMailboxes = $this->icServer->listSubscribedMailboxes('',0);
+ $subscribedMailboxes = $this->icServer->listSubscribedMailboxes($foldersNameSpace[$type]['prefix']);
+ if (empty($subscribedMailboxes) && $type == 'shared')
+ {
+ $subscribedMailboxes = $this->icServer->listSubscribedMailboxes('',0);
+ }
}
-
- //echo "subscribedMailboxes";_debug_array($subscribedMailboxes);
- if( PEAR::isError($subscribedMailboxes) ) {
+ catch(Exception $e)
+ {
continue;
}
+ //echo "subscribedMailboxes";_debug_array($subscribedMailboxes);
$foldersNameSpace[$type]['subscribed'] = $subscribedMailboxes;
//if (is_array($foldersNameSpace[$type]['subscribed'])) sort($foldersNameSpace[$type]['subscribed']);
//_debug_array($foldersNameSpace);
if ($_subscribedOnly == true) {
$foldersNameSpace[$type]['all'] = (is_array($foldersNameSpace[$type]['subscribed']) ? $foldersNameSpace[$type]['subscribed'] :array());
- continue;
+ //continue;
}
// only check for Folder in FolderMaintenance for Performance Reasons
if(!$_subscribedOnly) {
@@ -2062,13 +2066,19 @@ class mail_bo
//echo $type.'->'.$foldersNameSpace[$type]['prefix'].'->'.($type=='shared'?0:2)."
";
try
{
- $allMailboxesExt = $this->icServer->getMailboxes($foldersNameSpace[$type]['prefix'],2,true);
+ // calling with 2 lists all mailboxes on that level with fetches all
+ // we switch to all, to avoid further calls for subsequent levels
+ // that may produce problems, when encountering recursions probably
+ // horde is handling that, so we do not; keep that in mind!
+ //$allMailboxesExt = $this->icServer->getMailboxes($foldersNameSpace[$type]['prefix'],2,true);
+ $allMailboxesExt = $this->icServer->getMailboxes($foldersNameSpace[$type]['prefix'],0,true);
}
catch (Exception $e)
{
error_log(__METHOD__.__LINE__.' Failed to retrieve all Boxes:'.$e->getMessage());
$allMailboxesExt = array();
}
+/*
if (empty($allMailboxesExt) && $type == 'shared')
{
try
@@ -2105,6 +2115,7 @@ class mail_bo
continue;
//$allMailboxesExt=array();
}
+*/
foreach ($allMailboxesExt as $mbx) {
//echo __METHOD__;_debug_array($mbx);
//error_log(__METHOD__.__LINE__.array2string($mbx));
@@ -2117,10 +2128,13 @@ class mail_bo
$allMailBoxesExtSorted[$mbx['MAILBOX']] = $mbx;
}
if (is_array($allMailBoxesExtSorted)) ksort($allMailBoxesExtSorted);
- //_debug_array($allMailBoxesExtSorted);
+ //_debug_array(array_keys($allMailBoxesExtSorted));
$allMailboxes = array();
foreach ((array)$allMailBoxesExtSorted as $mbx) {
//echo $mbx['MAILBOX']."
";
+ // this is not used when we are callinglistMailboxes with $restriction_search = 0
+ // this lists all mailboxes so fetching mailboxes for each level would be obsolete
+ /*
if (in_array('\HasChildren',$mbx["ATTRIBUTES"]) || in_array('\Haschildren',$mbx["ATTRIBUTES"]) || in_array('\haschildren',$mbx["ATTRIBUTES"])) {
unset($buff);
//$buff = $this->icServer->getMailboxes($mbx['MAILBOX'].$delimiter,0,false);
@@ -2131,6 +2145,7 @@ class mail_bo
#_debug_array($buff);
if (is_array($buff)) $allMailboxes = array_merge($allMailboxes,$buff);
}
+ */
if (!in_array($mbx['MAILBOX'],$allMailboxes)) $allMailboxes[] = $mbx['MAILBOX'];
//echo "Result:";_debug_array($allMailboxes);
}