diff --git a/workflow/engine/classes/class.labelsGmail.php b/workflow/engine/classes/class.labelsGmail.php index 84a672074..1bb5ed603 100644 --- a/workflow/engine/classes/class.labelsGmail.php +++ b/workflow/engine/classes/class.labelsGmail.php @@ -92,6 +92,8 @@ class labelsGmail //The Subject to search the email $subject = "[PM] " .$proName. " Case: ". $appNumber; + require_once PATH_TRUNK . 'vendor' . PATH_SEP . 'google' . PATH_SEP . 'apiclient' . PATH_SEP . 'src' . PATH_SEP . 'Google' . PATH_SEP . 'autoload.php'; + require_once (PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.pmGoogleApi.php"); $pmGoogle = new PMGoogleApi(); $pmGoogle->setUser($mail); diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index b699f0c52..f676771f9 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -509,6 +509,9 @@ class pmDynaform private function getValuesDependentFields($json) { + if (!isset($this->record["DYN_CONTENT"])) { + return array(); + } $data = array(); if (isset($json->dbConnection) && isset($json->sql)) { $salida = array(); diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 163a90747..cc65076c0 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -914,7 +914,8 @@ class wsBase $aAttachment = null, $showMessage = true, $delIndex = 0, - $config = array() + $config = array(), + $gmail = 0 ) { try { if (!class_exists('System')) { @@ -969,8 +970,11 @@ class wsBase $oCase = new Cases(); $oldFields = $oCase->loadCase( $caseId ); - - $pathEmail = PATH_DATA_SITE . 'mailTemplates' . PATH_SEP . $oldFields['PRO_UID'] . PATH_SEP; + if($gmail == 1){ + $pathEmail = PATH_DATA_SITE . 'mailTemplates' . PATH_SEP; + }else { + $pathEmail = PATH_DATA_SITE . 'mailTemplates' . PATH_SEP . $oldFields['PRO_UID'] . PATH_SEP; + } $fileTemplate = $pathEmail . $sTemplate; G::mk_dir( $pathEmail, 0777, true ); diff --git a/workflow/engine/classes/model/AppDelegation.php b/workflow/engine/classes/model/AppDelegation.php index 489b00c0c..0a8d46593 100755 --- a/workflow/engine/classes/model/AppDelegation.php +++ b/workflow/engine/classes/model/AppDelegation.php @@ -264,6 +264,7 @@ class AppDelegation extends BaseAppDelegation $c->addSelectColumn( AppDelegationPeer::DEL_INIT_DATE ); $c->addSelectColumn( AppDelegationPeer::DEL_TASK_DUE_DATE ); $c->addSelectColumn( AppDelegationPeer::DEL_FINISH_DATE ); + $c->addSelectColumn( AppDelegationPeer::DEL_PREVIOUS ); $c->add( AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN' ); $c->add( AppDelegationPeer::APP_UID, $AppUid ); @@ -287,6 +288,7 @@ class AppDelegation extends BaseAppDelegation $case['DEL_INIT_DATE'] = $row['DEL_INIT_DATE']; $case['DEL_TASK_DUE_DATE'] = $row['DEL_TASK_DUE_DATE']; $case['DEL_FINISH_DATE'] = $row['DEL_FINISH_DATE']; + $case['DEL_PREVIOUS'] = $row['DEL_PREVIOUS']; $aCases[] = $case; $rs->next(); $row = $rs->getRow(); diff --git a/workflow/engine/classes/model/Dynaform.php b/workflow/engine/classes/model/Dynaform.php index 9f30f063c..cd7442d7d 100755 --- a/workflow/engine/classes/model/Dynaform.php +++ b/workflow/engine/classes/model/Dynaform.php @@ -729,5 +729,28 @@ class Dynaform extends BaseDynaform } return $flag; } + + /** + * verify if a dynaform is assigned some dynaform + * + * @param string $proUid the uid of the process + * @param string $dynUid the uid of the dynaform + * + * @return array + */ + public function verifyDynaformAssignDynaform ($dynUid, $proUid) + { + $res = array(); + $oCriteria = new Criteria(); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->add(DynaformPeer::PRO_UID, $proUid); + $oCriteria->add(DynaformPeer::DYN_UID, $dynUid, Criteria::NOT_EQUAL); + $oCriteria->add(DynaformPeer::DYN_CONTENT, "%" . $dynUid . "%", Criteria::LIKE); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + while ($oDataset->next()) { + $res[] = $oDataset->getRow(); + } + return $res; + } } - diff --git a/workflow/engine/classes/model/EmailServer.php b/workflow/engine/classes/model/EmailServer.php index f961d4f1a..1aefd8582 100644 --- a/workflow/engine/classes/model/EmailServer.php +++ b/workflow/engine/classes/model/EmailServer.php @@ -1,5 +1,28 @@ clearSelectColumns(); + $c->addSelectColumn( EmailServerPeer::MESS_ACCOUNT ); + + $c->add( EmailServerPeer::MESS_DEFAULT, 1 ); + + $rs = EmailServerPeer::doSelectRS( $c, Propel::getDBConnection('workflow_ro') ); + $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $rs->next(); + $row = $rs->getRow(); + $response=$row; + + return $response; + } } diff --git a/workflow/engine/classes/model/Process.php b/workflow/engine/classes/model/Process.php index 79de01e3e..a47a68306 100755 --- a/workflow/engine/classes/model/Process.php +++ b/workflow/engine/classes/model/Process.php @@ -923,6 +923,9 @@ class Process extends BaseProcess $webBotTrigger = ''; switch ($action) { + case 'OPEN': + $var = ProcessPeer::PRO_TRI_OPEN; + break; case 'DELETED': $var = ProcessPeer::PRO_TRI_DELETED; break; diff --git a/workflow/engine/classes/model/om/BaseProcess.php b/workflow/engine/classes/model/om/BaseProcess.php index 3924a7649..ec86bef92 100755 --- a/workflow/engine/classes/model/om/BaseProcess.php +++ b/workflow/engine/classes/model/om/BaseProcess.php @@ -93,6 +93,12 @@ abstract class BaseProcess extends BaseObject implements Persistent */ protected $pro_subprocess = 0; + /** + * The value for the pro_tri_open field. + * @var string + */ + protected $pro_tri_open = ''; + /** * The value for the pro_tri_deleted field. * @var string @@ -366,6 +372,17 @@ abstract class BaseProcess extends BaseObject implements Persistent return $this->pro_subprocess; } + /** + * Get the [pro_tri_open] column value. + * + * @return string + */ + public function getProTriOpen() + { + + return $this->pro_tri_open; + } + /** * Get the [pro_tri_deleted] column value. * @@ -897,6 +914,28 @@ abstract class BaseProcess extends BaseObject implements Persistent } // setProSubprocess() + /** + * Set the value of [pro_tri_open] column. + * + * @param string $v new value + * @return void + */ + public function setProTriOpen($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->pro_tri_open !== $v || $v === '') { + $this->pro_tri_open = $v; + $this->modifiedColumns[] = ProcessPeer::PRO_TRI_OPEN; + } + + } // setProTriOpen() + /** * Set the value of [pro_tri_deleted] column. * @@ -1450,58 +1489,60 @@ abstract class BaseProcess extends BaseObject implements Persistent $this->pro_subprocess = $rs->getInt($startcol + 10); - $this->pro_tri_deleted = $rs->getString($startcol + 11); + $this->pro_tri_open = $rs->getString($startcol + 11); - $this->pro_tri_canceled = $rs->getString($startcol + 12); + $this->pro_tri_deleted = $rs->getString($startcol + 12); - $this->pro_tri_paused = $rs->getString($startcol + 13); + $this->pro_tri_canceled = $rs->getString($startcol + 13); - $this->pro_tri_reassigned = $rs->getString($startcol + 14); + $this->pro_tri_paused = $rs->getString($startcol + 14); - $this->pro_tri_unpaused = $rs->getString($startcol + 15); + $this->pro_tri_reassigned = $rs->getString($startcol + 15); - $this->pro_type_process = $rs->getString($startcol + 16); + $this->pro_tri_unpaused = $rs->getString($startcol + 16); - $this->pro_show_delegate = $rs->getInt($startcol + 17); + $this->pro_type_process = $rs->getString($startcol + 17); - $this->pro_show_dynaform = $rs->getInt($startcol + 18); + $this->pro_show_delegate = $rs->getInt($startcol + 18); - $this->pro_category = $rs->getString($startcol + 19); + $this->pro_show_dynaform = $rs->getInt($startcol + 19); - $this->pro_sub_category = $rs->getString($startcol + 20); + $this->pro_category = $rs->getString($startcol + 20); - $this->pro_industry = $rs->getInt($startcol + 21); + $this->pro_sub_category = $rs->getString($startcol + 21); - $this->pro_update_date = $rs->getTimestamp($startcol + 22, null); + $this->pro_industry = $rs->getInt($startcol + 22); - $this->pro_create_date = $rs->getTimestamp($startcol + 23, null); + $this->pro_update_date = $rs->getTimestamp($startcol + 23, null); - $this->pro_create_user = $rs->getString($startcol + 24); + $this->pro_create_date = $rs->getTimestamp($startcol + 24, null); - $this->pro_height = $rs->getInt($startcol + 25); + $this->pro_create_user = $rs->getString($startcol + 25); - $this->pro_width = $rs->getInt($startcol + 26); + $this->pro_height = $rs->getInt($startcol + 26); - $this->pro_title_x = $rs->getInt($startcol + 27); + $this->pro_width = $rs->getInt($startcol + 27); - $this->pro_title_y = $rs->getInt($startcol + 28); + $this->pro_title_x = $rs->getInt($startcol + 28); - $this->pro_debug = $rs->getInt($startcol + 29); + $this->pro_title_y = $rs->getInt($startcol + 29); - $this->pro_dynaforms = $rs->getString($startcol + 30); + $this->pro_debug = $rs->getInt($startcol + 30); - $this->pro_derivation_screen_tpl = $rs->getString($startcol + 31); + $this->pro_dynaforms = $rs->getString($startcol + 31); - $this->pro_cost = $rs->getFloat($startcol + 32); + $this->pro_derivation_screen_tpl = $rs->getString($startcol + 32); - $this->pro_unit_cost = $rs->getString($startcol + 33); + $this->pro_cost = $rs->getFloat($startcol + 33); + + $this->pro_unit_cost = $rs->getString($startcol + 34); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 34; // 34 = ProcessPeer::NUM_COLUMNS - ProcessPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 35; // 35 = ProcessPeer::NUM_COLUMNS - ProcessPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating Process object", $e); @@ -1739,72 +1780,75 @@ abstract class BaseProcess extends BaseObject implements Persistent return $this->getProSubprocess(); break; case 11: - return $this->getProTriDeleted(); + return $this->getProTriOpen(); break; case 12: - return $this->getProTriCanceled(); + return $this->getProTriDeleted(); break; case 13: - return $this->getProTriPaused(); + return $this->getProTriCanceled(); break; case 14: - return $this->getProTriReassigned(); + return $this->getProTriPaused(); break; case 15: - return $this->getProTriUnpaused(); + return $this->getProTriReassigned(); break; case 16: - return $this->getProTypeProcess(); + return $this->getProTriUnpaused(); break; case 17: - return $this->getProShowDelegate(); + return $this->getProTypeProcess(); break; case 18: - return $this->getProShowDynaform(); + return $this->getProShowDelegate(); break; case 19: - return $this->getProCategory(); + return $this->getProShowDynaform(); break; case 20: - return $this->getProSubCategory(); + return $this->getProCategory(); break; case 21: - return $this->getProIndustry(); + return $this->getProSubCategory(); break; case 22: - return $this->getProUpdateDate(); + return $this->getProIndustry(); break; case 23: - return $this->getProCreateDate(); + return $this->getProUpdateDate(); break; case 24: - return $this->getProCreateUser(); + return $this->getProCreateDate(); break; case 25: - return $this->getProHeight(); + return $this->getProCreateUser(); break; case 26: - return $this->getProWidth(); + return $this->getProHeight(); break; case 27: - return $this->getProTitleX(); + return $this->getProWidth(); break; case 28: - return $this->getProTitleY(); + return $this->getProTitleX(); break; case 29: - return $this->getProDebug(); + return $this->getProTitleY(); break; case 30: - return $this->getProDynaforms(); + return $this->getProDebug(); break; case 31: - return $this->getProDerivationScreenTpl(); + return $this->getProDynaforms(); break; case 32: - return $this->getProCost(); + return $this->getProDerivationScreenTpl(); break; case 33: + return $this->getProCost(); + break; + case 34: return $this->getProUnitCost(); break; default: @@ -1838,29 +1882,30 @@ abstract class BaseProcess extends BaseObject implements Persistent $keys[8] => $this->getProShowMap(), $keys[9] => $this->getProShowMessage(), $keys[10] => $this->getProSubprocess(), - $keys[11] => $this->getProTriDeleted(), - $keys[12] => $this->getProTriCanceled(), - $keys[13] => $this->getProTriPaused(), - $keys[14] => $this->getProTriReassigned(), - $keys[15] => $this->getProTriUnpaused(), - $keys[16] => $this->getProTypeProcess(), - $keys[17] => $this->getProShowDelegate(), - $keys[18] => $this->getProShowDynaform(), - $keys[19] => $this->getProCategory(), - $keys[20] => $this->getProSubCategory(), - $keys[21] => $this->getProIndustry(), - $keys[22] => $this->getProUpdateDate(), - $keys[23] => $this->getProCreateDate(), - $keys[24] => $this->getProCreateUser(), - $keys[25] => $this->getProHeight(), - $keys[26] => $this->getProWidth(), - $keys[27] => $this->getProTitleX(), - $keys[28] => $this->getProTitleY(), - $keys[29] => $this->getProDebug(), - $keys[30] => $this->getProDynaforms(), - $keys[31] => $this->getProDerivationScreenTpl(), - $keys[32] => $this->getProCost(), - $keys[33] => $this->getProUnitCost(), + $keys[11] => $this->getProTriOpen(), + $keys[12] => $this->getProTriDeleted(), + $keys[13] => $this->getProTriCanceled(), + $keys[14] => $this->getProTriPaused(), + $keys[15] => $this->getProTriReassigned(), + $keys[16] => $this->getProTriUnpaused(), + $keys[17] => $this->getProTypeProcess(), + $keys[18] => $this->getProShowDelegate(), + $keys[19] => $this->getProShowDynaform(), + $keys[20] => $this->getProCategory(), + $keys[21] => $this->getProSubCategory(), + $keys[22] => $this->getProIndustry(), + $keys[23] => $this->getProUpdateDate(), + $keys[24] => $this->getProCreateDate(), + $keys[25] => $this->getProCreateUser(), + $keys[26] => $this->getProHeight(), + $keys[27] => $this->getProWidth(), + $keys[28] => $this->getProTitleX(), + $keys[29] => $this->getProTitleY(), + $keys[30] => $this->getProDebug(), + $keys[31] => $this->getProDynaforms(), + $keys[32] => $this->getProDerivationScreenTpl(), + $keys[33] => $this->getProCost(), + $keys[34] => $this->getProUnitCost(), ); return $result; } @@ -1926,72 +1971,75 @@ abstract class BaseProcess extends BaseObject implements Persistent $this->setProSubprocess($value); break; case 11: - $this->setProTriDeleted($value); + $this->setProTriOpen($value); break; case 12: - $this->setProTriCanceled($value); + $this->setProTriDeleted($value); break; case 13: - $this->setProTriPaused($value); + $this->setProTriCanceled($value); break; case 14: - $this->setProTriReassigned($value); + $this->setProTriPaused($value); break; case 15: - $this->setProTriUnpaused($value); + $this->setProTriReassigned($value); break; case 16: - $this->setProTypeProcess($value); + $this->setProTriUnpaused($value); break; case 17: - $this->setProShowDelegate($value); + $this->setProTypeProcess($value); break; case 18: - $this->setProShowDynaform($value); + $this->setProShowDelegate($value); break; case 19: - $this->setProCategory($value); + $this->setProShowDynaform($value); break; case 20: - $this->setProSubCategory($value); + $this->setProCategory($value); break; case 21: - $this->setProIndustry($value); + $this->setProSubCategory($value); break; case 22: - $this->setProUpdateDate($value); + $this->setProIndustry($value); break; case 23: - $this->setProCreateDate($value); + $this->setProUpdateDate($value); break; case 24: - $this->setProCreateUser($value); + $this->setProCreateDate($value); break; case 25: - $this->setProHeight($value); + $this->setProCreateUser($value); break; case 26: - $this->setProWidth($value); + $this->setProHeight($value); break; case 27: - $this->setProTitleX($value); + $this->setProWidth($value); break; case 28: - $this->setProTitleY($value); + $this->setProTitleX($value); break; case 29: - $this->setProDebug($value); + $this->setProTitleY($value); break; case 30: - $this->setProDynaforms($value); + $this->setProDebug($value); break; case 31: - $this->setProDerivationScreenTpl($value); + $this->setProDynaforms($value); break; case 32: - $this->setProCost($value); + $this->setProDerivationScreenTpl($value); break; case 33: + $this->setProCost($value); + break; + case 34: $this->setProUnitCost($value); break; } // switch() @@ -2062,95 +2110,99 @@ abstract class BaseProcess extends BaseObject implements Persistent } if (array_key_exists($keys[11], $arr)) { - $this->setProTriDeleted($arr[$keys[11]]); + $this->setProTriOpen($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { - $this->setProTriCanceled($arr[$keys[12]]); + $this->setProTriDeleted($arr[$keys[12]]); } if (array_key_exists($keys[13], $arr)) { - $this->setProTriPaused($arr[$keys[13]]); + $this->setProTriCanceled($arr[$keys[13]]); } if (array_key_exists($keys[14], $arr)) { - $this->setProTriReassigned($arr[$keys[14]]); + $this->setProTriPaused($arr[$keys[14]]); } if (array_key_exists($keys[15], $arr)) { - $this->setProTriUnpaused($arr[$keys[15]]); + $this->setProTriReassigned($arr[$keys[15]]); } if (array_key_exists($keys[16], $arr)) { - $this->setProTypeProcess($arr[$keys[16]]); + $this->setProTriUnpaused($arr[$keys[16]]); } if (array_key_exists($keys[17], $arr)) { - $this->setProShowDelegate($arr[$keys[17]]); + $this->setProTypeProcess($arr[$keys[17]]); } if (array_key_exists($keys[18], $arr)) { - $this->setProShowDynaform($arr[$keys[18]]); + $this->setProShowDelegate($arr[$keys[18]]); } if (array_key_exists($keys[19], $arr)) { - $this->setProCategory($arr[$keys[19]]); + $this->setProShowDynaform($arr[$keys[19]]); } if (array_key_exists($keys[20], $arr)) { - $this->setProSubCategory($arr[$keys[20]]); + $this->setProCategory($arr[$keys[20]]); } if (array_key_exists($keys[21], $arr)) { - $this->setProIndustry($arr[$keys[21]]); + $this->setProSubCategory($arr[$keys[21]]); } if (array_key_exists($keys[22], $arr)) { - $this->setProUpdateDate($arr[$keys[22]]); + $this->setProIndustry($arr[$keys[22]]); } if (array_key_exists($keys[23], $arr)) { - $this->setProCreateDate($arr[$keys[23]]); + $this->setProUpdateDate($arr[$keys[23]]); } if (array_key_exists($keys[24], $arr)) { - $this->setProCreateUser($arr[$keys[24]]); + $this->setProCreateDate($arr[$keys[24]]); } if (array_key_exists($keys[25], $arr)) { - $this->setProHeight($arr[$keys[25]]); + $this->setProCreateUser($arr[$keys[25]]); } if (array_key_exists($keys[26], $arr)) { - $this->setProWidth($arr[$keys[26]]); + $this->setProHeight($arr[$keys[26]]); } if (array_key_exists($keys[27], $arr)) { - $this->setProTitleX($arr[$keys[27]]); + $this->setProWidth($arr[$keys[27]]); } if (array_key_exists($keys[28], $arr)) { - $this->setProTitleY($arr[$keys[28]]); + $this->setProTitleX($arr[$keys[28]]); } if (array_key_exists($keys[29], $arr)) { - $this->setProDebug($arr[$keys[29]]); + $this->setProTitleY($arr[$keys[29]]); } if (array_key_exists($keys[30], $arr)) { - $this->setProDynaforms($arr[$keys[30]]); + $this->setProDebug($arr[$keys[30]]); } if (array_key_exists($keys[31], $arr)) { - $this->setProDerivationScreenTpl($arr[$keys[31]]); + $this->setProDynaforms($arr[$keys[31]]); } if (array_key_exists($keys[32], $arr)) { - $this->setProCost($arr[$keys[32]]); + $this->setProDerivationScreenTpl($arr[$keys[32]]); } if (array_key_exists($keys[33], $arr)) { - $this->setProUnitCost($arr[$keys[33]]); + $this->setProCost($arr[$keys[33]]); + } + + if (array_key_exists($keys[34], $arr)) { + $this->setProUnitCost($arr[$keys[34]]); } } @@ -2208,6 +2260,10 @@ abstract class BaseProcess extends BaseObject implements Persistent $criteria->add(ProcessPeer::PRO_SUBPROCESS, $this->pro_subprocess); } + if ($this->isColumnModified(ProcessPeer::PRO_TRI_OPEN)) { + $criteria->add(ProcessPeer::PRO_TRI_OPEN, $this->pro_tri_open); + } + if ($this->isColumnModified(ProcessPeer::PRO_TRI_DELETED)) { $criteria->add(ProcessPeer::PRO_TRI_DELETED, $this->pro_tri_deleted); } @@ -2374,6 +2430,8 @@ abstract class BaseProcess extends BaseObject implements Persistent $copyObj->setProSubprocess($this->pro_subprocess); + $copyObj->setProTriOpen($this->pro_tri_open); + $copyObj->setProTriDeleted($this->pro_tri_deleted); $copyObj->setProTriCanceled($this->pro_tri_canceled); diff --git a/workflow/engine/classes/model/om/BaseProcessPeer.php b/workflow/engine/classes/model/om/BaseProcessPeer.php index 294e51634..40addd748 100755 --- a/workflow/engine/classes/model/om/BaseProcessPeer.php +++ b/workflow/engine/classes/model/om/BaseProcessPeer.php @@ -25,7 +25,7 @@ abstract class BaseProcessPeer const CLASS_DEFAULT = 'classes.model.Process'; /** The total number of columns. */ - const NUM_COLUMNS = 34; + const NUM_COLUMNS = 35; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -64,6 +64,9 @@ abstract class BaseProcessPeer /** the column name for the PRO_SUBPROCESS field */ const PRO_SUBPROCESS = 'PROCESS.PRO_SUBPROCESS'; + /** the column name for the PRO_TRI_OPEN field */ + const PRO_TRI_OPEN = 'PROCESS.PRO_TRI_OPEN'; + /** the column name for the PRO_TRI_DELETED field */ const PRO_TRI_DELETED = 'PROCESS.PRO_TRI_DELETED'; @@ -144,10 +147,10 @@ abstract class BaseProcessPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('ProUid', 'ProParent', 'ProTime', 'ProTimeunit', 'ProStatus', 'ProTypeDay', 'ProType', 'ProAssignment', 'ProShowMap', 'ProShowMessage', 'ProSubprocess', 'ProTriDeleted', 'ProTriCanceled', 'ProTriPaused', 'ProTriReassigned', 'ProTriUnpaused', 'ProTypeProcess', 'ProShowDelegate', 'ProShowDynaform', 'ProCategory', 'ProSubCategory', 'ProIndustry', 'ProUpdateDate', 'ProCreateDate', 'ProCreateUser', 'ProHeight', 'ProWidth', 'ProTitleX', 'ProTitleY', 'ProDebug', 'ProDynaforms', 'ProDerivationScreenTpl', 'ProCost', 'ProUnitCost', ), - BasePeer::TYPE_COLNAME => array (ProcessPeer::PRO_UID, ProcessPeer::PRO_PARENT, ProcessPeer::PRO_TIME, ProcessPeer::PRO_TIMEUNIT, ProcessPeer::PRO_STATUS, ProcessPeer::PRO_TYPE_DAY, ProcessPeer::PRO_TYPE, ProcessPeer::PRO_ASSIGNMENT, ProcessPeer::PRO_SHOW_MAP, ProcessPeer::PRO_SHOW_MESSAGE, ProcessPeer::PRO_SUBPROCESS, ProcessPeer::PRO_TRI_DELETED, ProcessPeer::PRO_TRI_CANCELED, ProcessPeer::PRO_TRI_PAUSED, ProcessPeer::PRO_TRI_REASSIGNED, ProcessPeer::PRO_TRI_UNPAUSED, ProcessPeer::PRO_TYPE_PROCESS, ProcessPeer::PRO_SHOW_DELEGATE, ProcessPeer::PRO_SHOW_DYNAFORM, ProcessPeer::PRO_CATEGORY, ProcessPeer::PRO_SUB_CATEGORY, ProcessPeer::PRO_INDUSTRY, ProcessPeer::PRO_UPDATE_DATE, ProcessPeer::PRO_CREATE_DATE, ProcessPeer::PRO_CREATE_USER, ProcessPeer::PRO_HEIGHT, ProcessPeer::PRO_WIDTH, ProcessPeer::PRO_TITLE_X, ProcessPeer::PRO_TITLE_Y, ProcessPeer::PRO_DEBUG, ProcessPeer::PRO_DYNAFORMS, ProcessPeer::PRO_DERIVATION_SCREEN_TPL, ProcessPeer::PRO_COST, ProcessPeer::PRO_UNIT_COST, ), - BasePeer::TYPE_FIELDNAME => array ('PRO_UID', 'PRO_PARENT', 'PRO_TIME', 'PRO_TIMEUNIT', 'PRO_STATUS', 'PRO_TYPE_DAY', 'PRO_TYPE', 'PRO_ASSIGNMENT', 'PRO_SHOW_MAP', 'PRO_SHOW_MESSAGE', 'PRO_SUBPROCESS', 'PRO_TRI_DELETED', 'PRO_TRI_CANCELED', 'PRO_TRI_PAUSED', 'PRO_TRI_REASSIGNED', 'PRO_TRI_UNPAUSED', 'PRO_TYPE_PROCESS', 'PRO_SHOW_DELEGATE', 'PRO_SHOW_DYNAFORM', 'PRO_CATEGORY', 'PRO_SUB_CATEGORY', 'PRO_INDUSTRY', 'PRO_UPDATE_DATE', 'PRO_CREATE_DATE', 'PRO_CREATE_USER', 'PRO_HEIGHT', 'PRO_WIDTH', 'PRO_TITLE_X', 'PRO_TITLE_Y', 'PRO_DEBUG', 'PRO_DYNAFORMS', 'PRO_DERIVATION_SCREEN_TPL', 'PRO_COST', 'PRO_UNIT_COST', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, ) + BasePeer::TYPE_PHPNAME => array ('ProUid', 'ProParent', 'ProTime', 'ProTimeunit', 'ProStatus', 'ProTypeDay', 'ProType', 'ProAssignment', 'ProShowMap', 'ProShowMessage', 'ProSubprocess', 'ProTriOpen', 'ProTriDeleted', 'ProTriCanceled', 'ProTriPaused', 'ProTriReassigned', 'ProTriUnpaused', 'ProTypeProcess', 'ProShowDelegate', 'ProShowDynaform', 'ProCategory', 'ProSubCategory', 'ProIndustry', 'ProUpdateDate', 'ProCreateDate', 'ProCreateUser', 'ProHeight', 'ProWidth', 'ProTitleX', 'ProTitleY', 'ProDebug', 'ProDynaforms', 'ProDerivationScreenTpl', 'ProCost', 'ProUnitCost', ), + BasePeer::TYPE_COLNAME => array (ProcessPeer::PRO_UID, ProcessPeer::PRO_PARENT, ProcessPeer::PRO_TIME, ProcessPeer::PRO_TIMEUNIT, ProcessPeer::PRO_STATUS, ProcessPeer::PRO_TYPE_DAY, ProcessPeer::PRO_TYPE, ProcessPeer::PRO_ASSIGNMENT, ProcessPeer::PRO_SHOW_MAP, ProcessPeer::PRO_SHOW_MESSAGE, ProcessPeer::PRO_SUBPROCESS, ProcessPeer::PRO_TRI_OPEN, ProcessPeer::PRO_TRI_DELETED, ProcessPeer::PRO_TRI_CANCELED, ProcessPeer::PRO_TRI_PAUSED, ProcessPeer::PRO_TRI_REASSIGNED, ProcessPeer::PRO_TRI_UNPAUSED, ProcessPeer::PRO_TYPE_PROCESS, ProcessPeer::PRO_SHOW_DELEGATE, ProcessPeer::PRO_SHOW_DYNAFORM, ProcessPeer::PRO_CATEGORY, ProcessPeer::PRO_SUB_CATEGORY, ProcessPeer::PRO_INDUSTRY, ProcessPeer::PRO_UPDATE_DATE, ProcessPeer::PRO_CREATE_DATE, ProcessPeer::PRO_CREATE_USER, ProcessPeer::PRO_HEIGHT, ProcessPeer::PRO_WIDTH, ProcessPeer::PRO_TITLE_X, ProcessPeer::PRO_TITLE_Y, ProcessPeer::PRO_DEBUG, ProcessPeer::PRO_DYNAFORMS, ProcessPeer::PRO_DERIVATION_SCREEN_TPL, ProcessPeer::PRO_COST, ProcessPeer::PRO_UNIT_COST, ), + BasePeer::TYPE_FIELDNAME => array ('PRO_UID', 'PRO_PARENT', 'PRO_TIME', 'PRO_TIMEUNIT', 'PRO_STATUS', 'PRO_TYPE_DAY', 'PRO_TYPE', 'PRO_ASSIGNMENT', 'PRO_SHOW_MAP', 'PRO_SHOW_MESSAGE', 'PRO_SUBPROCESS', 'PRO_TRI_OPEN', 'PRO_TRI_DELETED', 'PRO_TRI_CANCELED', 'PRO_TRI_PAUSED', 'PRO_TRI_REASSIGNED', 'PRO_TRI_UNPAUSED', 'PRO_TYPE_PROCESS', 'PRO_SHOW_DELEGATE', 'PRO_SHOW_DYNAFORM', 'PRO_CATEGORY', 'PRO_SUB_CATEGORY', 'PRO_INDUSTRY', 'PRO_UPDATE_DATE', 'PRO_CREATE_DATE', 'PRO_CREATE_USER', 'PRO_HEIGHT', 'PRO_WIDTH', 'PRO_TITLE_X', 'PRO_TITLE_Y', 'PRO_DEBUG', 'PRO_DYNAFORMS', 'PRO_DERIVATION_SCREEN_TPL', 'PRO_COST', 'PRO_UNIT_COST', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, ) ); /** @@ -157,10 +160,10 @@ abstract class BaseProcessPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('ProUid' => 0, 'ProParent' => 1, 'ProTime' => 2, 'ProTimeunit' => 3, 'ProStatus' => 4, 'ProTypeDay' => 5, 'ProType' => 6, 'ProAssignment' => 7, 'ProShowMap' => 8, 'ProShowMessage' => 9, 'ProSubprocess' => 10, 'ProTriDeleted' => 11, 'ProTriCanceled' => 12, 'ProTriPaused' => 13, 'ProTriReassigned' => 14, 'ProTriUnpaused' => 15, 'ProTypeProcess' => 16, 'ProShowDelegate' => 17, 'ProShowDynaform' => 18, 'ProCategory' => 19, 'ProSubCategory' => 20, 'ProIndustry' => 21, 'ProUpdateDate' => 22, 'ProCreateDate' => 23, 'ProCreateUser' => 24, 'ProHeight' => 25, 'ProWidth' => 26, 'ProTitleX' => 27, 'ProTitleY' => 28, 'ProDebug' => 29, 'ProDynaforms' => 30, 'ProDerivationScreenTpl' => 31, 'ProCost' => 32, 'ProUnitCost' => 33, ), - BasePeer::TYPE_COLNAME => array (ProcessPeer::PRO_UID => 0, ProcessPeer::PRO_PARENT => 1, ProcessPeer::PRO_TIME => 2, ProcessPeer::PRO_TIMEUNIT => 3, ProcessPeer::PRO_STATUS => 4, ProcessPeer::PRO_TYPE_DAY => 5, ProcessPeer::PRO_TYPE => 6, ProcessPeer::PRO_ASSIGNMENT => 7, ProcessPeer::PRO_SHOW_MAP => 8, ProcessPeer::PRO_SHOW_MESSAGE => 9, ProcessPeer::PRO_SUBPROCESS => 10, ProcessPeer::PRO_TRI_DELETED => 11, ProcessPeer::PRO_TRI_CANCELED => 12, ProcessPeer::PRO_TRI_PAUSED => 13, ProcessPeer::PRO_TRI_REASSIGNED => 14, ProcessPeer::PRO_TRI_UNPAUSED => 15, ProcessPeer::PRO_TYPE_PROCESS => 16, ProcessPeer::PRO_SHOW_DELEGATE => 17, ProcessPeer::PRO_SHOW_DYNAFORM => 18, ProcessPeer::PRO_CATEGORY => 19, ProcessPeer::PRO_SUB_CATEGORY => 20, ProcessPeer::PRO_INDUSTRY => 21, ProcessPeer::PRO_UPDATE_DATE => 22, ProcessPeer::PRO_CREATE_DATE => 23, ProcessPeer::PRO_CREATE_USER => 24, ProcessPeer::PRO_HEIGHT => 25, ProcessPeer::PRO_WIDTH => 26, ProcessPeer::PRO_TITLE_X => 27, ProcessPeer::PRO_TITLE_Y => 28, ProcessPeer::PRO_DEBUG => 29, ProcessPeer::PRO_DYNAFORMS => 30, ProcessPeer::PRO_DERIVATION_SCREEN_TPL => 31, ProcessPeer::PRO_COST => 32, ProcessPeer::PRO_UNIT_COST => 33, ), - BasePeer::TYPE_FIELDNAME => array ('PRO_UID' => 0, 'PRO_PARENT' => 1, 'PRO_TIME' => 2, 'PRO_TIMEUNIT' => 3, 'PRO_STATUS' => 4, 'PRO_TYPE_DAY' => 5, 'PRO_TYPE' => 6, 'PRO_ASSIGNMENT' => 7, 'PRO_SHOW_MAP' => 8, 'PRO_SHOW_MESSAGE' => 9, 'PRO_SUBPROCESS' => 10, 'PRO_TRI_DELETED' => 11, 'PRO_TRI_CANCELED' => 12, 'PRO_TRI_PAUSED' => 13, 'PRO_TRI_REASSIGNED' => 14, 'PRO_TRI_UNPAUSED' => 15, 'PRO_TYPE_PROCESS' => 16, 'PRO_SHOW_DELEGATE' => 17, 'PRO_SHOW_DYNAFORM' => 18, 'PRO_CATEGORY' => 19, 'PRO_SUB_CATEGORY' => 20, 'PRO_INDUSTRY' => 21, 'PRO_UPDATE_DATE' => 22, 'PRO_CREATE_DATE' => 23, 'PRO_CREATE_USER' => 24, 'PRO_HEIGHT' => 25, 'PRO_WIDTH' => 26, 'PRO_TITLE_X' => 27, 'PRO_TITLE_Y' => 28, 'PRO_DEBUG' => 29, 'PRO_DYNAFORMS' => 30, 'PRO_DERIVATION_SCREEN_TPL' => 31, 'PRO_COST' => 32, 'PRO_UNIT_COST' => 33, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, ) + BasePeer::TYPE_PHPNAME => array ('ProUid' => 0, 'ProParent' => 1, 'ProTime' => 2, 'ProTimeunit' => 3, 'ProStatus' => 4, 'ProTypeDay' => 5, 'ProType' => 6, 'ProAssignment' => 7, 'ProShowMap' => 8, 'ProShowMessage' => 9, 'ProSubprocess' => 10, 'ProTriOpen' => 11, 'ProTriDeleted' => 12, 'ProTriCanceled' => 13, 'ProTriPaused' => 14, 'ProTriReassigned' => 15, 'ProTriUnpaused' => 16, 'ProTypeProcess' => 17, 'ProShowDelegate' => 18, 'ProShowDynaform' => 19, 'ProCategory' => 20, 'ProSubCategory' => 21, 'ProIndustry' => 22, 'ProUpdateDate' => 23, 'ProCreateDate' => 24, 'ProCreateUser' => 25, 'ProHeight' => 26, 'ProWidth' => 27, 'ProTitleX' => 28, 'ProTitleY' => 29, 'ProDebug' => 30, 'ProDynaforms' => 31, 'ProDerivationScreenTpl' => 32, 'ProCost' => 33, 'ProUnitCost' => 34, ), + BasePeer::TYPE_COLNAME => array (ProcessPeer::PRO_UID => 0, ProcessPeer::PRO_PARENT => 1, ProcessPeer::PRO_TIME => 2, ProcessPeer::PRO_TIMEUNIT => 3, ProcessPeer::PRO_STATUS => 4, ProcessPeer::PRO_TYPE_DAY => 5, ProcessPeer::PRO_TYPE => 6, ProcessPeer::PRO_ASSIGNMENT => 7, ProcessPeer::PRO_SHOW_MAP => 8, ProcessPeer::PRO_SHOW_MESSAGE => 9, ProcessPeer::PRO_SUBPROCESS => 10, ProcessPeer::PRO_TRI_OPEN => 11, ProcessPeer::PRO_TRI_DELETED => 12, ProcessPeer::PRO_TRI_CANCELED => 13, ProcessPeer::PRO_TRI_PAUSED => 14, ProcessPeer::PRO_TRI_REASSIGNED => 15, ProcessPeer::PRO_TRI_UNPAUSED => 16, ProcessPeer::PRO_TYPE_PROCESS => 17, ProcessPeer::PRO_SHOW_DELEGATE => 18, ProcessPeer::PRO_SHOW_DYNAFORM => 19, ProcessPeer::PRO_CATEGORY => 20, ProcessPeer::PRO_SUB_CATEGORY => 21, ProcessPeer::PRO_INDUSTRY => 22, ProcessPeer::PRO_UPDATE_DATE => 23, ProcessPeer::PRO_CREATE_DATE => 24, ProcessPeer::PRO_CREATE_USER => 25, ProcessPeer::PRO_HEIGHT => 26, ProcessPeer::PRO_WIDTH => 27, ProcessPeer::PRO_TITLE_X => 28, ProcessPeer::PRO_TITLE_Y => 29, ProcessPeer::PRO_DEBUG => 30, ProcessPeer::PRO_DYNAFORMS => 31, ProcessPeer::PRO_DERIVATION_SCREEN_TPL => 32, ProcessPeer::PRO_COST => 33, ProcessPeer::PRO_UNIT_COST => 34, ), + BasePeer::TYPE_FIELDNAME => array ('PRO_UID' => 0, 'PRO_PARENT' => 1, 'PRO_TIME' => 2, 'PRO_TIMEUNIT' => 3, 'PRO_STATUS' => 4, 'PRO_TYPE_DAY' => 5, 'PRO_TYPE' => 6, 'PRO_ASSIGNMENT' => 7, 'PRO_SHOW_MAP' => 8, 'PRO_SHOW_MESSAGE' => 9, 'PRO_SUBPROCESS' => 10, 'PRO_TRI_OPEN' => 11, 'PRO_TRI_DELETED' => 12, 'PRO_TRI_CANCELED' => 13, 'PRO_TRI_PAUSED' => 14, 'PRO_TRI_REASSIGNED' => 15, 'PRO_TRI_UNPAUSED' => 16, 'PRO_TYPE_PROCESS' => 17, 'PRO_SHOW_DELEGATE' => 18, 'PRO_SHOW_DYNAFORM' => 19, 'PRO_CATEGORY' => 20, 'PRO_SUB_CATEGORY' => 21, 'PRO_INDUSTRY' => 22, 'PRO_UPDATE_DATE' => 23, 'PRO_CREATE_DATE' => 24, 'PRO_CREATE_USER' => 25, 'PRO_HEIGHT' => 26, 'PRO_WIDTH' => 27, 'PRO_TITLE_X' => 28, 'PRO_TITLE_Y' => 29, 'PRO_DEBUG' => 30, 'PRO_DYNAFORMS' => 31, 'PRO_DERIVATION_SCREEN_TPL' => 32, 'PRO_COST' => 33, 'PRO_UNIT_COST' => 34, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, ) ); /** @@ -283,6 +286,8 @@ abstract class BaseProcessPeer $criteria->addSelectColumn(ProcessPeer::PRO_SUBPROCESS); + $criteria->addSelectColumn(ProcessPeer::PRO_TRI_OPEN); + $criteria->addSelectColumn(ProcessPeer::PRO_TRI_DELETED); $criteria->addSelectColumn(ProcessPeer::PRO_TRI_CANCELED); diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 521e58dd0..f24c3bfa4 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -851,6 +851,7 @@ + diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index 026ef0c2d..de3e97520 100755 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -411,6 +411,7 @@ CREATE TABLE `PROCESS` `PRO_SHOW_MAP` TINYINT default 1 NOT NULL, `PRO_SHOW_MESSAGE` TINYINT default 1 NOT NULL, `PRO_SUBPROCESS` TINYINT default 0 NOT NULL, + `PRO_TRI_OPEN` VARCHAR(32) default '' NOT NULL, `PRO_TRI_DELETED` VARCHAR(32) default '' NOT NULL, `PRO_TRI_CANCELED` VARCHAR(32) default '' NOT NULL, `PRO_TRI_PAUSED` VARCHAR(32) default '' NOT NULL, diff --git a/workflow/engine/methods/cases/cases_Open.php b/workflow/engine/methods/cases/cases_Open.php index f74b952ac..422393aaa 100755 --- a/workflow/engine/methods/cases/cases_Open.php +++ b/workflow/engine/methods/cases/cases_Open.php @@ -175,14 +175,7 @@ try { unset( $_SESSION['bNoShowSteps'] ); /* Execute Before Triggers for first Task*/ - $oStep = new Step; - $oStep = $oStep->loadByProcessTaskPosition($_SESSION['PROCESS'], $_SESSION['TASK'], 1); - if($oStep) { - $aFields['APP_DATA'] = array_merge( $aFields['APP_DATA'], G::getSystemConstants() ); - $triggerFields["APP_DATA"] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $oStep->getStepTypeObj(), $oStep->getStepUidObj(), 'BEFORE', $aFields['APP_DATA'] ); - $oCase->updateCase( $_SESSION['APPLICATION'], $triggerFields ); - $_SESSION['beforeTriggersExecuted'] = true; - } + $oCase->getExecuteTriggerProcess($sAppUid, 'OPEN'); /*end Execute Before Triggers for first Task*/ $aNextStep = $oCase->getNextStep( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION'] ); diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index f644cc5cb..9dabc0455 100755 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -216,11 +216,7 @@ if ($flagExecuteBeforeTriggers) { if (! isset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] )) { //Execute before triggers - Start - if (!isset($_SESSION['beforeTriggersExecuted']) || $triggers) { - $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA'] ); - } else { - unset($_SESSION['beforeTriggersExecuted']); - } + $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA'] ); //Execute before triggers - End } else { unset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] ); diff --git a/workflow/engine/methods/cases/derivatedGmail.php b/workflow/engine/methods/cases/derivatedGmail.php index a02d3f0bc..4ddf8a457 100644 --- a/workflow/engine/methods/cases/derivatedGmail.php +++ b/workflow/engine/methods/cases/derivatedGmail.php @@ -1,19 +1,14 @@ make('session.store'); - $licensedFeatures = & PMLicensedFeatures::getSingleton(); if (!$licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')) { G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' ); G::header( 'location: ../login/login' ); die; } -$caseId = $session->get('APPLICATION'); -$usrUid = $session->get('USER_LOGGED'); -$usrName = $session->get('USR_FULLNAME'); -$actualIndex = $session->get('INDEX'); +$caseId = $_SESSION['APPLICATION']; +$usrUid = $_SESSION['USER_LOGGED']; +$usrName = $_SESSION['USR_FULLNAME']; +$actualIndex = $_SESSION['INDEX']; $cont = 0; use \ProcessMaker\Services\Api; @@ -23,6 +18,7 @@ $actualThread = $appDel->Load($caseId, $actualIndex); $actualLastIndex = $actualThread['DEL_PREVIOUS']; $appDelPrev = $appDel->LoadParallel($caseId); + if($appDelPrev == array()){ $appDelPrev['0'] = $actualThread; } @@ -34,11 +30,12 @@ foreach ($appDelPrev as $app){ } } +require_once (PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.labelsGmail.php"); $oLabels = new labelsGmail(); $oResponse = $oLabels->setLabels($caseId, $actualIndex, $actualLastIndex, false); -if( $session->get('gmail') === 1 ){ - //$session->set('gmail', 0); - $mUrl = '/sys'. $session->get('WORKSPACE') .'/en/neoclassic/cases/cases_Open?APP_UID='.$caseId.'&DEL_INDEX='.$actualIndex.'&action=sent'; +if( $_SESSION['gmail'] === 1 ){ + //$_SESSION['gmail'] = 0; + $mUrl = '/sys'. $_SESSION['WORKSPACE'] .'/en/neoclassic/cases/cases_Open?APP_UID='.$caseId.'&DEL_INDEX='.$actualIndex.'&action=sent'; } else{ $mUrl = 'casesListExtJs'; } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php index 0ff269f4e..e0f14d8b0 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php @@ -227,10 +227,19 @@ class DynaForm $messageCaseTracker = "($countSteps) Depends in case traker"; } + $dynaformDepends = \Dynaform::verifyDynaformAssignDynaform($dynUid, $proUid); + $messageDynaform = '(0) Depends in case traker'; + if (!empty($dynaformDepends)) { + $flagDepend = true; + $countSteps = count($dynaformDepends); + $messageDynaform = "($countSteps) Depends in dynaform"; + } + if ($flagDepend) { $message = "You can not delete the dynaform '$dynUid', because it has the following dependencies: \n\n"; $message .= $messageSteps . ".\n" . $messageStepsSupervisors . ".\n"; - $message .= $messageObjectPermission . ".\n" . $messageCaseTracker; + $message .= $messageObjectPermission . ".\n" . $messageCaseTracker . "\n"; + $message .= $messageDynaform; return $message; } return ''; @@ -1138,4 +1147,63 @@ class DynaForm throw $e; } } + + /** + * Get data of a DynaForm History + * + * @param string $dynaFormUid Unique id of DynaForm + * + * return array Return an array with data of a DynaForm History + */ + public function getDynaFormHistory($prj_uid, $dynaFormUid, array $arrayData = array()) + { + try { + $filter = ""; + if (isset($arrayData["filter"])) { + $filter = $arrayData["filter"]; + } + $start = 0; + if (isset($arrayData["start"])) { + $start = $arrayData["start"]; + } + $limit = 50; + if (isset($arrayData["limit"])) { + $limit = $arrayData["limit"]; + } + $this->throwExceptionIfNotExistsDynaForm($dynaFormUid, "", $this->arrayFieldNameForException["dynaFormUid"]); + + $criteria = new \Criteria("workflow"); + + $subcriteria = $criteria->getNewCriterion(\AppHistoryPeer::HISTORY_DATE, "%" . $filter . "%", \Criteria::LIKE); + + $criteria->addSelectColumn(\AppHistoryPeer::DYN_UID); + $criteria->addSelectColumn(\AppHistoryPeer::HISTORY_DATA); + $criteria->addSelectColumn(\AppHistoryPeer::HISTORY_DATE); + $criteria->addAnd(\AppHistoryPeer::DYN_UID, $dynaFormUid, \Criteria::EQUAL); + $criteria->addAnd(\AppHistoryPeer::OBJ_TYPE, "DYNAFORM", \Criteria::EQUAL); + $criteria->addAnd(\AppHistoryPeer::HISTORY_DATA, "%DYN_CONTENT_HISTORY%", \Criteria::LIKE); + $criteria->addAnd($subcriteria); + + $criteria->addDescendingOrderByColumn(\AppHistoryPeer::HISTORY_DATE); + $criteria->setOffset($start); + $criteria->setLimit($limit); + + $rsCriteria = \AppHistoryPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $data = array(); + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + $d = @unserialize($row["HISTORY_DATA"]); + $data[] = array( + "history_date" => $row["HISTORY_DATE"], + "dyn_uid" => $row["DYN_UID"], + "dyn_content_history" => isset($d["DYN_CONTENT_HISTORY"]) ? $d["DYN_CONTENT_HISTORY"] : "" + ); + } + return $data; + } catch (\Exception $e) { + throw $e; + } + } + } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php b/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php index 713d3ab6b..897754591 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php @@ -105,13 +105,33 @@ class Pmgmail { */ public function getDraftApp($app_uid, $index=1) { - $response = \AppCacheViewQuery::create() - ->filterByAppUid($app_uid) - ->filterByDelIndex($index) - ->find() - ->toArray(null, false, \BasePeer::TYPE_FIELDNAME); + $c = new \Criteria( 'workflow' ); + + $c->clearSelectColumns(); + $c->addSelectColumn( \AppCacheViewPeer::APP_NUMBER ); + $c->addSelectColumn( \AppCacheViewPeer::APP_STATUS ); + $c->addSelectColumn( \AppCacheViewPeer::DEL_INDEX ); + $c->addSelectColumn( \AppCacheViewPeer::APP_DEL_PREVIOUS_USER ); + $c->addSelectColumn( \AppCacheViewPeer::DEL_DELEGATE_DATE ); + $c->addSelectColumn( \AppCacheViewPeer::USR_UID ); + $c->addSelectColumn( \AppCacheViewPeer::PRO_UID ); + $c->addSelectColumn( \AppCacheViewPeer::APP_PRO_TITLE ); + $c->addSelectColumn( \AppCacheViewPeer::APP_TAS_TITLE ); + $c->addSelectColumn( \AppCacheViewPeer::DEL_THREAD_STATUS ); + $c->addSelectColumn( \AppCacheViewPeer::TAS_UID ); + $c->addSelectColumn( \AppCacheViewPeer::DEL_LAST_INDEX ); + + $c->add( \AppCacheViewPeer::APP_UID, $app_uid ); + $c->add( \AppCacheViewPeer::DEL_INDEX, $index ); - return $response; + $rs = \AppCacheViewPeer::doSelectRS( $c ); + $rs->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + + $rows = Array (); + while ($rs->next()) { + $rows[] = $rs->getRow(); + } + return $rows; } /** diff --git a/workflow/engine/src/ProcessMaker/Project/Workflow.php b/workflow/engine/src/ProcessMaker/Project/Workflow.php index ffaebadfd..63af4a074 100755 --- a/workflow/engine/src/ProcessMaker/Project/Workflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Workflow.php @@ -1298,6 +1298,25 @@ class Workflow extends Handler $arrayWorkflowData = (array)($workflowData); + foreach ($arrayWorkflowData["dynaforms"] as $key => $value) { + if ($arrayWorkflowData["dynaforms"][$key]["DYN_CONTENT"] != "") { + $dynaFormContent = $arrayWorkflowData["dynaforms"][$key]["DYN_CONTENT"]; + + foreach ($arrayWorkflowData["uid"] as $value2) { + $arrayAux = $value2; + + foreach ($arrayAux as $key3 => $value3) { + $uidOld = $key3; + $uid = $value3; + + $dynaFormContent = str_replace($uidOld, $uid, $dynaFormContent); + } + } + + $arrayWorkflowData["dynaforms"][$key]["DYN_CONTENT"] = $dynaFormContent; + } + } + //Workflow files foreach ($arrayWorkflowFile as $key => $value) { $arrayFile = $value; diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Light.php b/workflow/engine/src/ProcessMaker/Services/Api/Light.php index 1e7200ddb..f0f94a580 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Light.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Light.php @@ -751,11 +751,11 @@ class Light extends Api $dynaForm = new \ProcessMaker\BusinessModel\DynaForm(); $dynaForm->setFormatFieldNameInUppercase(false); \G::LoadClass("pmDynaform"); - $pmDynaForm = new \pmDynaform(); $_SESSION['PROCESS'] = $prj_uid; $return = array(); foreach ($request_data['formId'] as $dyn_uid) { $response = $dynaForm->getDynaForm($dyn_uid); + $pmDynaForm = new \pmDynaform(array("CURRENT_DYNAFORM" => $dyn_uid)); $result = $this->parserDataDynaForm($response); $result['formContent'] = (isset($result['formContent']) && $result['formContent'] != null)?json_decode($result['formContent']):""; $pmDynaForm->jsonr($result['formContent']); diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php index 81b145247..a509e7cb8 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php @@ -181,4 +181,25 @@ class DynaForm extends Api } } + /** + * @url POST /:prj_uid/dynaform/:dyn_uid/history + * + * @param string $dyn_uid {@min 32}{@max 32} + * @param string $prj_uid {@min 32}{@max 32} + * @param array $request_data + */ + public function doGetDynaFormHistory($dyn_uid, $prj_uid, $request_data) + { + try { + $dynaForm = new \ProcessMaker\BusinessModel\DynaForm(); + $dynaForm->setFormatFieldNameInUppercase(false); + + $response = $dynaForm->getDynaFormHistory($prj_uid, $dyn_uid, $request_data); + + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } + } diff --git a/workflow/public_html/pmGmail/sso.php b/workflow/public_html/pmGmail/sso.php index dc928d692..2d371bf64 100644 --- a/workflow/public_html/pmGmail/sso.php +++ b/workflow/public_html/pmGmail/sso.php @@ -1,26 +1,22 @@ make('session.store'); -$request = $sc->make('request'); +require_once (dirname(__FILE__) . '/../../../gulliver/system/class.bootstrap.php'); -$gmailToken = $request->query->get('gmailToken'); -$gmail = $request->query->get('gmail'); -$pmtoken = $request->query->get('pmtoken'); -$pmws = $request->query->get('pmws'); -$appUid = $request->query->get('appUid'); -$delIndex = $request->query->get('delIndex'); -$action = $request->query->get('action'); -$proUid = $request->query->has('proUid') ? $request->query->get('proUid') : ''; -$server = $request->query->get('server'); +$gmailToken = $_GET['gmailToken']; +$gmail = $_GET['gmail']; +$pmtoken = $_GET['pmtoken']; +$pmws = $_GET['pmws']; +$appUid = $_GET['appUid']; +$delIndex = $_GET['delIndex']; +$action = $_GET['action']; +$proUid = $_GET['proUid']; +$server = isset($_GET['server']) ? $_GET['server'] : ''; //First check if the feature is enabled in the license. $gCurl = curl_init( 'https://' . $server . '/api/1.0/' . $pmws . '/gmailIntegration/verifyGmailfeature/' ); curl_setopt( $gCurl, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $pmtoken ) ); curl_setopt( $gCurl, CURLOPT_RETURNTRANSFER, true); -curl_setopt( $gCurl, CURLOPT_SSL_VERIFYPEER,false); -curl_setopt( $gCurl, CURLOPT_CONNECTTIMEOUT ,0); +curl_setopt( $gCurl, CURLOPT_SSL_VERIFYPEER, false); +curl_setopt( $gCurl, CURLOPT_CONNECTTIMEOUT, 0); $gCurl_response = curl_exec( $gCurl ); curl_close($gCurl); @@ -37,7 +33,7 @@ $curl = curl_init( 'https://' . $server . '/api/1.0/' . $pmws . '/gmailIntegrati curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $pmtoken ) ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true); curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER,false); -curl_setopt( $curl, CURLOPT_CONNECTTIMEOUT ,0); +curl_setopt( $curl, CURLOPT_CONNECTTIMEOUT, 0); $curl_response = curl_exec( $curl ); curl_close($curl); @@ -49,7 +45,7 @@ if(count($decodedResp) > 1){ } //validationg if there is an actual PM session -if( !$session->has('USER_LOGGED') || $session->get('USER_LOGGED') != $decodedResp['0']->USR_UID){ +if( !isset($_SESSION['USER_LOGGED']) || $_SESSION['USER_LOGGED'] != $decodedResp['0']->USR_UID){ $url = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token='.$gmailToken; // init curl object @@ -72,32 +68,28 @@ if( !$session->has('USER_LOGGED') || $session->get('USER_LOGGED') != $decodedRes //If the email corresponds I get the username and with the gmail user_id the session is created. if($decodedResp['0']->USR_STATUS == "ACTIVE"){ //User Active! lets create the Session - $request = $sc->make('request'); - $session = $sc->make('session.store'); - - $session->setId($request->cookies->get($session->getName())); - $session->start(); - setcookie($session->getName(), $session->getId(), 0, '/'); - $request->setSession($session); - + @session_destroy(); + session_start(); + session_regenerate_id(); + if (PHP_VERSION < 5.2) { setcookie("workspaceSkin", "neoclasic", time() + (24 * 60 * 60), "/sys" . "neoclasic", "; HttpOnly"); } else { setcookie("workspaceSkin", "neoclasic", time() + (24 * 60 * 60), "/sys" . "neoclasic", null, false, true); } - $session->set('__EE_INSTALLATION__', 2); - $session->set('__EE_SW_PMLICENSEMANAGER__', 1); - $session->set('phpLastFileFound', ''); - $session->set('USERNAME_PREVIOUS1', 'admin'); - $session->set('USERNAME_PREVIOUS2', 'admin'); - $session->set('WORKSPACE', $pmws); - $session->set('USER_LOGGED', $decodedResp['0']->USR_UID); - $session->set('USR_USERNAME', $decodedResp['0']->USR_USERNAME); - $session->set('USR_FULLNAME', $decodedResp['0']->USR_FIRSTNAME. ' ' .$decodedResp['0']->USR_LASTNAME); - $session->set('__sw__', 1); - $session->save(); - //session created + $_SESSION = array(); + $_SESSION['__EE_INSTALLATION__'] = 2; + $_SESSION['__EE_SW_PMLICENSEMANAGER__'] = 1; + $_SESSION['phpLastFileFound'] = ''; + $_SESSION['USERNAME_PREVIOUS1'] = 'admin'; + $_SESSION['USERNAME_PREVIOUS2'] = 'admin'; + $_SESSION['WORKSPACE'] = $pmws; + $_SESSION['USER_LOGGED'] = $decodedResp['0']->USR_UID; + $_SESSION['USR_USERNAME'] = $decodedResp['0']->USR_USERNAME; + $_SESSION['USR_FULLNAME'] = $decodedResp['0']->USR_FIRSTNAME. ' ' .$decodedResp['0']->USR_LASTNAME; + $_SESSION['__sw__'] = 1; + //session created } else { echo Bootstrap::LoadTranslation( 'ID_USER_NOT_ACTIVE' ); die; @@ -115,7 +107,7 @@ if ($action == "draft"){ curl_setopt( $curlApp, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt( $curlApp, CURLOPT_RETURNTRANSFER, true); curl_setopt( $curlApp, CURLOPT_SSL_VERIFYPEER,false); - curl_setopt( $curlApp, CURLOPT_CONNECTTIMEOUT ,0); + curl_setopt( $curlApp, CURLOPT_CONNECTTIMEOUT, 0); $curl_response_app = curl_exec( $curlApp ); curl_close( $curlApp ); @@ -124,20 +116,12 @@ if ($action == "draft"){ header( 'location:' . $mainUrl ); die; } -$session->set('server', 'https://' . $server . '/sys'. $pmws .'/en/neoclassic/'); -$session->set('PMCase', 'cases/cases_Open?APP_UID='.$appUid.'&DEL_INDEX='.$delIndex.'&action='.$action.'&gmail=1'); +$_SESSION['server'] = 'https://' . $server . '/sys'. $pmws .'/en/neoclassic/'; +$_SESSION['PMCase'] = 'cases/cases_Open?APP_UID='.$appUid.'&DEL_INDEX='.$delIndex.'&action='.$action.'&gmail=1'; +$_SESSION['PMProcessmap'] = 'designer?prj_uid=' . $proUid . '&prj_readonly=true&app_uid=' . $appUid; +$_SESSION['PMUploadedDocuments'] = 'cases/ajaxListener?action=uploadedDocuments'; +$_SESSION['PMGeneratedDocuments'] = 'cases/casesGenerateDocumentPage_Ajax.php?actionAjax=casesGenerateDocumentPage'; -$session->set('PMProcessmap', 'designer?prj_uid=' . $proUid . '&prj_readonly=true&app_uid=' . $appUid); - -$session->set('PMCasesHistory', 'cases/ajaxListener?action=caseHistory'); - -$session->set('PMHistoryDynaform', 'cases/casesHistoryDynaformPage_Ajax?actionAjax=historyDynaformPage'); - -$session->set('PMUploadedDocuments', 'cases/ajaxListener?action=uploadedDocuments'); - -$session->set('PMGeneratedDocuments', 'cases/casesGenerateDocumentPage_Ajax.php?actionAjax=casesGenerateDocumentPage'); -ob_end_flush(); -$session->save(); header( 'location:' . 'templateForm.php' ); diff --git a/workflow/public_html/pmGmail/templateForm.php b/workflow/public_html/pmGmail/templateForm.php new file mode 100644 index 000000000..1051db733 --- /dev/null +++ b/workflow/public_html/pmGmail/templateForm.php @@ -0,0 +1,117 @@ + + + + + + Interface Processmaker + + + + + + + + +
+ + +
+
+ +
+
+
+ + +