Merged in release/3.3.4 (pull request #6782)
Release/3.3.4 Approved-by: Paula Quispe <paula.quispe@processmaker.com>
This commit is contained in:
@@ -3,82 +3,110 @@
|
||||
use ProcessMaker\Util\DateTime;
|
||||
|
||||
switch ($RBAC->userCanAccess('PM_CASES')) {
|
||||
case - 2:
|
||||
case -2:
|
||||
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels');
|
||||
G::header('location: ../login/login');
|
||||
die();
|
||||
break;
|
||||
case - 1:
|
||||
case -1:
|
||||
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
|
||||
G::header('location: ../login/login');
|
||||
die();
|
||||
break;
|
||||
}
|
||||
|
||||
$oCase = new Cases();
|
||||
$Fields = $oCase->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX']);
|
||||
|
||||
/* Render page */
|
||||
/** Render page */
|
||||
require_once 'classes/model/Process.php';
|
||||
require_once 'classes/model/Task.php';
|
||||
|
||||
//Get information about the case
|
||||
$case = new Cases();
|
||||
$fieldsCase = $case->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX']);
|
||||
|
||||
//Get the user logged
|
||||
$userLogged = isset($RBAC->aUserInfo['USER_INFO']['USR_UID']) ? $RBAC->aUserInfo['USER_INFO']['USR_UID'] : '';
|
||||
|
||||
//Check the authorization
|
||||
$objCase = new \ProcessMaker\BusinessModel\Cases();
|
||||
$userCanAccess = $objCase->userAuthorization(
|
||||
$userLogged,
|
||||
$fieldsCase['PRO_UID'],
|
||||
$fieldsCase['APP_UID'],
|
||||
['PM_ALLCASES'],
|
||||
['SUMMARY_FORM' => 'VIEW']
|
||||
);
|
||||
|
||||
$objProc = new Process();
|
||||
$aProc = $objProc->load($Fields['PRO_UID']);
|
||||
$Fields['PRO_TITLE'] = $aProc['PRO_TITLE'];
|
||||
$fieldsProcess = $objProc->load($fieldsCase['PRO_UID']);
|
||||
$fieldsCase['PRO_TITLE'] = $fieldsProcess['PRO_TITLE'];
|
||||
|
||||
$objTask = new Task();
|
||||
$aTask = $objTask->load($Fields['TAS_UID']);
|
||||
$Fields['TAS_TITLE'] = $aTask['TAS_TITLE'];
|
||||
if (
|
||||
isset($fieldsProcess['PRO_DYNAFORMS']['PROCESS']) &&
|
||||
!empty($fieldsProcess['PRO_DYNAFORMS']['PROCESS']) &&
|
||||
$userCanAccess['objectPermissions']['SUMMARY_FORM'] &&
|
||||
$objProc->isBpmnProcess($fieldsCase['PRO_UID'])
|
||||
) {
|
||||
/**We will to show the custom summary form only for BPMN process*/
|
||||
$_REQUEST['APP_UID'] = $fieldsCase['APP_UID'];
|
||||
$_REQUEST['DEL_INDEX'] = $fieldsCase['DEL_INDEX'];
|
||||
$_REQUEST['DYN_UID'] = $fieldsProcess['PRO_DYNAFORMS']['PROCESS'];
|
||||
require_once(PATH_METHODS . 'cases' . PATH_SEP . 'summary.php');
|
||||
exit();
|
||||
} else {
|
||||
/**We will to show the default claim case form*/
|
||||
$objTask = new Task();
|
||||
$fieldsTask = $objTask->load($fieldsCase['TAS_UID']);
|
||||
$fieldsCase['TAS_TITLE'] = $fieldsTask['TAS_TITLE'];
|
||||
$fieldsCase['STATUS'] .= ' ( ' . G::LoadTranslation('ID_UNASSIGNED') . ' )';
|
||||
|
||||
$Fields['STATUS'] .= ' ( ' . G::LoadTranslation('ID_UNASSIGNED') . ' )';
|
||||
//Now getting information about the PREVIOUS task. If is the first task then no previous, use 1
|
||||
$appDelegation = new AppDelegation();
|
||||
$appDelegation->Load(
|
||||
$fieldsCase['APP_UID'],
|
||||
($fieldsCase['DEL_PREVIOUS'] == 0 ? $fieldsCase['DEL_PREVIOUS'] = 1 : $fieldsCase['DEL_PREVIOUS'])
|
||||
);
|
||||
$fieldsDelegation = $appDelegation->toArray(BasePeer::TYPE_FIELDNAME);
|
||||
|
||||
//now getting information about the PREVIOUS task. If is the first task then no preious, use 1
|
||||
$oAppDel = new AppDelegation();
|
||||
$oAppDel->Load($Fields['APP_UID'], ($Fields['DEL_PREVIOUS'] == 0 ? $Fields['DEL_PREVIOUS'] = 1 : $Fields['DEL_PREVIOUS']));
|
||||
try {
|
||||
$userInfo = new Users();
|
||||
$userInfo->load($fieldsDelegation['USR_UID']);
|
||||
$fieldsCase['PREVIOUS_USER'] = $userInfo->getUsrFirstname() . ' ' . $userInfo->getUsrLastname();
|
||||
} catch (Exception $error) {
|
||||
$fieldsCase['PREVIOUS_USER'] = G::LoadTranslation('ID_NO_PREVIOUS_USR_UID');
|
||||
}
|
||||
|
||||
$aAppDel = $oAppDel->toArray(BasePeer::TYPE_FIELDNAME);
|
||||
try {
|
||||
$oCurUser = new Users();
|
||||
$oCurUser->load($aAppDel['USR_UID']);
|
||||
$Fields['PREVIOUS_USER'] = $oCurUser->getUsrFirstname() . ' ' . $oCurUser->getUsrLastname();
|
||||
} catch (Exception $oError) {
|
||||
$Fields['PREVIOUS_USER'] = G::LoadTranslation('ID_NO_PREVIOUS_USR_UID');
|
||||
}
|
||||
|
||||
$objTask = new Task();
|
||||
$aTask = $objTask->load($aAppDel['TAS_UID']);
|
||||
$Fields['PREVIOUS_TASK'] = $aTask['TAS_TITLE'];
|
||||
|
||||
//To enable information (dynaforms, steps) before claim a case
|
||||
$_SESSION['bNoShowSteps'] = true;
|
||||
$G_MAIN_MENU = 'processmaker';
|
||||
$G_SUB_MENU = 'caseOptions';
|
||||
$G_ID_MENU_SELECTED = 'CASES';
|
||||
$G_ID_SUB_MENU_SELECTED = '_';
|
||||
$oHeadPublisher = headPublisher::getSingleton();
|
||||
$oHeadPublisher->addScriptCode("
|
||||
if (typeof parent != 'undefined') {
|
||||
if (parent.showCaseNavigatorPanel) {
|
||||
parent.showCaseNavigatorPanel('{$Fields['APP_STATUS']}');
|
||||
}
|
||||
}");
|
||||
$oHeadPublisher->addScriptCode('
|
||||
var Cse = {};
|
||||
Cse.panels = {};
|
||||
var leimnud = new maborak();
|
||||
leimnud.make();
|
||||
leimnud.Package.Load("rpc,drag,drop,panel,app,validator,fx,dom,abbr",{Instance:leimnud,Type:"module"});
|
||||
leimnud.Package.Load("cases",{Type:"file",Absolute:true,Path:"/jscore/cases/core/cases.js"});
|
||||
leimnud.Package.Load("cases_Step",{Type:"file",Absolute:true,Path:"/jscore/cases/core/cases_Step.js"});
|
||||
leimnud.Package.Load("processmap",{Type:"file",Absolute:true,Path:"/jscore/processmap/core/processmap.js"});
|
||||
leimnud.exec(leimnud.fix.memoryLeak);
|
||||
//To enable information (dynaforms, steps) before claim a case
|
||||
$_SESSION['bNoShowSteps'] = true;
|
||||
$G_MAIN_MENU = 'processmaker';
|
||||
$G_SUB_MENU = 'caseOptions';
|
||||
$G_ID_MENU_SELECTED = 'CASES';
|
||||
$G_ID_SUB_MENU_SELECTED = '_';
|
||||
$headPublisher = headPublisher::getSingleton();
|
||||
$headPublisher->addScriptCode("
|
||||
if (typeof parent != 'undefined') {
|
||||
if (parent.showCaseNavigatorPanel) {
|
||||
parent.showCaseNavigatorPanel('{$fieldsCase['APP_STATUS']}');
|
||||
}
|
||||
}
|
||||
");
|
||||
$headPublisher->addScriptCode('
|
||||
var Cse = {};
|
||||
Cse.panels = {};
|
||||
var leimnud = new maborak();
|
||||
leimnud.make();
|
||||
leimnud.Package.Load("rpc,drag,drop,panel,app,validator,fx,dom,abbr",{Instance:leimnud,Type:"module"});
|
||||
leimnud.Package.Load("cases",{Type:"file",Absolute:true,Path:"/jscore/cases/core/cases.js"});
|
||||
leimnud.Package.Load("cases_Step",{Type:"file",Absolute:true,Path:"/jscore/cases/core/cases_Step.js"});
|
||||
leimnud.Package.Load("processmap",{Type:"file",Absolute:true,Path:"/jscore/processmap/core/processmap.js"});
|
||||
leimnud.exec(leimnud.fix.memoryLeak);
|
||||
');
|
||||
$oHeadPublisher = headPublisher::getSingleton();
|
||||
$oHeadPublisher->addScriptFile('/jscore/cases/core/cases_Step.js');
|
||||
$headPublisher = headPublisher::getSingleton();
|
||||
$headPublisher->addScriptFile('/jscore/cases/core/cases_Step.js');
|
||||
|
||||
$Fields['isIE'] = Bootstrap::isIE();
|
||||
$fieldsCase['isIE'] = Bootstrap::isIE();
|
||||
|
||||
$G_PUBLISH = new Publisher();
|
||||
$Fields = DateTime::convertUtcToTimeZone($Fields);
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'cases/cases_CatchSelfService.xml', '', $Fields, 'cases_CatchExecute');
|
||||
G::RenderPage('publish', 'blank');
|
||||
$G_PUBLISH = new Publisher();
|
||||
$fieldsCase = DateTime::convertUtcToTimeZone($fieldsCase);
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'cases/cases_CatchSelfService.xml', '', $fieldsCase, 'cases_CatchExecute');
|
||||
G::RenderPage('publish', 'blank');
|
||||
}
|
||||
|
||||
@@ -1,32 +1,4 @@
|
||||
<?php
|
||||
/**
|
||||
* open.php Open Case main processor
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Erik Amaru Ortiz <erik@colosa.com>
|
||||
* @date Jan 3th, 2010
|
||||
*/
|
||||
|
||||
$tBarGmail = false;
|
||||
if (isset($_GET['gmail']) && $_GET['gmail'] == 1) {
|
||||
@@ -121,22 +93,29 @@ if (isset($_GET['actionFromList']) && ($_GET['actionFromList'] === 'to_revise'))
|
||||
$script = 'cases_Open?';
|
||||
}
|
||||
|
||||
// getting bpmn projects
|
||||
$c = new Criteria('workflow');
|
||||
$c->addSelectColumn(BpmnProjectPeer::PRJ_UID);
|
||||
$ds = ProcessPeer::doSelectRS($c);
|
||||
$ds->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$bpmnProjects = array();
|
||||
$process = new Process();
|
||||
$fields = $process->load($case['PRO_UID']);
|
||||
$isBpmn = $fields['PRO_BPMN'] === 1 ? true : false;
|
||||
|
||||
while ($ds->next()) {
|
||||
$row = $ds->getRow();
|
||||
$bpmnProjects[] = $row['PRJ_UID'];
|
||||
$showCustomForm = false;
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
$respView = $oCase->getAllObjectsFrom($case['PRO_UID'], $appUid, $case['TAS_UID'], $_SESSION['USER_LOGGED'], 'VIEW');
|
||||
$viewSummaryForm = isset($respView['SUMMARY_FORM']) && $respView['SUMMARY_FORM'] === 1 ? true : false;
|
||||
$isNoEmpty = isset($fields['PRO_DYNAFORMS']['PROCESS']) && !empty($fields['PRO_DYNAFORMS']['PROCESS']);
|
||||
|
||||
if ($isBpmn && $viewSummaryForm && $isNoEmpty) {
|
||||
$showCustomForm = true;
|
||||
}
|
||||
|
||||
/*----------------------------------********---------------------------------*/
|
||||
|
||||
$oStep = new Step();
|
||||
$oStep = $oStep->loadByProcessTaskPosition($case['PRO_UID'], $case['TAS_UID'], 1);
|
||||
$oHeadPublisher->assign('uri', $script . $uri);
|
||||
$oHeadPublisher->assign('_APP_NUM', '#: ' . $case['APP_NUMBER']);
|
||||
$oHeadPublisher->assign('_PROJECT_TYPE', in_array($case['PRO_UID'], $bpmnProjects) ? 'bpmn' : 'classic');
|
||||
$oHeadPublisher->assign('_PROJECT_TYPE', $isBpmn ? 'bpmn' : 'classic');
|
||||
$oHeadPublisher->assign('_PRO_UID', $case['PRO_UID']);
|
||||
$oHeadPublisher->assign('_APP_UID', $appUid);
|
||||
$oHeadPublisher->assign('_ENV_CURRENT_DATE', $conf->getSystemDate(date('Y-m-d')));
|
||||
@@ -144,6 +123,7 @@ $oHeadPublisher->assign('_ENV_CURRENT_DATE_NO_FORMAT', date('Y-m-d-h-i-A'));
|
||||
$oHeadPublisher->assign('idfirstform', is_null($oStep) ? '-1' : $oStep->getStepUidObj());
|
||||
$oHeadPublisher->assign('appStatus', $case['APP_STATUS']);
|
||||
$oHeadPublisher->assign('tbarGmail', $tBarGmail);
|
||||
$oHeadPublisher->assign('showCustomForm', $showCustomForm);
|
||||
|
||||
if (!isset($_SESSION['APPLICATION']) || !isset($_SESSION['TASK']) || !isset($_SESSION['INDEX'])) {
|
||||
$_SESSION['PROCESS'] = $case['PRO_UID'];
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Method defined and copied from processmaker/workflow/engine/classes/class.configuration.php
|
||||
* Get default configuration for Cases List.
|
||||
*
|
||||
* @param string $action
|
||||
* @param int $translation
|
||||
* @return array
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function casesListDefaultFieldsAndConfig($action, $translation = 1)
|
||||
{
|
||||
@@ -322,6 +329,16 @@ function casesListDefaultFieldsAndConfig($action, $translation = 1)
|
||||
return array("caseColumns" => $caseColumns, "caseReaderFields" => $caseReaderFields, "rowsperpage" => 20, "dateformat" => "M d, Y");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get default configuration and verify if casesListDefaultFieldsAndConfig method exist.
|
||||
*
|
||||
* @param string $action
|
||||
* @param int $translation
|
||||
* @return array
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function getDefaultConfig($action, $translation)
|
||||
{
|
||||
$config = new Configurations();
|
||||
@@ -335,6 +352,16 @@ function getDefaultConfig($action, $translation)
|
||||
return $arrayConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get default fields configuration.
|
||||
*
|
||||
* @param string $action
|
||||
* @param int $translation
|
||||
* @return array
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function getDefaultFields($action, $translation)
|
||||
{
|
||||
$config = new Configurations();
|
||||
@@ -405,6 +432,16 @@ function getDefaultFields($action, $translation)
|
||||
return $arrayField;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set available fields.
|
||||
*
|
||||
* @param array $arrayAvailableField
|
||||
* @param array $arrayField
|
||||
* @return array
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function setAvailableFields($arrayAvailableField, $arrayField)
|
||||
{
|
||||
$i = 0;
|
||||
@@ -427,6 +464,16 @@ function setAvailableFields($arrayAvailableField, $arrayField)
|
||||
return $arrayFieldResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Cases List fields.
|
||||
*
|
||||
* @param array $arrayCasesListField
|
||||
* @param array $arrayField
|
||||
* @return array
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function setCasesListFields($arrayCasesListField, $arrayField)
|
||||
{
|
||||
$i = 0;
|
||||
@@ -462,32 +509,56 @@ function setCasesListFields($arrayCasesListField, $arrayField)
|
||||
return $arrayFieldResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Custom Case List configuration data.
|
||||
*
|
||||
* @global string $action
|
||||
* @global array $confCasesList
|
||||
* @global string $tabUid
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function fieldSet()
|
||||
{
|
||||
global $conf;
|
||||
global $confCasesList;
|
||||
global $action;
|
||||
global $confCasesList;
|
||||
global $tabUid;
|
||||
|
||||
if (is_array($confCasesList)) {
|
||||
$validConfig = isset($confCasesList["first"]) && isset($confCasesList["second"]);
|
||||
} else {
|
||||
$validConfig = false;
|
||||
$arrayField = getDefaultFields($action, 0);
|
||||
$arrayConfig = getDefaultConfig($action, 0);
|
||||
$result = genericJsonResponse($tabUid, [], $arrayField, $arrayConfig["rowsperpage"], $arrayConfig["dateformat"]);
|
||||
$result['first']['data'] = getFieldsByTabUid($tabUid);
|
||||
|
||||
$confCasesList = (array) $confCasesList;
|
||||
|
||||
if (!empty($confCasesList)) {
|
||||
if (!empty($tabUid) && empty($confCasesList['PMTable'])) {
|
||||
$confCasesList['PMTable'] = $tabUid;
|
||||
$confCasesList['first']['data'] = getFieldsByTabUid($tabUid);
|
||||
}
|
||||
if (!empty($confCasesList['PMTable']) && empty($tabUid)) {
|
||||
$result = $confCasesList;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$validConfig) {
|
||||
$arrayField = getDefaultFields($action, 0);
|
||||
$arrayConfig = getDefaultConfig($action, 0);
|
||||
|
||||
$result = genericJsonResponse("", array(), $arrayField, $arrayConfig["rowsperpage"], $arrayConfig["dateformat"]);
|
||||
|
||||
$conf->saveObject($result, "casesList", $action, "", "", "");
|
||||
|
||||
echo G::json_encode($result);
|
||||
} else {
|
||||
echo G::json_encode($confCasesList);
|
||||
if (is_array($result) && isset($result['second']['data'])) {
|
||||
foreach ($result['second']['data'] as $key => $value) {
|
||||
$result['second']['data'][$key]['align_label'] = $result['second']['data'][$key]['align'];
|
||||
}
|
||||
}
|
||||
echo G::json_encode($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset fields configuration.
|
||||
*
|
||||
* @global string $action
|
||||
* @param int $translation
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function fieldReset($translation)
|
||||
{
|
||||
global $action;
|
||||
@@ -500,6 +571,15 @@ function fieldReset($translation)
|
||||
echo G::json_encode($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Complete a field.
|
||||
*
|
||||
* @global string $action
|
||||
* @param int $translation
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function fieldComplete($translation)
|
||||
{
|
||||
|
||||
@@ -565,6 +645,15 @@ function fieldComplete($translation)
|
||||
echo G::json_encode($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset field label.
|
||||
*
|
||||
* @global string $action
|
||||
* @param int $translation
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function fieldLabelReset($translation)
|
||||
{
|
||||
|
||||
@@ -604,6 +693,15 @@ function fieldLabelReset($translation)
|
||||
echo G::json_encode($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save a field.
|
||||
*
|
||||
* @global object $conf
|
||||
* @global string $action
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function fieldSave()
|
||||
{
|
||||
|
||||
@@ -690,11 +788,6 @@ try {
|
||||
|
||||
switch ($xaction) {
|
||||
case "FIELD_SET":
|
||||
if (is_array($confCasesList) && isset($confCasesList['second']['data'])) {
|
||||
foreach ($confCasesList['second']['data'] as $key => $value) {
|
||||
$confCasesList['second']['data'][$key]['align_label'] = $confCasesList['second']['data'][$key]['align'];
|
||||
}
|
||||
}
|
||||
fieldSet();
|
||||
break;
|
||||
case "FIELD_RESET":
|
||||
@@ -722,14 +815,20 @@ try {
|
||||
G::outRes( G::json_encode( G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)) ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* set the generic Json Response, using two array for the grid stores and a string for the pmtable name
|
||||
* @param string $pmtable
|
||||
* @param array $first
|
||||
* @param array $second
|
||||
* @return $response a json string
|
||||
*/
|
||||
function genericJsonResponse($pmtable, $first, $second, $rowsperpage, $dateFormat)
|
||||
/**
|
||||
* Set the generic Json Response, using two array for the grid stores and a string for the pmtable name.
|
||||
*
|
||||
* @param string $pmtable
|
||||
* @param array $first
|
||||
* @param array $second
|
||||
* @param array $rowsPerPage
|
||||
* @param string $dateFormat
|
||||
* @return array
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function genericJsonResponse($pmtable, $first, $second, $rowsPerPage, $dateFormat)
|
||||
{
|
||||
$firstGrid['totalCount'] = count($first);
|
||||
$firstGrid['data'] = $first;
|
||||
@@ -739,54 +838,72 @@ function genericJsonResponse($pmtable, $first, $second, $rowsperpage, $dateForma
|
||||
$result['first'] = $firstGrid;
|
||||
$result['second'] = $secondGrid;
|
||||
$result['PMTable'] = isset($pmtable) ? $pmtable : '';
|
||||
$result['rowsperpage'] = isset($rowsperpage) ? $rowsperpage : 20;
|
||||
$result['rowsperpage'] = isset($rowsPerPage) ? $rowsPerPage : 20;
|
||||
$result['dateformat'] = isset($dateFormat) && $dateFormat != '' ? $dateFormat : 'M d, Y';
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get row from PM Table.
|
||||
*
|
||||
* @param string $tabUid
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function xgetFieldsFromPMTable($tabUid)
|
||||
{
|
||||
$rows = array();
|
||||
$result = array();
|
||||
// $rows[] = array ( 'name' => 'val 1', 'gridIndex' => '21', 'fieldType' => 'PM Table' );
|
||||
// $rows[] = array ( 'name' => 'val 2', 'gridIndex' => '22', 'fieldType' => 'PM Table' );
|
||||
// $rows[] = array ( 'name' => 'val 3', 'gridIndex' => '23', 'fieldType' => 'PM Table' );
|
||||
//$result['success'] = true;
|
||||
//$result['totalCount'] = count($rows);
|
||||
$oCriteria = new Criteria('workflow');
|
||||
$oCriteria->clearSelectColumns ( );
|
||||
$oCriteria->setDistinct();
|
||||
$oCriteria->addSelectColumn ( FieldsPeer::FLD_NAME );
|
||||
$oCriteria->addSelectColumn ( FieldsPeer::FLD_UID );
|
||||
$oCriteria->addSelectColumn ( FieldsPeer::FLD_INDEX );
|
||||
$oCriteria->add (FieldsPeer::ADD_TAB_UID, $tabUid , CRITERIA::EQUAL );
|
||||
$oCriteria->add (FieldsPeer::FLD_NAME, 'APP_UID' , CRITERIA::NOT_EQUAL );
|
||||
$oCriteria->addAnd (FieldsPeer::FLD_NAME, 'APP_NUMBER' , CRITERIA::NOT_EQUAL );
|
||||
$oCriteria->addDescendingOrderByColumn('FLD_INDEX');
|
||||
$oDataset = FieldsPeer::doSelectRS($oCriteria);
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$oDataset->next();
|
||||
$index = count($rows);
|
||||
|
||||
while ($aRow = $oDataset->getRow()) {
|
||||
$aRow['index'] = ++$index;
|
||||
$aTempRow['name'] = $aRow['FLD_NAME'];
|
||||
$aTempRow['gridIndex'] = $aRow['index'];
|
||||
$aTempRow['fieldType'] = 'PM Table';
|
||||
$rows[] = $aTempRow;
|
||||
$oDataset->next();
|
||||
}
|
||||
|
||||
$result['data'] = $rows;
|
||||
print G::json_encode( $result ) ;
|
||||
$result = [];
|
||||
$result['data'] = getFieldsByTabUid($tabUid);
|
||||
print G::json_encode($result);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param Array $fields
|
||||
* @return Array
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* Get rows from Fields table.
|
||||
*
|
||||
* @param string $tabUid
|
||||
* @return array
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function getFieldsByTabUid($tabUid)
|
||||
{
|
||||
$rows = [];
|
||||
$criteria = new Criteria('workflow');
|
||||
$criteria->clearSelectColumns();
|
||||
$criteria->setDistinct();
|
||||
$criteria->addSelectColumn(FieldsPeer::FLD_NAME);
|
||||
$criteria->addSelectColumn(FieldsPeer::FLD_UID);
|
||||
$criteria->addSelectColumn(FieldsPeer::FLD_INDEX);
|
||||
$criteria->add(FieldsPeer::ADD_TAB_UID, $tabUid, CRITERIA::EQUAL);
|
||||
$criteria->add(FieldsPeer::FLD_NAME, 'APP_UID', CRITERIA::NOT_EQUAL);
|
||||
$criteria->addAnd(FieldsPeer::FLD_NAME, 'APP_NUMBER', CRITERIA::NOT_EQUAL);
|
||||
$criteria->addDescendingOrderByColumn('FLD_INDEX');
|
||||
$dataSet = FieldsPeer::doSelectRS($criteria);
|
||||
$dataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$dataSet->next();
|
||||
$index = 0;
|
||||
while ($row = $dataSet->getRow()) {
|
||||
$row['index'] = ++$index;
|
||||
$tempRow['name'] = $row['FLD_NAME'];
|
||||
$tempRow['gridIndex'] = $row['index'];
|
||||
$tempRow['fieldType'] = 'PM Table';
|
||||
$rows[] = $tempRow;
|
||||
$dataSet->next();
|
||||
}
|
||||
return $rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate Grid index.
|
||||
*
|
||||
* @param array $fields
|
||||
* @return array
|
||||
*
|
||||
* @see workflow/engine/methods/cases/proxyPMTablesFieldList.php
|
||||
* @link https://wiki.processmaker.com/3.2/Cases_List_Builder#Installation_and_Configuration
|
||||
*/
|
||||
function calculateGridIndex($fields)
|
||||
{
|
||||
for ($i=0; $i<count( $fields ); $i++) {
|
||||
|
||||
@@ -1,28 +1,22 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* processes_Ajax.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*/
|
||||
try {
|
||||
// Validate the access to the actions of this file
|
||||
if (!empty($_REQUEST['action']) && $_REQUEST['action'] == 'load') {
|
||||
// Validate if exists the session variable "PROCESS", this action is requested from case tracker and running cases
|
||||
$cannotAccess = empty($_SESSION['PROCESS']);
|
||||
} else {
|
||||
// Validate PM_FACTORY permission
|
||||
global $RBAC;
|
||||
$cannotAccess = $RBAC->userCanAccess('PM_FACTORY') !== 1;
|
||||
}
|
||||
|
||||
if ($cannotAccess) {
|
||||
G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' );
|
||||
G::header( 'Location: ../login/login' );
|
||||
die();
|
||||
}
|
||||
|
||||
$filter = new InputFilter();
|
||||
$_GET = $filter->xssFilterHard($_GET);
|
||||
$_POST = $filter->xssFilterHard($_POST);
|
||||
@@ -693,41 +687,38 @@ try {
|
||||
$_REQUEST['filename'] = $filter->xssFilterHard($_REQUEST['filename']);
|
||||
global $G_PUBLISH;
|
||||
$G_PUBLISH = new Publisher();
|
||||
global $RBAC;
|
||||
if ($RBAC->userCanAccess('PM_FACTORY') == 1) {
|
||||
$app = new Processes();
|
||||
if (!$app->processExists($_REQUEST['pro_uid'])) {
|
||||
echo G::LoadTranslation('ID_PROCESS_UID_NOT_DEFINED');
|
||||
die;
|
||||
}
|
||||
|
||||
$sDir = "";
|
||||
if (isset($_REQUEST['MAIN_DIRECTORY'])) {
|
||||
$_REQUEST['MAIN_DIRECTORY'] = $filter->xssFilterHard($_REQUEST['MAIN_DIRECTORY']);
|
||||
$sDir = $_REQUEST['MAIN_DIRECTORY'];
|
||||
}
|
||||
switch ($sDir) {
|
||||
case 'mailTemplates':
|
||||
$sDirectory = PATH_DATA_MAILTEMPLATES . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename'];
|
||||
G::auditLog('ProcessFileManager', 'Save template (' . $_REQUEST['filename'] . ') in process "' . $resultProcess['PRO_TITLE'] . '"');
|
||||
break;
|
||||
case 'public':
|
||||
$sDirectory = PATH_DATA_PUBLIC . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename'];
|
||||
G::auditLog('ProcessFileManager', 'Save public template (' . $_REQUEST['filename'] . ') in process "' . $resultProcess['PRO_TITLE'] . '"');
|
||||
break;
|
||||
default:
|
||||
$sDirectory = PATH_DATA_MAILTEMPLATES . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename'];
|
||||
break;
|
||||
}
|
||||
$fp = fopen($sDirectory, 'w');
|
||||
$content = stripslashes($_REQUEST['fcontent']);
|
||||
$content = str_replace("@amp@", "&", $content);
|
||||
$content = base64_decode($content);
|
||||
fwrite($fp, $content);
|
||||
fclose($fp);
|
||||
$sDirectory = $filter->xssFilterHard($sDirectory);
|
||||
echo 'saved: ' . $sDirectory;
|
||||
$app = new Processes();
|
||||
if (!$app->processExists($_REQUEST['pro_uid'])) {
|
||||
echo G::LoadTranslation('ID_PROCESS_UID_NOT_DEFINED');
|
||||
die;
|
||||
}
|
||||
|
||||
$sDir = "";
|
||||
if (isset($_REQUEST['MAIN_DIRECTORY'])) {
|
||||
$_REQUEST['MAIN_DIRECTORY'] = $filter->xssFilterHard($_REQUEST['MAIN_DIRECTORY']);
|
||||
$sDir = $_REQUEST['MAIN_DIRECTORY'];
|
||||
}
|
||||
switch ($sDir) {
|
||||
case 'mailTemplates':
|
||||
$sDirectory = PATH_DATA_MAILTEMPLATES . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename'];
|
||||
G::auditLog('ProcessFileManager', 'Save template (' . $_REQUEST['filename'] . ') in process "' . $resultProcess['PRO_TITLE'] . '"');
|
||||
break;
|
||||
case 'public':
|
||||
$sDirectory = PATH_DATA_PUBLIC . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename'];
|
||||
G::auditLog('ProcessFileManager', 'Save public template (' . $_REQUEST['filename'] . ') in process "' . $resultProcess['PRO_TITLE'] . '"');
|
||||
break;
|
||||
default:
|
||||
$sDirectory = PATH_DATA_MAILTEMPLATES . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename'];
|
||||
break;
|
||||
}
|
||||
$fp = fopen($sDirectory, 'w');
|
||||
$content = stripslashes($_REQUEST['fcontent']);
|
||||
$content = str_replace("@amp@", "&", $content);
|
||||
$content = base64_decode($content);
|
||||
fwrite($fp, $content);
|
||||
fclose($fp);
|
||||
$sDirectory = $filter->xssFilterHard($sDirectory);
|
||||
echo 'saved: ' . $sDirectory;
|
||||
break;
|
||||
case 'getSessid':
|
||||
if (isset($_SESSION['USER_LOGGED'])) {
|
||||
|
||||
@@ -4,14 +4,11 @@ $RBAC->allows(basename(__FILE__), $_GET['MAIN_DIRECTORY']);
|
||||
|
||||
$mainDirectory = !empty($_GET['MAIN_DIRECTORY']) ? $_GET['MAIN_DIRECTORY'] : '';
|
||||
$proUid = !empty($_GET['PRO_UID']) ? $_GET['PRO_UID'] : '';
|
||||
$currentDirectory = !empty($_GET['CURRENT_DIRECTORY']) ? realpath($_GET['CURRENT_DIRECTORY']) . PATH_SEP : '';
|
||||
$file = !empty($_GET['FILE']) ? realpath($_GET['FILE']) : '';
|
||||
$currentDirectory = !empty($_GET['CURRENT_DIRECTORY']) ? $_GET['CURRENT_DIRECTORY'] . PATH_SEP : '';
|
||||
$file = !empty($_GET['FILE']) ? $_GET['FILE'] : '';
|
||||
$extension = (!empty($_GET['sFilextension']) && $_GET['sFilextension'] === 'javascript') ? '.js' : '';
|
||||
|
||||
//validated process exists, return throw if not exists.
|
||||
$process = new Process();
|
||||
$process->load($proUid);
|
||||
|
||||
// Validate the main directory
|
||||
switch ($mainDirectory) {
|
||||
case 'mailTemplates':
|
||||
$directory = PATH_DATA_MAILTEMPLATES;
|
||||
@@ -24,9 +21,20 @@ switch ($mainDirectory) {
|
||||
break;
|
||||
}
|
||||
|
||||
// Validate if process exists, an exception is throwed if not exists
|
||||
$process = new Process();
|
||||
$process->load($proUid);
|
||||
|
||||
// Validate directory and file requested
|
||||
$filter = new InputFilter();
|
||||
$currentDirectory = $filter->validatePath($currentDirectory);
|
||||
$file = $filter->validatePath($file);
|
||||
|
||||
// Build requested path
|
||||
$directory .= $proUid . PATH_SEP . $currentDirectory;
|
||||
$file .= $extension;
|
||||
|
||||
// Stream the file if path exists
|
||||
if (file_exists($directory . $file)) {
|
||||
G::streamFile($directory . $file, true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user