Files
luos/workflow/engine/controllers/home.php

782 lines
28 KiB
PHP
Raw Normal View History

<?php
/**
* Home controller
*
* @inherits Controller
* @access public
*/
class Home extends Controller
{
private $userID;
private $userName;
private $userFullName;
private $userRolName;
private $userUxType;
private $userUxBaseTemplate;
private $appListStart = 0;
private $appListLimit = 15;
private $clientBrowser;
private $lastSkin;
private $usrId;
2017-06-20 16:10:44 -04:00
public function call ($name)
{
global $RBAC;
$RBAC->allows(basename(__FILE__), $name);
parent::call($name);
}
public function __construct ()
{
// setting client browser information
$this->clientBrowser = G::getBrowser();
// getting the ux type from user o group conf.
$this->userUxType = isset( $_SESSION['user_experience'] ) ? $_SESSION['user_experience'] : 'SIMPLIFIED';
$this->lastSkin = isset( $_SESSION['user_last_skin'] ) ? $_SESSION['user_last_skin'] : 'neoclassic';
$this->userUxBaseTemplate = (is_dir( PATH_CUSTOM_SKINS . 'uxs' )) ? PATH_CUSTOM_SKINS . 'simplified' . PATH_SEP . 'templates' : 'home';
if (isset( $_SESSION['USER_LOGGED'] ) && ! empty( $_SESSION['USER_LOGGED'] )) {
$this->userID = isset( $_SESSION['USER_LOGGED'] ) ? $_SESSION['USER_LOGGED'] : null;
$this->userName = isset( $_SESSION['USR_USERNAME'] ) ? $_SESSION['USR_USERNAME'] : '';
$this->userFullName = isset( $_SESSION['USR_FULLNAME'] ) ? $_SESSION['USR_FULLNAME'] : '';
$this->userRolName = isset( $_SESSION['USR_ROLENAME'] ) ? $_SESSION['USR_ROLENAME'] : '';
2017-06-12 18:00:57 -04:00
$users = new Users();
$users = $users->load($this->userID);
$this->usrId = $users["USR_ID"];
}
}
public function login ($httpData)
{
//start new session
@session_destroy();
session_start();
session_regenerate_id();
$data = isset( $httpData->d ) ? unserialize( base64_decode( $httpData->d ) ) : '';
$template = $this->clientBrowser['name'] == 'msie' ? 'login_ie' : 'login_standard';
$skin = $this->clientBrowser['name'] == 'msie' ? $this->lastSkin : 'simplified';
if (! is_array( $data )) {
$data = array ('u' => '','p' => '','m' => ''
);
}
$this->setVar( 'msg', $data['m'] );
$this->setVar( 'usr', $data['u'] );
$this->setVar( 'pwd', $data['p'] );
$this->setVar('timeZoneFailed', (isset($data['timeZoneFailed']))? $data['timeZoneFailed'] : 0);
$this->setVar('userTimeZone', (isset($data['userTimeZone']))? $data['userTimeZone'] : '');
$this->setVar('browserTimeZone', (isset($data['browserTimeZone']))? $data['browserTimeZone'] : '');
$this->setVar( 'skin', $skin );
$this->setView( $this->userUxBaseTemplate . PATH_SEP . $template );
$this->render();
}
/**
* getting default list
*
* @param string $httpData (opional)
*/
public function index ($httpData)
{
if ($this->userUxType == 'SINGLE') {
$this->indexSingle( $httpData );
return;
}
require_once 'classes/model/UsersProperties.php';
G::LoadClass( 'process' );
G::LoadClass( 'case' );
$userProperty = new UsersProperties();
$process = new Process();
$case = new Cases();
G::loadClass( 'system' );
$sysConf = System::getSystemConfiguration( PATH_CONFIG . 'env.ini' );
//Get ProcessStatistics Info
$start = 0;
$limit = '';
$proData = $process->getAllProcesses( $start, $limit, null, null, false, true );
$processList = $case->getStartCasesPerType( $_SESSION['USER_LOGGED'], 'category' );
$processesList = array ();
foreach ($processList as $key => $valueProcess) {
foreach ($proData as $keyPro => $valuePro) {
2016-03-23 17:00:14 -04:00
if (!isset($valueProcess['pro_uid'])) {
$valueProcess['pro_uid'] = '';
}
if ($valueProcess['pro_uid'] == $valuePro['PRO_UID']) {
$processesList[] = $valueProcess;
}
}
}
$switchLink = $userProperty->getUserLocation( $_SESSION['USER_LOGGED'], SYS_LANG );
if (!isset($_COOKIE['workspaceSkin'])) {
if (substr( $sysConf['default_skin'], 0, 2 ) == 'ux') {
$_SESSION['_defaultUserLocation'] = $switchLink;
$switchLink = '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . $sysConf['default_skin'] . '/main';
}
}
$oServerConf = & serverConf::getSingleton();
if ($oServerConf->isRtl( SYS_LANG )) {
$swRtl = 1;
} else {
$swRtl = 0;
}
//Get simplified options
global $G_TMP_MENU;
$mnu = new Menu();
$mnu->load( 'simplified' );
$arrayMnuOption = array ();
$mnuNewCase = array ();
if (! empty( $mnu->Options )) {
foreach ($mnu->Options as $index => $value) {
$option = array ('id' => $mnu->Id[$index],'url' => $mnu->Options[$index],'label' => $mnu->Labels[$index],'icon' => $mnu->Icons[$index],'class' => $mnu->ElementClass[$index]
);
if ($mnu->Id[$index] != 'S_NEW_CASE') {
$arrayMnuOption[] = $option;
} else {
$mnuNewCase = $option;
}
}
}
$this->setView( $this->userUxBaseTemplate . PATH_SEP . 'index' );
$this->setVar( 'usrUid', $this->userID );
$this->setVar( 'userName', $this->userName );
$this->setVar( 'processList', $processesList );
$this->setVar( 'canStartCase', $case->canStartCase( $_SESSION['USER_LOGGED'] ) );
$this->setVar( 'userUxType', $this->userUxType );
$this->setVar( 'clientBrowser', $this->clientBrowser['name'] );
$this->setVar( 'switchLink', $switchLink );
$this->setVar( 'arrayMnuOption', $arrayMnuOption );
$this->setVar( 'mnuNewCase', $mnuNewCase );
$this->setVar( 'rtl', $swRtl );
$this->render();
}
public function indexSingle ($httpData)
{
require_once 'classes/model/Step.php';
$step = new Step();
$solrEnabled = false;
if (($solrConf = System::solrEnv()) !== false) {
G::LoadClass("AppSolr");
$ApplicationSolrIndex = new AppSolr(
$solrConf["solr_enabled"],
$solrConf["solr_host"],
$solrConf["solr_instance"]
);
if ($ApplicationSolrIndex->isSolrEnabled() && $solrConf['solr_enabled'] == true) {
//Check if there are missing records to reindex and reindex them
$ApplicationSolrIndex->synchronizePendingApplications();
$solrEnabled = true;
} else{
$solrEnabled = false;
}
}
if ($solrEnabled) {
$cases = $ApplicationSolrIndex->getAppGridData($this->userID, 0, 1, 'todo');
} else {
G::LoadClass( 'applications' );
$apps = new Applications();
$cases = $apps->getAll( $this->userID, 0, 1, 'todo' );
}
if (! isset( $cases['data'][0] )) {
//the current user has not any aplication to do
$this->setView( $this->userUxBaseTemplate . PATH_SEP . 'indexSingle' );
$this->setVar( 'default_url', $this->userUxBaseTemplate . "/" . 'error?no=2' );
$this->render();
exit();
}
$lastApp = $cases['data'][0];
$_SESSION['INDEX'] = $lastApp['DEL_INDEX'];
$_SESSION['APPLICATION'] = $lastApp['APP_UID'];
$_SESSION['PROCESS'] = $lastApp['PRO_UID'];
$_SESSION['TASK'] = $lastApp['TAS_UID'];
$steps = $apps->getSteps( $lastApp['APP_UID'], $lastApp['DEL_INDEX'], $lastApp['TAS_UID'], $lastApp['PRO_UID'] );
$lastStep = array_pop( $steps );
$lastStep['title'] = G::LoadTranslation( 'ID_FINISH' );
$steps[] = $lastStep;
$this->setView( $this->userUxBaseTemplate . PATH_SEP . 'indexSingle' );
$this->setVar( 'usrUid', $this->userID );
$this->setVar( 'userName', $this->userName );
$this->setVar( 'steps', $steps );
$this->setVar( 'default_url', "cases/cases_Open?APP_UID={$lastApp['APP_UID']}&DEL_INDEX={$lastApp['DEL_INDEX']}&action=todo" );
$this->render();
}
public function appList ($httpData)
{
// setting default list applications types [default: todo]
$httpData->t = isset( $httpData->t ) ? $httpData->t : 'todo';
// setting main list title
switch ($httpData->t) {
case 'todo':
$title = G::LoadTranslation("ID_MY_INBOX");
break;
case 'draft':
$title = G::LoadTranslation("ID_MY_DRAFTS");
break;
case 'unassigned':
$title = G::LoadTranslation("ID_UNASSIGNED_INBOX");
break;
default:
$title = ucwords( $httpData->t );
break;
}
// getting apps data
$cases = $this->getAppsData( $httpData->t );
// settings html template
$this->setView( $this->userUxBaseTemplate . PATH_SEP . 'appList' );
// settings vars and rendering
$this->setVar( 'cases', $cases['data'] );
$this->setVar( 'title', $title );
$this->setVar( 'noPerms', G::LoadTranslation( 'ID_CASES_NOTES_NO_PERMISSIONS' ));
$this->setVar( 'appListStart', $this->appListLimit );
$this->setVar( 'appListLimit', 10 );
$this->setVar( 'listType', $httpData->t );
$this->render();
}
public function appAdvancedSearch ($httpData)
{
$title = G::LoadTranslation("ID_ADVANCEDSEARCH");
$httpData->t = 'search';
// settings html template
$this->setView( $this->userUxBaseTemplate . PATH_SEP . 'appListSearch' );
2017-05-18 10:58:13 -04:00
// get data
$process = (isset($httpData->process)) ? $httpData->process : null;
$status = (isset($httpData->status)) ? $httpData->status : null;
$search = (isset($httpData->search)) ? $httpData->search : null;
$category = (isset($httpData->category)) ? $httpData->category : null;
$user = (isset($httpData->user)) ? $httpData->user : null;
$dateFrom = (isset($httpData->dateFrom)) ? $httpData->dateFrom : null;
$dateTo = (isset($httpData->dateTo)) ? $httpData->dateTo : null;
2017-05-18 10:58:13 -04:00
$processTitle = "";
if (!empty($process)) {
$processTitle = Process::loadById($process)->getProTitle();
}
2017-05-18 10:58:13 -04:00
$userName = "";
if (!empty($user) && $user !== "ALL" && $user !== "CURRENT_USER") {
$userObject = Users::loadById($user);
2017-05-18 10:58:13 -04:00
$userName = $userObject->getUsrLastname() . " " . $userObject->getUsrFirstname();
}
2017-06-12 18:00:57 -04:00
$cases = $this->getAppsData(
$httpData->t,
null,
null,
$user,
null,
$search,
$process,
$status,
$dateFrom,
$dateTo,
null,
null,
'APP_CACHE_VIEW.APP_NUMBER',
$category
);
$arraySearch = array($process, $status, $search, $category, $user, $dateFrom, $dateTo );
// settings vars and rendering
$processes = array();
$processes = $this->getProcessArray($httpData->t, $this->userID );
$this->setVar( 'statusValues', $this->getStatusArray( $httpData->t, $this->userID ) );
$this->setVar( 'categoryValues', $this->getCategoryArray() );
$this->setVar( 'allUsersValues', $this->getAllUsersArray( 'search' ) );
$this->setVar( 'categoryTitle', G::LoadTranslation("ID_CATEGORY") );
$this->setVar( 'processTitle', G::LoadTranslation("ID_PROCESS") );
$this->setVar( 'statusTitle', G::LoadTranslation("ID_STATUS") );
$this->setVar( 'searchTitle', G::LoadTranslation("ID_SEARCH") );
$this->setVar( 'userTitle', G::LoadTranslation("ID_USER") );
$this->setVar( 'fromTitle', G::LoadTranslation("ID_DELEGATE_DATE_FROM") );
$this->setVar( 'toTitle', G::LoadTranslation("ID_DELEGATE_DATE_TO") );
$this->setVar( 'filterTitle', G::LoadTranslation("ID_FILTER") );
$this->setVar( 'arraySearch', $arraySearch );
$this->setVar( 'cases', $cases['data'] );
$this->setVar( 'title', $title );
$this->setVar( 'noPerms', G::LoadTranslation( 'ID_CASES_NOTES_NO_PERMISSIONS' ));
$this->setVar( 'appListStart', $this->appListLimit );
$this->setVar( 'appListLimit', 10 );
$this->setVar( 'listType', $httpData->t );
$this->setVar( 'processCurrentTitle', $processTitle );
$this->setVar( 'userCurrentName', $userName );
$this->setVar( 'currentUserLabel', G::LoadTranslation( "ID_ALL_USERS" ) );
$this->setVar( 'allProcessLabel', G::LoadTranslation("ID_ALL_PROCESS") );
$this->render();
}
public function getApps ($httpData)
{
$cases = $this->getAppsData( $httpData->t, $httpData->start, $httpData->limit );
$this->setView( $this->userUxBaseTemplate . PATH_SEP . 'applications' );
$this->setVar( 'cases', $cases['data'] );
$this->render();
}
public function getAppsData (
$type,
$start = null,
$limit = null,
$user = null,
$filter = null,
$search = null,
$process = null,
$status = null,
$dateFrom = null,
$dateTo = null,
$callback = null,
2016-06-29 10:17:06 -04:00
$dir = 'DESC',
$sort = "APP_CACHE_VIEW.APP_NUMBER",
$category = null)
{
require_once ("classes/model/AppNotes.php");
$appNotes = new AppNotes();
$start = empty( $start ) ? $this->appListStart : $start;
$limit = empty( $limit ) ? $this->appListLimit : $limit;
$notesStart = 0;
$notesLimit = 4;
switch ($user) {
case 'CURRENT_USER':
$user = $this->usrId;
break;
case 'ALL':
$user = null;
break;
case null:
2017-06-12 18:00:57 -04:00
if ($type === 'search') {
$user = null;
} else {
$user = $this->usrId;
}
break;
default:
//$user = $this->userID;
break;
}
$solrEnabled = false;
if ((
$type == "todo" || $type == "draft" || $type == "paused" || $type == "sent" ||
$type == "selfservice" || $type == "unassigned" || $type == "search"
) &&
(($solrConf = System::solrEnv()) !== false)
) {
G::LoadClass("AppSolr");
$ApplicationSolrIndex = new AppSolr(
$solrConf["solr_enabled"],
$solrConf["solr_host"],
$solrConf["solr_instance"]
);
if ($ApplicationSolrIndex->isSolrEnabled() && $solrConf['solr_enabled'] == true) {
//Check if there are missing records to reindex and reindex them
$ApplicationSolrIndex->synchronizePendingApplications();
$solrEnabled = true;
} else{
$solrEnabled = false;
}
}
if ($solrEnabled) {
$cases = $ApplicationSolrIndex->getAppGridData(
$user,
$start,
$limit,
$type,
$filter,
$search,
$process,
$status,
'',
$dateFrom,
$dateTo,
$callback,
$dir,
$sort,
$category
);
} else {
2016-03-08 10:49:39 -04:00
$dataList['userId'] = $user;
$dataList['start'] = $start;
$dataList['limit'] = $limit;
$dataList['filter'] = $filter;
$dataList['search'] = $search;
$dataList['process'] = $process;
$dataList['status'] = $status;
$dataList['dateFrom'] = $dateFrom;
$dataList['dateTo'] = $dateTo;
$dataList['callback'] = $callback;
$dataList['dir'] = $dir;
$dataList['sort'] = $sort;
$dataList['category'] = $category;
2016-03-30 12:04:00 -04:00
$dataList['action'] = $type;
2017-06-12 18:00:57 -04:00
$dataList['dir'] = 'DESC';
2016-03-08 10:49:39 -04:00
/*----------------------------------********---------------------------------*/
if (true) {
//In enterprise version this block of code should always be executed
//In community version this block of code is deleted and is executed the other
2017-06-12 18:00:57 -04:00
$listType = '';
if (!empty($type)) {
switch ($type) {
case 'todo':
$listType = 'inbox';
break;
case 'draft':
$listType = 'inbox';
break;
case 'unassigned':
$listType = 'unassigned';
break;
case 'search':
$dataList['filterStatus'] = $status;
break;
}
}
if (!empty($listType)) {
//The change is made because the method 'getList()' does not
//support 'USR_UID', this method uses the numeric field 'USR_ID'.
$userObject = Users::loadById($dataList['userId']);
$dataList['userId'] = $userObject->getUsrUid();
$list = new \ProcessMaker\BusinessModel\Lists();
$cases = $list->getList($listType, $dataList);
2016-03-30 12:04:00 -04:00
}
2016-03-08 10:49:39 -04:00
} else {
/*----------------------------------********---------------------------------*/
$case = new \ProcessMaker\BusinessModel\Cases();
$cases = $case->getList($dataList);
foreach ($cases['data'] as &$value) {
$value = array_change_key_case($value, CASE_UPPER);
}
/*----------------------------------********---------------------------------*/
}
/*----------------------------------********---------------------------------*/
}
if(empty($cases) && $type == 'search') {
$case = new \ProcessMaker\BusinessModel\Cases();
$cases = $case->getList($dataList);
foreach ($cases['data'] as &$value) {
$value = array_change_key_case($value, CASE_UPPER);
}
}
2016-03-30 12:04:00 -04:00
if(!isset($cases['totalCount'])){
$cases['totalCount'] = $cases['total'];
}
// formating & complitting apps data with 'Notes'
foreach ($cases['data'] as $i => $row) {
// Formatting
$appTitle = str_replace( '#', '', $row['APP_TITLE'] );
if (is_numeric( $appTitle )) {
$cases['data'][$i]['APP_TITLE'] = G::LoadTranslation( 'ID_CASE' ) . ' ' . $appTitle;
}
if (isset( $row['DEL_DELEGATE_DATE'] )) {
G::LoadClass( "configuration" );
$conf = new Configurations();
$generalConfCasesList = $conf->getConfiguration( 'ENVIRONMENT_SETTINGS', '' );
$cases['data'][$i]['DEL_DELEGATE_DATE'] = '';
if (defined('SYS_SYS')) {
if (isset( $generalConfCasesList['casesListDateFormat'] ) && ! empty( $generalConfCasesList['casesListDateFormat'] )) {
$cases['data'][$i]['DEL_DELEGATE_DATE'] = $conf->getSystemDate($row['DEL_DELEGATE_DATE'], 'casesListDateFormat');
}
}
if ($cases['data'][$i]['DEL_DELEGATE_DATE'] == '') {
$cases['data'][$i]['DEL_DELEGATE_DATE'] = $conf->getSystemDate($row['DEL_DELEGATE_DATE']);
}
}
if (isset( $row['APP_DEL_PREVIOUS_USER'] )) {
$cases['data'][$i]['APP_DEL_PREVIOUS_USER'] = ucwords( $row['APP_DEL_PREVIOUS_USER'] );
}
// Completting with Notes
$notes = $appNotes->getNotesList( $row['APP_UID'], '', $notesStart, $notesLimit );
$notes = $notes['array'];
$cases['data'][$i]['NOTES_COUNT'] = $notes['totalCount'];
$cases['data'][$i]['NOTES_LIST'] = $notes['notes'];
}
return $cases;
}
public function startCase ($httpData)
{
G::LoadClass( 'case' );
$case = new Cases();
$aData = $case->startCase( $httpData->id, $_SESSION['USER_LOGGED'] );
$_SESSION['APPLICATION'] = $aData['APPLICATION'];
$_SESSION['INDEX'] = $aData['INDEX'];
$_SESSION['PROCESS'] = $aData['PROCESS'];
$_SESSION['TASK'] = $httpData->id;
$_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'] = '../cases/cases_Open?APP_UID=' . $aData['APPLICATION'] . '&DEL_INDEX=' . $aData['INDEX'] . '&action=draft';
$_SESSION['BREAKSTEP']['NEXT_STEP'] = $aNextStep;
$this->redirect( $aNextStep['PAGE'] );
}
public function error ($httpData)
{
$httpData->no = isset( $httpData->no ) ? $httpData->no : 0;
switch ($httpData->no) {
case 2:
$tpl = $this->userUxBaseTemplate . PATH_SEP . 'noAppsMsg';
break;
default:
$tpl = $this->userUxBaseTemplate . PATH_SEP . 'error';
}
$this->setView( $tpl );
$this->render();
}
function getUserArray($action, $userUid, $search = null)
{
2017-06-12 18:00:57 -04:00
G::LoadClass("configuration");
$conf = new Configurations();
$confEnvSetting = $conf->getFormats();
$status = array();
$users[] = array("CURRENT_USER", G::LoadTranslation("ID_CURRENT_USER"));
$users[] = array("ALL", G::LoadTranslation("ID_ALL_USERS"));
//now get users, just for the Search action
switch ($action) {
case 'search_simple':
case 'search':
$cUsers = new Criteria('workflow');
$cUsers->clearSelectColumns();
$cUsers->addSelectColumn(UsersPeer::USR_UID);
$cUsers->addSelectColumn(UsersPeer::USR_FIRSTNAME);
$cUsers->addSelectColumn(UsersPeer::USR_LASTNAME);
2017-06-12 18:00:57 -04:00
$cUsers->addSelectColumn(UsersPeer::USR_USERNAME);
$cUsers->addSelectColumn(UsersPeer::USR_ID);
if (!empty($search)) {
2017-06-22 13:43:11 -04:00
$cUsers->add(
$cUsers->getNewCriterion(UsersPeer::USR_FIRSTNAME, '%' . $search . '%', Criteria::LIKE)->addOr(
$cUsers->getNewCriterion(UsersPeer::USR_LASTNAME, '%' . $search . '%', Criteria::LIKE))
);
}
$oDataset = UsersPeer::doSelectRS($cUsers);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
2017-06-12 18:00:57 -04:00
$usrFullName = $conf->usersNameFormatBySetParameters(
$confEnvSetting["format"],
$aRow["USR_USERNAME"],
$aRow["USR_FIRSTNAME"],
$aRow["USR_LASTNAME"]
);
$users[] = array($aRow['USR_ID'], htmlentities($usrFullName, ENT_QUOTES, "UTF-8"));
$oDataset->next();
}
break;
default:
return $users;
break;
}
return $users;
}
function getCategoryArray ()
{
global $oAppCache;
require_once 'classes/model/ProcessCategory.php';
$category[] = array ("",G::LoadTranslation( "ID_ALL_CATEGORIES" )
);
$criteria = new Criteria( 'workflow' );
$criteria->addSelectColumn( ProcessCategoryPeer::CATEGORY_UID );
$criteria->addSelectColumn( ProcessCategoryPeer::CATEGORY_NAME );
$dataset = ProcessCategoryPeer::doSelectRS( $criteria );
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$dataset->next();
while ($row = $dataset->getRow()) {
$category[] = array ($row['CATEGORY_UID'],$row['CATEGORY_NAME']);
$dataset->next();
}
return $category;
}
function getAllUsersArray ($action)
{
global $oAppCache;
$status = array ();
$users[] = array ("CURRENT_USER",G::LoadTranslation( "ID_CURRENT_USER" )
);
$users[] = array ("",G::LoadTranslation( "ID_ALL_USERS" )
);
if ($action == 'to_reassign') {
//now get users, just for the Search action
$cUsers = $oAppCache->getToReassignListCriteria(null);
$cUsers->addSelectColumn( AppCacheViewPeer::USR_UID );
if (g::MySQLSintaxis()) {
$cUsers->addGroupByColumn( AppCacheViewPeer::USR_UID );
}
$cUsers->addAscendingOrderByColumn( AppCacheViewPeer::APP_CURRENT_USER );
$oDataset = AppCacheViewPeer::doSelectRS( $cUsers );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$users[] = array ($aRow['USR_UID'],$aRow['APP_CURRENT_USER']);
$oDataset->next();
}
}
return $users;
}
function getStatusArray ($action, $userUid)
{
2017-06-12 18:00:57 -04:00
$status = array();
$aStatus = Application::$app_status_values;
$status[] = array('', G::LoadTranslation('ID_ALL_STATUS'));
foreach ($aStatus as $key => $value) {
if ($action == 'search') {
$status[] = array ($value, G::LoadTranslation( 'ID_CASES_STATUS_' . $key ));
} else {
$status[] = array ($key, G::LoadTranslation( 'ID_CASES_STATUS_' . $key ));
}
}
return $status;
}
/**
* Get the list of active processes
2017-06-12 18:00:57 -04:00
*
* @global type $oAppCache
* @param type $action
* @param type $userUid
* @return array
*/
private function getProcessArray($action, $userUid, $search=null)
{
global $oAppCache;
$processes = array();
$processes[] = array("", G::LoadTranslation("ID_ALL_PROCESS"));
$cProcess = new Criteria("workflow");
$cProcess->clearSelectColumns();
$cProcess->addSelectColumn(ProcessPeer::PRO_ID);
$cProcess->addSelectColumn(ProcessPeer::PRO_TITLE);
$cProcess->add(ProcessPeer::PRO_STATUS, "ACTIVE");
if (!empty($search)) {
$cProcess->add(ProcessPeer::PRO_TITLE, "%$search%", Criteria::LIKE);
}
$oDataset = ProcessPeer::doSelectRS($cProcess);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$processes[] = array($aRow["PRO_ID"], $aRow["PRO_TITLE"]);
$oDataset->next();
}
return ($processes);
}
/**
* Get the list of processes
* @param type $httpData
*/
public function getProcesses($httpData)
{
$processes = [];
foreach ($this->getProcessArray($httpData->t, null, $httpData->term) as $row) {
$processes[] = [
'id' => $row[0],
'label' => $row[1],
'value' => $row[1],
];
}
print G::json_encode($processes);
}
/**
* Get the list of users
* @param type $httpData
*/
public function getUsers($httpData)
{
$users = [];
foreach ($this->getUserArray($httpData->t, null, $httpData->term) as $row) {
$users[] = [
'id' => $row[0],
'label' => $row[1],
'value' => $row[1],
];
}
print G::json_encode($users);
}
}