diff --git a/workflow/engine/classes/class.actionsByEmail.php b/workflow/engine/classes/class.actionsByEmail.php
index 18cd1e53b..b55754ab7 100644
--- a/workflow/engine/classes/class.actionsByEmail.php
+++ b/workflow/engine/classes/class.actionsByEmail.php
@@ -64,6 +64,18 @@ class actionsByEmailClass extends PMPlugin
$cases = new Cases();
$caseFields = $cases->loadCase($data->APP_UID);
$criteria = new Criteria();
+ $criteria->addSelectColumn(AbeConfigurationPeer::ABE_UID);
+ $criteria->addSelectColumn(AbeConfigurationPeer::PRO_UID);
+ $criteria->addSelectColumn(AbeConfigurationPeer::ABE_TYPE);
+ $criteria->addSelectColumn(AbeConfigurationPeer::TAS_UID);
+ $criteria->addSelectColumn(AbeConfigurationPeer::ABE_TEMPLATE);
+ $criteria->addSelectColumn(AbeConfigurationPeer::ABE_DYN_TYPE);
+ $criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID);
+ $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_FIELD);
+ $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD);
+ $criteria->addSelectColumn(AbeConfigurationPeer::ABE_SUBJECT_FIELD);
+ $criteria->addSelectColumn(DynaformPeer::DYN_CONTENT);
+ $criteria->addJoin( AbeConfigurationPeer::DYN_UID, DynaformPeer::DYN_UID, Criteria::LEFT_JOIN );
$criteria->add(AbeConfigurationPeer::PRO_UID, $caseFields['PRO_UID']);
$criteria->add(AbeConfigurationPeer::TAS_UID, $data->TAS_UID);
$result = AbeConfigurationPeer::doSelectRS($criteria);
@@ -82,7 +94,10 @@ class actionsByEmailClass extends PMPlugin
}
if ($email != '') {
- $subject = $caseFields['APP_TITLE'];
+ $subject = G::replaceDataField( $configuration['ABE_SUBJECT_FIELD'], $caseFields['APP_DATA'] );
+ if($subject == ''){
+ $subject = $caseFields['APP_TITLE'];
+ }
// Create
require_once 'classes/model/AbeRequests.php';
@@ -122,7 +137,7 @@ class actionsByEmailClass extends PMPlugin
switch ($configuration['ABE_TYPE']) {
case 'LINK':
// $__ABE__ .= $dynaform->render(PATH_FEATURES . 'actionsByEmail/xmlform.html', $scriptCode) . '
';
- $__ABE__ .= 'Please complete this form';
+ $__ABE__ .= 'Please complete this form';
break;
// coment
case 'FIELD':
@@ -133,19 +148,31 @@ class actionsByEmailClass extends PMPlugin
$field->type = 'dropdown';
$field->options = array();
$actionField = str_replace('@@', '', $configuration['ABE_ACTION_FIELD']);
- foreach ($variables as $variable) {
- if ($variable['var_name'] == $actionField) {
- $field->label = $variable['var_name'];
- $field->type = 'dropdown';
- $values = json_decode($variable['var_accepted_values']);
- foreach ($values as $value) {
- $field->options[$value->keyValue] = $value->value;
+ $dynaform = $configuration['DYN_UID'];
+ $variables = G::json_decode($configuration['DYN_CONTENT'], true);
+ if(isset($variables['items'][0]['items'])){
+ $fields = $variables['items'][0]['items'];
+ foreach ($fields as $key => $value) {
+ foreach($value as $var){ G::pr($var);
+ if(isset($var['variable'])){
+ if ($var['variable'] == $actionField) {
+ $field->label = $var['label'];
+ $field->type = $var['type'];
+ $values = $var['options'];
+ foreach ($values as $val){
+ $field->options[$val['value']] = $val['value'];
+ }
+ }
+ }
}
}
}
-
+ G::LoadClass('pmDynaform');
+ $obj = new pmDynaform($configuration['DYN_UID']);
+ $configuration['CURRENT_DYNAFORM'] = $configuration['DYN_UID'];
+ $file = $obj->printPmDynaformAbe($configuration);
+ $__ABE__ .= $file;
$__ABE__ .= '' . $field->label . '
';
-
switch ($field->type) {
case 'dropdown':
case 'radiogroup':
diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php
index 48583af6e..46a5e5a63 100644
--- a/workflow/engine/classes/class.pmDynaform.php
+++ b/workflow/engine/classes/class.pmDynaform.php
@@ -456,6 +456,39 @@ class pmDynaform
exit();
}
+ public function printABE($filename, $record)
+ {
+ ob_clean();
+ $this->record = $record;
+ $json = G::json_decode($this->record["DYN_CONTENT"]);
+ $this->jsonr($json);
+ $javascrip = "" .
+ "\n" .
+ "\n" .
+ "";
+
+ $file = file_get_contents(PATH_HOME . 'public_html/lib/pmdynaform/build/pmdynaform.html');
+ $file = str_replace("{javascript}", $javascrip, $file);
+ echo $file;
+ exit();
+ }
+
public function printPmDynaform()
{
$json = G::json_decode($this->record["DYN_CONTENT"]);
@@ -472,6 +505,34 @@ class pmDynaform
exit();
}
+ public function printPmDynaformAbe($record)
+ {
+ ob_clean();
+ $this->record = $record;
+ $json = G::json_decode($this->record["DYN_CONTENT"]);
+ $this->jsonr($json);
+ $javascrip = "" .
+ "\n" .
+ "\n" .
+ "\n" .
+ "
";
+ $file = file_get_contents(PATH_HOME . 'public_html/lib/pmdynaform/build/pmdynaform.html');
+ $file = str_replace("{javascript}", $javascrip, $file);
+ return $file;
+ }
+
public function synchronizeVariable($processUid, $newVariable, $oldVariable)
{
$criteria = new Criteria("workflow");
diff --git a/workflow/engine/classes/model/AbeConfiguration.php b/workflow/engine/classes/model/AbeConfiguration.php
index 8b8abedc9..ce6b55226 100644
--- a/workflow/engine/classes/model/AbeConfiguration.php
+++ b/workflow/engine/classes/model/AbeConfiguration.php
@@ -18,7 +18,7 @@ class AbeConfiguration extends BaseAbeConfiguration
private $filterThisFields = array('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE',
'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID','ABE_EMAIL_FIELD',
- 'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_CREATE_DATE','ABE_UPDATE_DATE');
+ 'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_CREATE_DATE','ABE_UPDATE_DATE', 'ABE_SUBJECT_FIELD');
public function load($abeUid)
{
diff --git a/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php b/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php
index c9fd9c521..c1f53169e 100644
--- a/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php
+++ b/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php
@@ -89,6 +89,7 @@ class AbeConfigurationMapBuilder
$tMap->addColumn('ABE_UPDATE_DATE', 'AbeUpdateDate', 'int', CreoleTypes::TIMESTAMP, false, null);
+ $tMap->addColumn('ABE_SUBJECT_FIELD', 'AbeSubjectField', 'string', CreoleTypes::VARCHAR, true, 100);
} // doBuild()
} // AbeConfigurationMapBuilder
diff --git a/workflow/engine/classes/model/om/BaseAbeConfiguration.php b/workflow/engine/classes/model/om/BaseAbeConfiguration.php
index 922400986..16b7cdc13 100644
--- a/workflow/engine/classes/model/om/BaseAbeConfiguration.php
+++ b/workflow/engine/classes/model/om/BaseAbeConfiguration.php
@@ -99,6 +99,12 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
*/
protected $abe_update_date;
+ /**
+ * The value for the abe_subject_field field.
+ * @var string
+ */
+ protected $abe_subject_field;
+
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
@@ -287,6 +293,17 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
}
}
+ /**
+ * Get the [abe_subject_field] column value.
+ *
+ * @return string
+ */
+ public function getAbeSubjectField()
+ {
+
+ return $this->abe_subject_field;
+ }
+
/**
* Set the value of [abe_uid] column.
*
@@ -565,6 +582,28 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
} // setAbeUpdateDate()
+ /**
+ * Set the value of [abe_subject_field] column.
+ *
+ * @param string $v new value
+ * @return void
+ */
+ public function setAbeSubjectField($v)
+ {
+
+ // Since the native PHP type for this column is string,
+ // we will cast the input to a string (if it is not).
+ if ($v !== null && !is_string($v)) {
+ $v = (string) $v;
+ }
+
+ if ($this->abe_subject_field !== $v || $v === '') {
+ $this->abe_subject_field = $v;
+ $this->modifiedColumns[] = AbeConfigurationPeer::ABE_SUBJECT_FIELD;
+ }
+
+ } // setAbeSubjectField()
+
/**
* Hydrates (populates) the object variables with values from the database resultset.
*
@@ -606,12 +645,14 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
$this->abe_update_date = $rs->getTimestamp($startcol + 11, null);
+ $this->abe_subject_field = $rs->getString($startcol + 12, null);
+
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
- return $startcol + 12; // 12 = AbeConfigurationPeer::NUM_COLUMNS - AbeConfigurationPeer::NUM_LAZY_LOAD_COLUMNS).
+ return $startcol + 13; // 13 = AbeConfigurationPeer::NUM_COLUMNS - AbeConfigurationPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating AbeConfiguration object", $e);
@@ -851,6 +892,9 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
case 11:
return $this->getAbeUpdateDate();
break;
+ case 12:
+ return $this->getAbeSubjectField();
+ break;
default:
return null;
break;
@@ -883,6 +927,7 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
$keys[9] => $this->getAbeCaseNoteInResponse(),
$keys[10] => $this->getAbeCreateDate(),
$keys[11] => $this->getAbeUpdateDate(),
+ $keys[12] => $this->getAbeSubjectField(),
);
return $result;
}
@@ -950,6 +995,9 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
case 11:
$this->setAbeUpdateDate($value);
break;
+ case 12:
+ $this->setAbeSubjectField($value);
+ break;
} // switch()
}
@@ -1021,6 +1069,9 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
$this->setAbeUpdateDate($arr[$keys[11]]);
}
+ if (array_key_exists($keys[12], $arr)) {
+ $this->setAbeSubjectField($arr[$keys[12]]);
+ }
}
/**
@@ -1080,6 +1131,9 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
$criteria->add(AbeConfigurationPeer::ABE_UPDATE_DATE, $this->abe_update_date);
}
+ if ($this->isColumnModified(AbeConfigurationPeer::ABE_SUBJECT_FIELD)) {
+ $criteria->add(AbeConfigurationPeer::ABE_SUBJECT_FIELD, $this->abe_subject_field);
+ }
return $criteria;
}
@@ -1156,6 +1210,7 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent
$copyObj->setAbeUpdateDate($this->abe_update_date);
+ $copyObj->setAbeSubjectField($this->abe_subject_field);
$copyObj->setNew(true);
diff --git a/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php b/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php
index 1a4f44bdd..fa93efd98 100644
--- a/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php
+++ b/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php
@@ -67,6 +67,9 @@ abstract class BaseAbeConfigurationPeer
/** the column name for the ABE_UPDATE_DATE field */
const ABE_UPDATE_DATE = 'ABE_CONFIGURATION.ABE_UPDATE_DATE';
+ /** the column name for the ABE_SUBJECT_FIELD field */
+ const ABE_SUBJECT_FIELD = 'ABE_CONFIGURATION.ABE_SUBJECT_FIELD';
+
/** The PHP to DB Name Mapping */
private static $phpNameMap = null;
@@ -78,10 +81,10 @@ abstract class BaseAbeConfigurationPeer
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
private static $fieldNames = array (
- BasePeer::TYPE_PHPNAME => array ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeCaseNoteInResponse', 'AbeCreateDate', 'AbeUpdateDate', ),
- BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, ),
- BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, )
+ BasePeer::TYPE_PHPNAME => array ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeCaseNoteInResponse', 'AbeCreateDate', 'AbeUpdateDate', 'AbeSubjectField', ),
+ BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, AbeConfigurationPeer::ABE_SUBJECT_FIELD, ),
+ BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', 'ABE_SUBJECT_FIELD', ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, )
);
/**
@@ -91,10 +94,10 @@ abstract class BaseAbeConfigurationPeer
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/
private static $fieldKeys = array (
- BasePeer::TYPE_PHPNAME => array ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeCaseNoteInResponse' => 9, 'AbeCreateDate' => 10, 'AbeUpdateDate' => 11, ),
- BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 9, AbeConfigurationPeer::ABE_CREATE_DATE => 10, AbeConfigurationPeer::ABE_UPDATE_DATE => 11, ),
- BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_CASE_NOTE_IN_RESPONSE' => 9, 'ABE_CREATE_DATE' => 10, 'ABE_UPDATE_DATE' => 11, ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, )
+ BasePeer::TYPE_PHPNAME => array ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeCaseNoteInResponse' => 9, 'AbeCreateDate' => 10, 'AbeUpdateDate' => 11, 'AbeSubjectField' => 12, ),
+ BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 9, AbeConfigurationPeer::ABE_CREATE_DATE => 10, AbeConfigurationPeer::ABE_UPDATE_DATE => 11, AbeConfigurationPeer::ABE_SUBJECT_FIELD => 12, ),
+ BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_CASE_NOTE_IN_RESPONSE' => 9, 'ABE_CREATE_DATE' => 10, 'ABE_UPDATE_DATE' => 11, 'ABE_SUBJECT_FIELD' => 12, ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, )
);
/**
@@ -219,6 +222,8 @@ abstract class BaseAbeConfigurationPeer
$criteria->addSelectColumn(AbeConfigurationPeer::ABE_UPDATE_DATE);
+ $criteria->addSelectColumn(AbeConfigurationPeer::ABE_SUBJECT_FIELD);
+
}
const COUNT = 'COUNT(ABE_CONFIGURATION.ABE_UID)';
diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml
index 4245350f7..6d14daa7d 100755
--- a/workflow/engine/config/schema.xml
+++ b/workflow/engine/config/schema.xml
@@ -4629,6 +4629,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql
index 52a0cb4eb..e8e1b4f1f 100755
--- a/workflow/engine/data/mysql/schema.sql
+++ b/workflow/engine/data/mysql/schema.sql
@@ -2644,6 +2644,7 @@ CREATE TABLE `ABE_CONFIGURATION`
`ABE_CASE_NOTE_IN_RESPONSE` INTEGER default 0,
`ABE_CREATE_DATE` DATETIME NOT NULL,
`ABE_UPDATE_DATE` DATETIME,
+ `ABE_SUBJECT_FIELD` VARCHAR(100) default '' NOT NULL,
PRIMARY KEY (`ABE_UID`)
)ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='The plugin table for actionsByEmail';
#-----------------------------------------------------------------------------
diff --git a/workflow/engine/methods/services/ActionsByEmailDataForm.php b/workflow/engine/methods/services/ActionsByEmailDataForm.php
new file mode 100755
index 000000000..a9ecb7671
--- /dev/null
+++ b/workflow/engine/methods/services/ActionsByEmailDataForm.php
@@ -0,0 +1,61 @@
+verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) {
+ global $G_PUBLISH;
+ $G_PUBLISH = new Publisher();
+
+ try {
+ // Validations
+ if (!isset($_REQUEST['APP_UID'])) {
+ $_REQUEST['APP_UID'] = '';
+ }
+
+ if (!isset($_REQUEST['DEL_INDEX'])) {
+ $_REQUEST['DEL_INDEX'] = '';
+ }
+
+ if ($_REQUEST['APP_UID'] == '') {
+ throw new Exception('The parameter APP_UID is empty.');
+ }
+
+ if ($_REQUEST['DEL_INDEX'] == '') {
+ throw new Exception('The parameter DEL_INDEX is empty.');
+ }
+
+ G::LoadClass('case');
+ G::LoadClass('pmDynaform');
+
+ $cases = new Cases();
+ $caseFields = $cases->loadCase(G::decrypt($_REQUEST['APP_UID'], URL_KEY),G::decrypt($_REQUEST['DEL_INDEX'], URL_KEY));
+
+ //
+ $criteria = new Criteria();
+ $criteria->addSelectColumn(DynaformPeer::DYN_CONTENT);
+ $criteria->addSelectColumn(DynaformPeer::PRO_UID);
+ $criteria->add(DynaformPeer::DYN_UID, G::decrypt($_REQUEST['DYN_UID'], URL_KEY));
+ $result = DynaformPeer::doSelectRS($criteria);
+ $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $result->next();
+ $configuration = $result->getRow();
+ $a = new pmDynaform(G::decrypt($_REQUEST['DYN_UID'], URL_KEY));
+ $action = 'ActionsByEmailDataFormPost.php?APP_UID=' . $_REQUEST['APP_UID'] . '&DEL_INDEX=' . $_REQUEST['DEL_INDEX'] . '&ABER=' . $_REQUEST['ABER'];
+ $record['DYN_CONTENT'] = $configuration['DYN_CONTENT'];
+ $record['PRO_UID'] = $configuration['PRO_UID'];
+ $record['CURRENT_DYNAFORM'] = G::decrypt($_REQUEST['DYN_UID'], URL_KEY);
+ $record['APP_UID'] = $_REQUEST['APP_UID'];
+ $record['DEL_INDEX'] = $_REQUEST['DEL_INDEX'];
+ $record['ABER'] = $_REQUEST['ABER'];
+ if (is_null($caseFields['DEL_FINISH_DATE'])) {
+ $a->printABE($action,$record);
+ } else {
+ $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => 'The form has already been filled and sent.'));
+ }
+ } catch (Exception $error) {
+ $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', array('MESSAGE' => $error->getMessage()));
+ }
+
+ G::RenderPage('publish', 'blank');
+}
+
diff --git a/workflow/engine/methods/services/ActionsByEmailDataFormPost.php b/workflow/engine/methods/services/ActionsByEmailDataFormPost.php
new file mode 100755
index 000000000..d4258e51a
--- /dev/null
+++ b/workflow/engine/methods/services/ActionsByEmailDataFormPost.php
@@ -0,0 +1,209 @@
+verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) {
+ $G_PUBLISH = new Publisher();
+ try {
+ if ($_REQUEST['APP_UID'] == '') {
+ if($_GET['APP_UID'] == ''){
+ throw new Exception('The parameter APP_UID is empty.');
+ } else {
+ $_REQUEST['APP_UID'] = $_GET['APP_UID'];
+ }
+ }
+
+ if ($_REQUEST['DEL_INDEX'] == '') {
+ throw new Exception('The parameter DEL_INDEX is empty.');
+ }
+
+ if ($_REQUEST['ABER'] == '') {
+ throw new Exception('The parameter ABER is empty.');
+ }
+
+ if (!isset($_REQUEST['form'])) {
+ $_REQUEST['form'] = array();
+ }
+
+ $_REQUEST['APP_UID'] = G::decrypt($_REQUEST['APP_UID'], URL_KEY);
+ $_REQUEST['DEL_INDEX'] = G::decrypt($_REQUEST['DEL_INDEX'], URL_KEY);
+ $_REQUEST['ABER'] = G::decrypt($_REQUEST['ABER'], URL_KEY);
+ G::LoadClass('case');
+
+ $case = new Cases();
+ $casesFields = $case->loadCase($_REQUEST['APP_UID'], $_REQUEST['DEL_INDEX']);
+
+ $casesFields['APP_DATA'] = array_merge($casesFields['APP_DATA'], $_REQUEST['form']);
+
+ //Get user info
+ $current_user_uid = null;
+ $currentUsrName = null;
+
+ $criteria = new Criteria("workflow");
+
+ $criteria->addSelectColumn(AppDelegationPeer::USR_UID);
+ $criteria->add(AppDelegationPeer::APP_UID, $_REQUEST["APP_UID"]);
+ $criteria->add(AppDelegationPeer::DEL_INDEX, $_REQUEST["DEL_INDEX"]);
+
+ $rsSQL = AppDelegationPeer::doSelectRS($criteria);
+ $rsSQL->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ while ($rsSQL->next()) {
+ $row = $rsSQL->getRow();
+
+ $current_user_uid = $row["USR_UID"];
+ }
+
+ if ($current_user_uid != null) {
+ $criteria = new Criteria("workflow");
+
+ $criteria->addSelectColumn(UsersPeer::USR_USERNAME);
+ $criteria->add(UsersPeer::USR_UID, $current_user_uid);
+
+ $rsSQL = UsersPeer::doSelectRS($criteria);
+ $rsSQL->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ $rsSQL->next();
+
+ $row = $rsSQL->getRow();
+ $currentUsrName = $row["USR_USERNAME"];
+
+ $casesFields["APP_DATA"]["USER_LOGGED"] = $current_user_uid;
+ $casesFields["APP_DATA"]["USR_USERNAME"] = $currentUsrName;
+ }
+
+ foreach ($casesFields["APP_DATA"] as $index => $value) {
+ $_SESSION[$index] = $value;
+ }
+
+ //Update case info
+ $case->updateCase($_REQUEST['APP_UID'], $casesFields);
+
+ G::LoadClass('wsBase');
+
+ $wsBaseInstance = new wsBase();
+ $result = $wsBaseInstance->derivateCase($casesFields['CURRENT_USER_UID'], $_REQUEST['APP_UID'], $_REQUEST ['DEL_INDEX'], true);
+ $code = (is_array($result) ? $result['status_code'] : $result->status_code);
+
+ $dataResponses = array();
+ $dataResponses['ABE_REQ_UID'] = $_REQUEST['ABER'];
+ $dataResponses['ABE_RES_CLIENT_IP'] = $_SERVER['REMOTE_ADDR'];
+ $dataResponses['ABE_RES_DATA'] = serialize($_REQUEST['form']);
+ $dataResponses['ABE_RES_STATUS'] = 'PENDING';
+ $dataResponses['ABE_RES_MESSAGE'] = '';
+
+ try {
+ set_include_path(PATH_PLUGINS . 'actionsByEmail' . PATH_SEPARATOR . get_include_path());
+ require_once 'classes/model/AbeResponses.php';
+
+ $abeAbeResponsesInstance = new AbeResponses();
+ $dataResponses['ABE_RES_UID'] = $abeAbeResponsesInstance->createOrUpdate($dataResponses);
+ } catch (Exception $error) {
+ throw $error;
+ }
+
+ if ($code == 0) {
+ //Save Cases Notes
+ include_once 'utils.php';
+
+ $dataAbeRequests = loadAbeRequest($_REQUEST['ABER']);
+ $dataAbeConfiguration = loadAbeConfiguration($dataAbeRequests['ABE_UID']);
+
+ if ($dataAbeConfiguration['ABE_CASE_NOTE_IN_RESPONSE'] == 1) {
+ $response = new stdclass();
+ $response->usrUid = $casesFields['APP_DATA']['USER_LOGGED'];
+ $response->appUid = $_REQUEST['APP_UID'];
+ $response->noteText = "Check the information that was sent for the receiver: " . $dataAbeRequests['ABE_REQ_SENT_TO'];
+
+ postNote($response);
+ }
+
+ $dataAbeRequests['ABE_REQ_ANSWERED'] = 1;
+ $code == 0 ? uploadAbeRequest($dataAbeRequests) : '';
+
+ if (isset ( $_FILES ['form'] )) {
+ foreach ($_FILES ['form'] ['name'] as $fieldName => $value) {
+ if ($_FILES ['form'] ['error'] [$fieldName] == 0) {
+ $appDocument = new AppDocument ( );
+
+ if ( isset ( $_REQUEST['INPUTS'] [$fieldName] ) && $_REQUEST['INPUTS'] [$fieldName] != '' ) {
+ require_once 'classes/model/AppFolder.php';
+ require_once 'classes/model/InputDocument.php';
+
+ $inputDocument = new InputDocument();
+ $id = $inputDocument->load($_REQUEST['INPUTS'] [$fieldName]);
+
+ //Get the Custom Folder ID (create if necessary)
+ $oFolder=new AppFolder();
+ $folderId=$oFolder->createFromPath($id['INP_DOC_DESTINATION_PATH']);
+
+ //Tags
+ $fileTags=$oFolder->parseTags($id['INP_DOC_TAGS']);
+
+ $fields = array (
+ 'APP_UID' => $_REQUEST['APP_UID'],
+ 'DEL_INDEX' => $_REQUEST ['DEL_INDEX'],
+ 'USR_UID' => $casesFields['APP_DATA']['USER_LOGGED'],
+ 'DOC_UID' => $_REQUEST['INPUTS'] [$fieldName],
+ 'APP_DOC_TYPE' => 'INPUT',
+ 'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ),
+ 'APP_DOC_COMMENT' => '',
+ 'APP_DOC_TITLE' => '',
+ 'APP_DOC_FILENAME' => $_FILES ['form'] ['name'] [$fieldName],
+ 'FOLDER_UID' => $folderId,
+ 'APP_DOC_TAGS' => $fileTags
+ );
+ } else {
+ $fields = array (
+ 'APP_UID' => $_REQUEST['APP_UID'],
+ 'DEL_INDEX' => $_REQUEST ['DEL_INDEX'],
+ 'USR_UID' => $casesFields['APP_DATA']['USER_LOGGED'],
+ 'DOC_UID' => - 1,
+ 'APP_DOC_TYPE' => 'ATTACHED',
+ 'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ),
+ 'APP_DOC_COMMENT' => '',
+ 'APP_DOC_TITLE' => '',
+ 'APP_DOC_FILENAME' => $_FILES ['form'] ['name'] [$fieldName]
+ );
+ }
+
+ $appDocument->create($fields);
+ $docVersion = $appDocument->getDocVersion();
+ $appDocUid = $appDocument->getAppDocUid ();
+ $info = pathinfo ( $appDocument->getAppDocFilename () );
+ $extension = (isset ( $info ['extension'] ) ? $info ['extension'] : '');
+ $pathName = PATH_DOCUMENT . $_REQUEST['APP_UID'] . PATH_SEP;
+ $fileName = $appDocUid . '_'.$docVersion.'.' . $extension;
+
+ G::uploadFile ( $_FILES ['form'] ['tmp_name'] [$fieldName], $pathName, $fileName );
+ }
+ }
+ }
+
+ $assign = $result['message'];
+ $aMessage['MESSAGE'] = 'The information was submitted. Thank you.';
+ } else {
+ throw new Exception('An error occurred while the application was being processed.
+ Error code: '.$result->status_code.'
+ Error message: '.$result->message.'
');
+ }
+
+ // Update
+ $dataResponses['ABE_RES_STATUS'] = ($code == 0 ? 'SENT' : 'ERROR');
+ $dataResponses['ABE_RES_MESSAGE'] = ($code == 0 ? '-' : $result->message);
+
+ try {
+ $abeAbeResponsesInstance = new AbeResponses();
+ $abeAbeResponsesInstance->createOrUpdate($dataResponses);
+ } catch (Exception $error) {
+ throw $error;
+ }
+
+ $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showInfo', '', $aMessage);
+ } catch (Exception $error) {
+ $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', array('MESSAGE' => $error->getMessage().'Please contact to your system administrator.'));
+ }
+
+ G::RenderPage('publish', 'blank');
+}
+
diff --git a/workflow/engine/methods/services/utils.php b/workflow/engine/methods/services/utils.php
new file mode 100755
index 000000000..0325349e3
--- /dev/null
+++ b/workflow/engine/methods/services/utils.php
@@ -0,0 +1,84 @@
+appUid))? $httpData->appUid : '';
+
+ $usrUid = (isset($httpData->usrUid))? $httpData->usrUid : '' ;
+
+ require_once ( "classes/model/AppNotes.php" );
+
+ $appNotes = new AppNotes();
+ $noteContent = addslashes($httpData->noteText);
+
+ $result = $appNotes->postNewNote($appUid, $usrUid, $noteContent, false);
+ //return true;
+
+ //die();
+ //send the response to client
+ @ini_set('implicit_flush', 1);
+ ob_start();
+ //echo G::json_encode($result);
+ @ob_flush();
+ @flush();
+ @ob_end_flush();
+ ob_implicit_flush(1);
+ //return true;
+ //send notification in background
+ $noteRecipientsList = array();
+ G::LoadClass('case');
+ $oCase = new Cases();
+
+ $p = $oCase->getUsersParticipatedInCase($appUid);
+
+ foreach ($p['array'] as $key => $userParticipated) {
+ $noteRecipientsList[] = $key;
+ }
+
+ $noteRecipients = implode(",", $noteRecipientsList);
+
+ $appNotes->sendNoteNotification($appUid, $usrUid, $noteContent, $noteRecipients);
+
+}
+
+function loadAbeRequest($AbeRequestsUid)
+{
+ require_once 'classes/model/AbeRequests.php';
+
+ $criteria = new Criteria();
+ $criteria->add(AbeRequestsPeer::ABE_REQ_UID, $AbeRequestsUid);
+ $resultRequests = AbeRequestsPeer::doSelectRS($criteria);
+ $resultRequests->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $resultRequests->next();
+ $abeRequests = $resultRequests->getRow();
+
+ return $abeRequests;
+}
+
+function loadAbeConfiguration($AbeConfigurationUid)
+{
+ require_once 'classes/model/AbeConfiguration.php';
+
+ $criteria = new Criteria();
+ $criteria->add(AbeConfigurationPeer::ABE_UID, $AbeConfigurationUid);
+ $result = AbeConfigurationPeer::doSelectRS($criteria);
+ $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $result->next();
+ $abeConfiguration = $result->getRow();
+
+ return $abeConfiguration;
+}
+
+function uploadAbeRequest($data)
+{
+ require_once 'classes/model/AbeRequests.php';
+
+ try {
+ $abeRequestsInstance = new AbeRequests();
+ $abeRequestsInstance->createOrUpdate($data);
+ } catch (Exception $error) {
+ throw $error;
+ }
+}
+
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php
index e1e68405a..6fde65015 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php
@@ -19,9 +19,11 @@ class ActionsByEmail
case 'configuration':
require_once 'classes/model/AbeConfiguration.php';
$abeConfigurationInstance = new \AbeConfiguration();
- $noteValues = json_decode($feature['fields']['ABE_CASE_NOTE_IN_RESPONSE']);
- foreach ($noteValues as $value) {
- $feature['fields']['ABE_CASE_NOTE_IN_RESPONSE'] = $value;
+ if(isset($feature['fields']['ABE_CASE_NOTE_IN_RESPONSE'])){
+ $noteValues = json_decode($feature['fields']['ABE_CASE_NOTE_IN_RESPONSE']);
+ foreach ($noteValues as $value) {
+ $feature['fields']['ABE_CASE_NOTE_IN_RESPONSE'] = $value;
+ }
}
$abeConfigurationInstance->createOrUpdate($feature['fields']);
break;
@@ -50,8 +52,13 @@ class ActionsByEmail
$result->next();
$configuration = array();
if ($configuration = $result->getRow()) {
- $configuration['ABE_EMAIL_FIELD_VALUE'] = $configuration['ABE_EMAIL_FIELD'];
- $configuration['ABE_ACTION_FIELD_VALUE'] = $configuration['ABE_ACTION_FIELD'];
+ $configuration['ABE_UID'] = $configuration['ABE_UID'];
+ $configuration['ABE_TYPE'] = $configuration['ABE_TYPE'];
+ $configuration['DYN_UID'] = $configuration['DYN_UID'];
+ $configuration['ABE_TEMPLATE'] = $configuration['ABE_TEMPLATE'];
+ $configuration['ABE_SUBJECT_FIELD'] = $configuration['ABE_SUBJECT_FIELD'];
+ $configuration['ABE_EMAIL_FIELD'] = $configuration['ABE_EMAIL_FIELD'];
+ $configuration['ABE_ACTION_FIELD'] = $configuration['ABE_ACTION_FIELD'];
$configuration['ABE_CASE_NOTE_IN_RESPONSE'] = $configuration['ABE_CASE_NOTE_IN_RESPONSE'] ? '["1"]' : '[]';
}
$configuration['feature'] = 'ActionsByEmail';
diff --git a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php
index f9b40fdd1..d97895a98 100644
--- a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php
+++ b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php
@@ -3,6 +3,12 @@ namespace ProcessMaker\Services\Api;
use \ProcessMaker\Services\Api;
use \Luracast\Restler\RestException;
+use \G;
+use \Smarty;
+use \Criteria;
+use \ResultSet;
+use \DynaformPeer;
+use \ContentPeer;
require_once 'classes/model/AbeConfiguration.php';
require_once 'classes/model/AbeRequests.php';
@@ -544,5 +550,28 @@ class ActionsByEmail extends Api
}
return $templates;
}
-
+
+ /**
+ *
+ * @url GET /Dynaforms/:proUid
+ */
+ public function getDynaforms($proUid)
+ {
+ $criteria = new Criteria();
+ $criteria->addSelectColumn(DynaformPeer::DYN_UID);
+ $criteria->addSelectColumn(ContentPeer::CON_VALUE);
+ $criteria->addJoin( DynaformPeer::DYN_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN );
+ $criteria->add( DynaformPeer::PRO_UID, $proUid, Criteria::EQUAL );
+ $criteria->add( DynaformPeer::DYN_TYPE, 'xmlform', Criteria::EQUAL );
+ $criteria->add( ContentPeer::CON_CATEGORY, 'DYN_TITLE');
+ $criteria->add( ContentPeer::CON_LANG, SYS_LANG);
+ $dataset = DynaformPeer::doSelectRS($criteria);
+ $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $dynaform = array();
+ while ($dataset->next()) {
+ $aRow = $dataset->getRow();
+ $dynaform[] = array('DYN_UID' => $aRow['DYN_UID'], 'DYN_NAME' => $aRow['CON_VALUE']);
+ }
+ return $dynaform;
+ }
}
diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity.php
index a2a01412f..34d05b7d9 100644
--- a/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity.php
+++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity.php
@@ -118,12 +118,11 @@ class Activity extends Api
}
$task = new \ProcessMaker\BusinessModel\Task();
$properties = $task->updateProperties($prj_uid, $act_uid, $request_data);
-
/*----------------------------------********---------------------------------*/
if (\PMLicensedFeatures
::getSingleton()
->verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) {
- if (isset($request_data['properties']['_features']) && !empty($request_data['properties']['_features']['ActionsByEmail']['fields']['ABE_UID'])) {
+ if (isset($request_data['properties']['_features'])) {
$actionsByEmailService = new \ProcessMaker\BusinessModel\ActionsByEmail();
$actionsByEmailService->saveConfiguration($request_data['properties']['_features']);
}