mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-05 05:29:13 +01:00
Some fixes on mail integration:
- Fix save as raw eml file and send it as attachment - Fix mail_import in infolog,tracker and calendar does not include raw mail eml attachment as link - Some IDE clean up for mail and tracker
This commit is contained in:
parent
7d54d5b21c
commit
aa7edce3b4
@ -2620,6 +2620,10 @@ class calendar_uiforms extends calendar_ui
|
|||||||
{
|
{
|
||||||
egw_link::link('calendar',$event['link_to']['to_id'],egw_link::DATA_APPNAME, $attachment);
|
egw_link::link('calendar',$event['link_to']['to_id'],egw_link::DATA_APPNAME, $attachment);
|
||||||
}
|
}
|
||||||
|
else if(is_readable($attachment['tmp_name']))
|
||||||
|
{
|
||||||
|
egw_link::link('calendar',$event['link_to']['to_id'],'file', $attachment);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1202,6 +1202,10 @@ class infolog_bo
|
|||||||
{
|
{
|
||||||
egw_link::link('infolog',$info['link_to']['to_id'],egw_link::DATA_APPNAME, $attachment);
|
egw_link::link('infolog',$info['link_to']['to_id'],egw_link::DATA_APPNAME, $attachment);
|
||||||
}
|
}
|
||||||
|
else if(is_readable($attachment['tmp_name']))
|
||||||
|
{
|
||||||
|
egw_link::link('infolog',$info['link_to']['to_id'],'file', $attachment);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $info;
|
return $info;
|
||||||
|
@ -3083,8 +3083,9 @@ class mail_compose
|
|||||||
$this->convertHTMLToText($this->sessionData['body']),
|
$this->convertHTMLToText($this->sessionData['body']),
|
||||||
$this->sessionData['attachments'],
|
$this->sessionData['attachments'],
|
||||||
false, // date
|
false, // date
|
||||||
$eml),true),
|
$eml,
|
||||||
'app' => $app_name,
|
$_formData['serverID']),true),
|
||||||
|
'app' => $app_name
|
||||||
)),'_blank',$hook['popup']);
|
)),'_blank',$hook['popup']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,10 +44,12 @@ class mail_integration {
|
|||||||
* 'attachments' => array (
|
* 'attachments' => array (
|
||||||
* 'name' => string, // file name
|
* 'name' => string, // file name
|
||||||
* 'type' => string, // mime type
|
* 'type' => string, // mime type
|
||||||
* 'egw_data'=> string), // hash md5 id of an stored attachment in session
|
* 'egw_data'=> string, // hash md5 id of an stored attachment in session (attachment which is in IMAP server)
|
||||||
* 'message' => string
|
* // NOTE: the attachmet either have egw_data OR tmp_name (e.g. raw mail eml file stores in tmp)
|
||||||
* 'date' => string
|
* 'tmp_name' => string), // tmp dir path
|
||||||
* 'subject' => string
|
* 'message' => string,
|
||||||
|
* 'date' => string,
|
||||||
|
* 'subject' => string,
|
||||||
* )
|
* )
|
||||||
*
|
*
|
||||||
* @param string $_to_emailAddress
|
* @param string $_to_emailAddress
|
||||||
@ -56,6 +58,7 @@ class mail_integration {
|
|||||||
* @param array $_attachments attachments
|
* @param array $_attachments attachments
|
||||||
* @param string $_date
|
* @param string $_date
|
||||||
* @param string $_rawMail path to file with raw mail
|
* @param string $_rawMail path to file with raw mail
|
||||||
|
* @param int $_icServerID mail profile id
|
||||||
* @throws egw_exception_assertion_failed
|
* @throws egw_exception_assertion_failed
|
||||||
*/
|
*/
|
||||||
public static function integrate ($_to_emailAddress=false,$_subject=false,$_body=false,$_attachments=false,$_date=false,$_rawMail=null,$_icServerID=null)
|
public static function integrate ($_to_emailAddress=false,$_subject=false,$_body=false,$_attachments=false,$_date=false,$_rawMail=null,$_icServerID=null)
|
||||||
@ -150,6 +153,7 @@ class mail_integration {
|
|||||||
'type' => 'message/rfc822',
|
'type' => 'message/rfc822',
|
||||||
'tmp_name' => $_rawMail,
|
'tmp_name' => $_rawMail,
|
||||||
'size' => filesize($_rawMail),
|
'size' => filesize($_rawMail),
|
||||||
|
'add_raw' => true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,7 +184,7 @@ class mail_integration {
|
|||||||
|
|
||||||
}
|
}
|
||||||
// Integrate already saved mail with ID
|
// Integrate already saved mail with ID
|
||||||
else if ($app)
|
else
|
||||||
{
|
{
|
||||||
// Initializing mail connection requirements
|
// Initializing mail connection requirements
|
||||||
$hA = mail_ui::splitRowID($_GET['rowid']);
|
$hA = mail_ui::splitRowID($_GET['rowid']);
|
||||||
@ -197,16 +201,15 @@ class mail_integration {
|
|||||||
$mo = mail_bo::getInstance(true,$icServerID);
|
$mo = mail_bo::getInstance(true,$icServerID);
|
||||||
$mo->openConnection();
|
$mo->openConnection();
|
||||||
$mo->reopen($mailbox);
|
$mo->reopen($mailbox);
|
||||||
// ToDo check $partid
|
$mailcontent = mail_bo::get_mailcontent($mo,$uid,'',$mailbox,false,true,(!($GLOBALS['egw_info']['user']['preferences'][$sessionLocation]['saveAsOptions']==='text_only')));
|
||||||
$mailcontent = mail_bo::get_mailcontent($mo,$uid,$partid,$mailbox,false,true,(!($GLOBALS['egw_info']['user']['preferences'][$sessionLocation]['saveAsOptions']==='text_only')));
|
|
||||||
// this one adds the mail itself (as message/rfc822 (.eml) file) to the app as additional attachment
|
// this one adds the mail itself (as message/rfc822 (.eml) file) to the app as additional attachment
|
||||||
// this is done to have a simple archive functionality (ToDo: opening .eml in email module)
|
// this is done to have a simple archive functionality (ToDo: opening .eml in email module)
|
||||||
if ($GLOBALS['egw_info']['user']['preferences'][$sessionLocation]['saveAsOptions']==='add_raw')
|
if ($GLOBALS['egw_info']['user']['preferences'][$sessionLocation]['saveAsOptions']==='add_raw')
|
||||||
{
|
{
|
||||||
$message = $mo->getMessageRawBody($uid, $partid,$mailbox);
|
$message = $mo->getMessageRawBody($uid, '',$mailbox);
|
||||||
$headers = $mo->getMessageHeader($uid, $partid,true,false,$mailbox);
|
$headers = $mo->getMessageHeader($uid, '',true,false,$mailbox);
|
||||||
$subject = mail_bo::adaptSubjectForImport($headers['SUBJECT']);
|
$subject = mail_bo::adaptSubjectForImport($headers['SUBJECT']);
|
||||||
$attachment_file =tempnam($GLOBALS['egw_info']['server']['temp_dir'],$GLOBALS['egw_info']['flags']['currentapp']."_");
|
$attachment_file =tempnam($GLOBALS['egw_info']['server']['temp_dir'],$GLOBALS['egw_info']['flags']['currentapp']."mail_integrate");
|
||||||
$tmpfile = fopen($attachment_file,'w');
|
$tmpfile = fopen($attachment_file,'w');
|
||||||
fwrite($tmpfile,$message);
|
fwrite($tmpfile,$message);
|
||||||
fclose($tmpfile);
|
fclose($tmpfile);
|
||||||
@ -217,15 +220,12 @@ class mail_integration {
|
|||||||
'type' => 'message/rfc822',
|
'type' => 'message/rfc822',
|
||||||
'tmp_name' => $attachment_file,
|
'tmp_name' => $attachment_file,
|
||||||
'size' => $size,
|
'size' => $size,
|
||||||
|
'add_raw' => true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$mailcontent['date'] = strtotime($mailcontent['headers']['DATE']);
|
$mailcontent['date'] = strtotime($mailcontent['headers']['DATE']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
egw_framework::window_close(lang('No app for integration is registered!'));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert addresses to email and personal
|
// Convert addresses to email and personal
|
||||||
$addresses = imap_rfc822_parse_adrlist($mailcontent['mailaddress'],'');
|
$addresses = imap_rfc822_parse_adrlist($mailcontent['mailaddress'],'');
|
||||||
@ -253,15 +253,20 @@ class mail_integration {
|
|||||||
foreach($mailcontent['attachments'] as $key => $attachment)
|
foreach($mailcontent['attachments'] as $key => $attachment)
|
||||||
{
|
{
|
||||||
$data_attachments[$key] = array(
|
$data_attachments[$key] = array(
|
||||||
'name' => $mailcontent['attachments'][$key]['filename'],
|
'name' => $mailcontent['attachments'][$key]['name'],
|
||||||
'type' => $mailcontent['attachments'][$key]['type'],
|
'type' => $mailcontent['attachments'][$key]['type'],
|
||||||
'egw_data' => egw_link::set_data($mailcontent['attachments'][$key]['mimeType'],'emailadmin_imapbase::getAttachmentAccount',
|
'size' => $mailcontent['attachments'][$key]['size'],
|
||||||
array($icServerID, $mailbox, $uid, $attachment['partID'], $is_winmail, true), true)
|
'tmp_name' => $mailcontent['attachments'][$key]['tmp_name']
|
||||||
);
|
);
|
||||||
|
if ($uid && !$mailcontent['attachments'][$key]['add_raw'])
|
||||||
|
{
|
||||||
|
$data_attachments[$key]['egw_data'] = egw_link::set_data($mailcontent['attachments'][$key]['mimeType'],
|
||||||
|
'emailadmin_imapbase::getAttachmentAccount',array($icServerID, $mailbox, $uid, $attachment['partID'], $is_winmail, true),true);
|
||||||
|
}
|
||||||
|
unset($mailcontent['attachments'][$key]['add_raw']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Get the registered hook method of requested app for integration
|
// Get the registered hook method of requested app for integration
|
||||||
$hook = $GLOBALS['egw']->hooks->single(array('location' => 'mail_import'),$app);
|
$hook = $GLOBALS['egw']->hooks->single(array('location' => 'mail_import'),$app);
|
||||||
|
|
||||||
|
@ -125,12 +125,12 @@ class mail_ui
|
|||||||
if ($_GET["resetConnection"])
|
if ($_GET["resetConnection"])
|
||||||
{
|
{
|
||||||
unset($_GET["resetConnection"]);
|
unset($_GET["resetConnection"]);
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' Connection Reset triggered:'.$connectionReset.' for Profile with ID:'.self::$icServerID);
|
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' Connection Reset triggered: for Profile with ID:'.self::$icServerID);
|
||||||
emailadmin_imapbase::unsetCachedObjects(self::$icServerID);
|
emailadmin_imapbase::unsetCachedObjects(self::$icServerID);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->mail_bo = mail_bo::getInstance(true,self::$icServerID,$_validate=true, $_oldImapServerObject=false, $_reuseCache=true);
|
$this->mail_bo = mail_bo::getInstance(true,self::$icServerID, true, false, true);
|
||||||
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' Fetched IC Server:'.self::$icServerID.'/'.$this->mail_bo->profileID.':'.function_backtrace());
|
if (mail_bo::$debug) error_log(__METHOD__.__LINE__.' Fetched IC Server:'.self::$icServerID.'/'.$this->mail_bo->profileID.':'.function_backtrace());
|
||||||
//error_log(__METHOD__.__LINE__.array2string($this->mail_bo->icServer));
|
//error_log(__METHOD__.__LINE__.array2string($this->mail_bo->icServer));
|
||||||
|
|
||||||
@ -3263,7 +3263,6 @@ class mail_ui
|
|||||||
$file = $content['uploadForImport'];
|
$file = $content['uploadForImport'];
|
||||||
}
|
}
|
||||||
$destination = $content['FOLDER'][0];
|
$destination = $content['FOLDER'][0];
|
||||||
$rememberServerID = $icServerID = $this->mail_bo->profileID;
|
|
||||||
|
|
||||||
if (stripos($destination,self::$delimiter)!==false) list($icServerID,$destination) = explode(self::$delimiter,$destination,2);
|
if (stripos($destination,self::$delimiter)!==false) list($icServerID,$destination) = explode(self::$delimiter,$destination,2);
|
||||||
if ($icServerID && $icServerID != $this->mail_bo->profileID)
|
if ($icServerID && $icServerID != $this->mail_bo->profileID)
|
||||||
@ -3486,7 +3485,6 @@ class mail_ui
|
|||||||
$folder = $uidA['folder']; // all messages in one set are supposed to be within the same folder
|
$folder = $uidA['folder']; // all messages in one set are supposed to be within the same folder
|
||||||
$messageID = $uidA['msgUID'];
|
$messageID = $uidA['msgUID'];
|
||||||
$icServerID = $uidA['profileID'];
|
$icServerID = $uidA['profileID'];
|
||||||
$rememberServerID = $this->mail_bo->profileID;
|
|
||||||
if ($icServerID && $icServerID != $this->mail_bo->profileID)
|
if ($icServerID && $icServerID != $this->mail_bo->profileID)
|
||||||
{
|
{
|
||||||
//error_log(__METHOD__.__LINE__.' change Profile to ->'.$icServerID);
|
//error_log(__METHOD__.__LINE__.' change Profile to ->'.$icServerID);
|
||||||
@ -4767,7 +4765,7 @@ class mail_ui
|
|||||||
//error_log(__METHOD__.__LINE__.$uID);
|
//error_log(__METHOD__.__LINE__.$uID);
|
||||||
if ($_copyOrMove=='move')
|
if ($_copyOrMove=='move')
|
||||||
{
|
{
|
||||||
$messageListForRefresh[] = self::generateRowID($sourceProfileID, $folderName, $uID, $_prependApp=false);
|
$messageListForRefresh[] = self::generateRowID($sourceProfileID, $_folderName, $uID, $_prependApp=false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user