Files
luos/workflow/engine/methods/cases/casesStartPage_Ajax.php

327 lines
12 KiB
PHP
Raw Normal View History

<?php
2015-03-17 15:25:49 -04:00
G::LoadSystem('inputfilter');
$filter = new InputFilter();
$_POST = $filter->xssFilterHard($_POST);
$_REQUEST = $filter->xssFilterHard($_REQUEST);
2017-03-09 16:42:41 -04:00
if (!isset($_SESSION['USER_LOGGED'])) {
$res = new stdclass();
$res->message = G::LoadTranslation('ID_LOGIN_AGAIN');
$res->lostSession = true;
$res->success = true;
print G::json_encode( $res );
die();
}
if (! isset( $_REQUEST['action'] )) {
$res['success'] = 'failure';
2013-03-14 15:15:04 -04:00
$res['message'] = G::LoadTranslation( 'ID_REQUEST_ACTION' );
print G::json_encode( $res );
die();
}
if (! function_exists( $_REQUEST['action'] ) || !G::isUserFunction($_REQUEST['action'])) {
$res['success'] = 'failure';
2013-03-14 15:15:04 -04:00
$res['message'] = G::LoadTranslation( 'ID_REQUEST_ACTION_NOT_EXIST' );
print G::json_encode( $res );
die();
}
$functionName = $_REQUEST['action'];
$functionParams = isset( $_REQUEST['params'] ) ? $_REQUEST['params'] : array ();
$functionName( $functionParams );
function getProcessList ()
{
$calendar = new Calendar();
$oProcess = new Process();
$oCase = new Cases();
//Get ProcessStatistics Info
$start = 0;
$limit = '';
$proData = $oProcess->getAllProcesses( $start, $limit, null, null, false, true );
$bCanStart = $oCase->canStartCase( $_SESSION['USER_LOGGED'] );
if ($bCanStart) {
$processListInitial = $oCase->getStartCasesPerType( $_SESSION['USER_LOGGED'], 'category' );
$processList = array ();
foreach ($processListInitial as $key => $procInfo) {
if (isset( $procInfo['pro_uid'] )) {
if (trim( $procInfo['cat'] ) == "") {
$procInfo['cat'] = "_OTHER_";
}
$processList[$procInfo['catname']][$procInfo['value']] = $procInfo;
}
}
ksort( $processList );
foreach ($processList as $key => $processInfo) {
ksort( $processList[$key] );
}
if (! isset( $_REQUEST['node'] )) {
$node = 'root';
} else {
$node = $_REQUEST['node'];
}
foreach ($proData as $key => $proInfo) {
$proData[$proInfo['PRO_UID']] = $proInfo;
}
$processListTree = array ();
2017-05-19 16:16:16 -04:00
foreach ($processList as $key => $processInfo) {
$tempTree['text'] = $key;
$tempTree['id'] = G::encryptOld($key);
$tempTree['cls'] = 'folder';
$tempTree['draggable'] = true;
$tempTree['optionType'] = "category";
$tempTree['singleClickExpand'] = true;
if ($key != "No Category") {
$tempTree['expanded'] = true;
} else {
$tempTree['expanded'] = true;
}
2017-05-19 16:16:16 -04:00
$tempTreeChildren = array();
foreach ($processList[$key] as $keyChild => $processInfoChild) {
$tempTreeChild['text'] = $keyChild;
$tempTreeChild['id'] = G::encryptOld($keyChild);
$tempTreeChild['draggable'] = true;
$tempTreeChild['leaf'] = true;
$tempTreeChild['icon'] = '/images/icon.trigger.png';
$tempTreeChild['allowChildren'] = false;
$tempTreeChild['optionType'] = "startProcess";
$tempTreeChild['pro_uid'] = $processInfoChild['pro_uid'];
$tempTreeChild['tas_uid'] = $processInfoChild['uid'];
$processInfoChild['myInbox'] = 0;
$processInfoChild['totalInbox'] = 0;
if (isset($proData[$processInfoChild['pro_uid']])) {
$tempTreeChild['otherAttributes'] = array_merge($processInfoChild, $proData[$processInfoChild['pro_uid']], $calendar->getCalendarFor($_SESSION['USER_LOGGED'], $processInfoChild['pro_uid'], $processInfoChild['uid']));
$tempTreeChild['otherAttributes']['PRO_TAS_TITLE'] = str_replace(")", "", str_replace("(", "", trim(str_replace($tempTreeChild['otherAttributes']['PRO_TITLE'], "", $tempTreeChild['otherAttributes']["value"]))));
$tempTreeChild['qtip'] = $tempTreeChild['otherAttributes']['PRO_DESCRIPTION'];
$tempTreeChildren[] = $tempTreeChild;
}
}
2017-05-19 16:16:16 -04:00
$tempTree['children'] = $tempTreeChildren;
$processListTree[] = $tempTree;
}
2017-05-19 16:16:16 -04:00
$processList = $processListTree;
} else {
$processList['success'] = 'failure';
2013-03-14 15:15:04 -04:00
$processList['message'] = G::LoadTranslation('ID_USER_PROCESS_NOT_START');
}
print G::json_encode( $processList );
die();
}
function ellipsis ($text, $numb)
{
$text = html_entity_decode( $text, ENT_QUOTES );
if (strlen( $text ) > $numb) {
$text = substr( $text, 0, $numb );
$text = substr( $text, 0, strrpos( $text, " " ) );
//This strips the full stop:
if ((substr( $text, - 1 )) == ".") {
$text = substr( $text, 0, (strrpos( $text, "." )) );
}
$etc = "...";
$text = $text . $etc;
}
return $text;
}
function lookinginforContentProcess ($sproUid)
{
require_once 'classes/model/Content.php';
require_once 'classes/model/Task.php';
require_once 'classes/model/Content.php';
$oContent = new Content();
///we are looking for a pro title for this process $sproUid
$oCriteria = new Criteria( 'workflow' );
2016-07-18 14:13:01 -04:00
$oCriteria->add( ProcessPeer::PRO_UID, $sproUid );
$oDataset = ProcessPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
$aRow = $oDataset->getRow();
if (! is_array( $aRow )) {
$oC = new Criteria( 'workflow' );
$oC->addSelectColumn( TaskPeer::TAS_UID );
$oC->addSelectColumn( TaskPeer::TAS_TITLE );
$oC->add( TaskPeer::PRO_UID, $sproUid );
$oDataset1 = TaskPeer::doSelectRS( $oC );
$oDataset1->setFetchmode( ResultSet::FETCHMODE_ASSOC );
while ($oDataset1->next()) {
$aRow1 = $oDataset1->getRow();
Content::insertContent( 'TAS_TITLE', '', $aRow1['TAS_UID'], 'en', $aRow1['TAS_TITLE'] );
}
$oC2 = new Criteria( 'workflow' );
$oC2->addSelectColumn(ProcessPeer::PRO_UID);
$oC2->addSelectColumn(ProcessPeer::PRO_TITLE);
$oC2->add( ProcessPeer::PRO_UID, $sproUid );
$oDataset3 = ProcessPeer::doSelectRS( $oC2 );
$oDataset3->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset3->next();
$aRow3 = $oDataset3->getRow();
Content::insertContent( 'PRO_TITLE', '', $aRow3['PRO_UID'], 'en', $aRow3['PRO_TITLE'] );
}
return 1;
}
function startCase ()
{
2015-03-17 15:25:49 -04:00
$filter = new InputFilter();
$_POST = $filter->xssFilterHard($_POST);
$_REQUEST = $filter->xssFilterHard($_REQUEST);
/* GET , POST & $_SESSION Vars */
/* unset any variable, because we are starting a new case */
if (isset( $_SESSION['APPLICATION'] )) {
unset( $_SESSION['APPLICATION'] );
}
if (isset( $_SESSION['PROCESS'] )) {
unset( $_SESSION['PROCESS'] );
}
if (isset( $_SESSION['TASK'] )) {
unset( $_SESSION['TASK'] );
}
if (isset( $_SESSION['INDEX'] )) {
unset( $_SESSION['INDEX'] );
}
if (isset( $_SESSION['STEP_POSITION'] )) {
unset( $_SESSION['STEP_POSITION'] );
}
/* Process */
try {
$oCase = new Cases();
lookinginforContentProcess( $_POST['processId'] );
$aData = $oCase->startCase( $_REQUEST['taskId'], $_SESSION['USER_LOGGED'] );
2015-03-17 15:25:49 -04:00
$aData = $filter->xssFilterHard($aData);
$_SESSION['APPLICATION'] = $aData['APPLICATION'];
$_SESSION['INDEX'] = $aData['INDEX'];
$_SESSION['PROCESS'] = $aData['PROCESS'];
$_SESSION['TASK'] = $_REQUEST['taskId'];
$_SESSION['STEP_POSITION'] = 0;
$_SESSION['CASES_REFRESH'] = true;
$oCase = new Cases();
$aNextStep = $oCase->getNextStep( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION'] );
$aNextStep['PAGE'] = 'open?APP_UID=' . $aData['APPLICATION'] . '&DEL_INDEX=' . $aData['INDEX'] . '&action=draft';
$_SESSION['BREAKSTEP']['NEXT_STEP'] = $aNextStep;
$aData['openCase'] = $aNextStep;
$aData['status'] = 'success';
print (G::json_encode( $aData )) ;
} catch (Exception $e) {
$aData['status'] = 'failure';
$aData['message'] = $e->getMessage();
print_r( G::json_encode( $aData ) );
}
}
function getSimpleDashboardData ()
{
$sUIDUserLogged = $_SESSION['USER_LOGGED'];
$Criteria = new Criteria( 'workflow' );
$Criteria->clearSelectColumns();
$Criteria->addSelectColumn( AppCacheViewPeer::PRO_UID );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_UID );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_NUMBER );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_STATUS );
$Criteria->addSelectColumn( AppCacheViewPeer::DEL_INDEX );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_TITLE );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_PRO_TITLE );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_TAS_TITLE );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_DEL_PREVIOUS_USER );
$Criteria->addSelectColumn( AppCacheViewPeer::DEL_TASK_DUE_DATE );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_UPDATE_DATE );
$Criteria->addSelectColumn( AppCacheViewPeer::DEL_PRIORITY );
$Criteria->addSelectColumn( AppCacheViewPeer::DEL_DELAYED );
$Criteria->addSelectColumn( AppCacheViewPeer::USR_UID );
$Criteria->addSelectColumn( AppCacheViewPeer::APP_THREAD_STATUS );
$Criteria->add( AppCacheViewPeer::APP_STATUS, array ("TO_DO","DRAFT"), CRITERIA::IN );
$Criteria->add( AppCacheViewPeer::USR_UID, array ($sUIDUserLogged,""), CRITERIA::IN );
$Criteria->add( AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL );
//$Criteria->add ( AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN' );
$Criteria->add( AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN' );
//execute the query
$oDataset = AppCacheViewPeer::doSelectRS( $Criteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
$oProcess = new Process();
$rows = array ();
$processNames = array ();
while ($aRow = $oDataset->getRow()) {
// G::pr($aRow);
if (! isset( $processNames[$aRow['PRO_UID']] )) {
$aProcess = $oProcess->load( $aRow['PRO_UID'] );
$processNames[$aRow['PRO_UID']] = $aProcess['PRO_TITLE'];
}
if ($aRow['USR_UID'] == "") {
$aRow['APP_STATUS'] = "UNASSIGNED";
}
if (((in_array( $aRow['APP_STATUS'], array ("TO_DO","UNASSIGNED"
) )) && ($aRow['APP_THREAD_STATUS'] == "OPEN")) || ($aRow['APP_STATUS'] == "DRAFT")) {
$rows[$processNames[$aRow['PRO_UID']]][$aRow['APP_STATUS']][$aRow['DEL_DELAYED']][] = $aRow['APP_UID'];
if (! isset( $rows[$processNames[$aRow['PRO_UID']]][$aRow['APP_STATUS']]['count'] )) {
$rows[$processNames[$aRow['PRO_UID']]][$aRow['APP_STATUS']]['count'] = 0;
}
$rows[$processNames[$aRow['PRO_UID']]][$aRow['APP_STATUS']]['count'] ++;
}
$oDataset->next();
}
//Generate different groups of data for graphs
$rowsResponse = array ();
$i = 0;
foreach ($rows as $processID => $processInfo) {
$i ++;
if ($i <= 10) {
$rowsResponse['caseStatusByProcess'][] = array ('process' => $processID,'inbox' => isset( $processInfo['TO_DO']['count'] ) ? $processInfo['TO_DO']['count'] : 0,'draft' => isset( $processInfo['DRAFT']['count'] ) ? $processInfo['DRAFT']['count'] : 0,'unassigned' => isset( $processInfo['UNASSIGNED']['count'] ) ? $processInfo['UNASSIGNED']['count'] : 0);
}
}
$rowsResponse['caseDelayed'][] = array ('delayed' => 'On Time','total' => 100);
$rowsResponse['caseDelayed'][] = array ('delayed' => 'Delayed','total' => 50
);
print_r( G::json_encode( $rowsResponse ) );
}
function getRegisteredDashboards ()
{
$oPluginRegistry = & PMPluginRegistry::getSingleton();
$dashBoardPages = $oPluginRegistry->getDashboardPages();
print_r( G::json_encode( $dashBoardPages ) );
}
function getDefaultDashboard ()
{
$defaultDashboard['defaultTab'] = "mainDashboard";
if (isset( $_SESSION['__currentTabDashboard'] )) {
$defaultDashboard['defaultTab'] = $_SESSION['__currentTabDashboard'];
}
print_r( G::json_encode( $defaultDashboard ) );
}