'},onRender:function(ct,position){Ext.ux.LocationBar.superclass.onRender.call(this,ct,position);this.repaint();},onClick:function(node){if(this.selectHandler){this.selectHandler(node);}else{if(node.parentNode){node.parentNode.expand(false,true);node.ensureVisible();}
diff --git a/gulliver/js/ext/pmos-common.js b/gulliver/js/ext/pmos-common.js
index 93762f66b..45679ca82 100755
--- a/gulliver/js/ext/pmos-common.js
+++ b/gulliver/js/ext/pmos-common.js
@@ -554,9 +554,6 @@ function stringReplace(strSearch, strReplace, str)
function getBrowserTimeZoneOffset()
{
- var d = new Date();
- var tzOffset = d.getTimezoneOffset();
-
- return ((tzOffset > 0)? "-" : "") + (tzOffset * 60);
+ return -1 * ((new Date()).getTimezoneOffset() * 60);
}
diff --git a/gulliver/js/maborak/core/maborak.js b/gulliver/js/maborak/core/maborak.js
index d3ddf2f9a..86ded837f 100644
--- a/gulliver/js/maborak/core/maborak.js
+++ b/gulliver/js/maborak/core/maborak.js
@@ -807,7 +807,7 @@ return len;};var stripNonNumeric=function(str){str+='';var rgx=/^\d|\.|-$/;var o
return out;};function inputDocumentVerifySize(inpDocMaxFileSize,file)
{try{return(file.files[0].size<=inpDocMaxFileSize)?1:0;}catch(e){return 1;}}
function getBrowserTimeZoneOffset()
-{var d=new Date();var tzOffset=d.getTimezoneOffset();return((tzOffset>0)?"-":"")+(tzOffset*60);}
+{return-1*((new Date()).getTimezoneOffset()*60);}
var TimeToFade=1000.0;function fade(eid,inOut){inOut=(typeof(inOut)!='undefined')?true:false;var element=document.getElementById(eid);if(element==null)
return;if(element.FadeState==null)
{if(element.style.opacity==null||element.style.opacity==''||element.style.opacity=='1')
diff --git a/gulliver/thirdparty/creole/contrib/DebugConnection.php b/gulliver/thirdparty/creole/contrib/DebugConnection.php
index 0e830b31a..17e14969f 100755
--- a/gulliver/thirdparty/creole/contrib/DebugConnection.php
+++ b/gulliver/thirdparty/creole/contrib/DebugConnection.php
@@ -158,7 +158,11 @@ class DebugConnection implements Connection {
$res = $this->childConnection->executeQuery($sql, $fetchmode);
$endTime = microtime(true);
$time = $endTime - $startTime;
- $this->log("executeQuery|$time|$sql");
+ if(is_string($sql)){
+ $this->log("executeQuery|$time|$sql");
+ }else{
+ $this->log("executeQuery|$time|Sql empty");
+ }
return $res;
}
diff --git a/workflow/engine/classes/class.Installer.php b/workflow/engine/classes/class.Installer.php
index 02f852488..57aff08ed 100755
--- a/workflow/engine/classes/class.Installer.php
+++ b/workflow/engine/classes/class.Installer.php
@@ -234,6 +234,7 @@ class Installer
$this->log("Write: " . $db_file . " => " . ((!$ff) ? $ff : "OK") . "\n", $ff === false);
fclose($fp);
+ /*----------------------------------********---------------------------------*/
//Generate the env.ini file
$envIniFile = $path_site . 'env.ini';
$content = 'system_utc_time_zone = 1' . "\n";
@@ -243,6 +244,7 @@ class Installer
$ff = @fputs($fp, $content, strlen($content));
$this->log('Write: ' . $envIniFile . ' => ' . ((!$ff)? $ff : 'OK') . "\n", $ff === false);
fclose($fp);
+ /*----------------------------------********---------------------------------*/
//Set data
$this->setPartner();
diff --git a/workflow/engine/classes/class.actionsByEmailCore.php b/workflow/engine/classes/class.actionsByEmailCore.php
index d236468c4..46e62b5c6 100644
--- a/workflow/engine/classes/class.actionsByEmailCore.php
+++ b/workflow/engine/classes/class.actionsByEmailCore.php
@@ -186,6 +186,7 @@ class actionsByEmailCoreClass extends PMPlugin
$field->label = 'Test';
$field->type = 'dropdown';
$field->options = array();
+ $field->value = '';
$actionField = str_replace(array('@@','@#','@=','@%','@?','@$'), '', $configuration['ABE_ACTION_FIELD']);
$dynaform = $configuration['DYN_UID'];
$variables = G::json_decode($configuration['DYN_CONTENT'], true);
@@ -237,12 +238,12 @@ class actionsByEmailCoreClass extends PMPlugin
$__ABE__.='';
break;
case 'yesno':
- $__ABE__ .= '' . G::LoadTranslation('ID_YES_VALUE') . ' | ';
- $__ABE__ .= '' . G::LoadTranslation('ID_NO_VALUE') . ' | ';
+ $__ABE__ .= '' . G::LoadTranslation('ID_YES_VALUE') . ' | ';
+ $__ABE__ .= '' . G::LoadTranslation('ID_NO_VALUE') . ' | ';
break;
case 'checkbox':
- $__ABE__ .= 'Check | ';
- $__ABE__ .= 'Uncheck | ';
+ $__ABE__ .= 'Check | ';
+ $__ABE__ .= 'Uncheck | ';
break;
}
$__ABE__ .= '';
diff --git a/workflow/engine/classes/class.applications.php b/workflow/engine/classes/class.applications.php
index 90f4a1d82..46f814a31 100755
--- a/workflow/engine/classes/class.applications.php
+++ b/workflow/engine/classes/class.applications.php
@@ -512,20 +512,20 @@ class Applications
$oCriteria->addAscendingOrderByColumn(FieldsPeer::FLD_INDEX);
$oDataset = FieldsPeer::doSelectRS($oCriteria);
- $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
- $oDataset->next();
- $row = $oDataset->getRow();
- if (is_array($row)) {
+
+ if ($oDataset->next()) {
$sort = $tableNameAux . "." . $sortTable[1];
}
}
- if ($sort == "") {
- $sort = $sortBk;
- }
+ $arraySelectColumn = $Criteria->getSelectColumns();
- if (!in_array($sort, $Criteria->getSelectColumns())) {
- $sort = AppCacheViewPeer::APP_NUMBER; //DEFAULT VALUE
+ if (!in_array($sort, $arraySelectColumn)) {
+ $sort = $sortBk;
+
+ if (!in_array($sort, $arraySelectColumn)) {
+ $sort = AppCacheViewPeer::APP_NUMBER; //DEFAULT VALUE
+ }
}
if ($dir == "DESC") {
diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php
index 70c3b7c66..192241e7c 100755
--- a/workflow/engine/classes/class.case.php
+++ b/workflow/engine/classes/class.case.php
@@ -2003,6 +2003,13 @@ class Cases
$users = new Users();
$users->refreshTotal($sUserUid, "remove", "inbox");
}
+ }else{
+ //When start a case with SCRIPT-TASK WEBENTRYEVENT and the status is DRAFT
+ if($oApplication->getAppStatus() == "DRAFT"){
+ $sUserUid = $appDel->getUsrUid();
+ $users = new Users();
+ $users->refreshTotal($sUserUid, "remove", "draft");
+ }
}
}
/*----------------------------------********---------------------------------*/
@@ -4342,7 +4349,10 @@ class Cases
$oCriteria = new Criteria('workflow');
$oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID);
$oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL);
- if (AppDelegationPeer::doCount($oCriteria) == 1) {
+ $resAppDel = AppDelegationPeer::doCount($oCriteria);
+
+ $this->CloseCurrentDelegation($sApplicationUID, $iIndex);
+ if ($resAppDel == 1) {
$aFields['APP_STATUS'] = 'CANCELLED';
$oApplication->update($aFields);
@@ -4353,7 +4363,6 @@ class Cases
$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);
$oAppDel = new AppDelegation();
$oAppDel->Load($sApplicationUID, $iIndex);
$aAppDel = $oAppDel->toArray(BasePeer::TYPE_FIELDNAME);
@@ -5503,6 +5512,29 @@ class Cases
$sCc = $cc;
}
break;
+ case "MULTIPLE_INSTANCE":
+ $to = null;
+ $cc = null;
+ $sw = 1;
+ $oDerivation = new Derivation();
+ $userFields = $oDerivation->getUsersFullNameFromArray($oDerivation->getAllUsersFromAnyTask($aTask["TAS_UID"]));
+ if(isset($userFields)){
+ foreach($userFields as $row){
+ $toAux = (
+ (($row["USR_FIRSTNAME"] != "") || ($row["USR_LASTNAME"] != "")) ?
+ $row["USR_FIRSTNAME"] . " " . $row["USR_LASTNAME"] . " " : ""
+ ) . "<" . $row["USR_EMAIL"] . ">";
+ if ($sw == 1) {
+ $to = $toAux;
+ $sw = 0;
+ } else {
+ $cc = $cc . (($cc != null) ? "," : null) . $toAux;
+ }
+ }
+ $sTo = $to;
+ $sCc = $cc;
+ }
+ break;
default:
if (isset($aTask["USR_UID"]) && !empty($aTask["USR_UID"])) {
$aUser = $oUser->load($aTask["USR_UID"]);
diff --git a/workflow/engine/classes/class.configuration.php b/workflow/engine/classes/class.configuration.php
index 2b3ab3c07..0bfae0d5e 100755
--- a/workflow/engine/classes/class.configuration.php
+++ b/workflow/engine/classes/class.configuration.php
@@ -330,7 +330,7 @@ class Configurations // extends Configuration
$aux = str_replace('@userName', trim($username), $theFormat);
$aux = str_replace('@firstName', $oUser->getUsrFirstname(), $aux);
- $aux = str_replace('@lastName', $oUser->getUsrLastname(), $aux);
+ $aux = str_replace('@lastName', $oUser->getUsrLastname(), $aux);
}
return $aux;
}
@@ -583,7 +583,7 @@ class Configurations // extends Configuration
require_once 'model/Language.php';
$language = new language();
$lanLocation = $language->findLocationByLanId(SYS_LANG);
- $location = isset($lanLocation['LAN_LOCATION']) ? $lanLocation['LAN_LOCATION'] : '';
+ $location = isset($lanLocation['LAN_LOCATION']) ? $lanLocation['LAN_LOCATION'] : '';
if (G::toLower(PHP_OS) == 'linux' || G::toLower(PHP_OS) == 'darwin') {
if (SYS_LANG == 'es') {
@@ -612,7 +612,7 @@ class Configurations // extends Configuration
break;
}
}
-
+
if (defined('PARTNER_FLAG')) {
setlocale(LC_TIME, $langLocate);
$dateTime = utf8_encode(strftime($newCreation, mktime($h, $i, $s, $m, $d, $y)));
@@ -698,7 +698,6 @@ class Configurations // extends Configuration
$caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE");
$caseReaderFields[] = array("name" => "APP_UPDATE_DATE");
$caseReaderFields[] = array("name" => "DEL_PRIORITY");
- $caseReaderFields[] = array("name" => "APP_STATUS_LABEL");
$caseReaderFields[] = array("name" => "APP_FINISH_DATE");
$caseReaderFields[] = array("name" => "CASE_SUMMARY");
$caseReaderFields[] = array("name" => "CASE_NOTES_COUNT");
@@ -733,7 +732,6 @@ class Configurations // extends Configuration
$caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE");
$caseReaderFields[] = array("name" => "APP_UPDATE_DATE");
$caseReaderFields[] = array("name" => "DEL_PRIORITY");
- $caseReaderFields[] = array("name" => "APP_STATUS_LABEL");
$caseReaderFields[] = array("name" => "APP_FINISH_DATE");
$caseReaderFields[] = array("name" => "APP_THREAD_INDEX");
$caseReaderFields[] = array("name" => "CASE_SUMMARY");
@@ -770,7 +768,6 @@ class Configurations // extends Configuration
$caseReaderFields[] = array("name" => "DEL_TASK_DUE_DATE");
$caseReaderFields[] = array("name" => "APP_UPDATE_DATE");
$caseReaderFields[] = array("name" => "DEL_PRIORITY");
- $caseReaderFields[] = array("name" => "APP_STATUS_LABEL");
$caseReaderFields[] = array("name" => "APP_FINISH_DATE");
$caseReaderFields[] = array("name" => "CASE_SUMMARY");
$caseReaderFields[] = array("name" => "CASE_NOTES_COUNT");
@@ -843,7 +840,6 @@ class Configurations // extends Configuration
$caseReaderFields[] = array("name" => "APP_UPDATE_DATE");
$caseReaderFields[] = array("name" => "DEL_DELEGATE_DATE");
$caseReaderFields[] = array("name" => "DEL_PRIORITY");
- $caseReaderFields[] = array("name" => "APP_STATUS_LABEL");
$caseReaderFields[] = array("name" => "APP_FINISH_DATE");
$caseReaderFields[] = array("name" => "CASE_SUMMARY");
$caseReaderFields[] = array("name" => "CASE_NOTES_COUNT");
diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php
index cc9806e35..9341cd27b 100755
--- a/workflow/engine/classes/class.derivation.php
+++ b/workflow/engine/classes/class.derivation.php
@@ -1027,8 +1027,19 @@ class Derivation
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
$aSP = $oDataset->getRow();
- $aSP['USR_UID'] = $nextDel['USR_UID'];
$oTask = new Task();
+ $aTaskNext = $oTask->load( $nextDel['TAS_UID'] );
+ //When is MULTIPLE_INSTANCE catch the first user
+ if($aTaskNext["TAS_ASSIGN_TYPE"] == "MULTIPLE_INSTANCE"){
+ $spUserUid = $this->getAllUsersFromAnyTask($nextDel["TAS_UID"]);
+ foreach($spUserUid as $row){
+ $firstUserUid = $row;
+ continue;
+ }
+ $aSP['USR_UID'] = $firstUserUid;
+ }else{
+ $aSP['USR_UID'] = $nextDel['USR_UID'];
+ }
$aTask = $oTask->load( $nextDel['TAS_PARENT'] );
$nextDel = array ('TAS_UID' => $aTask['TAS_UID'],'USR_UID' => $aSP['USR_UID'],'TAS_ASSIGN_TYPE' => $aTask['TAS_ASSIGN_TYPE'],'TAS_DEF_PROC_CODE' => $aTask['TAS_DEF_PROC_CODE'],'DEL_PRIORITY' => 3,'TAS_PARENT' => ''
);
diff --git a/workflow/engine/classes/class.licensedFeatures.php b/workflow/engine/classes/class.licensedFeatures.php
index 5235bda86..3bc51eb8c 100644
--- a/workflow/engine/classes/class.licensedFeatures.php
+++ b/workflow/engine/classes/class.licensedFeatures.php
@@ -231,6 +231,57 @@ class PMLicensedFeatures
"type" => "features",
"url" => "",
"version" => ""
+ ),
+ 12 => array(
+ "description" => "Integration with Gmail.",
+ "enabled" => false,
+ "id" => "pmGmail",
+ "latest_version" => "",
+ "log" => null,
+ "name" => "pmGmail",
+ "nick" => "pmGmail",
+ "progress" => 0,
+ "publisher" => "Colosa",
+ "release_type" => "localRegistry",
+ "status" => "ready",
+ "store" => "00000000000000000000000000010012",
+ "type" => "features",
+ "url" => "",
+ "version" => ""
+ ),
+ 13 => array(
+ "description" => "User-based Language Management.",
+ "enabled" => false,
+ "id" => "userBasedLanguage",
+ "latest_version" => "",
+ "log" => null,
+ "name" => "userBasedLanguage",
+ "nick" => "userBasedLanguage",
+ "progress" => 0,
+ "publisher" => "Colosa",
+ "release_type" => "localRegistry",
+ "status" => "ready",
+ "store" => "00000000000000000000000000010013",
+ "type" => "features",
+ "url" => "",
+ "version" => ""
+ ),
+ 14 => array(
+ "description" => "User-based Time Zone Management.",
+ "enabled" => false,
+ "id" => "userBasedTimeZone",
+ "latest_version" => "",
+ "log" => null,
+ "name" => "userBasedTimeZone",
+ "nick" => "userBasedTimeZone",
+ "progress" => 0,
+ "publisher" => "Colosa",
+ "release_type" => "localRegistry",
+ "status" => "ready",
+ "store" => "00000000000000000000000000010014",
+ "type" => "features",
+ "url" => "",
+ "version" => ""
)
);
diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php
index 3bab49666..df8b8a3c9 100644
--- a/workflow/engine/classes/class.pmDynaform.php
+++ b/workflow/engine/classes/class.pmDynaform.php
@@ -24,6 +24,7 @@ class pmDynaform
$this->fields = $fields;
$this->getDynaform();
$this->getDynaforms();
+ $this->synchronizeSubDynaform();
$this->getCredentials();
if (!isset($this->fields["APP_UID"])) {
$this->fields["APP_UID"] = null;
@@ -292,7 +293,16 @@ class pmDynaform
$json->data->label = "";
if (isset($this->fields["APP_DATA"][$json->name])) {
$json->data->value = $this->fields["APP_DATA"][$json->name];
- $json->data->label = $this->fields["APP_DATA"][$json->name];
+ foreach ($json->options as $os) {
+ if (($json->data->value === true || $json->data->value === 1 || $json->data->value === "1") &&
+ ($os->value === true || $os->value === 1 || $os->value === "1")) {
+ $json->data->label = $os->label;
+ }
+ if (($json->data->value === false || $json->data->value === 0 || $json->data->value === "0") &&
+ ($os->value === false || $os->value === 0 || $os->value === "0")) {
+ $json->data->label = $os->label;
+ }
+ }
}
}
if ($key === "type" && ($value === "checkgroup")) {
@@ -350,17 +360,21 @@ class pmDynaform
/*----------------------------------********---------------------------------*/
$oCriteria = new Criteria("workflow");
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
- $oCriteria->addSelectColumn(AppDocumentPeer::DOC_VERSION);
+ $oCriteria->addSelectColumn(AppDocumentPeer::DOC_VERSION);
+ $oCriteria->addSelectColumn(ContentPeer::CON_VALUE);
/*----------------------------------********---------------------------------*/
if ($enablePMGmail) {
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_DRIVE_DOWNLOAD);
}
- /*----------------------------------********---------------------------------*/
+ /*----------------------------------********---------------------------------*/
+ $oCriteria->addJoin(AppDocumentPeer::APP_DOC_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN);
$oCriteria->add(AppDocumentPeer::APP_UID, $this->fields["APP_DATA"]["APPLICATION"]);
$oCriteria->add(AppDocumentPeer::APP_DOC_FIELDNAME, $json->name);
+ $oCriteria->add(ContentPeer::CON_CATEGORY, 'APP_DOC_FILENAME');
$rs = AppDocumentPeer::doSelectRS($oCriteria);
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$links = array();
+ $labelsFromDb = array();
while ($rs->next()) {
$row = $rs->getRow();
$linkDownload = "../cases/cases_ShowDocument?a=" . $row["APP_DOC_UID"] . "&v=" . $row["DOC_VERSION"];
@@ -374,10 +388,16 @@ class pmDynaform
}
/*----------------------------------********---------------------------------*/
array_push($links, $linkDownload);
+ array_push($labelsFromDb, $row["CON_VALUE"]);
}
$json->data = new stdClass();
- $json->data->value = $links;
- $json->data->label = isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : "[]";
+ $json->data->value = $links;
+
+ if(sizeof($labelsFromDb)) {
+ $json->data->label = G::json_encode($labelsFromDb);
+ } else {
+ $json->data->label = isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : (isset($this->fields["APP_DATA"][$json->name]) ? $this->fields["APP_DATA"][$json->name] : "[]");
+ }
}
if ($key === "type" && ($value === "file") && isset($json->variable)) {
//todo
@@ -494,7 +514,7 @@ class pmDynaform
if ($key === "type" && ($value === "form") && $this->records != null) {
foreach ($this->records as $ri) {
if ($json->id === $ri["DYN_UID"] && !isset($json->jsonUpdate)) {
- $jsonUpdate = json_decode($ri["DYN_CONTENT"]);
+ $jsonUpdate = G::json_decode($ri["DYN_CONTENT"]);
$jsonUpdate = $jsonUpdate->items[0];
$jsonUpdate->colSpan = $json->colSpan;
$jsonUpdate->jsonUpdate = true;
@@ -544,7 +564,7 @@ class pmDynaform
$data[$json->variable === "" ? $json->id : $json->variable] = $json->options[0]->value;
}
if (isset($json->placeholder) && $json->placeholder !== "") {
- $data[$json->variable === "" ? $json->id : $json->variable] = $json->placeholder;
+ $data[$json->variable === "" ? $json->id : $json->variable] = "";
}
if (isset($json->defaultValue) && $json->defaultValue !== "") {
$data[$json->variable === "" ? $json->id : $json->variable] = $json->defaultValue;
@@ -878,11 +898,12 @@ class pmDynaform
$this->record = $record;
$json = G::json_decode($this->record["DYN_CONTENT"]);
$this->jsonr($json);
+ $currentDynaform = (isset($this->fields['CURRENT_DYNAFORM']) && $this->fields['CURRENT_DYNAFORM'] != '')? $this->fields['CURRENT_DYNAFORM'] : '';
$javascrip = "" .
"
+
+
{php}echo G::LoadTranslation('ID_TIME_ZONE_LOGIN_TITLE');{/php}
+
+