diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php
index 38f2de768..6fa353407 100755
--- a/gulliver/system/class.g.php
+++ b/gulliver/system/class.g.php
@@ -1727,7 +1727,7 @@ class G
* @param type Array $aFields
* @return type String
*/
- public function replaceDataGridField($sContent, $aFields)
+ public function replaceDataGridField($sContent, $aFields, $nl2brRecursive = true)
{
$nrt = array("\n", "\r", "\t");
$nrthtml = array("(n /)", "(r /)", "(t /)");
@@ -1760,6 +1760,13 @@ class G
if (isset($aFields[$grdName]) && is_array($aFields[$grdName])) {
foreach ($aFields[$grdName] as $aRow) {
+ if ($nl2brRecursive) {
+ foreach ($aRow as $sKey => $vValue) {
+ if (!is_array($vValue)) {
+ $aRow[$sKey] = nl2br($aRow[$sKey]);
+ }
+ }
+ }
$strData = $strData . G::replaceDataField($arrayMatch2[2], $aRow);
}
}
@@ -1778,6 +1785,14 @@ class G
$sContent = $strContentAux;
+ if ($nl2brRecursive) {
+ foreach ($aFields as $sKey => $vValue) {
+ if (!is_array($vValue)) {
+ $aFields[$sKey] = nl2br($aFields[$sKey]);
+ }
+ }
+ }
+
$sContent = G::replaceDataField($sContent, $aFields);
return $sContent;
diff --git a/gulliver/system/class.xmlform.php b/gulliver/system/class.xmlform.php
index d08f57f43..54e830d8c 100755
--- a/gulliver/system/class.xmlform.php
+++ b/gulliver/system/class.xmlform.php
@@ -4409,8 +4409,8 @@ class XmlForm_Field_Date extends XmlForm_Field_SimpleText
} else {
$isRequired = '0';
}
- if ($v == 'today') {
- $mask = str_replace( "%", "", $this->mask );
+ $mask = str_replace( "%", "", $this->mask );
+ if (trim($v) !== "") {
$v = date( masktophp($mask, $v) );
}
$html = 'NSRequiredValue() . ' class="module_app_input___gray" id="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" type ="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" value="' . $this->htmlentities( $v, ENT_COMPAT, 'utf-8' ) . '" pm:required="' . $isRequired . '" style="display:none;' . htmlentities( $this->style, ENT_COMPAT, 'utf-8' ) . '" ' . $this->NSGridType() . '/>' . htmlentities( $v, ENT_COMPAT, 'utf-8' );
diff --git a/workflow/engine/bin/cron.php b/workflow/engine/bin/cron.php
index ec985c7a2..e9eb0eca7 100755
--- a/workflow/engine/bin/cron.php
+++ b/workflow/engine/bin/cron.php
@@ -3,10 +3,6 @@
* cron.php
* @package workflow-engine-bin
*/
-ini_set('display_errors', 1);
-error_reporting(E_ALL);
-ini_set('memory_limit', '300M'); // nore: this may need to be higher for many projects
-$mem_limit = (int) ini_get('memory_limit');
if ( !defined('PATH_SEP') ) {
define('PATH_SEP', ( substr(PHP_OS, 0, 3) == 'WIN' ) ? '\\' : '/');
diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php
index 5d5ea8312..928eb67a0 100755
--- a/workflow/engine/bin/cron_single.php
+++ b/workflow/engine/bin/cron_single.php
@@ -3,10 +3,6 @@
* cron_single.php
* @package workflow-engine-bin
*/
-ini_set('display_errors', 1);
-error_reporting(E_ALL);
-
-ini_set("memory_limit", "256M");
if (!defined('SYS_LANG')) {
define('SYS_LANG', 'en');
@@ -823,11 +819,11 @@ function executeCaseSelfService()
$taskSelfServiceTimeUnit = $row["TAS_SELFSERVICE_TIME_UNIT"];
$taskSelfServiceTriggerUid = $row["TAS_SELFSERVICE_TRIGGER_UID"];
- if ($calendar->pmCalendarUid == '') {
- $calendar->getCalendar(null, $appcacheProUid, $taskUid);
- $calendar->getCalendarData();
+ if ($calendar->pmCalendarUid == '') {
+ $calendar->getCalendar(null, $appcacheProUid, $taskUid);
+ $calendar->getCalendarData();
}
-
+
$dueDate = $calendar->calculateDate(
$appcacheDelDelegateDate,
$taskSelfServiceTime,
diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php
index 0aa369cd9..0491ab691 100755
--- a/workflow/engine/classes/class.case.php
+++ b/workflow/engine/classes/class.case.php
@@ -3906,12 +3906,12 @@ class Cases
if (AppDelegationPeer::doCount($oCriteria) == 1) {
$aFields['APP_STATUS'] = 'CANCELLED';
$oApplication->update($aFields);
-
- G::LoadClass('reportTables');
- require_once 'classes/model/AdditionalTables.php';
+
+ G::LoadClass('reportTables');
+ require_once 'classes/model/AdditionalTables.php';
$oReportTables = new ReportTables();
- $addtionalTables = new additionalTables();
- $oReportTables->updateTables($aFields['PRO_UID'], $aFields['APP_UID'], $aFields['APP_NUMBER'], $aFields['APP_DATA']);
+ $addtionalTables = new additionalTables();
+ $oReportTables->updateTables($aFields['PRO_UID'], $aFields['APP_UID'], $aFields['APP_NUMBER'], $aFields['APP_DATA']);
$addtionalTables->updateReportTables($aFields['PRO_UID'], $aFields['APP_UID'], $aFields['APP_NUMBER'], $aFields['APP_DATA'], $aFields['APP_STATUS']);
}
$this->CloseCurrentDelegation($sApplicationUID, $iIndex);
@@ -4932,9 +4932,9 @@ class Cases
throw (new Exception("Template file \"$fileTemplate\" does not exist."));
}
- $sBody = G::replaceDataGridField(file_get_contents($fileTemplate), $aFields);
+ $sBody = G::replaceDataGridField(file_get_contents($fileTemplate), $aFields, false);
} else {
- $sBody = nl2br(G::replaceDataGridField($aTaskInfo["TAS_DEF_MESSAGE"], $aFields));
+ $sBody = nl2br(G::replaceDataGridField($aTaskInfo["TAS_DEF_MESSAGE"], $aFields, false));
}
G::LoadClass("tasks");
@@ -5910,7 +5910,7 @@ class Cases
$oCriteria->add(AppMessagePeer::APP_MSG_SHOW_MESSAGE, 1);
}
$oCriteria->addAscendingOrderByColumn(AppMessagePeer::APP_MSG_DATE);
-
+
$oDataset = AppMessagePeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
@@ -6759,27 +6759,27 @@ class Cases
}
}
- public function ordProcess ($a, $b)
+ public function ordProcess ($a, $b)
{
if ($this->sort == '') {
$this->sort = 'APP_MSG_DATE';
- }
- if ($this->dir=='ASC') {
- if ($a[$this->sort] > $b[$this->sort]) {
- return 1;
- } elseif ($a[$this->sort] < $b[$this->sort]) {
- return - 1;
- } else {
- return 0;
- }
- } else {
- if ($a[$this->sort] > $b[$this->sort]) {
- return - 1;
- } elseif ($a[$this->sort] < $b[$this->sort]) {
- return 1;
- } else {
- return 0;
- }
- }
+ }
+ if ($this->dir=='ASC') {
+ if ($a[$this->sort] > $b[$this->sort]) {
+ return 1;
+ } elseif ($a[$this->sort] < $b[$this->sort]) {
+ return - 1;
+ } else {
+ return 0;
+ }
+ } else {
+ if ($a[$this->sort] > $b[$this->sort]) {
+ return - 1;
+ } elseif ($a[$this->sort] < $b[$this->sort]) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
}
}
\ No newline at end of file
diff --git a/workflow/engine/classes/class.dynaformEditor.php b/workflow/engine/classes/class.dynaformEditor.php
index d084fd112..4a41d8837 100755
--- a/workflow/engine/classes/class.dynaformEditor.php
+++ b/workflow/engine/classes/class.dynaformEditor.php
@@ -213,7 +213,9 @@ class dynaformEditor extends WebResource
$G_PUBLISH->AddContent('panel-tab', G::LoadTranslation("ID_HTML"), $sName . '[5]', 'dynaformEditor.changeToHtmlCode', 'dynaformEditor.saveCurrentView');
}
$G_PUBLISH->AddContent('panel-tab', G::LoadTranslation("ID_FIELDS_LIST"), $sName . '[6]', 'dynaformEditor.changeToFieldsList', 'dynaformEditor.saveCurrentView');
- $G_PUBLISH->AddContent('panel-tab', G::LoadTranslation("ID_JAVASCRIPTS"), $sName . '[7]', 'dynaformEditor.changeToJavascripts', 'dynaformEditor.saveCurrentView');
+ if ($Properties["DYN_TYPE"] != "grid") {
+ $G_PUBLISH->AddContent('panel-tab', G::LoadTranslation("ID_JAVASCRIPTS"), $sName . '[7]', 'dynaformEditor.changeToJavascripts', 'dynaformEditor.saveCurrentView');
+ }
$G_PUBLISH->AddContent('panel-tab', G::LoadTranslation("ID_PROPERTIES"), $sName . '[8]', 'dynaformEditor.changeToProperties', 'dynaformEditor.saveCurrentView');
//for showHide tab option @Neyek
diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php
index 21499df7a..3ef625110 100755
--- a/workflow/engine/classes/class.wsBase.php
+++ b/workflow/engine/classes/class.wsBase.php
@@ -970,7 +970,7 @@ class wsBase
$Fields = array_merge( $oldFields['APP_DATA'], $appFields );
}
- $sBody = G::replaceDataGridField(file_get_contents($fileTemplate), $Fields);
+ $sBody = G::replaceDataGridField(file_get_contents($fileTemplate), $Fields, false);
$hasEmailFrom = preg_match( '/(.+)@(.+)\.(.+)/', $sFrom, $match );
if (!$hasEmailFrom || strpos($sFrom, $aSetup["MESS_ACCOUNT"]) === false) {
@@ -3288,7 +3288,7 @@ class wsBase
return $result;
}
}
-
+
/**
* ClaimCase
*
diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php
index d3fcd2eae..478172cd9 100755
--- a/workflow/engine/classes/class.wsTools.php
+++ b/workflow/engine/classes/class.wsTools.php
@@ -141,10 +141,10 @@ class workspaceTools
$this->dbHost = $values["DB_HOST"];
$this->dbUser = $values["DB_USER"];
$this->dbPass = $values["DB_PASS"];
-
- $this->dbRbacHost = $values["DB_RBAC_HOST"];
- $this->dbRbacName = $values["DB_RBAC_NAME"];
- $this->dbRbacUser = $values["DB_RBAC_USER"];
+
+ $this->dbRbacHost = $values["DB_RBAC_HOST"];
+ $this->dbRbacName = $values["DB_RBAC_NAME"];
+ $this->dbRbacUser = $values["DB_RBAC_USER"];
$this->dbRbacPass = $values["DB_RBAC_PASS"];
return $this->dbInfo = $values;
@@ -361,7 +361,7 @@ class workspaceTools
}
return $this->db;
}
-
+
/**
* Close any database opened with getDatabase
*/
@@ -690,7 +690,7 @@ class workspaceTools
}
$oDataBase = $this->getDatabase($rbac);
-
+
$oDataBase->iFetchType = MYSQL_NUM;
$oDataBase->logQuery(count($changes));
@@ -1356,13 +1356,6 @@ class workspaceTools
$stop = microtime(true);
$final = $stop - $start;
CLI::logging("<*> Database Upgrade Process took $final seconds.\n");
-
- $start = microtime(true);
- CLI::logging("> Updating cases directories structure...\n");
- $workspace->upgradeCasesDirectoryStructure($workspaceName);
- $stop = microtime(true);
- $final = $stop - $start;
- CLI::logging("<*> Database Upgrade Structure Process took $final seconds.\n");
}
$start = microtime(true);
CLI::logging("> Updating cache view...\n");
@@ -1431,11 +1424,11 @@ class workspaceTools
return $result;
}
-
+
public function backupLogFiles()
{
$config = System::getSystemConfiguration();
-
+
clearstatcache();
$path = PATH_DATA . "log" . PATH_SEP;
$filePath = $path . "cron.log";
diff --git a/workflow/engine/classes/model/Event.php b/workflow/engine/classes/model/Event.php
index 630463ff5..e06b8febb 100755
--- a/workflow/engine/classes/model/Event.php
+++ b/workflow/engine/classes/model/Event.php
@@ -303,7 +303,7 @@ class Event extends BaseEvent
$oTP = new TemplatePower( PATH_TPL . 'events' . PATH_SEP . 'sendMessage.tpl' );
$oTP->prepare();
- $oTP->assign( 'from', 'info@processmaker.com' );
+ $oTP->assign( 'from', '' );
$oTP->assign( 'subject', addslashes( $aData['EVN_ACTION_PARAMETERS']['SUBJECT'] ) );
$oTP->assign( 'template', $aData['EVN_ACTION_PARAMETERS']['TEMPLATE'] );
$oTP->assign( 'timestamp', date( "l jS \of F Y h:i:s A" ) );
@@ -504,9 +504,9 @@ class Event extends BaseEvent
$when = (float) $aData['EVN_WHEN'];
$whenOccurs = $aData['EVN_WHEN_OCCURS'];
- if ($oCalendar->pmCalendarUid == '') {
- $oCalendar->getCalendar(null, $aData['PRO_UID'], $aData['TAS_UID']);
- $oCalendar->getCalendarData();
+ if ($oCalendar->pmCalendarUid == '') {
+ $oCalendar->getCalendar(null, $aData['PRO_UID'], $aData['TAS_UID']);
+ $oCalendar->getCalendarData();
}
if ($whenOccurs == 'AFTER_TIME') {
@@ -620,9 +620,9 @@ class Event extends BaseEvent
$when = (float) $aData['EVN_WHEN'];
$whenOccurs = $aData['EVN_WHEN_OCCURS'];
- if ($oCalendar->pmCalendarUid == '') {
- $oCalendar->getCalendar(null, $aData['PRO_UID'], $aData['TAS_UID']);
- $oCalendar->getCalendarData();
+ if ($oCalendar->pmCalendarUid == '') {
+ $oCalendar->getCalendar(null, $aData['PRO_UID'], $aData['TAS_UID']);
+ $oCalendar->getCalendarData();
}
if ($whenOccurs == 'AFTER_TIME') {
@@ -880,9 +880,9 @@ class Event extends BaseEvent
$when = $aData['EVN_WHEN']; //how many days
$whenOccurs = $aData['EVN_WHEN_OCCURS']; //time on action (AFTER_TIME/TASK_STARTED)
- if ($oCalendar->pmCalendarUid == '') {
- $oCalendar->getCalendar(null, $aData['PRO_UID'], $aData['TAS_UID']);
- $oCalendar->getCalendarData();
+ if ($oCalendar->pmCalendarUid == '') {
+ $oCalendar->getCalendar(null, $aData['PRO_UID'], $aData['TAS_UID']);
+ $oCalendar->getCalendarData();
}
if ($whenOccurs == 'TASK_STARTED') {
diff --git a/workflow/engine/classes/model/OutputDocument.php b/workflow/engine/classes/model/OutputDocument.php
index 5c0b0c2e1..e2061789b 100755
--- a/workflow/engine/classes/model/OutputDocument.php
+++ b/workflow/engine/classes/model/OutputDocument.php
@@ -477,7 +477,7 @@ class OutputDocument extends BaseOutputDocument
public function generate($sUID, $aFields, $sPath, $sFilename, $sContent, $sLandscape = false, $sTypeDocToGener = 'BOTH', $aProperties = array())
{
if (($sUID != '') && is_array($aFields) && ($sPath != '')) {
- $sContent = nl2br(G::replaceDataGridField($sContent, $aFields));
+ $sContent = G::replaceDataGridField($sContent, $aFields);
G::verifyPath($sPath, true);
diff --git a/workflow/engine/classes/model/Process.php b/workflow/engine/classes/model/Process.php
index b43b75062..420ef6c92 100755
--- a/workflow/engine/classes/model/Process.php
+++ b/workflow/engine/classes/model/Process.php
@@ -725,7 +725,7 @@ class Process extends BaseProcess
$process['PRO_CREATE_DATE'] = date( $creationDateMask, mktime( $h, $i, $s, $m, $d, $y ) );
}
- $process['PRO_CATEGORY_LABEL'] = trim( $process['PRO_CATEGORY'] ) != '' ? $process['CATEGORY_NAME'] : G::LoadTranslation( 'ID_PROCESS_NO_CATEGORY' );
+ $process['PRO_CATEGORY_LABEL'] = trim( $process['PRO_CATEGORY'] ) != '' ? $process['CATEGORY_NAME'] : '- ' . G::LoadTranslation( 'ID_PROCESS_NO_CATEGORY' ) . ' -';
$process['PRO_TITLE'] = $proTitle;
$process['PRO_DESCRIPTION'] = $proDescription;
$process['PRO_DEBUG'] = $process['PRO_DEBUG'];
@@ -885,9 +885,9 @@ class Process extends BaseProcess
if (($this->sort) == '') {
$this->sort = 'PRO_TITLE';
}
- if ($a[$this->sort] > $b[$this->sort]) {
+ if (strtolower($a[$this->sort]) > strtolower($b[$this->sort])) {
return 1;
- } elseif ($a[$this->sort] < $b[$this->sort]) {
+ } elseif (strtolower($a[$this->sort]) < strtolower($b[$this->sort])) {
return - 1;
} else {
return 0;
@@ -899,9 +899,9 @@ class Process extends BaseProcess
if (($this->sort) == '') {
$this->sort = 'PRO_TITLE';
}
- if ($a[$this->sort] > $b[$this->sort]) {
+ if (strtolower($a[$this->sort]) > strtolower($b[$this->sort])) {
return - 1;
- } elseif ($a[$this->sort] < $b[$this->sort]) {
+ } elseif (strtolower($a[$this->sort]) < strtolower($b[$this->sort])) {
return 1;
} else {
return 0;
diff --git a/workflow/engine/controllers/appProxy.php b/workflow/engine/controllers/appProxy.php
index b9e985a8a..59bd6fff6 100644
--- a/workflow/engine/controllers/appProxy.php
+++ b/workflow/engine/controllers/appProxy.php
@@ -181,7 +181,7 @@ class AppProxy extends HttpProxyController
throw new Exception( G::LoadTranslation( 'ID_NO_PERMISSION_NO_PARTICIPATED' ) );
}
- if ($httpData->action == 'sent') { // Get the last valid delegation for participated list
+ if (($httpData->action == 'sent') || ($httpData->action == 'search')){ // Get the last valid delegation for participated list
$criteria = new Criteria();
$criteria->addSelectColumn(AppDelegationPeer::DEL_INDEX);
$criteria->add(AppDelegationPeer::APP_UID, $httpData->appUid);
diff --git a/workflow/engine/methods/cases/cases_Open.php b/workflow/engine/methods/cases/cases_Open.php
index 03a72afc0..88bfbadc6 100755
--- a/workflow/engine/methods/cases/cases_Open.php
+++ b/workflow/engine/methods/cases/cases_Open.php
@@ -98,16 +98,18 @@ try {
/**
* these routine is to verify if the case was acceded from advaced search list
*/
+
if ($_action == 'search') {
//verify if the case is with teh current user
+
$c = new Criteria( 'workflow' );
$c->add( AppDelegationPeer::APP_UID, $sAppUid );
- $c->addDescendingOrderByColumn( AppDelegationPeer::DEL_INDEX );
+ $c->addAscendingOrderByColumn( AppDelegationPeer::DEL_INDEX );
$oDataset = AppDelegationPeer::doSelectRs( $c );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
$aData = $oDataset->getRow();
-
+
if ($aData['USR_UID'] != $_SESSION['USER_LOGGED'] && $aData['USR_UID'] != "") {
//distinct "" for selfservice
//so we show just the resume
diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php
index 7cdf58cfd..80eb5347a 100755
--- a/workflow/engine/methods/cases/cases_Step.php
+++ b/workflow/engine/methods/cases/cases_Step.php
@@ -2,12 +2,12 @@
if (!isset($_SESSION['USER_LOGGED'])) {
G::SendTemporalMessage( 'ID_LOGIN_AGAIN', 'warning', 'labels' );
die( '