forked from extern/egroupware
* EMail: fix to ensure that internaldate (, the internal IMAP storage date/timestamp), is fetched for list of emails and not the current date/time; INTERNALDATE is used and displayed, when header DATE is not set/available
This commit is contained in:
parent
9b34bf6899
commit
652735b505
@ -1398,7 +1398,7 @@ class emailadmin_imapbase
|
|||||||
$fquery->size();
|
$fquery->size();
|
||||||
$fquery->structure();
|
$fquery->structure();
|
||||||
$fquery->flags();
|
$fquery->flags();
|
||||||
//$fquery->imapDate();
|
$fquery->imapDate();// needed to ensure getImapDate fetches the internaldate, not the current time
|
||||||
$headersNew = $this->icServer->fetch($_folderName, $fquery, array(
|
$headersNew = $this->icServer->fetch($_folderName, $fquery, array(
|
||||||
'ids' => $uidsToFetch,
|
'ids' => $uidsToFetch,
|
||||||
));
|
));
|
||||||
@ -1440,7 +1440,7 @@ class emailadmin_imapbase
|
|||||||
// Get already cached headers, 'fetchHeaders' is a label matchimg above
|
// Get already cached headers, 'fetchHeaders' is a label matchimg above
|
||||||
$headerForPrio = array_change_key_case($_headerObject->getHeaders('fetchHeaders',Horde_Imap_Client_Data_Fetch::HEADER_PARSE)->toArray(), CASE_UPPER);
|
$headerForPrio = array_change_key_case($_headerObject->getHeaders('fetchHeaders',Horde_Imap_Client_Data_Fetch::HEADER_PARSE)->toArray(), CASE_UPPER);
|
||||||
if (self::$debug) {
|
if (self::$debug) {
|
||||||
error_log(__METHOD__.__LINE__.array2string($_headerObject).'UID:'.$_headerObject->getUid().' Size:'.$_headerObject->getSize().' Date:'.$_headerObject->getImapDate());
|
error_log(__METHOD__.' ('.__LINE__.') '.array2string($_headerObject).'UID:'.$_headerObject->getUid().' Size:'.$_headerObject->getSize().' Date:'.$_headerObject->getImapDate().'/'.egw_time::to($_headerObject->getImapDate(),'Y-m-d H:i:s'));
|
||||||
error_log(__METHOD__.' ('.__LINE__.') '.array2string($headerForPrio));
|
error_log(__METHOD__.' ('.__LINE__.') '.array2string($headerForPrio));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1568,7 +1568,7 @@ class emailadmin_imapbase
|
|||||||
if(substr($headerObject['INTERNALDATE'],-2) === 'UT') {
|
if(substr($headerObject['INTERNALDATE'],-2) === 'UT') {
|
||||||
$headerObject['INTERNALDATE'] .= 'C';
|
$headerObject['INTERNALDATE'] .= 'C';
|
||||||
}
|
}
|
||||||
//error_log(__METHOD__.' ('.__LINE__.') '.' '.$headerObject['SUBJECT'].'->'.$headerObject['DATE']);
|
//error_log(__METHOD__.' ('.__LINE__.') '.' '.$headerObject['SUBJECT'].'->'.$headerObject['DATE'].'<->'.$headerObject['INTERNALDATE'] .'#');
|
||||||
//error_log(__METHOD__.' ('.__LINE__.') '.' '.$this->decode_subject($headerObject['SUBJECT']).'->'.$headerObject['DATE']);
|
//error_log(__METHOD__.' ('.__LINE__.') '.' '.$this->decode_subject($headerObject['SUBJECT']).'->'.$headerObject['DATE']);
|
||||||
if (isset($headerObject['ATTACHMENTS']) && count($headerObject['ATTACHMENTS'])) foreach ($headerObject['ATTACHMENTS'] as &$a) { $retValue['header'][$sortOrder[$uid]]['attachments'][]=$a;}
|
if (isset($headerObject['ATTACHMENTS']) && count($headerObject['ATTACHMENTS'])) foreach ($headerObject['ATTACHMENTS'] as &$a) { $retValue['header'][$sortOrder[$uid]]['attachments'][]=$a;}
|
||||||
$retValue['header'][$sortOrder[$uid]]['subject'] = $this->decode_subject($headerObject['SUBJECT']);
|
$retValue['header'][$sortOrder[$uid]]['subject'] = $this->decode_subject($headerObject['SUBJECT']);
|
||||||
@ -1579,11 +1579,12 @@ class emailadmin_imapbase
|
|||||||
$retValue['header'][$sortOrder[$uid]]['id'] = $headerObject['MSG_NUM'];
|
$retValue['header'][$sortOrder[$uid]]['id'] = $headerObject['MSG_NUM'];
|
||||||
$retValue['header'][$sortOrder[$uid]]['uid'] = $headerObject['UID'];
|
$retValue['header'][$sortOrder[$uid]]['uid'] = $headerObject['UID'];
|
||||||
$retValue['header'][$sortOrder[$uid]]['priority'] = ($headerObject['PRIORITY']?$headerObject['PRIORITY']:3);
|
$retValue['header'][$sortOrder[$uid]]['priority'] = ($headerObject['PRIORITY']?$headerObject['PRIORITY']:3);
|
||||||
|
//error_log(__METHOD__.' ('.__LINE__.') '.' '.array2string($retValue['header'][$sortOrder[$uid]]));
|
||||||
if (isset($headerObject['DISPOSITION-NOTIFICATION-TO'])) $retValue['header'][$sortOrder[$uid]]['disposition-notification-to'] = $headerObject['DISPOSITION-NOTIFICATION-TO'];
|
if (isset($headerObject['DISPOSITION-NOTIFICATION-TO'])) $retValue['header'][$sortOrder[$uid]]['disposition-notification-to'] = $headerObject['DISPOSITION-NOTIFICATION-TO'];
|
||||||
if (is_array($headerObject['FLAGS'])) {
|
if (is_array($headerObject['FLAGS'])) {
|
||||||
$retValue['header'][$sortOrder[$uid]] = array_merge($retValue['header'][$sortOrder[$uid]],self::prepareFlagsArray($headerObject));
|
$retValue['header'][$sortOrder[$uid]] = array_merge($retValue['header'][$sortOrder[$uid]],self::prepareFlagsArray($headerObject));
|
||||||
}
|
}
|
||||||
//error_log(__METHOD__.' ('.__LINE__.') '.$headerObject['SUBJECT'].'->'.array2string($_headerObject->getEnvelope()->__get('from')));
|
//error_log(__METHOD__.' ('.__LINE__.') '.$headerObject['SUBJECT'].'->'.array2string($_headerObject->getEnvelope()->__get('from')));
|
||||||
if(is_array($headerObject['FROM']) && $headerObject['FROM'][0]) {
|
if(is_array($headerObject['FROM']) && $headerObject['FROM'][0]) {
|
||||||
$retValue['header'][$sortOrder[$uid]]['sender_address'] = self::decode_header($headerObject['FROM'][0]);
|
$retValue['header'][$sortOrder[$uid]]['sender_address'] = self::decode_header($headerObject['FROM'][0]);
|
||||||
}
|
}
|
||||||
@ -1732,7 +1733,7 @@ class emailadmin_imapbase
|
|||||||
error_log(__METHOD__.' ('.__LINE__.') '.' '.$query_str['query']);
|
error_log(__METHOD__.' ('.__LINE__.') '.' '.$query_str['query']);
|
||||||
}
|
}
|
||||||
//_debug_array($filter);
|
//_debug_array($filter);
|
||||||
//error_log(__METHOD__.' ('.__LINE__.') '.array2string($filter));
|
//error_log(__METHOD__.' ('.__LINE__.') '.array2string($filter).'#'.array2string($this->icServer->capability()));
|
||||||
if($this->icServer->hasCapability('SORT')) {
|
if($this->icServer->hasCapability('SORT')) {
|
||||||
// when using an orQuery and we sort by date. sort seems to fail on certain servers => ZIMBRA with Horde_Imap_Client
|
// when using an orQuery and we sort by date. sort seems to fail on certain servers => ZIMBRA with Horde_Imap_Client
|
||||||
// thus we translate the search request from date to Horde_Imap_Client::SORT_SEQUENCE (which should be the same, if
|
// thus we translate the search request from date to Horde_Imap_Client::SORT_SEQUENCE (which should be the same, if
|
||||||
@ -1750,6 +1751,7 @@ class emailadmin_imapbase
|
|||||||
}
|
}
|
||||||
catch(Exception $e)
|
catch(Exception $e)
|
||||||
{
|
{
|
||||||
|
//error_log(__METHOD__.'('.__LINE__.'):'.$e->getMessage());
|
||||||
$resultByUid = false;
|
$resultByUid = false;
|
||||||
$sortOrder = array(Horde_Imap_Client::SORT_SEQUENCE);
|
$sortOrder = array(Horde_Imap_Client::SORT_SEQUENCE);
|
||||||
if ($_reverse) array_unshift($sortOrder,Horde_Imap_Client::SORT_REVERSE);
|
if ($_reverse) array_unshift($sortOrder,Horde_Imap_Client::SORT_REVERSE);
|
||||||
|
Loading…
Reference in New Issue
Block a user