diff --git a/workflow/engine/classes/class.configuration.php b/workflow/engine/classes/class.configuration.php
index 77674647a..0d4b7bdf1 100755
--- a/workflow/engine/classes/class.configuration.php
+++ b/workflow/engine/classes/class.configuration.php
@@ -96,18 +96,22 @@ class Configurations // extends Configuration
{
if (!(is_object($object) || is_array($object)))
return;
+
if (!isset($from))
$from = &$this->aConfig;
+
foreach($from as $k => $v ) {
if (isset($v) && array_key_exists($k,$object)) {
if (is_object($v))
throw new Exception( 'Object is not permited inside configuration array.' );
+
if (is_object($object)) {
if (is_array($v))
$this->configObject($object->{$k}, $v);
else
$object->{$k} = $v;
- } else {
+ }
+ else {
if (is_array($object)) {
if (is_array($v))
$this->configObject($object[$k], $v);
@@ -130,18 +134,38 @@ class Configurations // extends Configuration
* @param string $app
* @return void
*/
- function loadConfig(&$object, $cfg, $obj, $pro = '', $usr = '', $app = '')
+ function loadConfig(&$object, $cfg, $obj='', $pro = '', $usr = '', $app = '')
+ {
+ $this->load($cfg, $obj, $pro, $usr, $app);
+ $this->configObject($object, $this->aConfig);
+ }
+
+ /**
+ * loadConf
+ *
+ * @param string $cfg
+ * @param object $obj
+ * @param string $pro
+ * @param string $usr
+ * @param string $app
+ * @return void
+ */
+ function load($cfg, $obj='', $pro = '', $usr = '', $app = '')
{
$this->Fields = array();
- if ($this->Configuration->exists( $cfg, $obj, $pro, $usr, $app ))
- $this->Fields = $this->Configuration->load( $cfg, $obj, $pro, $usr, $app );
- $aConfig = $this->aConfig;
+
+ try {
+ $this->Fields = $this->Configuration->load($cfg, $obj, $pro, $usr, $app);
+ }
+ catch(Exception $e) {} // the configuration does not exist
+
if (isset($this->Fields['CFG_VALUE']))
- $aConfig = unserialize($this->Fields['CFG_VALUE']);
- if (!is_array($aConfig))
- $aConfig = $this->aConfig;
- $this->aConfig = $aConfig;
- $this->configObject($object,$this->aConfig);
+ $this->aConfig = unserialize($this->Fields['CFG_VALUE']);
+
+ if (!is_array($this->aConfig))
+ $this->aConfig = Array();
+
+ return $this->aConfig;
}
/**
diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php
index bd2fa59cb..e484faa8a 100755
--- a/workflow/engine/classes/class.pmFunctions.php
+++ b/workflow/engine/classes/class.pmFunctions.php
@@ -724,32 +724,10 @@ function WSProcessList() {
*
*/
//private function to get current email configuration
-function getEmailConfiguration () {
- require_once 'classes/model/Configuration.php';
- $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' => ''));
- $aFields = array();
- }
- else {
- $aFields = $oConfiguration->load('Emails', '', '', '', '');
- if ($aFields['CFG_VALUE'] != '') {
- $aFields = unserialize($aFields['CFG_VALUE']);
- }
- else {
- $aFields = array();
- }
- }
-
- return $aFields;
+function getEmailConfiguration()
+{
+ G::loadClass('system');
+ return System::getEmailConfiguration();
}
/**
@@ -782,7 +760,8 @@ function PMFSendMessage($caseId, $sFrom, $sTo, $sCc, $sBcc, $sSubject, $sTemplat
if ( $result->status_code == 0) {
return 1;
- } else {
+ }
+ else {
return 0;
}
}
diff --git a/workflow/engine/classes/class.spool.php b/workflow/engine/classes/class.spool.php
index 07ab1c947..a9a163c66 100755
--- a/workflow/engine/classes/class.spool.php
+++ b/workflow/engine/classes/class.spool.php
@@ -81,8 +81,8 @@ class spoolRun {
$this->ExceptionCode['WARNING'] = 2;
$this->ExceptionCode['NOTICE'] = 3;
- $this->longMailEreg = '/([\"\w\W\s]*\s*)?(<([\w\-\.]+@[\.-\w]+\.\w{2,3})+>)/';
- $this->mailEreg = '/^([\w\-_\.]+@[\.-\w]+\.\w{2,3}+)$/';
+ $this->longMailEreg = '/(.*)(<([\w\-\.]+@[\w\-_\.]+\.\w{2,3})+>)/';
+ $this->mailEreg = '/^([\w\-_\.]+@[\w\-_\.]+\.\w{2,3}+)$/';
}
/**
@@ -220,8 +220,9 @@ class spoolRun {
if( isset($matches[1]) && $matches[1] != '' ) {
//drop the " characters if they exist
$this->fileData['from_name'] = trim(str_replace('"', '', $matches[1]));
- } else { //if the from name was not set
- $this->fileData['from_name'] = 'Processmaker';
+ }
+ else { //if the from name was not set
+ $this->fileData['from_name'] = '';
}
if( ! isset($matches[3]) ) {
@@ -229,7 +230,8 @@ class spoolRun {
}
$this->fileData['from_email'] = trim($matches[3]);
- } else {
+ }
+ else {
//to validate simple email address i.e. erik@colosa.com
preg_match($this->mailEreg, $this->fileData['from'], $matches);
@@ -237,7 +239,7 @@ class spoolRun {
throw new Exception('Invalid email address in FROM parameter (' . $this->fileData['from'] . ')', $this->ExceptionCode['WARNING']);
}
- $this->fileData['from_name'] = 'Processmaker Web boot';
+ $this->fileData['from_name'] = '';
$this->fileData['from_email'] = $matches[0];
}
@@ -327,10 +329,10 @@ class spoolRun {
$oPHPMailer->Host = $this->config['MESS_SERVER'];
$oPHPMailer->Port = $this->config['MESS_PORT'];
$oPHPMailer->Username = $this->config['MESS_ACCOUNT'];
- $passwd = $this->config['MESS_PASSWORD'];
- if(strpos( $passwd, 'hush:' ) !== false){
- list($hush, $pass) = explode(":", $passwd);
- $this->config['MESS_PASSWORD'] = G::decrypt($pass,'EMAILENCRYPT');
+ $passwd = $this->config['MESS_PASSWORD'];
+ if(strpos( $passwd, 'hush:' ) !== false){
+ list($hush, $pass) = explode(":", $passwd);
+ $this->config['MESS_PASSWORD'] = G::decrypt($pass,'EMAILENCRYPT');
}
$oPHPMailer->Password = $this->config['MESS_PASSWORD'];
$oPHPMailer->From = $this->fileData['from_email'];
@@ -380,10 +382,10 @@ class spoolRun {
$oPHPMailer->Host = $this->config['MESS_SERVER'];
$oPHPMailer->Port = $this->config['MESS_PORT'];
$oPHPMailer->Username = $this->config['MESS_ACCOUNT'];
- $passwd = $this->config['MESS_PASSWORD'];
- if(strpos( $passwd, 'hush:' ) !== false){
- list($hush, $pass) = explode(":", $passwd);
- $this->config['MESS_PASSWORD'] = G::decrypt($pass,'EMAILENCRYPT');
+ $passwd = $this->config['MESS_PASSWORD'];
+ if(strpos( $passwd, 'hush:' ) !== false){
+ list($hush, $pass) = explode(":", $passwd);
+ $this->config['MESS_PASSWORD'] = G::decrypt($pass,'EMAILENCRYPT');
}
$oPHPMailer->Password = $this->config['MESS_PASSWORD'];
$oPHPMailer->From = $this->fileData['from_email'];
@@ -465,10 +467,10 @@ class spoolRun {
$send->setPort($this->config['MESS_PORT']);
$send->setUsername($this->config['MESS_ACCOUNT']);
- $passwd = $this->config['MESS_PASSWORD'];
- if(strpos( $passwd, 'hush:' ) !== false){
- list($hush, $pass) = explode(":", $passwd);
- $this->config['MESS_PASSWORD'] = G::decrypt($pass,'EMAILENCRYPT');
+ $passwd = $this->config['MESS_PASSWORD'];
+ if(strpos( $passwd, 'hush:' ) !== false){
+ list($hush, $pass) = explode(":", $passwd);
+ $this->config['MESS_PASSWORD'] = G::decrypt($pass,'EMAILENCRYPT');
}
$send->setPassword($this->config['MESS_PASSWORD']);
$send->setReturnPath($this->fileData['from_email']);
@@ -498,10 +500,10 @@ class spoolRun {
$oConfiguration = new Configuration();
$aConfiguration = $oConfiguration->load('Emails', '', '', '', '');
$aConfiguration = unserialize($aConfiguration['CFG_VALUE']);
- $passwd = $aConfiguration['MESS_PASSWORD'];
- if(strpos( $passwd, 'hush:' ) !== false){
- list($hush, $pass) = explode(":", $passwd);
- $aConfiguration['MESS_PASSWORD'] = G::decrypt($pass,'EMAILENCRYPT');
+ $passwd = $aConfiguration['MESS_PASSWORD'];
+ if(strpos( $passwd, 'hush:' ) !== false){
+ list($hush, $pass) = explode(":", $passwd);
+ $aConfiguration['MESS_PASSWORD'] = G::decrypt($pass,'EMAILENCRYPT');
}
if( $aConfiguration['MESS_ENABLED'] == '1' ) {
$this->setConfig(array (
diff --git a/workflow/engine/classes/class.system.php b/workflow/engine/classes/class.system.php
index e7f6a261f..6e568eed0 100755
--- a/workflow/engine/classes/class.system.php
+++ b/workflow/engine/classes/class.system.php
@@ -913,4 +913,14 @@ class System {
return $aChanges;
}
+
+ function getEmailConfiguration()
+ {
+ G::LoadClass('configuration');
+ $conf = new Configurations();
+ $config = $conf->load('Emails');
+
+ return $config;
+ }
+
}// end System class
diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php
index 8915b2c47..c82f497bd 100755
--- a/workflow/engine/classes/class.wsBase.php
+++ b/workflow/engine/classes/class.wsBase.php
@@ -623,7 +623,10 @@ class wsBase
*/
public function sendMessage($caseId, $sFrom, $sTo, $sCc, $sBcc, $sSubject, $sTemplate, $appFields = null, $aAttachment = null ) {
try {
- $aSetup = getEmailConfiguration();
+ G::loadClass('system');
+
+ $aSetup = System::getEmailConfiguration();
+
$passwd =$aSetup['MESS_PASSWORD'];
if(strpos( $passwd, 'hush:' ) !== false)
{
@@ -656,7 +659,8 @@ class wsBase
if ( $appFields == null ) {
$Fields = $oldFields['APP_DATA'];
- } else {
+ }
+ else {
$Fields = $appFields;
}
$templateContents = file_get_contents ( $fileTemplate );
@@ -683,11 +687,9 @@ class wsBase
}
$sBody = G::replaceDataField( $templateContents, $Fields);
+ $hasEmailFrom = preg_match('/(.+)@(.+)\.(.+)/', $sFrom, $match);
- if ($sFrom != '') {
- $sFrom = $sFrom . ' <' . $aSetup['MESS_ACCOUNT'] . '>';
- }
- else {
+ if (!$hasEmailFrom) {
$sFrom = $aSetup['MESS_ACCOUNT'];
}
@@ -706,8 +708,10 @@ class wsBase
'app_msg_template' => '',
'app_msg_status' => 'pending'
);
+
$oSpool->create( $messageArray );
$oSpool->sendMail();
+
if ( $oSpool->status == 'sent' )
$result = new wsResponse (0, G::loadTranslation ('ID_MESSAGE_SENT') . ": ". $sTo );
else
@@ -716,8 +720,7 @@ class wsBase
return $result;
}
catch ( Exception $e ) {
- $result = new wsResponse (100, $e->getMessage());
- return $result;
+ return new wsResponse (100, $e->getMessage());
}
}
diff --git a/workflow/engine/xmlform/setup/emails.xml b/workflow/engine/xmlform/setup/emails.xml
index cf81bc84e..f0e3e3c15 100755
--- a/workflow/engine/xmlform/setup/emails.xml
+++ b/workflow/engine/xmlform/setup/emails.xml
@@ -27,11 +27,11 @@
- Account From
+ SMTP Username
- Password
+ SMTP Password