diff --git a/workflow/engine/methods/cases/cases_SaveData.php b/workflow/engine/methods/cases/cases_SaveData.php
index 6d860ce71..f6bb6e5da 100644
--- a/workflow/engine/methods/cases/cases_SaveData.php
+++ b/workflow/engine/methods/cases/cases_SaveData.php
@@ -1,49 +1,49 @@
-/**
- * cases_SaveData.php
- *
- * ProcessMaker Open Source Edition
- * Copyright (C) 2004 - 2008 Colosa Inc.23
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- *
- * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
- * Coral Gables, FL, 33134, USA, or email info@colosa.com.
- *
+/**
+ * cases_SaveData.php
+ *
+ * ProcessMaker Open Source Edition
+ * Copyright (C) 2004 - 2008 Colosa Inc.23
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ *
+ * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
+ * Coral Gables, FL, 33134, USA, or email info@colosa.com.
+ *
*/
-//validate the data post
+//validate the data post
$oForm = new Form ( $_SESSION ['PROCESS'] . '/' . $_GET ['UID'], PATH_DYNAFORM );
$oForm->validatePost ();
/* Includes */
G::LoadClass ( 'case' );
-//load the variables
+//load the variables
$oCase = new Cases ( );
$oCase->thisIsTheCurrentUser ( $_SESSION ['APPLICATION'], $_SESSION ['INDEX'], $_SESSION ['USER_LOGGED'], 'REDIRECT', 'cases_List' );
$Fields = $oCase->loadCase ( $_SESSION ['APPLICATION'] );
$Fields ['APP_DATA'] = array_merge ( $Fields ['APP_DATA'], G::getSystemConstants () );
$Fields ['APP_DATA'] = array_merge ( $Fields ['APP_DATA'], ( array ) $_POST ['form'] );
-#here we must verify if is a debug session
-$trigger_debug_session = $_SESSION ['TRIGGER_DEBUG'] ['ISSET']; #here we must verify if is a debugg session
+#here we must verify if is a debug session
+$trigger_debug_session = $_SESSION ['TRIGGER_DEBUG'] ['ISSET']; #here we must verify if is a debugg session
-#trigger debug routines...
+#trigger debug routines...
-//cleaning debug variables
+//cleaning debug variables
$_SESSION ['TRIGGER_DEBUG'] ['ERRORS'] = Array ();
$_SESSION ['TRIGGER_DEBUG'] ['DATA'] = Array ();
$_SESSION ['TRIGGER_DEBUG'] ['TRIGGERS_NAMES'] = Array ();
@@ -59,12 +59,13 @@ if ($_SESSION ['TRIGGER_DEBUG'] ['NUM_TRIGGERS'] != 0) {
}
if ($_SESSION ['TRIGGER_DEBUG'] ['NUM_TRIGGERS'] != 0) {
- //Execute after triggers - Start
+ //Execute after triggers - Start
$Fields ['APP_DATA'] = $oCase->ExecuteTriggers ( $_SESSION ['TASK'], 'DYNAFORM', $_GET ['UID'], 'AFTER', $Fields ['APP_DATA'] );
- //Execute after triggers - End
+ //Execute after triggers - End
}
-//save data in PM Tables if necessary
+//save data in PM Tables if necessary
+$newValues = array ();
foreach ( $_POST ['form'] as $sField => $sAux ) {
if (isset ( $oForm->fields [$sField]->pmconnection ) && isset ( $oForm->fields [$sField]->pmfield )) {
if (($oForm->fields [$sField]->pmconnection != '') && ($oForm->fields [$sField]->pmfield != '')) {
@@ -105,21 +106,35 @@ foreach ( $_POST ['form'] as $sField => $sAux ) {
try {
$oAdditionalTables->updateDataInTable ( $oForm->fields [$oForm->fields [$sField]->pmconnection]->pmtable, $aValues );
} catch ( Exception $oError ) {
- //Nothing
+ //Nothing
}
} else {
try {
- $oAdditionalTables->saveDataInTable ( $oForm->fields [$oForm->fields [$sField]->pmconnection]->pmtable, $aValues );
+ // assembling the field list in order to save the data ina new record of a pm table
+ if (empty($newValues)){
+ $newValues = $aValues;
+ } else {
+ foreach ($aValues as $aValueKey=>$aValueCont) {
+ if (trim($newValues[$aValueKey])==''){
+ $newValues[$aValueKey] = $aValueCont;
+ }
+ }
+ }
+ //$oAdditionalTables->saveDataInTable ( $oForm->fields [$oForm->fields [$sField]->pmconnection]->pmtable, $aValues );
+
} catch ( Exception $oError ) {
- //Nothing
+ //Nothing
}
}
}
}
}
}
-
-//save data
+// saving the data ina pm table in case that is a new record
+if (!empty($newValues)){
+ $oAdditionalTables->saveDataInTable ( $oForm->fields [$oForm->fields [$sField]->pmconnection]->pmtable, $newValues);
+}
+//save data
$aData = array ();
$aData ['APP_NUMBER'] = $Fields ['APP_NUMBER'];
$aData ['APP_PROC_STATUS'] = $Fields ['APP_PROC_STATUS'];
@@ -130,9 +145,9 @@ $aData ['CURRENT_DYNAFORM'] = $_GET ['UID'];
$aData ['USER_UID'] = $_SESSION ['USER_LOGGED'];
$aData ['APP_STATUS'] = $Fields ['APP_STATUS'];
$aData ['PRO_UID'] = $_SESSION ['PROCESS'];
-
+
$oCase->updateCase ( $_SESSION ['APPLICATION'], $aData );
-//save files
+//save files
require_once 'classes/model/AppDocument.php';
if (isset ( $_FILES ['form'] )) {
foreach ( $_FILES ['form'] ['name'] as $sFieldName => $vValue ) {
@@ -190,7 +205,7 @@ if (isset ( $_FILES ['form'] )) {
$sPathName = PATH_DOCUMENT . $_SESSION ['APPLICATION'] . PATH_SEP;
$sFileName = $sAppDocUid . '_'.$iDocVersion.'.' . $sExtension;
G::uploadFile ( $_FILES ['form'] ['tmp_name'] [$sFieldName], $sPathName, $sFileName );
- //Plugin Hook PM_UPLOAD_DOCUMENT for upload document
+ //Plugin Hook PM_UPLOAD_DOCUMENT for upload document
$oPluginRegistry = & PMPluginRegistry::getSingleton ();
if ($oPluginRegistry->existsTrigger ( PM_UPLOAD_DOCUMENT ) && class_exists ( 'uploadDocumentData' )) {
$documentData = new uploadDocumentData ( $_SESSION ['APPLICATION'], $_SESSION ['USER_LOGGED'], $sPathName . $sFileName, $aFields ['APP_DOC_FILENAME'], $sAppDocUid );
@@ -201,7 +216,7 @@ if (isset ( $_FILES ['form'] )) {
}
}
-//go to the next step
+//go to the next step
$aNextStep = $oCase->getNextStep ( $_SESSION ['PROCESS'], $_SESSION ['APPLICATION'], $_SESSION ['INDEX'], $_SESSION ['STEP_POSITION'] );
if (isset ( $_GET ['_REFRESH_'] )) {
G::header ( 'location: ' . $_SERVER ['HTTP_REFERER'] );
@@ -229,5 +244,5 @@ if ($missing_req_values = $oForm->validateRequiredFields ( $_POST ['form'], $oJS
exit ( 0 );
}
-G::header ( 'location: ' . $aNextStep ['PAGE'] );
-
+G::header ( 'location: ' . $aNextStep ['PAGE'] );
+