diff --git a/felamimail/inc/class.ajaxfelamimail.inc.php b/felamimail/inc/class.ajaxfelamimail.inc.php index 40dcb6ca0d..c3560efe64 100644 --- a/felamimail/inc/class.ajaxfelamimail.inc.php +++ b/felamimail/inc/class.ajaxfelamimail.inc.php @@ -58,6 +58,7 @@ class ajaxfelamimail $this->sessionDataAjax =& $GLOBALS['egw']->session->appsession('ajax_session_data','felamimail'); $this->sessionData =& $GLOBALS['egw']->session->appsession('session_data','felamimail'); + $this->sessionData['folderStatus'] = egw_cache::getCache(egw_cache::INSTANCE,'email','folderStatus'.trim($GLOBALS['egw_info']['user']['account_id']),$callback=null,$callback_params=array(),$expiration=60*60*1); if (!is_array($this->sessionDataAjax)) $this->sessionDataAjax = array(); if(!isset($this->sessionDataAjax['folderName'])) { $this->sessionDataAjax['folderName'] = $this->sessionData['mailbox']?$this->sessionData['mailbox']:'INBOX'; @@ -1322,6 +1323,11 @@ class ajaxfelamimail function saveSessionData() { $GLOBALS['egw']->session->appsession('ajax_session_data','felamimail',$this->sessionDataAjax); + if (isset($this->sessionData['folderStatus']) && is_array($this->sessionData['folderStatus'])) + { + egw_cache::setCache(egw_cache::INSTANCE,'email','folderStatus'.trim($GLOBALS['egw_info']['user']['account_id']),$this->sessionData['folderStatus'], $expiration=60*60*1); + unset($this->sessionData['folderStatus']); + } $GLOBALS['egw']->session->appsession('session_data','felamimail',$this->sessionData); } diff --git a/felamimail/inc/class.felamimail_bo.inc.php b/felamimail/inc/class.felamimail_bo.inc.php index ad9b236fcb..b9627cfad6 100644 --- a/felamimail/inc/class.felamimail_bo.inc.php +++ b/felamimail/inc/class.felamimail_bo.inc.php @@ -2348,7 +2348,11 @@ class felamimail_bo //error_log(__METHOD__.__LINE__.' Profile:'.$this->profileID.' Folder:'.$_folderName.' -> EXISTS/SessStat:'.array2string($folderStatus['EXISTS']).'/'.$this->sessionData['folderStatus'][$this->profileID][$_folderName]['messages'].' ListContDelMsg/SessDeleted:'.$eMailListContainsDeletedMessages[$this->profileID][$_folderName].'/'.$this->sessionData['folderStatus'][$this->profileID][$_folderName]['deleted']); //error_log(__METHOD__.__LINE__.' Took:'.$r.'(s) setting eMailListContainsDeletedMessages for Profile:'.$this->profileID.' Folder:'.$_folderName.' to '.$eMailListContainsDeletedMessages[$this->profileID][$_folderName]); } - + if (self::$debug) + { + error_log(__METHOD__.__LINE__.' Profile:'.$this->profileID.' Folder:'.$_folderName.' -> EXISTS/SessStat:'.array2string($folderStatus['EXISTS']).'/'.$this->sessionData['folderStatus'][$this->profileID][$_folderName]['messages'].' ListContDelMsg/SessDeleted:'.$eMailListContainsDeletedMessages[$this->profileID][$_folderName].'/'.$this->sessionData['folderStatus'][$this->profileID][$_folderName]['deleted']); + error_log(__METHOD__.__LINE__.' CachedFolderStatus:'.array2string($this->sessionData['folderStatus'][$this->profileID][$_folderName])); + } if($try2useCache && (is_array($this->sessionData['folderStatus'][$this->profileID][$_folderName]) && $this->sessionData['folderStatus'][$this->profileID][$_folderName]['uidValidity'] === $folderStatus['UIDVALIDITY'] && $this->sessionData['folderStatus'][$this->profileID][$_folderName]['messages'] == $folderStatus['EXISTS'] && @@ -2359,7 +2363,7 @@ class felamimail_bo //$this->sessionData['folderStatus'][0][$_folderName]['reverse'] === $_reverse && !empty($this->sessionData['folderStatus'][$this->profileID][$_folderName]['sortResult'])) ) { - if (self::$debug) error_log(__METHOD__." USE CACHE for Profile:". $this->profileID." Folder:".$_folderName.'->'.($setSession?'setSession':'checkrun').function_backtrace()); + if (self::$debug) error_log(__METHOD__." USE CACHE for Profile:". $this->profileID." Folder:".$_folderName.'->'.($setSession?'setSession':'checkrun').' Filter:'.array2string($_filter).function_backtrace()); $sortResult = $this->sessionData['folderStatus'][$this->profileID][$_folderName]['sortResult']; } else { @@ -3500,6 +3504,17 @@ class felamimail_bo $GLOBALS['egw_info']['flags']['autoload'] = array(__CLASS__,'autoload'); $this->sessionData = $GLOBALS['egw']->session->appsession('session_data','felamimail'); + $this->sessionData['folderStatus'] = egw_cache::getCache(egw_cache::INSTANCE,'email','folderStatus'.trim($GLOBALS['egw_info']['user']['account_id']),$callback=null,$callback_params=array(),$expiration=60*60*1); + } + + function saveSessionData() + { + if (isset($this->sessionData['folderStatus']) && is_array($this->sessionData['folderStatus'])) + { + egw_cache::setCache(egw_cache::INSTANCE,'email','folderStatus'.trim($GLOBALS['egw_info']['user']['account_id']),$this->sessionData['folderStatus'], $expiration=60*60*1); + unset($this->sessionData['folderStatus']); + } + $GLOBALS['egw']->session->appsession('session_data','felamimail',$this->sessionData); } function saveFilter($_formData) @@ -3519,11 +3534,6 @@ class felamimail_bo $this->saveSessionData(); } - function saveSessionData() - { - $GLOBALS['egw']->session->appsession('session_data','felamimail',$this->sessionData); - } - function setEMailProfile($_profileID) { $config = CreateObject('phpgwapi.config','felamimail'); diff --git a/felamimail/inc/class.uiwidgets.inc.php b/felamimail/inc/class.uiwidgets.inc.php index e8bcb0dcb5..5b5b983160 100644 --- a/felamimail/inc/class.uiwidgets.inc.php +++ b/felamimail/inc/class.uiwidgets.inc.php @@ -57,6 +57,7 @@ class uiwidgets $this->_connectionStatus = $this->bofelamimail->openConnection($this->profileID); $this->sessionData =& $GLOBALS['egw']->session->appsession('session_data','felamimail'); + $this->sessionData['folderStatus'] = egw_cache::getCache(egw_cache::INSTANCE,'email','folderStatus'.trim($GLOBALS['egw_info']['user']['account_id']),$callback=null,$callback_params=array(),$expiration=60*60*1); $previewFrameHeight = -1; if ($GLOBALS['egw_info']['user']['preferences']['felamimail']['PreViewFrameHeight'] && stripos($GLOBALS['egw_info']['user']['preferences']['felamimail']['PreViewFrameHeight'],',') !== false)