* @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; public function __construct() { //die($_SESSION['user_experience']); // 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'] : 'classic'; $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'] : ''; } } 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('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); $processList = $case->getStartCasesPerType($_SESSION['USER_LOGGED'], 'category'); $switchLink = $userProperty->getUserLocation($_SESSION['USER_LOGGED']); if (substr($sysConf['default_skin'], 0, 2) == 'ux') { $_SESSION['_defaultUserLocation'] = $switchLink; $switchLink = '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . $sysConf['default_skin'] . '/main'; } unset($processList[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', $processList); $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->render(); } public function indexSingle($httpData) { require_once 'classes/model/Step.php'; G::LoadClass('applications'); $apps = new Applications(); $step = new Step; $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 = 'My Inbox'; break; case 'draft': $title = 'My Drafts'; break; case 'unassigned': $title = '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('cases_count', $cases['totalCount']); $this->setVar('title', $title); $this->setVar('appListStart', $this->appListLimit); $this->setVar('appListLimit', 10); $this->setVar('listType', $httpData->t); $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) { require_once ( "classes/model/AppNotes.php" ); G::LoadClass('applications'); $apps = new Applications(); $appNotes = new AppNotes(); $start = empty($start) ? $this->appListStart : $start; $limit = empty($limit) ? $this->appListLimit : $limit; $notesStart = 0; $notesLimit = 4; $cases = $apps->getAll($this->userID, $start, $limit, $type); //g::pr($cases['data']); die; // 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'])) { $cases['data'][$i]['DEL_DELEGATE_DATE'] = G::getformatedDate($row['DEL_DELEGATE_DATE'], 'M d, yyyy - h:i:s'); } 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; // 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']); //../cases/cases_Open?APP_UID={$APP.APP_UID}&DEL_INDEX={$APP.DEL_INDEX}&action=todo $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(); } }