diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php
index 64391c24c..0946c52e1 100644
--- a/workflow/engine/classes/class.pmDynaform.php
+++ b/workflow/engine/classes/class.pmDynaform.php
@@ -27,7 +27,7 @@ class pmDynaform
$this->fields["APP_UID"] = null;
}
if (isset($this->fields["APP_DATA"]["DYN_CONTENT_HISTORY"])) {
- $this->record["DYN_CONTENT"] = $this->fields["APP_DATA"]["DYN_CONTENT_HISTORY"];
+ $this->record["DYN_CONTENT"] = $this->fields["APP_DATA"]["DYN_CONTENT_HISTORY"];
}
}
@@ -314,6 +314,19 @@ class pmDynaform
$json->data->value = $links;
$json->data->label = isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : "[]";
}
+ if ($key === "type" && ($value === "file")) {
+ //todo
+ $oCriteria = new Criteria("workflow");
+ $oCriteria->addSelectColumn(ProcessVariablesPeer::INP_DOC_UID);
+ $oCriteria->add(ProcessVariablesPeer::VAR_NAME, $json->variable);
+ $rs = ProcessVariablesPeer::doSelectRS($oCriteria);
+ $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $rs->next();
+ $row = $rs->getRow();
+ if (isset($row["INP_DOC_UID"])) {
+ $json->inputDocuments = array($row["INP_DOC_UID"]);
+ }
+ }
//synchronize var_label
if ($key === "type" && ($value === "dropdown" || $value === "suggest")) {
if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
@@ -805,6 +818,64 @@ class pmDynaform
}
}
+ public function synchronizeInputDocument($processUid, $inputDocument)
+ {
+ $criteria = new Criteria("workflow");
+ $criteria->addSelectColumn(DynaformPeer::DYN_UID);
+ $criteria->addSelectColumn(DynaformPeer::DYN_CONTENT);
+ $criteria->add(DynaformPeer::PRO_UID, $processUid, Criteria::EQUAL);
+ $rsCriteria = DynaformPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ while ($rsCriteria->next()) {
+ $aRow = $rsCriteria->getRow();
+ $json = G::json_decode($aRow['DYN_CONTENT']);
+ $this->jsonsid($json, $inputDocument);
+ $json2 = G::json_encode($json);
+ //update dynaform
+ if ($json2 !== $aRow['DYN_CONTENT']) {
+ $con = Propel::getConnection(DynaformPeer::DATABASE_NAME);
+ $con->begin();
+ $oPro = DynaformPeer::retrieveByPk($aRow["DYN_UID"]);
+ $oPro->setDynContent($json2);
+ $oPro->save();
+ $con->commit();
+ }
+ }
+ }
+
+ private function jsonsid(&$json, $inputDocument)
+ {
+ foreach ($json as $key => $value) {
+ $sw1 = is_array($value);
+ $sw2 = is_object($value);
+ if ($sw1 || $sw2) {
+ $this->jsonsid($value, $inputDocument);
+ }
+ if (!$sw1 && !$sw2) {
+ if ($key === "type" && $json->type === "file" && $json->variable !== "") {
+ $a = new Criteria("workflow");
+ $a->addSelectColumn(ProcessVariablesPeer::INP_DOC_UID);
+ $a->add(ProcessVariablesPeer::VAR_NAME, $json->variable, Criteria::EQUAL);
+ $ds = DynaformPeer::doSelectRS($a);
+ $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $ds->next();
+ $row = $ds->getRow();
+ if (isset($row) && $row["INP_DOC_UID"] === $inputDocument["INP_DOC_UID"]) {
+ if (isset($json->size)) {
+ $json->size = $inputDocument["INP_DOC_MAX_FILESIZE"];
+ }
+ if (isset($json->sizeUnity)) {
+ $json->sizeUnity = $inputDocument["INP_DOC_MAX_FILESIZE_UNIT"];
+ }
+ if (isset($json->extensions)) {
+ $json->extensions = $inputDocument["INP_DOC_TYPE_FILE"];
+ }
+ }
+ }
+ }
+ }
+ }
+
public function isUsed($processUid, $variable)
{
$criteria = new Criteria("workflow");
diff --git a/workflow/engine/classes/model/map/ProcessVariablesMapBuilder.php b/workflow/engine/classes/model/map/ProcessVariablesMapBuilder.php
index 06391afec..403c0c2dd 100644
--- a/workflow/engine/classes/model/map/ProcessVariablesMapBuilder.php
+++ b/workflow/engine/classes/model/map/ProcessVariablesMapBuilder.php
@@ -87,6 +87,8 @@ class ProcessVariablesMapBuilder
$tMap->addColumn('VAR_ACCEPTED_VALUES', 'VarAcceptedValues', 'string', CreoleTypes::LONGVARCHAR, false, null);
+ $tMap->addColumn('INP_DOC_UID', 'InpDocUid', 'string', CreoleTypes::VARCHAR, false, 32);
+
} // doBuild()
} // ProcessVariablesMapBuilder
diff --git a/workflow/engine/classes/model/om/BaseProcessVariables.php b/workflow/engine/classes/model/om/BaseProcessVariables.php
index 0beeb5bb6..bc9526da9 100644
--- a/workflow/engine/classes/model/om/BaseProcessVariables.php
+++ b/workflow/engine/classes/model/om/BaseProcessVariables.php
@@ -93,6 +93,12 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
*/
protected $var_accepted_values;
+ /**
+ * The value for the inp_doc_uid field.
+ * @var string
+ */
+ protected $inp_doc_uid = '';
+
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
@@ -228,6 +234,17 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
return $this->var_accepted_values;
}
+ /**
+ * Get the [inp_doc_uid] column value.
+ *
+ * @return string
+ */
+ public function getInpDocUid()
+ {
+
+ return $this->inp_doc_uid;
+ }
+
/**
* Set the value of [var_uid] column.
*
@@ -470,6 +487,28 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
} // setVarAcceptedValues()
+ /**
+ * Set the value of [inp_doc_uid] column.
+ *
+ * @param string $v new value
+ * @return void
+ */
+ public function setInpDocUid($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->inp_doc_uid !== $v || $v === '') {
+ $this->inp_doc_uid = $v;
+ $this->modifiedColumns[] = ProcessVariablesPeer::INP_DOC_UID;
+ }
+
+ } // setInpDocUid()
+
/**
* Hydrates (populates) the object variables with values from the database resultset.
*
@@ -509,12 +548,14 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
$this->var_accepted_values = $rs->getString($startcol + 10);
+ $this->inp_doc_uid = $rs->getString($startcol + 11);
+
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
- return $startcol + 11; // 11 = ProcessVariablesPeer::NUM_COLUMNS - ProcessVariablesPeer::NUM_LAZY_LOAD_COLUMNS).
+ return $startcol + 12; // 12 = ProcessVariablesPeer::NUM_COLUMNS - ProcessVariablesPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating ProcessVariables object", $e);
@@ -751,6 +792,9 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
case 10:
return $this->getVarAcceptedValues();
break;
+ case 11:
+ return $this->getInpDocUid();
+ break;
default:
return null;
break;
@@ -782,6 +826,7 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
$keys[8] => $this->getVarNull(),
$keys[9] => $this->getVarDefault(),
$keys[10] => $this->getVarAcceptedValues(),
+ $keys[11] => $this->getInpDocUid(),
);
return $result;
}
@@ -846,6 +891,9 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
case 10:
$this->setVarAcceptedValues($value);
break;
+ case 11:
+ $this->setInpDocUid($value);
+ break;
} // switch()
}
@@ -913,6 +961,10 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
$this->setVarAcceptedValues($arr[$keys[10]]);
}
+ if (array_key_exists($keys[11], $arr)) {
+ $this->setInpDocUid($arr[$keys[11]]);
+ }
+
}
/**
@@ -968,6 +1020,10 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
$criteria->add(ProcessVariablesPeer::VAR_ACCEPTED_VALUES, $this->var_accepted_values);
}
+ if ($this->isColumnModified(ProcessVariablesPeer::INP_DOC_UID)) {
+ $criteria->add(ProcessVariablesPeer::INP_DOC_UID, $this->inp_doc_uid);
+ }
+
return $criteria;
}
@@ -1042,6 +1098,8 @@ abstract class BaseProcessVariables extends BaseObject implements Persistent
$copyObj->setVarAcceptedValues($this->var_accepted_values);
+ $copyObj->setInpDocUid($this->inp_doc_uid);
+
$copyObj->setNew(true);
diff --git a/workflow/engine/classes/model/om/BaseProcessVariablesPeer.php b/workflow/engine/classes/model/om/BaseProcessVariablesPeer.php
index 486e5b688..2ba345ffe 100644
--- a/workflow/engine/classes/model/om/BaseProcessVariablesPeer.php
+++ b/workflow/engine/classes/model/om/BaseProcessVariablesPeer.php
@@ -25,7 +25,7 @@ abstract class BaseProcessVariablesPeer
const CLASS_DEFAULT = 'classes.model.ProcessVariables';
/** The total number of columns. */
- const NUM_COLUMNS = 11;
+ const NUM_COLUMNS = 12;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -64,6 +64,9 @@ abstract class BaseProcessVariablesPeer
/** the column name for the VAR_ACCEPTED_VALUES field */
const VAR_ACCEPTED_VALUES = 'PROCESS_VARIABLES.VAR_ACCEPTED_VALUES';
+ /** the column name for the INP_DOC_UID field */
+ const INP_DOC_UID = 'PROCESS_VARIABLES.INP_DOC_UID';
+
/** The PHP to DB Name Mapping */
private static $phpNameMap = null;
@@ -75,10 +78,10 @@ abstract class BaseProcessVariablesPeer
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
private static $fieldNames = array (
- BasePeer::TYPE_PHPNAME => array ('VarUid', 'PrjUid', 'VarName', 'VarFieldType', 'VarFieldSize', 'VarLabel', 'VarDbconnection', 'VarSql', 'VarNull', 'VarDefault', 'VarAcceptedValues', ),
- BasePeer::TYPE_COLNAME => array (ProcessVariablesPeer::VAR_UID, ProcessVariablesPeer::PRJ_UID, ProcessVariablesPeer::VAR_NAME, ProcessVariablesPeer::VAR_FIELD_TYPE, ProcessVariablesPeer::VAR_FIELD_SIZE, ProcessVariablesPeer::VAR_LABEL, ProcessVariablesPeer::VAR_DBCONNECTION, ProcessVariablesPeer::VAR_SQL, ProcessVariablesPeer::VAR_NULL, ProcessVariablesPeer::VAR_DEFAULT, ProcessVariablesPeer::VAR_ACCEPTED_VALUES, ),
- BasePeer::TYPE_FIELDNAME => array ('VAR_UID', 'PRJ_UID', 'VAR_NAME', 'VAR_FIELD_TYPE', 'VAR_FIELD_SIZE', 'VAR_LABEL', 'VAR_DBCONNECTION', 'VAR_SQL', 'VAR_NULL', 'VAR_DEFAULT', 'VAR_ACCEPTED_VALUES', ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, )
+ BasePeer::TYPE_PHPNAME => array ('VarUid', 'PrjUid', 'VarName', 'VarFieldType', 'VarFieldSize', 'VarLabel', 'VarDbconnection', 'VarSql', 'VarNull', 'VarDefault', 'VarAcceptedValues', 'InpDocUid', ),
+ BasePeer::TYPE_COLNAME => array (ProcessVariablesPeer::VAR_UID, ProcessVariablesPeer::PRJ_UID, ProcessVariablesPeer::VAR_NAME, ProcessVariablesPeer::VAR_FIELD_TYPE, ProcessVariablesPeer::VAR_FIELD_SIZE, ProcessVariablesPeer::VAR_LABEL, ProcessVariablesPeer::VAR_DBCONNECTION, ProcessVariablesPeer::VAR_SQL, ProcessVariablesPeer::VAR_NULL, ProcessVariablesPeer::VAR_DEFAULT, ProcessVariablesPeer::VAR_ACCEPTED_VALUES, ProcessVariablesPeer::INP_DOC_UID, ),
+ BasePeer::TYPE_FIELDNAME => array ('VAR_UID', 'PRJ_UID', 'VAR_NAME', 'VAR_FIELD_TYPE', 'VAR_FIELD_SIZE', 'VAR_LABEL', 'VAR_DBCONNECTION', 'VAR_SQL', 'VAR_NULL', 'VAR_DEFAULT', 'VAR_ACCEPTED_VALUES', 'INP_DOC_UID', ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, )
);
/**
@@ -88,10 +91,10 @@ abstract class BaseProcessVariablesPeer
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/
private static $fieldKeys = array (
- BasePeer::TYPE_PHPNAME => array ('VarUid' => 0, 'PrjUid' => 1, 'VarName' => 2, 'VarFieldType' => 3, 'VarFieldSize' => 4, 'VarLabel' => 5, 'VarDbconnection' => 6, 'VarSql' => 7, 'VarNull' => 8, 'VarDefault' => 9, 'VarAcceptedValues' => 10, ),
- BasePeer::TYPE_COLNAME => array (ProcessVariablesPeer::VAR_UID => 0, ProcessVariablesPeer::PRJ_UID => 1, ProcessVariablesPeer::VAR_NAME => 2, ProcessVariablesPeer::VAR_FIELD_TYPE => 3, ProcessVariablesPeer::VAR_FIELD_SIZE => 4, ProcessVariablesPeer::VAR_LABEL => 5, ProcessVariablesPeer::VAR_DBCONNECTION => 6, ProcessVariablesPeer::VAR_SQL => 7, ProcessVariablesPeer::VAR_NULL => 8, ProcessVariablesPeer::VAR_DEFAULT => 9, ProcessVariablesPeer::VAR_ACCEPTED_VALUES => 10, ),
- BasePeer::TYPE_FIELDNAME => array ('VAR_UID' => 0, 'PRJ_UID' => 1, 'VAR_NAME' => 2, 'VAR_FIELD_TYPE' => 3, 'VAR_FIELD_SIZE' => 4, 'VAR_LABEL' => 5, 'VAR_DBCONNECTION' => 6, 'VAR_SQL' => 7, 'VAR_NULL' => 8, 'VAR_DEFAULT' => 9, 'VAR_ACCEPTED_VALUES' => 10, ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, )
+ BasePeer::TYPE_PHPNAME => array ('VarUid' => 0, 'PrjUid' => 1, 'VarName' => 2, 'VarFieldType' => 3, 'VarFieldSize' => 4, 'VarLabel' => 5, 'VarDbconnection' => 6, 'VarSql' => 7, 'VarNull' => 8, 'VarDefault' => 9, 'VarAcceptedValues' => 10, 'InpDocUid' => 11, ),
+ BasePeer::TYPE_COLNAME => array (ProcessVariablesPeer::VAR_UID => 0, ProcessVariablesPeer::PRJ_UID => 1, ProcessVariablesPeer::VAR_NAME => 2, ProcessVariablesPeer::VAR_FIELD_TYPE => 3, ProcessVariablesPeer::VAR_FIELD_SIZE => 4, ProcessVariablesPeer::VAR_LABEL => 5, ProcessVariablesPeer::VAR_DBCONNECTION => 6, ProcessVariablesPeer::VAR_SQL => 7, ProcessVariablesPeer::VAR_NULL => 8, ProcessVariablesPeer::VAR_DEFAULT => 9, ProcessVariablesPeer::VAR_ACCEPTED_VALUES => 10, ProcessVariablesPeer::INP_DOC_UID => 11, ),
+ BasePeer::TYPE_FIELDNAME => array ('VAR_UID' => 0, 'PRJ_UID' => 1, 'VAR_NAME' => 2, 'VAR_FIELD_TYPE' => 3, 'VAR_FIELD_SIZE' => 4, 'VAR_LABEL' => 5, 'VAR_DBCONNECTION' => 6, 'VAR_SQL' => 7, 'VAR_NULL' => 8, 'VAR_DEFAULT' => 9, 'VAR_ACCEPTED_VALUES' => 10, 'INP_DOC_UID' => 11, ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, )
);
/**
@@ -214,6 +217,8 @@ abstract class BaseProcessVariablesPeer
$criteria->addSelectColumn(ProcessVariablesPeer::VAR_ACCEPTED_VALUES);
+ $criteria->addSelectColumn(ProcessVariablesPeer::INP_DOC_UID);
+
}
const COUNT = 'COUNT(PROCESS_VARIABLES.VAR_UID)';
diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml
index 9bff54f9f..de646dd5c 100755
--- a/workflow/engine/config/schema.xml
+++ b/workflow/engine/config/schema.xml
@@ -3860,6 +3860,7 @@