Merge remote-tracking branch 'upstream/3.0.1.6' into 3.0.1.6-Gmail

This commit is contained in:
Dante
2015-11-11 15:46:54 -04:00
11 changed files with 144 additions and 16 deletions

View File

@@ -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();

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -851,6 +851,7 @@
<column name="PRO_SHOW_MAP" type="TINYINT" required="true" default="1"/>
<column name="PRO_SHOW_MESSAGE" type="TINYINT" required="true" default="1"/>
<column name="PRO_SUBPROCESS" type="TINYINT" required="true" default="0"/>
<column name="PRO_TRI_OPEN" type="VARCHAR" size="32" required="true" default=""/>
<column name="PRO_TRI_DELETED" type="VARCHAR" size="32" required="true" default=""/>
<column name="PRO_TRI_CANCELED" type="VARCHAR" size="32" required="true" default=""/>
<column name="PRO_TRI_PAUSED" type="VARCHAR" size="32" required="true" default=""/>

View File

@@ -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,

View File

@@ -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'] );

View File

@@ -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_'] );

View File

@@ -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;
}
}
}

View File

@@ -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;

View File

@@ -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']);

View File

@@ -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()));
}
}
}