mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-15 04:24:41 +01:00
disable thread-topic handling, as horde does not support encoding it (thus avoiding utf-8 header field errors); Better handling of drafts with attachments to make sure possible attachments of the original draft are available on send
This commit is contained in:
parent
c3b75cdbf4
commit
2577268d21
@ -1287,7 +1287,9 @@ class mail_compose
|
|||||||
$preserv['processedmail_id'] = $content['processedmail_id'];
|
$preserv['processedmail_id'] = $content['processedmail_id'];
|
||||||
$preserv['references'] = $content['references'];
|
$preserv['references'] = $content['references'];
|
||||||
$preserv['in-reply-to'] = $content['in-reply-to'];
|
$preserv['in-reply-to'] = $content['in-reply-to'];
|
||||||
$preserv['thread-topic'] = $content['thread-topic'];
|
// thread-topic is a proprietary microsoft header and deprecated with the current version
|
||||||
|
// horde does not support the encoding of thread-topic, and probably will not no so in the future
|
||||||
|
//$preserv['thread-topic'] = $content['thread-topic'];
|
||||||
$preserv['thread-index'] = $content['thread-index'];
|
$preserv['thread-index'] = $content['thread-index'];
|
||||||
$preserv['list-id'] = $content['list-id'];
|
$preserv['list-id'] = $content['list-id'];
|
||||||
$preserv['mode'] = $content['mode'];
|
$preserv['mode'] = $content['mode'];
|
||||||
@ -1343,8 +1345,9 @@ class mail_compose
|
|||||||
// this fill the session data with the values from the original email
|
// this fill the session data with the values from the original email
|
||||||
switch($from)
|
switch($from)
|
||||||
{
|
{
|
||||||
case 'composeasnew':
|
|
||||||
case 'composefromdraft':
|
case 'composefromdraft':
|
||||||
|
$content['mode'] = 'composefromdraft';
|
||||||
|
case 'composeasnew':
|
||||||
$content = $this->getDraftData($icServer, $folder, $msgUID, $part_id);
|
$content = $this->getDraftData($icServer, $folder, $msgUID, $part_id);
|
||||||
$content['processedmail_id'] = $mail_id;
|
$content['processedmail_id'] = $mail_id;
|
||||||
|
|
||||||
@ -1494,8 +1497,11 @@ class mail_compose
|
|||||||
// get message headers for specified message
|
// get message headers for specified message
|
||||||
#$headers = $mail_bo->getMessageHeader($_folder, $_uid);
|
#$headers = $mail_bo->getMessageHeader($_folder, $_uid);
|
||||||
$headers = $mail_bo->getMessageEnvelope($_uid, $_partID);
|
$headers = $mail_bo->getMessageEnvelope($_uid, $_partID);
|
||||||
//_debug_array($headers); exit;
|
|
||||||
$addHeadInfo = $mail_bo->getMessageHeader($_uid, $_partID);
|
$addHeadInfo = $mail_bo->getMessageHeader($_uid, $_partID);
|
||||||
|
// thread-topic is a proprietary microsoft header and deprecated with the current version
|
||||||
|
// horde does not support the encoding of thread-topic, and probably will not no so in the future
|
||||||
|
//if ($addHeadInfo['THREAD-TOPIC']) $this->sessionData['thread-topic'] = $addHeadInfo['THREAD-TOPIC'];
|
||||||
|
|
||||||
//error_log(__METHOD__.__LINE__.array2string($headers));
|
//error_log(__METHOD__.__LINE__.array2string($headers));
|
||||||
if (!empty($addHeadInfo['X-MAILFOLDER'])) {
|
if (!empty($addHeadInfo['X-MAILFOLDER'])) {
|
||||||
foreach ( explode('|',$addHeadInfo['X-MAILFOLDER']) as $val ) {
|
foreach ( explode('|',$addHeadInfo['X-MAILFOLDER']) as $val ) {
|
||||||
@ -1951,7 +1957,9 @@ class mail_compose
|
|||||||
$this->sessionData['messageFolder'] = $_folder;
|
$this->sessionData['messageFolder'] = $_folder;
|
||||||
$this->sessionData['in-reply-to'] = ($headers['IN-REPLY-TO']?$headers['IN-REPLY-TO']:$headers['MESSAGE_ID']);
|
$this->sessionData['in-reply-to'] = ($headers['IN-REPLY-TO']?$headers['IN-REPLY-TO']:$headers['MESSAGE_ID']);
|
||||||
$this->sessionData['references'] = ($headers['REFERENCES']?$headers['REFERENCES']:$headers['MESSAGE_ID']);
|
$this->sessionData['references'] = ($headers['REFERENCES']?$headers['REFERENCES']:$headers['MESSAGE_ID']);
|
||||||
if ($headers['THREAD-TOPIC']) $this->sessionData['thread-topic'] = $headers['THREAD-TOPIC'];
|
// thread-topic is a proprietary microsoft header and deprecated with the current version
|
||||||
|
// horde does not support the encoding of thread-topic, and probably will not no so in the future
|
||||||
|
//if ($headers['THREAD-TOPIC']) $this->sessionData['thread-topic'] = $headers['THREAD-TOPIC'];
|
||||||
if ($headers['THREAD-INDEX']) $this->sessionData['thread-index'] = $headers['THREAD-INDEX'];
|
if ($headers['THREAD-INDEX']) $this->sessionData['thread-index'] = $headers['THREAD-INDEX'];
|
||||||
if ($headers['LIST-ID']) $this->sessionData['list-id'] = $headers['LIST-ID'];
|
if ($headers['LIST-ID']) $this->sessionData['list-id'] = $headers['LIST-ID'];
|
||||||
//error_log(__METHOD__.__LINE__.' Mode:'.$_mode.':'.array2string($headers));
|
//error_log(__METHOD__.__LINE__.' Mode:'.$_mode.':'.array2string($headers));
|
||||||
@ -2185,10 +2193,13 @@ class mail_compose
|
|||||||
//error_log(__METHOD__.__LINE__.'$_mailObject->addHeader(References', $_formData['references'].")");
|
//error_log(__METHOD__.__LINE__.'$_mailObject->addHeader(References', $_formData['references'].")");
|
||||||
$_mailObject->addHeader('References', $_formData['references']);
|
$_mailObject->addHeader('References', $_formData['references']);
|
||||||
}
|
}
|
||||||
if(!empty($_formData['thread-topic'])) {
|
// thread-topic is a proprietary microsoft header and deprecated with the current version
|
||||||
//error_log(__METHOD__.__LINE__.'$_mailObject->addHeader(Tread-Topic', $_formData['thread-topic'].")");
|
// horde does not support the encoding of thread-topic, and probably will not no so in the future
|
||||||
$_mailObject->addHeader('Thread-Topic', $_formData['thread-topic']);
|
//if(!empty($_formData['thread-topic']) && class_exists('Horde_Mime_Headers_ThreadTopic')) {
|
||||||
}
|
// //$_mailObject->addHeader('Thread-Topic', Horde_Mime::encode($_formData['thread-topic']));
|
||||||
|
// $_mailObject->addHeader('Thread-Topic', $_formData['thread-topic']);
|
||||||
|
//}
|
||||||
|
|
||||||
if(!empty($_formData['thread-index'])) {
|
if(!empty($_formData['thread-index'])) {
|
||||||
//error_log(__METHOD__.__LINE__.'$_mailObject->addHeader(Tread-Index', $_formData['thread-index'].")");
|
//error_log(__METHOD__.__LINE__.'$_mailObject->addHeader(Tread-Index', $_formData['thread-index'].")");
|
||||||
$_mailObject->addHeader('Thread-Index', $_formData['thread-index']);
|
$_mailObject->addHeader('Thread-Index', $_formData['thread-index']);
|
||||||
@ -2485,15 +2496,30 @@ class mail_compose
|
|||||||
$dhA = mail_ui::splitRowID($content['lastDrafted']);
|
$dhA = mail_ui::splitRowID($content['lastDrafted']);
|
||||||
$duid = $dhA['msgUID'];
|
$duid = $dhA['msgUID'];
|
||||||
$dmailbox = $dhA['folder'];
|
$dmailbox = $dhA['folder'];
|
||||||
try
|
// beware: do not delete the original mail as found in processedmail_id
|
||||||
|
$pMuid='';
|
||||||
|
if ($content['processedmail_id'])
|
||||||
{
|
{
|
||||||
$this->mail_bo->deleteMessages($duid,$dmailbox,'remove_immediately');
|
$pMhA = mail_ui::splitRowID($content['processedmail_id']);
|
||||||
|
$pMuid = $pMhA['msgUID'];
|
||||||
|
$pMmailbox = $pMhA['folder'];
|
||||||
}
|
}
|
||||||
catch (egw_exception $e)
|
error_log(__METHOD__.__LINE__.' processedID#'.$content['processedmail_id']);
|
||||||
|
error_log(__METHOD__.__LINE__.' lastDrafted#'.$content['lastDrafted']);
|
||||||
|
//error_log(__METHOD__.__LINE__."#$pMuid#$pMuid!=$duid#".array2string($content['attachments']));
|
||||||
|
// do not delete the original message if attachments are present
|
||||||
|
if (empty($pMuid) || $pMuid!=$duid || empty($content['attachments']))
|
||||||
{
|
{
|
||||||
$msg = str_replace('"',"'",$e->getMessage());
|
try
|
||||||
$success = false;
|
{
|
||||||
error_log(__METHOD__.__LINE__.$msg);
|
$this->mail_bo->deleteMessages($duid,$dmailbox,'remove_immediately');
|
||||||
|
}
|
||||||
|
catch (egw_exception $e)
|
||||||
|
{
|
||||||
|
$msg = str_replace('"',"'",$e->getMessage());
|
||||||
|
$success = false;
|
||||||
|
error_log(__METHOD__.__LINE__.$msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2686,6 +2712,12 @@ class mail_compose
|
|||||||
$this->sessionData['uid'] = $rhA['msgUID'];
|
$this->sessionData['uid'] = $rhA['msgUID'];
|
||||||
$this->sessionData['messageFolder'] = $rhA['folder'];
|
$this->sessionData['messageFolder'] = $rhA['folder'];
|
||||||
}
|
}
|
||||||
|
if ($_formData['mode']=='composefromdraft' && !empty($_formData['processedmail_id']))
|
||||||
|
{
|
||||||
|
$dhA = mail_ui::splitRowID($_formData['processedmail_id']);
|
||||||
|
$this->sessionData['uid'] = $dhA['msgUID'];
|
||||||
|
$this->sessionData['messageFolder'] = $dhA['folder'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// if the body is empty, maybe someone pasted something with scripts, into the message body
|
// if the body is empty, maybe someone pasted something with scripts, into the message body
|
||||||
// this should not happen anymore, unless you call send directly, since the check was introduced with the action command
|
// this should not happen anymore, unless you call send directly, since the check was introduced with the action command
|
||||||
@ -2959,6 +2991,7 @@ class mail_compose
|
|||||||
$lastDrafted['folder'] = $dhA['folder'];
|
$lastDrafted['folder'] = $dhA['folder'];
|
||||||
if (isset($lastDrafted['uid']) && !empty($lastDrafted['uid'])) $lastDrafted['uid']=trim($lastDrafted['uid']);
|
if (isset($lastDrafted['uid']) && !empty($lastDrafted['uid'])) $lastDrafted['uid']=trim($lastDrafted['uid']);
|
||||||
// manually drafted, do not delete
|
// manually drafted, do not delete
|
||||||
|
// will be handled later on IF mode was $_formData['mode']=='composefromdraft'
|
||||||
if (isset($lastDrafted['uid']) && (empty($lastDrafted['uid']) || $lastDrafted['uid'] == $this->sessionData['uid'])) $lastDrafted=false;
|
if (isset($lastDrafted['uid']) && (empty($lastDrafted['uid']) || $lastDrafted['uid'] == $this->sessionData['uid'])) $lastDrafted=false;
|
||||||
//error_log(__METHOD__.__LINE__.array2string($lastDrafted));
|
//error_log(__METHOD__.__LINE__.array2string($lastDrafted));
|
||||||
}
|
}
|
||||||
@ -2986,14 +3019,31 @@ class mail_compose
|
|||||||
// unless your templatefolder is a subfolder of your draftfolder, and the message is in there
|
// unless your templatefolder is a subfolder of your draftfolder, and the message is in there
|
||||||
if ($mail_bo->isDraftFolder($this->sessionData['messageFolder']) && !$mail_bo->isTemplateFolder($this->sessionData['messageFolder']))
|
if ($mail_bo->isDraftFolder($this->sessionData['messageFolder']) && !$mail_bo->isTemplateFolder($this->sessionData['messageFolder']))
|
||||||
{
|
{
|
||||||
$mail_bo->deleteMessages(array($this->sessionData['uid']),$this->sessionData['messageFolder']);
|
//error_log(__METHOD__.__LINE__."#".$this->sessionData['uid'].'#'.$this->sessionData['messageFolder']);
|
||||||
|
try // message may be deleted already, as it maybe done by autosave
|
||||||
|
{
|
||||||
|
if ($_formData['mode']=='composefromdraft') $mail_bo->deleteMessages(array($this->sessionData['uid']),$this->sessionData['messageFolder']);
|
||||||
|
}
|
||||||
|
catch (egw_exception $e)
|
||||||
|
{
|
||||||
|
//error_log(__METHOD__.__LINE__." ". str_replace('"',"'",$e->getMessage()));
|
||||||
|
unset($e);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$mail_bo->flagMessages("answered", $this->sessionData['uid'],($this->sessionData['messageFolder']?$this->sessionData['messageFolder']:$this->sessionData['sourceFolder']));
|
$mail_bo->flagMessages("answered", $this->sessionData['uid'],($this->sessionData['messageFolder']?$this->sessionData['messageFolder']:$this->sessionData['sourceFolder']));
|
||||||
//error_log(__METHOD__.__LINE__.array2string(array_keys($this->sessionData)).':'.array2string($this->sessionData['forwardedUID']).' F:'.$this->sessionData['sourceFolder']);
|
//error_log(__METHOD__.__LINE__.array2string(array_keys($this->sessionData)).':'.array2string($this->sessionData['forwardedUID']).' F:'.$this->sessionData['sourceFolder']);
|
||||||
if (array_key_exists('forwardFlag',$this->sessionData) && $this->sessionData['forwardFlag']=='forwarded')
|
if (array_key_exists('forwardFlag',$this->sessionData) && $this->sessionData['forwardFlag']=='forwarded')
|
||||||
{
|
{
|
||||||
//error_log(__METHOD__.__LINE__.':'.array2string($this->sessionData['forwardedUID']).' F:'.$this->sessionData['sourceFolder']);
|
try
|
||||||
$mail_bo->flagMessages("forwarded", $this->sessionData['forwardedUID'],$this->sessionData['sourceFolder']);
|
{
|
||||||
|
//error_log(__METHOD__.__LINE__.':'.array2string($this->sessionData['forwardedUID']).' F:'.$this->sessionData['sourceFolder']);
|
||||||
|
$mail_bo->flagMessages("forwarded", $this->sessionData['forwardedUID'],$this->sessionData['sourceFolder']);
|
||||||
|
}
|
||||||
|
catch (egw_exception $e)
|
||||||
|
{
|
||||||
|
//error_log(__METHOD__.__LINE__." ". str_replace('"',"'",$e->getMessage()));
|
||||||
|
unset($e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//$mail_bo->closeConnection();
|
//$mail_bo->closeConnection();
|
||||||
|
Loading…
Reference in New Issue
Block a user