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 (); if (1) { foreach ($processList as $key => $processInfo) { $tempTree['text'] = $key; $tempTree['id'] = $key; $tempTree['cls'] = 'folder'; $tempTree['draggable'] = true; $tempTree['optionType'] = "category"; //$tempTree['allowDrop']=false; $tempTree['singleClickExpand'] = true; if ($key != "No Category") { $tempTree['expanded'] = true; } else { //$tempTree ['expanded'] = false; $tempTree['expanded'] = true; } $tempTreeChildren = array (); foreach ($processList[$key] as $keyChild => $processInfoChild) { //print_r($processInfo); $tempTreeChild['text'] = $keyChild; //ellipsis ( $keyChild, 50 ); //$tempTree['text']=$key; $tempTreeChild['id'] = $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( $processInfoChild['uid'], $processInfoChild['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']; //$tempTree['cls']='file'; $tempTreeChildren[] = $tempTreeChild; } } $tempTree['children'] = $tempTreeChildren; $processListTree[] = $tempTree; } } else { foreach ($processList[$node] as $key => $processInfo) { //print_r($processInfo); $tempTree['text'] = $key; //ellipsis ( $key, 50 ); //$tempTree['text']=$key; $tempTree['id'] = $key; $tempTree['draggable'] = true; $tempTree['leaf'] = true; $tempTree['icon'] = '/images/icon.trigger.png'; $tempTree['allowChildren'] = false; $tempTree['optionType'] = "startProcess"; $tempTree['pro_uid'] = $processInfo['pro_uid']; $tempTree['tas_uid'] = $processInfo['uid']; $processInfo['myInbox'] = 0; $processInfo['totalInbox'] = 0; $tempTree['otherAttributes'] = array_merge( $processInfo, $proData[$processInfo['pro_uid']], $calendar->getCalendarFor( $processInfo['uid'], $processInfo['uid'], $processInfo['uid'] ) ); $tempTree['otherAttributes']['PRO_TAS_TITLE'] = str_replace( ")", "", str_replace( "(", "", trim( str_replace( $tempTree['otherAttributes']['PRO_TITLE'], "", $tempTree['otherAttributes']["value"] ) ) ) ); $tempTree['qtip'] = $tempTree['otherAttributes']['PRO_DESCRIPTION']; //$tempTree['cls']='file'; $processListTree[] = $tempTree; } } $processList = $processListTree; } else { $processList['success'] = 'failure'; $processList['message'] = 'User can\'t start process'; } 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' ); $oCriteria->add( ContentPeer::CON_CATEGORY, 'PRO_TITLE' ); $oCriteria->add( ContentPeer::CON_LANG, 'en' ); $oCriteria->add( ContentPeer::CON_ID, $sproUid ); $oDataset = ContentPeer::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->add( TaskPeer::PRO_UID, $sproUid ); $oDataset1 = TaskPeer::doSelectRS( $oC ); $oDataset1->setFetchmode( ResultSet::FETCHMODE_ASSOC ); while ($oDataset1->next()) { $aRow1 = $oDataset1->getRow(); $oCriteria1 = new Criteria( 'workflow' ); $oCriteria1->add( ContentPeer::CON_CATEGORY, 'TAS_TITLE' ); $oCriteria1->add( ContentPeer::CON_LANG, SYS_LANG ); $oCriteria1->add( ContentPeer::CON_ID, $aRow1['TAS_UID'] ); $oDataset2 = ContentPeer::doSelectRS( $oCriteria1 ); $oDataset2->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset2->next(); $aRow2 = $oDataset2->getRow(); Content::insertContent( 'TAS_TITLE', '', $aRow2['CON_ID'], 'en', $aRow2['CON_VALUE'] ); } $oC2 = new Criteria( 'workflow' ); $oC2->add( ContentPeer::CON_CATEGORY, 'PRO_TITLE' ); $oC2->add( ContentPeer::CON_LANG, SYS_LANG ); $oC2->add( ContentPeer::CON_ID, $sproUid ); $oDataset3 = ContentPeer::doSelectRS( $oC2 ); $oDataset3->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset3->next(); $aRow3 = $oDataset3->getRow(); Content::insertContent( 'PRO_TITLE', '', $aRow3['CON_ID'], 'en', $aRow3['CON_VALUE'] ); } return 1; } function startCase () { G::LoadClass( 'case' ); /* 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'] ); $_SESSION['APPLICATION'] = $aData['APPLICATION']; $_SESSION['INDEX'] = $aData['INDEX']; $_SESSION['PROCESS'] = $aData['PROCESS']; $_SESSION['TASK'] = $_REQUEST['taskId']; $_SESSION['STEP_POSITION'] = 0; $_SESSION['CASES_REFRESH'] = true; // Execute Events require_once 'classes/model/Event.php'; $event = new Event(); $event->createAppEvents( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['TASK'] ); $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 () { G::LoadClass( "BasePeer" ); require_once ("classes/model/AppCacheView.php"); require_once 'classes/model/Process.php'; $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 ) ); }