From 9c7e9ac64b0b9f58c13faa019b32d2e0e941d7d6 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Mon, 28 Mar 2011 08:55:09 +0000 Subject: [PATCH] folderExists: use static to reduce queries to imap server within one request; use different test method to verify folder existence --- felamimail/inc/class.bofelamimail.inc.php | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/felamimail/inc/class.bofelamimail.inc.php b/felamimail/inc/class.bofelamimail.inc.php index 94d7b87afd..aa766c7cfd 100644 --- a/felamimail/inc/class.bofelamimail.inc.php +++ b/felamimail/inc/class.bofelamimail.inc.php @@ -2584,18 +2584,29 @@ function folderExists($_folder, $forceCheck=false) { - #echo __METHOD__." called; check for $_folder
"; + static $folderInfo; + if (empty($_folder)) + { + error_log(__METHOD__.__LINE__.' Called with empty Folder:'.$_folder.function_backtrace()); + return false; + } + // reduce traffic within on request + //error_log(__METHOD__.__LINE__.' Called with Folder:'.$_folder.function_backtrace()); + if (isset($folderInfo[$_folder])) return $folderInfo[$_folder]; + // does the folder exist??? - //error_log("bofelamimail::folderExists->Connected?".$this->icServer->_connected.", ".$_folder.", ".$forceCheck); + //error_log(__METHOD__."->Connected?".$this->icServer->_connected.", ".$_folder.", ".$forceCheck); if ((!($this->icServer->_connected == 1)) && $forceCheck) { - #error_log("bofelamimail::folderExists->NotConnected and forceCheck"); + //error_log(__METHOD__."->NotConnected and forceCheck"); //return false; //try to connect if (!$this->icServer->_connected) $this->openConnection(); } - if(is_a($this->icServer,'defaultimap')) $folderInfo = $this->icServer->getMailboxes('', $_folder, true); - #error_log(print_r($folderInfo,true)); - if(is_a($folderInfo, 'PEAR_Error') || !is_array($folderInfo[0])) { + if(is_a($this->icServer,'defaultimap')) $folderInfo[$_folder] = $this->icServer->mailboxExist($_folder); + //error_log(__METHOD__.__LINE__.' Folder Exists:'.$folderInfo[$_folder]); + + if(is_a($folderInfo[$_folder], 'PEAR_Error') || $folderInfo[$_folder] !== true) + { return false; } else { return true;