From 30292140430e259831cc3e7691e774898374bca8 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Mon, 8 Jul 2013 12:26:54 -0400 Subject: [PATCH 1/2] BUG-12282 attach documents into emails using original name doesn't work SOLVED - Cuando se esta enviando un email y guardar el mismo los attach documents se guardaban como cadenas solo con el path. - se cambio la forma de guardado desde ahora se guarda un serializado de los datos donde puede haber un array asociativo donde si el key es numerico envia sin nombre y si tuviera otro valor lo asocia como el nombre del file en el email. --- workflow/engine/classes/class.spool.php | 17 +++--- .../methods/cases/caseMessageHistory_Ajax.php | 54 ++++++++----------- workflow/engine/methods/cases/cases_Ajax.php | 52 ++++++++---------- 3 files changed, 53 insertions(+), 70 deletions(-) diff --git a/workflow/engine/classes/class.spool.php b/workflow/engine/classes/class.spool.php index babe1320a..d5cc28a6d 100755 --- a/workflow/engine/classes/class.spool.php +++ b/workflow/engine/classes/class.spool.php @@ -138,10 +138,8 @@ class spoolRun */ public function create ($aData) { - if (is_array($aData['app_msg_attach'])) { - $attachment = implode(",", $aData['app_msg_attach']); - $aData['app_msg_attach'] = $attachment; - } + $attachment = (is_array($aData['app_msg_attach'])) ? $aData['app_msg_attach'] : unserialize($aData['app_msg_attach']); + $aData['app_msg_attach'] = serialize($attachment); $aData['app_msg_show_message'] = (isset($aData['app_msg_show_message'])) ? $aData['app_msg_show_message'] : 1; $sUID = $this->db_insert( $aData ); @@ -184,7 +182,7 @@ class spoolRun $this->fileData['cc'] = $sCC; $this->fileData['bcc'] = $sBCC; $this->fileData['template'] = $sTemplate; - $this->fileData['attachments'] = is_array( $aAttachment ) ? $aAttachment : ($aAttachment != '' ? explode( ',', $aAttachment ) : array ()); + $this->fileData['attachments'] = is_string($aAttachment) ? $aAttachment : (is_array($aAttachment) ? $aAttachment : (($aAttachment != '') ? explode(',', $aAttachment) : array())); $this->fileData['envelope_to'] = array (); $this->fileData["contentTypeIsHtml"] = $bContentTypeIsHtml; @@ -443,8 +441,13 @@ class spoolRun $oPHPMailer->Body = $msBody; - if (is_array( $this->fileData['attachments'] )) { - foreach ($this->fileData['attachments'] as $key => $fileAttach) { + if (is_array($this->fileData['attachments'])) { + $attachment = $this->fileData['attachments']; + } else { + $attachment = unserialize($this->fileData['attachments']); + } + if (is_array($attachment)) { + foreach ($attachment as $key => $fileAttach) { if (file_exists( $fileAttach )) { $oPHPMailer->AddAttachment( $fileAttach, is_int( $key ) ? '' : $key ); } diff --git a/workflow/engine/methods/cases/caseMessageHistory_Ajax.php b/workflow/engine/methods/cases/caseMessageHistory_Ajax.php index 73fbcc018..abbe25f1e 100644 --- a/workflow/engine/methods/cases/caseMessageHistory_Ajax.php +++ b/workflow/engine/methods/cases/caseMessageHistory_Ajax.php @@ -173,37 +173,16 @@ if ($actionAjax == 'sendMailMessage_JXP') { $_POST['APP_MSG_UID'] = $_REQUEST['APP_MSG_UID']; G::LoadClass( 'case' ); - $oCase = new Cases(); - - require_once 'classes/model/Configuration.php'; G::LoadClass( 'spool' ); $oCase = new Cases(); $data = $oCase->getHistoryMessagesTrackerView( $_POST['APP_UID'], $_POST['APP_MSG_UID'] ); - //print_r($data); + G::LoadClass("system"); - $oConfiguration = new Configuration(); - $sDelimiter = DBAdapter::getStringDelimiter(); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ConfigurationPeer::CFG_UID, 'Emails' ); - $oCriteria->add( ConfigurationPeer::OBJ_UID, '' ); - $oCriteria->add( ConfigurationPeer::PRO_UID, '' ); - $oCriteria->add( ConfigurationPeer::USR_UID, '' ); - $oCriteria->add( ConfigurationPeer::APP_UID, '' ); - if (ConfigurationPeer::doCount( $oCriteria ) == 0) { - $oConfiguration->create( array ('CFG_UID' => 'Emails','OBJ_UID' => '','CFG_VALUE' => '','PRO_UID' => '','USR_UID' => '','APP_UID' => '' - ) ); - $aConfiguration = array (); - } else { - $aConfiguration = $oConfiguration->load( 'Emails', '', '', '', '' ); - if ($aConfiguration['CFG_VALUE'] != '') { - $aConfiguration = unserialize( $aConfiguration['CFG_VALUE'] ); - } else { - $aConfiguration = array (); - } - } - $passwd = $aConfiguration['MESS_PASSWORD']; + $aSetup = System::getEmailConfiguration(); + + $passwd = $aSetup['MESS_PASSWORD']; $passwdDec = G::decrypt( $passwd, 'EMAILENCRYPT' ); $auxPass = explode( 'hash:', $passwdDec ); if (count( $auxPass ) > 1) { @@ -214,16 +193,25 @@ if ($actionAjax == 'sendMailMessage_JXP') { $passwd = implode( '', $auxPass ); } } - $aConfiguration['MESS_PASSWORD'] = $passwd; + $aSetup['MESS_PASSWORD'] = $passwd; + if ($aSetup['MESS_RAUTH'] == false || (is_string($aSetup['MESS_RAUTH']) && $aSetup['MESS_RAUTH'] == 'false')) { + $aSetup['MESS_RAUTH'] = 0; + } else { + $aSetup['MESS_RAUTH'] = 1; + } $oSpool = new spoolRun(); - if ($aConfiguration['MESS_RAUTH'] == false || (is_string($aConfiguration['MESS_RAUTH']) && $aConfiguration['MESS_RAUTH'] == 'false')) { - $aConfiguration['MESS_RAUTH'] = 0; - } else { - $aConfiguration['MESS_RAUTH'] = 1; - } - $oSpool->setConfig( array ('MESS_ENGINE' => $aConfiguration['MESS_ENGINE'],'MESS_SERVER' => $aConfiguration['MESS_SERVER'],'MESS_PORT' => $aConfiguration['MESS_PORT'],'MESS_ACCOUNT' => $aConfiguration['MESS_ACCOUNT'],'MESS_PASSWORD' => $passwd,'SMTPAuth' => $aConfiguration['MESS_RAUTH'] - ) ); + $oSpool->setConfig( + array ( + 'MESS_ENGINE' => $aSetup['MESS_ENGINE'], + 'MESS_SERVER' => $aSetup['MESS_SERVER'], + 'MESS_PORT' => $aSetup['MESS_PORT'], + 'MESS_ACCOUNT' => $aSetup['MESS_ACCOUNT'], + 'MESS_PASSWORD' => $aSetup['MESS_PASSWORD'], + 'SMTPSecure' => $aSetup['SMTPSecure'], + 'SMTPAuth' => $aSetup['MESS_RAUTH'] + ) + ); $oSpool->create( array ('msg_uid' => $data['MSG_UID'],'app_uid' => $data['APP_UID'],'del_index' => $data['DEL_INDEX'],'app_msg_type' => $data['APP_MSG_TYPE'],'app_msg_subject' => $data['APP_MSG_SUBJECT'],'app_msg_from' => $data['APP_MSG_FROM'],'app_msg_to' => $data['APP_MSG_TO'],'app_msg_body' => $data['APP_MSG_BODY'],'app_msg_cc' => $data['APP_MSG_CC'],'app_msg_bcc' => $data['APP_MSG_BCC'],'app_msg_attach' => $data['APP_MSG_ATTACH'],'app_msg_template' => $data['APP_MSG_TEMPLATE'],'app_msg_status' => 'pending' ) ); diff --git a/workflow/engine/methods/cases/cases_Ajax.php b/workflow/engine/methods/cases/cases_Ajax.php index cf1fc069a..ddc82f867 100755 --- a/workflow/engine/methods/cases/cases_Ajax.php +++ b/workflow/engine/methods/cases/cases_Ajax.php @@ -757,37 +757,11 @@ switch (($_POST['action']) ? $_POST['action'] : $_REQUEST['action']) { //print_r($data); - $oConfiguration = new Configuration(); - $sDelimiter = DBAdapter::getStringDelimiter(); - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( ConfigurationPeer::CFG_UID, 'Emails' ); - $oCriteria->add( ConfigurationPeer::OBJ_UID, '' ); - $oCriteria->add( ConfigurationPeer::PRO_UID, '' ); - $oCriteria->add( ConfigurationPeer::USR_UID, '' ); - $oCriteria->add( ConfigurationPeer::APP_UID, '' ); - if (ConfigurationPeer::doCount( $oCriteria ) == 0) { - $oConfiguration->create( array ('CFG_UID' => 'Emails','OBJ_UID' => '','CFG_VALUE' => '','PRO_UID' => '','USR_UID' => '','APP_UID' => '' - ) ); - $aConfiguration = array (); - } else { - $aConfiguration = $oConfiguration->load( 'Emails', '', '', '', '' ); - if ($aConfiguration['CFG_VALUE'] != '') { - $aConfiguration = unserialize( $aConfiguration['CFG_VALUE'] ); - } else { - $aConfiguration = array (); - } - } + G::LoadClass("system"); - $oSpool = new spoolRun(); - if ($aConfiguration['MESS_RAUTH'] == false || (is_string($aConfiguration['MESS_RAUTH']) && $aConfiguration['MESS_RAUTH'] == 'false')) { - $aConfiguration['MESS_RAUTH'] = 0; - } else { - $aConfiguration['MESS_RAUTH'] = 1; - } + $aSetup = System::getEmailConfiguration(); - $oSpool->setConfig( array ('MESS_ENGINE' => $aConfiguration['MESS_ENGINE'],'MESS_SERVER' => $aConfiguration['MESS_SERVER'],'MESS_PORT' => $aConfiguration['MESS_PORT'],'MESS_ACCOUNT' => $aConfiguration['MESS_ACCOUNT'],'MESS_PASSWORD' => $aConfiguration['MESS_PASSWORD'],'SMTPAuth' => $aConfiguration['MESS_RAUTH'] - ) ); - $passwd = $oSpool->config['MESS_PASSWORD']; + $passwd = $aSetup['MESS_PASSWORD']; $passwdDec = G::decrypt( $passwd, 'EMAILENCRYPT' ); $auxPass = explode( 'hash:', $passwdDec ); if (count( $auxPass ) > 1) { @@ -798,7 +772,25 @@ switch (($_POST['action']) ? $_POST['action'] : $_REQUEST['action']) { $passwd = implode( '', $auxPass ); } } - $oSpool->config['MESS_PASSWORD'] = $passwd; + $aSetup['MESS_PASSWORD'] = $passwd; + if ($aSetup['MESS_RAUTH'] == false || (is_string($aSetup['MESS_RAUTH']) && $aSetup['MESS_RAUTH'] == 'false')) { + $aSetup['MESS_RAUTH'] = 0; + } else { + $aSetup['MESS_RAUTH'] = 1; + } + + $oSpool = new spoolRun(); + $oSpool->setConfig( + array ( + 'MESS_ENGINE' => $aSetup['MESS_ENGINE'], + 'MESS_SERVER' => $aSetup['MESS_SERVER'], + 'MESS_PORT' => $aSetup['MESS_PORT'], + 'MESS_ACCOUNT' => $aSetup['MESS_ACCOUNT'], + 'MESS_PASSWORD' => $aSetup['MESS_PASSWORD'], + 'SMTPSecure' => $aSetup['SMTPSecure'], + 'SMTPAuth' => $aSetup['MESS_RAUTH'] + ) + ); $oSpool->create( array ('msg_uid' => $data['MSG_UID'],'app_uid' => $data['APP_UID'],'del_index' => $data['DEL_INDEX'],'app_msg_type' => $data['APP_MSG_TYPE'],'app_msg_subject' => $data['APP_MSG_SUBJECT'],'app_msg_from' => $data['APP_MSG_FROM'],'app_msg_to' => $data['APP_MSG_TO'],'app_msg_body' => $data['APP_MSG_BODY'],'app_msg_cc' => $data['APP_MSG_CC'],'app_msg_bcc' => $data['APP_MSG_BCC'],'app_msg_attach' => $data['APP_MSG_ATTACH'],'app_msg_template' => $data['APP_MSG_TEMPLATE'],'app_msg_status' => 'pending' ) ); $oSpool->sendMail(); From 3d3d077c213e5b16c3a02cc2090c0c75ecd8c87a Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Tue, 9 Jul 2013 08:23:22 -0400 Subject: [PATCH 2/2] BUG-12282 attach documents into emails using original name doesn't work SOLVED - Cuando se esta enviando un email y guardar los datos del mismo los attach documents se guardaban solo el path del documento. - Se cambio la forma de guardado desde ahora se guarda un serializado de los datos donde puede haber un array asociativo donde si el key es numerico envia sin nombre y si tuviera otro valor lo asocia como el nombre del file en el email. --- workflow/engine/classes/class.spool.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/workflow/engine/classes/class.spool.php b/workflow/engine/classes/class.spool.php index d5cc28a6d..bf67b5cec 100755 --- a/workflow/engine/classes/class.spool.php +++ b/workflow/engine/classes/class.spool.php @@ -138,7 +138,14 @@ class spoolRun */ public function create ($aData) { - $attachment = (is_array($aData['app_msg_attach'])) ? $aData['app_msg_attach'] : unserialize($aData['app_msg_attach']); + if (is_array($aData['app_msg_attach'])) { + $attachment = $aData['app_msg_attach']; + } else { + $attachment = @unserialize($aData['app_msg_attach']); + if ($attachment === false) { + $attachment = explode(',', $aData['app_msg_attach']); + } + } $aData['app_msg_attach'] = serialize($attachment); $aData['app_msg_show_message'] = (isset($aData['app_msg_show_message'])) ? $aData['app_msg_show_message'] : 1; $sUID = $this->db_insert( $aData ); @@ -182,7 +189,7 @@ class spoolRun $this->fileData['cc'] = $sCC; $this->fileData['bcc'] = $sBCC; $this->fileData['template'] = $sTemplate; - $this->fileData['attachments'] = is_string($aAttachment) ? $aAttachment : (is_array($aAttachment) ? $aAttachment : (($aAttachment != '') ? explode(',', $aAttachment) : array())); + $this->fileData['attachments'] = $aAttachment; $this->fileData['envelope_to'] = array (); $this->fileData["contentTypeIsHtml"] = $bContentTypeIsHtml; @@ -441,10 +448,9 @@ class spoolRun $oPHPMailer->Body = $msBody; - if (is_array($this->fileData['attachments'])) { + $attachment = @unserialize($this->fileData['attachments']); + if ($attachment === false) { $attachment = $this->fileData['attachments']; - } else { - $attachment = unserialize($this->fileData['attachments']); } if (is_array($attachment)) { foreach ($attachment as $key => $fileAttach) {