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 {