diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index c4b753501..792e124e8 100755 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -968,7 +968,7 @@ class Processes } } } - + if (isset($oData->taskExtraProperties)) { foreach ($oData->taskExtraProperties as $key => $value) { $record = $value; @@ -3757,7 +3757,7 @@ class Processes // for public files $PUBLIC_ROOT_PATH = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'public' . PATH_SEP . $data->process['PRO_UID']; - + //Get WebEntry file names $arrayWebEntryFile = array(); @@ -4250,7 +4250,7 @@ class Processes if ($fsContent > 0) { $fileContent = fread( $fp, $fsContent ); //reading string $XmlContent $newFileName = $pathPublic . $sFileName; - + if (in_array($sFileName, $arrayWebEntryFile)) { continue; } @@ -4280,8 +4280,9 @@ class Processes public function createTaskExtraPropertiesRows ($aTaskExtraProperties) { if (count($aTaskExtraProperties) > 0) { - $oConfig = new Configuration(); foreach ($aTaskExtraProperties as $key => $row) { + $oConfig = new Configuration(); + if ($oConfig->exists( $row['CFG_UID'], $row['OBJ_UID'], $row['PRO_UID'], $row['USR_UID'], $row['APP_UID']) ) { $oConfig->remove( $row['CFG_UID'], $row['OBJ_UID'], $row['PRO_UID'], $row['USR_UID'], $row['APP_UID'] ); $oConfig->setDeleted(false); @@ -5167,7 +5168,7 @@ class Processes throw $e; } } - + public function truncateName($proTitle) { $proTitle = str_replace(".","_",$proTitle); diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index 99be0b1dc..098598a99 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -1357,13 +1357,27 @@ class workspaceTools } if ( !$flag && !is_null($flagFunction) ) { - $command = 'mysql' - . ' --host=' . $parameters['dbHost'] - . ' --user=' . $parameters['dbUser'] - . ' --password=' . str_replace('"', '\"', str_replace("'", "\'", quotemeta($parameters['dbPass'])))//no change! supports the type passwords: .\+*?[^]($)'"\"' - . ' --database=' . mysql_real_escape_string($database) - . ' --default_character_set utf8' - . ' --execute="SOURCE '.$filename.'"'; + $aHost = explode(':',$parameters['dbHost']); + $dbHost = $aHost[0]; + if(isset($aHost[1])){ + $dbPort = $aHost[1]; + $command = 'mysql' + . ' --host=' . $dbHost + . ' --port=' . $dbPort + . ' --user=' . $parameters['dbUser'] + . ' --password=' . str_replace('"', '\"', str_replace("'", "\'", quotemeta($parameters['dbPass'])))//no change! supports the type passwords: .\+*?[^]($)'"\"' + . ' --database=' . mysql_real_escape_string($database) + . ' --default_character_set utf8' + . ' --execute="SOURCE '.$filename.'"'; + }else{ + $command = 'mysql' + . ' --host=' . $dbHost + . ' --user=' . $parameters['dbUser'] + . ' --password=' . str_replace('"', '\"', str_replace("'", "\'", quotemeta($parameters['dbPass'])))//no change! supports the type passwords: .\+*?[^]($)'"\"' + . ' --database=' . mysql_real_escape_string($database) + . ' --default_character_set utf8' + . ' --execute="SOURCE '.$filename.'"'; + } shell_exec($command); } else { //If the safe mode of the server is actived @@ -1624,7 +1638,7 @@ class workspaceTools } list ($dbHost, $dbUser, $dbPass) = @explode(SYSTEM_HASH, G::decrypt(HASH_INSTALLATION, SYSTEM_HASH)); if($port != ''){ - $dbHost = $dbHost.$port; + $dbHost = $dbHost.$port; //127.0.0.1:3306 } $aParameters = array('dbHost'=>$dbHost,'dbUser'=>$dbUser,'dbPass'=>$dbPass); CLI::logging("> Connecting to system database in '$dbHost'\n"); diff --git a/workflow/engine/classes/model/Configuration.php b/workflow/engine/classes/model/Configuration.php index 51c8fb86c..ee81c1dc7 100755 --- a/workflow/engine/classes/model/Configuration.php +++ b/workflow/engine/classes/model/Configuration.php @@ -6,19 +6,17 @@ class Configuration extends BaseConfiguration $cnn = Propel::getConnection(ConfigurationPeer::DATABASE_NAME); try { - $configuration = new Configuration(); + $this->setCfgUid($arrayData["CFG_UID"]); + $this->setObjUid($arrayData["OBJ_UID"]); + $this->setCfgValue((isset($arrayData["CFG_VALUE"]))? $arrayData["CFG_VALUE"] : ""); + $this->setProUid($arrayData["PRO_UID"]); + $this->setUsrUid($arrayData["USR_UID"]); + $this->setAppUid($arrayData["APP_UID"]); - $configuration->setCfgUid($arrayData["CFG_UID"]); - $configuration->setObjUid($arrayData["OBJ_UID"]); - $configuration->setCfgValue((isset($arrayData["CFG_VALUE"]))? $arrayData["CFG_VALUE"] : ""); - $configuration->setProUid($arrayData["PRO_UID"]); - $configuration->setUsrUid($arrayData["USR_UID"]); - $configuration->setAppUid($arrayData["APP_UID"]); - - if ($configuration->validate()) { + if ($this->validate()) { $cnn->begin(); - $result = $configuration->save(); + $result = $this->save(); $cnn->commit(); @@ -27,7 +25,7 @@ class Configuration extends BaseConfiguration } else { $msg = ""; - foreach ($configuration->getValidationFailures() as $validationFailure) { + foreach ($this->getValidationFailures() as $validationFailure) { $msg = $msg . (($msg != "")? "\n" : "") . $validationFailure->getMessage(); } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php b/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php index 5de069bf5..44fbf9136 100755 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php @@ -21,7 +21,7 @@ class Variable $arrayData = array_change_key_case($arrayData, CASE_UPPER); - $this->existsName($processUid, $arrayData["VAR_NAME"]); + $this->existsName($processUid, $arrayData["VAR_NAME"], ""); $this->throwExceptionFieldDefinition($arrayData); @@ -142,7 +142,8 @@ class Variable if ($variable->validate()) { $cnn->begin(); if (isset($arrayData["VAR_NAME"])) { - $this->existsName($processUid, $arrayData["VAR_NAME"]); + $this->existsName($processUid, $arrayData["VAR_NAME"], $variableUid); + $variable->setVarName($arrayData["VAR_NAME"]); } if (isset($arrayData["VAR_FIELD_TYPE"])) { @@ -428,18 +429,30 @@ class Variable * @param string $variableName Name * */ - public function existsName($processUid, $variableName) + public function existsName($processUid, $variableName, $variableUidToExclude = "") { try { $criteria = new \Criteria("workflow"); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NAME); + + if ($variableUidToExclude != "") { + $criteria->add(\ProcessVariablesPeer::VAR_UID, $variableUidToExclude, \Criteria::NOT_EQUAL); + } + $criteria->add(\ProcessVariablesPeer::VAR_NAME, $variableName, \Criteria::EQUAL); $criteria->add(\ProcessVariablesPeer::PRJ_UID, $processUid, \Criteria::EQUAL); $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $rsCriteria->next(); - if ($rsCriteria->getRow()) { - throw new \Exception(\G::LoadTranslation("DYNAFIELD_ALREADY_EXIST")); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + if ($variableName == $row["VAR_NAME"]) { + throw new \Exception(\G::LoadTranslation("DYNAFIELD_ALREADY_EXIST")); + } } } catch (\Exception $e) { throw $e; @@ -517,7 +530,7 @@ class Variable $field = $pmDynaform->searchField($arrayVariable["dyn_uid"], $arrayVariable["field_id"]); $variableDbConnectionUid = $field !== null ? $field->dbConnection : ""; $variableSql = $field !== null ? $field->sql : ""; - + //Get data $_SESSION["PROCESS"] = $processUid; diff --git a/workflow/engine/templates/app/main.js b/workflow/engine/templates/app/main.js index 741144ebb..212456703 100644 --- a/workflow/engine/templates/app/main.js +++ b/workflow/engine/templates/app/main.js @@ -33,13 +33,15 @@ function openCaseNotesWindow(appUid1, delIndex, modalSw, appTitle, proUid, taskU var startRecord=0; var loadSize=10; + startRecord=startRecord+loadSize; + storeNotes = new Ext.data.JsonStore({ url: "../appProxy/getNotesList?appUid=" + appUid + "&delIndex=" + delIndex + "&pro=" + proUid + "&tas=" + taskUid, root: 'notes', totalProperty: 'totalCount', fields: ['USR_USERNAME','USR_FIRSTNAME','USR_LASTNAME','USR_FULL_NAME','NOTE_DATE','NOTE_CONTENT', 'USR_UID', 'user'], baseParams:{ - start:startRecord, + start:0, limit:startRecord+loadSize }, listeners:{ diff --git a/workflow/engine/templates/designer/index.html b/workflow/engine/templates/designer/index.html index 2ec0e90b5..01a77a8be 100644 --- a/workflow/engine/templates/designer/index.html +++ b/workflow/engine/templates/designer/index.html @@ -101,13 +101,14 @@ +