From 578528791782297b1d0f9b1714aa737fb36a0726 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Tue, 17 Apr 2012 09:23:14 +0000 Subject: [PATCH] * email: improvement regarding notification handling; using htmLawed now instead of purify as fallback when there is no tidy; --- felamimail/inc/class.ajaxfelamimail.inc.php | 14 +- felamimail/inc/class.felamimail_bo.inc.php | 153 ++++++++++++-------- felamimail/inc/class.uidisplay.inc.php | 2 +- felamimail/inc/class.uiwidgets.inc.php | 4 +- 4 files changed, 99 insertions(+), 74 deletions(-) diff --git a/felamimail/inc/class.ajaxfelamimail.inc.php b/felamimail/inc/class.ajaxfelamimail.inc.php index 407d2f2e1c..9cca9e2b9f 100644 --- a/felamimail/inc/class.ajaxfelamimail.inc.php +++ b/felamimail/inc/class.ajaxfelamimail.inc.php @@ -48,7 +48,7 @@ class ajaxfelamimail if($this->_debug) error_log("ajaxfelamimail::ajaxfelamimail"); if (isset($GLOBALS['egw_info']['user']['preferences']['felamimail']['ActiveProfileID'])) $this->imapServerID = (int)$GLOBALS['egw_info']['user']['preferences']['felamimail']['ActiveProfileID']; - + //error_log("ajaxfelamimail::ajaxfelamimail ActiveProfile:".$this->imapServerID ); $this->charset = translation::charset(); $this->bofelamimail = felamimail_bo::getInstance(true,$this->imapServerID); $this->imapServerID = $GLOBALS['egw_info']['user']['preferences']['felamimail']['ActiveProfileID'] = $this->bofelamimail->profileID; @@ -60,9 +60,9 @@ class ajaxfelamimail $this->sessionData =& $GLOBALS['egw']->session->appsession('session_data','felamimail'); if (!is_array($this->sessionDataAjax)) $this->sessionDataAjax = array(); if(!isset($this->sessionDataAjax['folderName'])) { - $this->sessionDataAjax['folderName'] = 'INBOX'; + $this->sessionDataAjax['folderName'] = $this->sessionData['mailbox']?$this->sessionData['mailbox']:'INBOX'; } - + //error_log("ajaxfelamimail::ajaxfelamimail ActiveProfile:".$this->imapServerID.' activeFolder:'.$this->sessionDataAjax['folderName'].'./.'.$this->sessionData['mailbox'].' ConnectionStatus:'.array2string($this->_connectionStatus)); } function addACL($_accountName, $_aclData, $_recursive=false) @@ -331,7 +331,7 @@ class ajaxfelamimail $lastDrafted = false; if (isset($bocompose->sessionData['lastDrafted'])) $lastDrafted = $bocompose->sessionData['lastDrafted']; $messageUid = $bocompose->saveAsDraft($formData,$folder); // folder may change - if ($lastDrafted && is_array($lastDrafted) && isset($lastDrafted['uid']) && !empty($lastDrafted['uid'])) $lastDrafted['uid'] = trim($lastDrafted['uid']); + if ($lastDrafted && is_array($lastDrafted) && isset($lastDrafted['uid']) && !empty($lastDrafted['uid'])) $lastDrafted['uid'] = trim($lastDrafted['uid']); if ($lastDrafted && is_array($lastDrafted) && isset($lastDrafted['uid']) && !empty($lastDrafted['uid'])) $this->bofelamimail->deleteMessages((array)$lastDrafted['uid'],$lastDrafted['folder']); if ($_autoSave) { @@ -355,7 +355,7 @@ class ajaxfelamimail $folder = ($this->bofelamimail->mailPreferences->ic_server[$this->bofelamimail->profileID]->draftfolder ? $this->bofelamimail->mailPreferences->ic_server[$this->bofelamimail->profileID]->draftfolder : $this->bofelamimail->mailPreferences->preferences['draftFolder']); $this->bofelamimail->reopen($folder); if (isset($bocompose->sessionData['lastDrafted'])) $lastDrafted = $bocompose->sessionData['lastDrafted']; - if ($lastDrafted && is_array($lastDrafted) && isset($lastDrafted['uid']) && !empty($lastDrafted['uid'])) $lastDrafted['uid'] = trim($lastDrafted['uid']); + if ($lastDrafted && is_array($lastDrafted) && isset($lastDrafted['uid']) && !empty($lastDrafted['uid'])) $lastDrafted['uid'] = trim($lastDrafted['uid']); if ($lastDrafted && is_array($lastDrafted) && isset($lastDrafted['uid']) && !empty($lastDrafted['uid'])) $this->bofelamimail->deleteMessages((array)$lastDrafted['uid'],$lastDrafted['folder']); if($this->_debug) error_log(__METHOD__.__LINE__.' removed last drafted:'.$lastDrafted['uid'].' in '.$lastDrafted['folder']); } @@ -583,7 +583,7 @@ class ajaxfelamimail function sendNotify ($_uid, $_ret) { - if($this->_debug) error_log(__METHOD__." with $_uid,$_ret"); + if($this->_debug) error_log(__METHOD__." with $_uid,$_ret for Folder:".$this->sessionDataAjax['folderName'].'./.'.$this->sessionData['mailbox']); $response = new xajaxResponse(); if ($_ret==='true' || $_ret===1 || $_ret == "1,") { if ( $this->bofelamimail->sendMDN($_uid) ) @@ -733,7 +733,7 @@ class ajaxfelamimail $response->addScript("egw_topWindow().tree.selectItem('".$_folderName. "',false);"); if($this->_debug) error_log('generateMessageList done'); - if ($this->sessionData['previewMessage']>0) + if ($this->sessionData['previewMessage']>0) { $response->addScript('fm_previewMessageID = "";'); $response->addScript('mail_focusGridElement('.$this->sessionData['previewMessage'].');'); diff --git a/felamimail/inc/class.felamimail_bo.inc.php b/felamimail/inc/class.felamimail_bo.inc.php index 2811588e3d..da53d70031 100644 --- a/felamimail/inc/class.felamimail_bo.inc.php +++ b/felamimail/inc/class.felamimail_bo.inc.php @@ -150,15 +150,28 @@ class felamimail_bo else { // make sure the prefs are up to date for the profile to load + $loadfailed = false; self::$instances[$_profileID]->mailPreferences = self::$instances[$_profileID]->bopreferences->getPreferences(true,$_profileID); //error_log(__METHOD__.__LINE__." ReRead the Prefs for ProfileID ".$_profileID.' called from:'.function_backtrace()); if (self::$instances[$_profileID]->mailPreferences) { self::$instances[$_profileID]->icServer = self::$instances[$_profileID]->mailPreferences->getIncomingServer($_profileID); + // if we do not get an icServer object, session restore failed on bopreferences->getPreferences + if (!self::$instances[$_profileID]->icServer) $loadfailed=true; if ($_profileID != 0) self::$instances[$_profileID]->mailPreferences->setIncomingServer(self::$instances[$_profileID]->icServer,0); self::$instances[$_profileID]->ogServer = self::$instances[$_profileID]->mailPreferences->getOutgoingServer($_profileID); if ($_profileID != 0) self::$instances[$_profileID]->mailPreferences->setOutgoingServer(self::$instances[$_profileID]->ogServer,0); self::$instances[$_profileID]->htmlOptions = self::$instances[$_profileID]->mailPreferences->preferences['htmlOptions']; } + else + { + $loadfailed=true; + } + if ($loadfailed) + { + error_log(__METHOD__.__LINE__." ReRead of the Prefs for ProfileID ".$_profileID.' failed for icServer; trigger new instance. called from:'.function_backtrace()); + // restore session seems to provide an incomplete session + self::$instances[$_profileID] = new felamimail_bo('utf-8',false,$_profileID); + } } self::$instances[$_profileID]->profileID = $_profileID; //error_log(__METHOD__.__LINE__.' RestoreSession:'.$_restoreSession.' ProfileId:'.$_profileID); @@ -361,6 +374,17 @@ class felamimail_bo { foreach($nameSpace as $type => $singleNameSpace) { +/* + if($type == 'personal' && ($singleNameSpace[2]['name'] == '#mh/' || count($nameSpace) == 1) && ($this->icServer->mailboxExist('Mail')||$this->icServer->mailboxExist('INBOX'))) { + // uw-imap server with mailbox prefix or dovecot maybe + return ($this->icServer->mailboxExist('Mail')?'Mail':''); + } elseif($type == 'personal' && ($singleNameSpace[2]['name'] == '#mh/' || count($nameSpace) == 1) && $this->icServer->mailboxExist('mail')) { + // uw-imap server with mailbox prefix or dovecot maybe + return 'mail'; + } else { + return $singleNameSpace[0]['name']; + } +*/ if($type == 'personal' && substr($singleNameSpace[2]['name'],0,strlen($folderName))==$folderName && ($singleNameSpace[2]['name'] == '#mh/' || count($nameSpace) == 1) && $this->icServer->mailboxExist('Mail')) { // uw-imap server with mailbox prefix or dovecot maybe return 'Mail'; @@ -962,8 +986,9 @@ class felamimail_bo return $flags; } - function getNotifyFlags ($_messageUID) { - $flags = $this->icServer->getFlags($_messageUID, true); + function getNotifyFlags ($_messageUID, $flags=null) + { + if($flags===null) $flags = $this->icServer->getFlags($_messageUID, true); if (self::$debug) error_log(__METHOD__.$_messageUID.array2string($flags)); if (PEAR::isError($flags)) { return null; @@ -990,7 +1015,7 @@ class felamimail_bo */ function flagMessages($_flag, $_messageUID,$_folder=NULL) { - //error_log(__METHOD__.__LINE__.'->' .$_flag."$_messageUID,$_folder"); + //error_log(__METHOD__.__LINE__.'->' .$_flag." ".array2string($_messageUID).",$_folder"); if(!is_array($_messageUID)) { #return false; if ($_messageUID=='all') @@ -1069,6 +1094,7 @@ class felamimail_bo $this->sessionData['folderStatus'][$this->profileID][$this->sessionData['mailbox']]['uidValidity'] = 0; $this->saveSessionData(); + //error_log(__METHOD__.__LINE__.'->' .$_flag." ".array2string($_messageUID).",".($_folder?$_folder:$this->sessionData['mailbox'])); return true; // as we do not catch/examine setFlags returnValue } @@ -1190,51 +1216,9 @@ class felamimail_bo $usepurify = false; if ($usepurify) { - // we may need a customized config, as we may allow external images, $GLOBALS['egw_info']['user']['preferences']['felamimail']['allowExternalIMGs'] - - $config = html::purifyCreateDefaultConfig(); - - $config->set('Core.Encoding', (self::$displayCharset?self::$displayCharset:'UTF-8')); - // maybe the two following lines are useful for caching??? - $config->set('HTML.DefinitionID', 'felamimail'); - $config->set('HTML.DefinitionRev', 1); - // doctype and tidylevel - $config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); - $config->set('HTML.TidyLevel', 'light'); - // EnableID is needed for anchor tags - $config->set('Attr.EnableID',true); - // actual allowed tags and attributes - $config->set('URI.AllowedSchemes', array('http'=>true, 'https'=>true, 'ftp'=>true, 'file'=>true, 'cid'=>true, 'data'=>true)); - //$config->set('AutoFormat.RemoveEmpty', true); - $config->set('HTML.Allowed', 'br,p[class|align],b,i,u,s,em,pre,tt,strong,strike,center,div[class|align],hr[class|style],'. - 'font[size|color],'. - 'ul[class|type],ol[class|type|start],li,'. - 'h1,h2,h3,'. - 'span[class|style],'. - 'table[class|border|cellpadding|cellspacing|width|style|align|bgcolor|align],'. - 'tbody,thead,tfoot,colgroup,'. - 'col[width|span],'. - 'blockquote[class|cite|dir],'. - 'tr[class|style|align|bgcolor|align|valign],'. - 'td[class|colspan|rowspan|width|style|align|bgcolor|align|valign|nowrap],'. - 'th[class|colspan|rowspan|width|style|align|bgcolor|align|valign|nowrap],'. - 'a[class|href|target|name|title],'. - 'img[class|src|alt|title]'); - $DisableExternalResources = true; - if ($GLOBALS['egw_info']['user']['preferences']['felamimail']['allowExternalIMGs']) $DisableExternalResources = false; - $config->set('URI.DisableExternalResources',$DisableExternalResources); - $config->set('Core.RemoveInvalidImg', false); - //$config->set('Attr.DefaultInvalidImage', 'Image removed by htmlpurify'); - $config->set('Core.HiddenElements', array('script','style','head')); // strips script, style, head copletely - - $config->set('Cache.SerializerPath', ($GLOBALS['egw_info']['server']['temp_dir']?$GLOBALS['egw_info']['server']['temp_dir']:sys_get_temp_dir())); - //$config->set('HTML.MaxImgLength',null); - $config->set('Cache.DefinitionImpl', null); // remove this later! - //$purifier = new HTMLPurifier($config); - //$_html = $purifier->purify( $_html ); + // we need a customized config, as we may allow external images, $GLOBALS['egw_info']['user']['preferences']['felamimail']['allowExternalIMGs'] if (get_magic_quotes_gpc() === 1) $_html = stripslashes($_html); - $_html = html::purify($_html,$config); - // no scripts allowed + $_html = html::purify($_html); // clean out comments , should not be needed as purify should do the job. $search = array( '@url\(http:\/\/[^\)].*?\)@si', // url calls e.g. in style definitions @@ -1458,7 +1442,7 @@ class felamimail_bo $_html = preg_replace('/([\000-\012])/','',$_html); //error_log($_html); } - // using purify above should have tidied the tags already sufficiently + // using purify above should have tidied the tags already sufficiently if ($usepurify == false && $cleanTags==true) { if (extension_loaded('tidy')) @@ -1479,7 +1463,15 @@ class felamimail_bo { //$to = ini_get('max_execution_time'); //@set_time_limit(10); - $_html = html::purify($_html,html::purifyCreateHTMLTidyConfig()); +//$p = microtime(true); + $htmLawed = new egw_htmLawed(); +//$pela = microtime(true); + $_html = $htmLawed->egw_htmLawed($_html); +//$le = microtime(true); +//$a=$pela-$p; +//$b=$le-$pela; +//error_log(__METHOD__.__LINE__.' new egw_htmLawed:'.$a.' htmlLawed took:'.$b); + //error_log(__METHOD__.__LINE__.$_html); //@set_time_limit($to); } } @@ -1882,7 +1874,7 @@ class felamimail_bo if($type == 'personal' && ($singleNameSpace[2]['name'] == '#mh/' || count($nameSpace) == 1) && ($this->icServer->mailboxExist('Mail')||$this->icServer->mailboxExist('INBOX'))) { $prefix_present = 'forced'; // uw-imap server with mailbox prefix or dovecot maybe - $foldersNameSpace[$type]['prefix'] = ($this->icServer->mailboxExist('Mail')?'Mail':''); + $foldersNameSpace[$type]['prefix'] = ($this->icServer->mailboxExist('Mail')?'Mail':''); } elseif($type == 'personal' && ($singleNameSpace[2]['name'] == '#mh/' || count($nameSpace) == 1) && $this->icServer->mailboxExist('mail')) { $prefix_present = 'forced'; // uw-imap server with mailbox prefix or dovecot maybe @@ -3478,7 +3470,7 @@ class felamimail_bo if(($this->icServer instanceof defaultimap)) $folderInfo[$this->profileID][$_folder] = $this->icServer->mailboxExist($_folder); //error_log(__METHOD__.__LINE__.' Folder Exists:'.$folderInfo[$this->profileID][$_folder].function_backtrace()); - if(!empty($folderInfo) && isset($folderInfo[$this->profileID][$_folder]) && + if(!empty($folderInfo) && isset($folderInfo[$this->profileID][$_folder]) && ($folderInfo[$this->profileID][$_folder] instanceof PEAR_Error) || $folderInfo[$this->profileID][$_folder] !== true) { $folderInfo[$this->profileID][$_folder] = false; // set to false, whatever it was (to have a valid returnvalue for the static return) @@ -3557,7 +3549,7 @@ class felamimail_bo static $isError; //error_log(__METHOD__.__LINE__.'->'.$_icServerID.' called from '.function_backtrace()); if (is_null($isError)) $isError = egw_cache::getCache(egw_cache::INSTANCE,'email','icServerIMAP_connectionError'.trim($GLOBALS['egw_info']['user']['account_id']),null,array(),$expiration=60*5); - if ( isset($isError[$_icServerID]) || (($this->icServer instanceof defaultimap) && PEAR::isError($this->icServer->_connectionErrorObject))) + if ( isset($isError[$_icServerID]) || (($this->icServer instanceof defaultimap) && PEAR::isError($this->icServer->_connectionErrorObject))) { if (trim($isError[$_icServerID])==',' || trim($this->icServer->_connectionErrorObject->message) == ',') { @@ -3657,7 +3649,7 @@ class felamimail_bo function reopen($_foldername) { //error_log( "------------------------reopen-
"); - //error_log(print_r($this->icServer->_connected,true)); + //error_log(__METHOD__.__LINE__.' Connected with icServer for Profile:'.$this->profileID.'?'.print_r($this->icServer->_connected,true)); if ($this->icServer->_connected == 1) { $tretval = $this->icServer->selectMailbox($_foldername); } else { @@ -3867,7 +3859,8 @@ class felamimail_bo return ($_reverse?'REVERSE ':'').$retValue; } - function sendMDN($uid) { + function sendMDN($uid) + { $identities = $this->mailPreferences->getIdentity(); $headers = $this->getMessageHeader($uid); $send = CreateObject('phpgwapi.send'); @@ -3881,7 +3874,7 @@ class felamimail_bo if ( preg_match('/\b'.$identity->emailAddress.'\b/',$headers['TO']) ) { $send->From = $identity->emailAddress; $send->FromName = $identity->realName; - error_log(__METHOD__.__LINE__.' using identity for send from:'.$send->From.' to match header information:'.$headers['TO']); + error_log(__METHOD__.__LINE__.' using identity for send from:'.$send->From.' to match header information:'.$headers['TO'].' ProfileID:'.$this->profileID.' Folder:'.$this->sessionData['mailbox']); break; } if($identity->default) { @@ -4309,11 +4302,11 @@ class felamimail_bo { $headdata = null; if ($header['SUBJECT']) $headdata = lang('subject').': '.$header['SUBJECT'].($createHTML?"
":"\n"); - if ($header['FROM']) $headdata .= lang('from').': '.self::convertAddressArrayToString($header['FROM']).($createHTML?"
":"\n"); - if ($header['SENDER']) $headdata .= lang('sender').': '.self::convertAddressArrayToString($header['SENDER']).($createHTML?"
":"\n"); - if ($header['TO']) $headdata .= lang('to').': '.self::convertAddressArrayToString($header['TO']).($createHTML?"
":"\n"); - if ($header['CC']) $headdata .= lang('cc').': '.self::convertAddressArrayToString($header['CC']).($createHTML?"
":"\n"); - if ($header['BCC']) $headdata .= lang('bcc').': '.self::convertAddressArrayToString($header['BCC']).($createHTML?"
":"\n"); + if ($header['FROM']) $headdata .= lang('from').': '.self::convertAddressArrayToString($header['FROM'], $createHTML).($createHTML?"
":"\n"); + if ($header['SENDER']) $headdata .= lang('sender').': '.self::convertAddressArrayToString($header['SENDER'], $createHTML).($createHTML?"
":"\n"); + if ($header['TO']) $headdata .= lang('to').': '.self::convertAddressArrayToString($header['TO'], $createHTML).($createHTML?"
":"\n"); + if ($header['CC']) $headdata .= lang('cc').': '.self::convertAddressArrayToString($header['CC'], $createHTML).($createHTML?"
":"\n"); + if ($header['BCC']) $headdata .= lang('bcc').': '.self::convertAddressArrayToString($header['BCC'], $createHTML).($createHTML?"
":"\n"); if ($header['DATE']) $headdata .= lang('date').': '.$header['DATE'].($createHTML?"
":"\n"); if ($header['PRIORITY'] && $header['PRIORITY'] != 'normal') $headdata .= lang('priority').': '.$header['PRIORITY'].($createHTML?"
":"\n"); if ($header['IMPORTANCE'] && $header['IMPORTANCE'] !='normal') $headdata .= lang('importance').': '.$header['IMPORTANCE'].($createHTML?"
":"\n"); @@ -4336,7 +4329,7 @@ class felamimail_bo * @param array $rfcAddressArray an addressarray as provided by felamimail retieved via egw_pear.... * @return string a comma separated string with the mailaddress(es) converted to text */ - static function convertAddressArrayToString($rfcAddressArray) + static function convertAddressArrayToString($rfcAddressArray, $createHTML = false) { //error_log(__METHOD__.__LINE__.array2string($rfcAddressArray)); $returnAddr =''; @@ -4367,14 +4360,18 @@ class felamimail_bo //$p = (string)$addressObject->personal; $returnAddr .= (strlen($returnAddr)>0?',':''); //error_log(__METHOD__.__LINE__.$p.' <'.$mb.'@'.$h.'>'); - $returnAddr .= imap_rfc822_write_address($addressObject->mailbox, $addressObject->host, $addressObject->personal); + $buff = imap_rfc822_write_address($addressObject->mailbox, $addressObject->host, $addressObject->personal); + $buff = str_replace(array('<','>'),array('[',']'),$buff); + if ($createHTML) $buff = felamimail_bo::htmlspecialchars($buff); //error_log(__METHOD__.__LINE__.' Address: '.$returnAddr); + $returnAddr .= $buff; } } else { // do not mess with strings, return them untouched /* ToDo: validate string as Address */ - if (is_string($rfcAddressArray)) return $rfcAddressArray; + $rfcAddressArray = str_replace(array('<','>'),array('[',']'),$rfcAddressArray); + if (is_string($rfcAddressArray)) return ($createHTML ? felamimail_bo::htmlspecialchars($rfcAddressArray) : $rfcAddressArray); } return $returnAddr; } @@ -4448,6 +4445,32 @@ class felamimail_bo } if (isset($bodyParts[$i]['error'])) continue; if (empty($bodyParts[$i]['body'])) continue; + // some characterreplacements, as they fail to translate + $sar = array( + '@(\x84|\x93|\x94)@', + '@(\x96|\x97|\x1a)@', + '@(\x82|\x91|\x92)@', + '@(\x85)@', + '@(\x86)@', + '@(\x99)@', + '@(\xae)@', + ); + $rar = array( + '"', + '-', + '\'', + '...', + '&', + '(TM)', + '(R)', + ); + + if(($bodyParts[$i]['mimeType'] == 'text/html' || $bodyParts[$i]['mimeType'] == 'text/plain') && + strtoupper($bodyParts[$i]['charSet']) != 'UTF-8') + { + $bodyParts[$i]['body'] = preg_replace($sar,$rar,$bodyParts[$i]['body']); + } + if ($bodyParts[$i]['charSet']===false) $bodyParts[$i]['charSet'] = self::detect_encoding($bodyParts[$i]['body']); // add line breaks to $bodyParts //error_log(__METHOD__.__LINE__.' Charset:'.$bodyParts[$i]['charSet'].'->'.$bodyParts[$i]['body']); @@ -4487,7 +4510,9 @@ class felamimail_bo } else { - $newBody = html::purify($newBody,html::purifyCreateHTMLTidyConfig()); + $htmLawed = new egw_htmLawed(); + $newBody = $htmLawed->egw_htmLawed($newBody); + //$newBody = html::purify($newBody,html::purifyCreateHTMLTidyConfig()); } //error_log(__METHOD__.__LINE__.' after purify:'.$newBody); if ($preserveHTML==false) $newBody = $bofelamimail->convertHTMLToText($newBody,true); diff --git a/felamimail/inc/class.uidisplay.inc.php b/felamimail/inc/class.uidisplay.inc.php index 1b248f824b..43dc926c0c 100644 --- a/felamimail/inc/class.uidisplay.inc.php +++ b/felamimail/inc/class.uidisplay.inc.php @@ -354,7 +354,7 @@ $this->t->set_var('charset',$GLOBALS['egw']->translation->charset()); } // only notify when requested, notify flag (MDNSent/MDNnotSent) not set, and message not already seen (some servers do not support the MDNSent/MDNnotSent flag) - if ( $sent_not != "" && $this->bofelamimail->getNotifyFlags($this->uid) === null && strpos( array2string($flags),'Seen')===false) { + if ( $sent_not != "" && $this->bofelamimail->getNotifyFlags($this->uid,($flags?$flags:null)) === null && strpos( array2string($flags),'Seen')===false) { $this->t->set_var('sentNotify','sendNotify("'.$this->uid.'");'); $this->t->set_var('lang_sendnotify',lang('The message sender has requested a response to indicate that you have read this message. Would you like to send a receipt?')); } else { diff --git a/felamimail/inc/class.uiwidgets.inc.php b/felamimail/inc/class.uiwidgets.inc.php index 595013b21a..7b894ffbe3 100644 --- a/felamimail/inc/class.uiwidgets.inc.php +++ b/felamimail/inc/class.uiwidgets.inc.php @@ -1464,7 +1464,7 @@ $j(document).ready(function() { $this->bofelamimail->openConnection($_icServer); $this->bofelamimail->reopen($_folderName); $flags = $this->bofelamimail->getFlags($headerData['uid']); - if ($this->bofelamimail->getNotifyFlags($headerData['uid']) === null) + if ($this->bofelamimail->getNotifyFlags($headerData['uid'],($flags?$flags:null)) === null) { $headers = $this->bofelamimail->getMessageHeader($headerData['uid']); if ( isset($headers['DISPOSITION-NOTIFICATION-TO']) ) { @@ -1749,7 +1749,7 @@ $j(document).ready(function() { ), ); // display only the correct icon: revert on deleted messages, delete on all others - if ($_headerData['deleted']) + if ($_headerData['deleted']) { unset($navbarImages['delete']); } else {