From 167bab6b6e194969e9ba37e5d21864eb9ba8b95b Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Tue, 3 Jul 2012 18:20:20 -0400 Subject: [PATCH] BUG 9319 "Problema con el Case Label" SOLVED - By changing the "Case Label", this is not updated in the APP_CACHE_VIEW table - Solved problem to changing the "Case Label", now is updated in the APP_CACHE_VIEW table - Improvement in file, compliance with the standard PSR2 Note: - When you change the "Case Title" of a task, affecting every case, if it is the current task of the case (otherwise it would not affect the APP_CACHE_VIEW table) - If a task is saved empty the "Case Title" the APP_TITLE take the value #APP_NUMBER (all cases are in the task, this in APP_CACHE_VIEW table) --- workflow/engine/bin/cron_single.php | 761 +++--- .../engine/classes/model/AppCacheView.php | 2407 +++++++++-------- workflow/engine/classes/model/Task.php | 1396 +++++----- .../js/processmap/core/processes_Map.js | 70 +- workflow/engine/methods/tasks/tasks_Ajax.php | 156 +- 5 files changed, 2599 insertions(+), 2191 deletions(-) diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 144b8bc8f..105e0de1a 100755 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -8,379 +8,496 @@ error_reporting(E_ALL); ini_set('memory_limit', '128M'); if (!defined('SYS_LANG')) { - define('SYS_LANG', 'en'); + define('SYS_LANG', 'en'); } if (!defined('PATH_HOME')) { - if ( !defined('PATH_SEP') ) { - define('PATH_SEP', ( substr(PHP_OS, 0, 3) == 'WIN' ) ? '\\' : '/'); - } - $docuroot = explode(PATH_SEP, str_replace('engine' . PATH_SEP . 'methods' . PATH_SEP . 'services', '', dirname(__FILE__))); - array_pop($docuroot); - array_pop($docuroot); - $pathhome = implode(PATH_SEP, $docuroot) . PATH_SEP; - //try to find automatically the trunk directory where are placed the RBAC and Gulliver directories - //in a normal installation you don't need to change it. - array_pop($docuroot); - $pathTrunk = implode(PATH_SEP, $docuroot) . PATH_SEP ; - array_pop($docuroot); - $pathOutTrunk = implode( PATH_SEP, $docuroot) . PATH_SEP ; - // to do: check previous algorith for Windows $pathTrunk = "c:/home/"; + if (!defined('PATH_SEP')) { + define('PATH_SEP', (substr(PHP_OS, 0, 3) == 'WIN') ? '\\' : '/'); + } - define('PATH_HOME', $pathhome); - define('PATH_TRUNK', $pathTrunk); - define('PATH_OUTTRUNK', $pathOutTrunk); + $pathServices = 'engine' . PATH_SEP . 'methods' . PATH_SEP . 'services'; + $docuroot = explode(PATH_SEP, str_replace($pathServices, '', dirname(__FILE__))); - require_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths.php'); + array_pop($docuroot); + array_pop($docuroot); - G::LoadThirdParty('pear/json','class.json'); - G::LoadThirdParty('smarty/libs','Smarty.class'); - G::LoadSystem('error'); - G::LoadSystem('dbconnection'); - G::LoadSystem('dbsession'); - G::LoadSystem('dbrecordset'); - G::LoadSystem('dbtable'); - G::LoadSystem('rbac' ); - G::LoadSystem('publisher'); - G::LoadSystem('templatePower'); - G::LoadSystem('xmlDocument'); - G::LoadSystem('xmlform'); - G::LoadSystem('xmlformExtension'); - G::LoadSystem('form'); - G::LoadSystem('menu'); - G::LoadSystem("xmlMenu"); - G::LoadSystem('dvEditor'); - G::LoadSystem('table'); - G::LoadSystem('pagedTable'); - G::LoadClass ( 'system' ); - require_once ( "propel/Propel.php" ); - require_once ( "creole/Creole.php" ); + $pathHome = implode(PATH_SEP, $docuroot) . PATH_SEP; + + //try to find automatically the trunk directory where are placed the RBAC and Gulliver directories + //in a normal installation you don't need to change it. + + array_pop($docuroot); + + $pathTrunk = implode(PATH_SEP, $docuroot) . PATH_SEP; + + array_pop($docuroot); + + $pathOutTrunk = implode(PATH_SEP, $docuroot) . PATH_SEP; + + //to do: check previous algorith for Windows $pathTrunk = "c:/home/"; + + define('PATH_HOME', $pathHome); + define('PATH_TRUNK', $pathTrunk); + define('PATH_OUTTRUNK', $pathOutTrunk); + + require_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths.php'); + + G::LoadThirdParty('pear/json','class.json'); + G::LoadThirdParty('smarty/libs','Smarty.class'); + G::LoadSystem('error'); + G::LoadSystem('dbconnection'); + G::LoadSystem('dbsession'); + G::LoadSystem('dbrecordset'); + G::LoadSystem('dbtable'); + G::LoadSystem('rbac' ); + G::LoadSystem('publisher'); + G::LoadSystem('templatePower'); + G::LoadSystem('xmlDocument'); + G::LoadSystem('xmlform'); + G::LoadSystem('xmlformExtension'); + G::LoadSystem('form'); + G::LoadSystem('menu'); + G::LoadSystem("xmlMenu"); + G::LoadSystem('dvEditor'); + G::LoadSystem('table'); + G::LoadSystem('pagedTable'); + G::LoadClass ( 'system' ); + require_once ( "propel/Propel.php" ); + require_once ( "creole/Creole.php" ); } -require_once 'classes/model/AppDelegation.php'; -require_once 'classes/model/Event.php'; -require_once 'classes/model/AppEvent.php'; -require_once 'classes/model/CaseScheduler.php'; -//G::loadClass('pmScript'); +require_once ("classes/model/Configuration.php"); +require_once ("classes/model/AppCacheView.php"); +require_once ("classes/model/AppDelegation.php"); +require_once ("classes/model/Event.php"); +require_once ("classes/model/AppEvent.php"); +require_once ("classes/model/CaseScheduler.php"); +//G::loadClass("pmScript"); -//default values +//default values $bCronIsRunning = false; $sLastExecution = ''; -if ( file_exists(PATH_DATA . 'cron') ) { - $aAux = unserialize( trim( @file_get_contents(PATH_DATA . 'cron')) ); - $bCronIsRunning = (boolean)$aAux['bCronIsRunning']; - $sLastExecution = $aAux['sLastExecution']; -} -else { - //if not exists the file, just create a new one with current date - @file_put_contents(PATH_DATA . 'cron', serialize(array('bCronIsRunning' => '1', 'sLastExecution' => date('Y-m-d H:i:s')))); + +if (file_exists(PATH_DATA . 'cron')) { + $arrayAux = unserialize(trim(@file_get_contents(PATH_DATA . 'cron'))); + $bCronIsRunning = (boolean)($arrayAux['bCronIsRunning']); + $sLastExecution = $arrayAux['sLastExecution']; +} else { + //if not exists the file, just create a new one with current date + $arrayAux = array('bCronIsRunning' => '1', 'sLastExecution' => date('Y-m-d H:i:s')); + + @file_put_contents(PATH_DATA . 'cron', serialize($arrayAux)); } if (!defined('SYS_SYS')) { - $sObject = $argv[1]; - $sNow = $argv[2]; - $sFilter = ''; - - for($i=3; $i', '', $sContent); - $sContent = str_replace('define', '', $sContent); - $sContent = str_replace("('", "$", $sContent); - $sContent = str_replace("',", '=', $sContent); - $sContent = str_replace(");", ';', $sContent); - - eval($sContent); - $dsn = $DB_ADAPTER . '://' . $DB_USER . ':' . $DB_PASS . '@' . $DB_HOST . '/' . $DB_NAME; - $dsnRbac = $DB_ADAPTER . '://' . $DB_RBAC_USER . ':' . $DB_RBAC_PASS . '@' . $DB_RBAC_HOST . '/' . $DB_RBAC_NAME; - $dsnRp = $DB_ADAPTER . '://' . $DB_REPORT_USER . ':' . $DB_REPORT_PASS . '@' . $DB_REPORT_HOST . '/' . $DB_REPORT_NAME; - switch ($DB_ADAPTER) { - case 'mysql': - $dsn .= '?encoding=utf8'; - $dsnRbac .= '?encoding=utf8'; - break; - case 'mssql': - //$dsn .= '?sendStringAsUnicode=false'; - //$dsnRbac .= '?sendStringAsUnicode=false'; - break; - default: - break; - } - $pro['datasources']['workflow']['connection'] = $dsn; - $pro['datasources']['workflow']['adapter'] = $DB_ADAPTER; - $pro['datasources']['rbac']['connection'] = $dsnRbac; - $pro['datasources']['rbac']['adapter'] = $DB_ADAPTER; - $pro['datasources']['rp']['connection'] = $dsnRp; - $pro['datasources']['rp']['adapter'] = $DB_ADAPTER; - //$pro['datasources']['dbarray']['connection'] = 'dbarray://user:pass@localhost/pm_os'; - //$pro['datasources']['dbarray']['adapter'] = 'dbarray'; - $oFile = fopen(PATH_CORE . 'config/_databases_.php', 'w'); - fwrite($oFile, ''); - fclose($oFile); - Propel::init(PATH_CORE . 'config/_databases_.php'); - //Creole::registerDriver('dbarray', 'creole.contrib.DBArrayConnection'); - - eprintln("Processing workspace: " . $sObject, 'green'); - try{ - processWorkspace(); - }catch(Exception $e){ - echo $e->getMessage(); - eprintln("Probelm in workspace: " . $sObject.' it was omitted.', 'red'); - } - eprintln(); + for ($i = 3; $i < count($argv); $i++) { + $sFilter .= ' ' . $argv[$i]; } - } - unlink(PATH_CORE . 'config/_databases_.php'); -} -else { - processWorkspace(); + + $oDirectory = dir(PATH_DB); + + if (is_dir(PATH_DB . $sObject)) { + saveLog('main', 'action', "checking folder " . PATH_DB . $sObject); + + if (file_exists(PATH_DB . $sObject . PATH_SEP . 'db.php')) { + define('SYS_SYS', $sObject); + + include_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths_installed.php'); + include_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths.php'); + + //***************** PM Paths DATA ************************** + define('PATH_DATA_SITE', PATH_DATA . 'sites/' . SYS_SYS . '/'); + define('PATH_DOCUMENT', PATH_DATA_SITE . 'files/'); + define('PATH_DATA_MAILTEMPLATES', PATH_DATA_SITE . 'mailTemplates/'); + define('PATH_DATA_PUBLIC', PATH_DATA_SITE . 'public/'); + define('PATH_DATA_REPORTS', PATH_DATA_SITE . 'reports/'); + define('PATH_DYNAFORM', PATH_DATA_SITE . 'xmlForms/'); + define('PATH_IMAGES_ENVIRONMENT_FILES', PATH_DATA_SITE . 'usersFiles' . PATH_SEP); + define('PATH_IMAGES_ENVIRONMENT_USERS', PATH_DATA_SITE . 'usersPhotographies' . PATH_SEP); + + if (is_file(PATH_DATA_SITE.PATH_SEP . '.server_info')) { + $SERVER_INFO = file_get_contents(PATH_DATA_SITE.PATH_SEP.'.server_info'); + $SERVER_INFO = unserialize($SERVER_INFO); + + define('SERVER_NAME', $SERVER_INFO ['SERVER_NAME']); + define('SERVER_PORT', $SERVER_INFO ['SERVER_PORT']); + } else { + eprintln("WARNING! No server info found!", 'red'); + } + + $sContent = file_get_contents(PATH_DB . $sObject . PATH_SEP . 'db.php'); + + $sContent = str_replace('', '', $sContent); + $sContent = str_replace('define', '', $sContent); + $sContent = str_replace("('", "$", $sContent); + $sContent = str_replace("',", '=', $sContent); + $sContent = str_replace(");", ';', $sContent); + + eval($sContent); + + $dsn = $DB_ADAPTER . '://' . $DB_USER . ':' . $DB_PASS . '@' . $DB_HOST . '/' . $DB_NAME; + + $dsnRbac = $DB_ADAPTER . '://' . $DB_RBAC_USER . ':' . $DB_RBAC_PASS . '@' . $DB_RBAC_HOST . '/'; + $dsnRbac = $dsnRbac . $DB_RBAC_NAME; + + $dsnRp = $DB_ADAPTER . '://' . $DB_REPORT_USER . ':' . $DB_REPORT_PASS . '@' . $DB_REPORT_HOST . '/'; + $dsnRp = $dsnRp . $DB_REPORT_NAME; + + switch ($DB_ADAPTER) { + case 'mysql': + $dsn .= '?encoding=utf8'; + $dsnRbac .= '?encoding=utf8'; + break; + case 'mssql': + //$dsn .= '?sendStringAsUnicode=false'; + //$dsnRbac .= '?sendStringAsUnicode=false'; + break; + default: + break; + } + + $pro['datasources']['workflow']['connection'] = $dsn; + $pro['datasources']['workflow']['adapter'] = $DB_ADAPTER; + $pro['datasources']['rbac']['connection'] = $dsnRbac; + $pro['datasources']['rbac']['adapter'] = $DB_ADAPTER; + $pro['datasources']['rp']['connection'] = $dsnRp; + $pro['datasources']['rp']['adapter'] = $DB_ADAPTER; + //$pro['datasources']['dbarray']['connection'] = 'dbarray://user:pass@localhost/pm_os'; + //$pro['datasources']['dbarray']['adapter'] = 'dbarray'; + + $oFile = fopen(PATH_CORE . 'config/_databases_.php', 'w'); + fwrite($oFile, ''); + fclose($oFile); + + Propel::init(PATH_CORE . 'config/_databases_.php'); + //Creole::registerDriver('dbarray', 'creole.contrib.DBArrayConnection'); + + eprintln("Processing workspace: " . $sObject, "green"); + + try { + processWorkspace(); + } catch (Exception $e) { + echo $e->getMessage(); + + eprintln("Probelm in workspace: " . $sObject . " it was omitted.", "red"); + } + + eprintln(); + } + } + + unlink(PATH_CORE . 'config/_databases_.php'); +} else { + processWorkspace(); } //finally update the file -@file_put_contents(PATH_DATA . 'cron', serialize(array('bCronIsRunning' => '0', 'sLastExecution' => date('Y-m-d H:i:s')))); +$arrayAux = array('bCronIsRunning' => '0', 'sLastExecution' => date('Y-m-d H:i:s')); +@file_put_contents(PATH_DATA . 'cron', serialize($arrayAux)); +function processWorkspace() +{ + global $sLastExecution; -function processWorkspace() { - global $sLastExecution; - try { - resendEmails(); - unpauseApplications(); - calculateDuration(); - executePlugins(); - executeEvents($sLastExecution); - executeScheduledCases(); - } - catch (Exception $oError) { - saveLog ("main", "error", "Error processing workspace : " . $oError->getMessage() . "\n" ); - } -} - -function resendEmails() { - global $sFilter; - if($sFilter!='' && strpos($sFilter, 'emails') === false) return false; - - setExecutionMessage("Resending emails"); - - try { - G::LoadClass('spool'); - $oSpool = new spoolRun(); - $oSpool->resendEmails(); - saveLog('resendEmails', 'action', 'Resending Emails', "c"); - - $aSpoolWarnings = $oSpool->getWarnings(); - if( $aSpoolWarnings !== false ) { - foreach($aSpoolWarnings as $sWarning){ - print('MAIL SPOOL WARNING: ' . $sWarning."\n"); - saveLog('resendEmails', 'warning', 'MAIL SPOOL WARNING: ' . $sWarning); - } + try { + resendEmails(); + unpauseApplications(); + calculateDuration(); + executePlugins(); + executeEvents($sLastExecution); + executeScheduledCases(); + executeUpdateAppTitle(); + } catch (Exception $oError) { + saveLog("main", "error", "Error processing workspace : " . $oError->getMessage() . "\n"); } - setExecutionResultMessage('DONE'); - } - catch (Exception $oError) { - setExecutionResultMessage('WITH ERRORS', 'error'); - eprintln(" '-".$oError->getMessage(), 'red'); - saveLog('resendEmails', 'error', 'Error Resending Emails: ' . $oError->getMessage()); - } } -function unpauseApplications() { - global $sFilter; - global $sNow; - if($sFilter!='' && strpos($sFilter, 'unpause') === false) return false; - setExecutionMessage("Unpausing applications"); +function resendEmails() +{ + global $sFilter; - try { - G::LoadClass('case'); - $oCases = new Cases(); - $oCases->ThrowUnpauseDaemon($sNow); - setExecutionResultMessage('DONE'); - saveLog('unpauseApplications', 'action', 'Unpausing Applications'); - } - catch (Exception $oError) { - setExecutionResultMessage('WITH ERRORS', 'error'); - eprintln(" '-".$oError->getMessage(), 'red'); - saveLog('unpauseApplications', 'error', 'Error Unpausing Applications: ' . $oError->getMessage()); - } -} + if ($sFilter != '' && strpos($sFilter, 'emails') === false) { + return false; + } -function executePlugins(){ - global $sFilter; - if($sFilter!='' && strpos($sFilter, 'plugins') === false) return false; + setExecutionMessage("Resending emails"); - $pathCronPlugins = PATH_CORE.'bin'.PATH_SEP.'plugins'.PATH_SEP; - - //erik: verify if the plugin dir exists - if (!is_dir($pathCronPlugins)) { - return false; - } - - if ($handle = opendir( $pathCronPlugins )) { - while ( false !== ($file = readdir($handle))) { - if ( strpos($file, '.php',1) && is_file($pathCronPlugins . $file) ) { - $filename = str_replace('.php' , '', $file) ; - $className = $filename . 'ClassCron'; + try { + G::LoadClass('spool'); - include_once ( $pathCronPlugins . $file ); //$filename. ".php" - $oPlugin = new $className(); - if (method_exists($oPlugin, 'executeCron')) { - $oPlugin->executeCron(); - setExecutionMessage("Executing Plugins"); - setExecutionResultMessage('DONE'); + $oSpool = new spoolRun(); + $oSpool->resendEmails(); + + saveLog('resendEmails', 'action', 'Resending Emails', "c"); + + $aSpoolWarnings = $oSpool->getWarnings(); + + if ( $aSpoolWarnings !== false ) { + foreach ($aSpoolWarnings as $sWarning) { + print('MAIL SPOOL WARNING: ' . $sWarning."\n"); + saveLog('resendEmails', 'warning', 'MAIL SPOOL WARNING: ' . $sWarning); + } } - } + + setExecutionResultMessage('DONE'); + } catch (Exception $oError) { + setExecutionResultMessage('WITH ERRORS', 'error'); + eprintln(" '-".$oError->getMessage(), 'red'); + saveLog('resendEmails', 'error', 'Error Resending Emails: ' . $oError->getMessage()); } - } -} -function calculateDuration() { - global $sFilter; - if($sFilter!='' && strpos($sFilter, 'calculate') === false) return false; - setExecutionMessage("Calculating Duration"); - - try { - $oAppDelegation = new AppDelegation(); - $oAppDelegation->calculateDuration(); - setExecutionResultMessage('DONE'); - saveLog('calculateDuration', 'action', 'Calculating Duration'); - } - catch (Exception $oError) { - setExecutionResultMessage('WITH ERRORS', 'error'); - eprintln(" '-".$oError->getMessage(), 'red'); - saveLog('calculateDuration', 'error', 'Error Calculating Duration: ' . $oError->getMessage()); - } } -function executeEvents($sLastExecution, $sNow=null) { - - global $sFilter; - global $sNow; - $log = array(); - - if($sFilter!='' && strpos($sFilter, 'events') === false) return false; - - setExecutionMessage("Executing events"); - setExecutionResultMessage('PROCESSING'); - try { - $oAppEvent = new AppEvent(); - saveLog('executeEvents', 'action', "Executing Events $sLastExecution, $sNow "); - $n = $oAppEvent->executeEvents($sNow, false, $log); - foreach ($log as $value) { - saveLog('executeEvents', 'action', "Execute Events : $value, $sNow "); - } - setExecutionMessage("|- End Execution events"); - setExecutionResultMessage("Processed $n"); - //saveLog('executeEvents', 'action', $res ); - } - catch (Exception $oError) { - setExecutionResultMessage('WITH ERRORS', 'error'); - eprintln(" '-".$oError->getMessage(), 'red'); - saveLog('calculateAlertsDueDate', 'Error', 'Error Executing Events: ' . $oError->getMessage()); - } -} - -function executeScheduledCases($sNow=null){ - try{ +function unpauseApplications() +{ global $sFilter; global $sNow; - $log = array(); - if($sFilter!='' && strpos($sFilter, 'scheduler') === false) return false; - - setExecutionMessage("Executing the scheduled starting cases"); + if ($sFilter != '' && strpos($sFilter, 'unpause') === false) { + return false; + } + + setExecutionMessage("Unpausing applications"); + + try { + G::LoadClass('case'); + + $oCases = new Cases(); + $oCases->ThrowUnpauseDaemon($sNow); + + setExecutionResultMessage('DONE'); + saveLog('unpauseApplications', 'action', 'Unpausing Applications'); + } catch (Exception $oError) { + setExecutionResultMessage('WITH ERRORS', 'error'); + eprintln(" '-".$oError->getMessage(), 'red'); + saveLog('unpauseApplications', 'error', 'Error Unpausing Applications: ' . $oError->getMessage()); + } +} + +function executePlugins() +{ + global $sFilter; + + if ($sFilter!='' && strpos($sFilter, 'plugins') === false) { + return false; + } + + $pathCronPlugins = PATH_CORE.'bin'.PATH_SEP.'plugins'.PATH_SEP; + + //erik: verify if the plugin dir exists + if (!is_dir($pathCronPlugins)) { + return false; + } + + if ($handle = opendir($pathCronPlugins)) { + while (false !== ($file = readdir($handle))) { + if (strpos($file, '.php',1) && is_file($pathCronPlugins . $file)) { + $filename = str_replace('.php' , '', $file); + $className = $filename . 'ClassCron'; + + include_once ( $pathCronPlugins . $file ); //$filename. ".php" + + $oPlugin = new $className(); + + if (method_exists($oPlugin, 'executeCron')) { + $oPlugin->executeCron(); + setExecutionMessage("Executing Plugins"); + setExecutionResultMessage('DONE'); + } + } + } + } +} + +function calculateDuration() +{ + global $sFilter; + + if ($sFilter != '' && strpos($sFilter, 'calculate') === false) { + return false; + } + + setExecutionMessage("Calculating Duration"); + + try { + $oAppDelegation = new AppDelegation(); + $oAppDelegation->calculateDuration(); + + setExecutionResultMessage('DONE'); + saveLog('calculateDuration', 'action', 'Calculating Duration'); + } catch (Exception $oError) { + setExecutionResultMessage('WITH ERRORS', 'error'); + eprintln(" '-".$oError->getMessage(), 'red'); + saveLog('calculateDuration', 'error', 'Error Calculating Duration: ' . $oError->getMessage()); + } +} + +function executeEvents($sLastExecution, $sNow=null) +{ + global $sFilter; + global $sNow; + + $log = array(); + + if ($sFilter != '' && strpos($sFilter, 'events') === false) { + return false; + } + + setExecutionMessage("Executing events"); setExecutionResultMessage('PROCESSING'); - - $sNow = isset($sNow)? $sNow: date('Y-m-d H:i:s'); - $oCaseScheduler = new CaseScheduler; - $oCaseScheduler->caseSchedulerCron($sNow, $log); - - foreach ($log as $value) { - saveLog('executeScheduledCases', 'action', "OK Case# $value"); + try { + $oAppEvent = new AppEvent(); + saveLog('executeEvents', 'action', "Executing Events $sLastExecution, $sNow "); + $n = $oAppEvent->executeEvents($sNow, false, $log); + + foreach ($log as $value) { + saveLog('executeEvents', 'action', "Execute Events : $value, $sNow "); + } + + setExecutionMessage("|- End Execution events"); + setExecutionResultMessage("Processed $n"); + //saveLog('executeEvents', 'action', $res ); + } catch (Exception $oError) { + setExecutionResultMessage('WITH ERRORS', 'error'); + eprintln(" '-".$oError->getMessage(), 'red'); + saveLog('calculateAlertsDueDate', 'Error', 'Error Executing Events: ' . $oError->getMessage()); } - setExecutionResultMessage('DONE'); - } catch(Exception $oError){ - setExecutionResultMessage('WITH ERRORS', 'error'); - eprintln(" '-".$oError->getMessage(), 'red'); - } } -function saveLog($sSource, $sType, $sDescription) { - try { - global $isDebug; - if ( $isDebug ) - print date('H:i:s') ." ($sSource) $sType $sDescription
\n"; - @fwrite($oFile, date('Y-m-d H:i:s') . '(' . $sSource . ') ' . $sDescription . "\n"); - - G::verifyPath(PATH_DATA . 'log' . PATH_SEP, true); - if ($sType == 'action') { - $oFile = @fopen(PATH_DATA . 'log' . PATH_SEP . 'cron.log', 'a+'); +function executeScheduledCases($sNow=null) +{ + try { + global $sFilter; + global $sNow; + + $log = array(); + + if ($sFilter != '' && strpos($sFilter, 'scheduler') === false) { + return false; + } + + setExecutionMessage("Executing the scheduled starting cases"); + setExecutionResultMessage('PROCESSING'); + + $sNow = isset($sNow)? $sNow : date('Y-m-d H:i:s'); + + $oCaseScheduler = new CaseScheduler(); + $oCaseScheduler->caseSchedulerCron($sNow, $log); + + foreach ($log as $value) { + saveLog('executeScheduledCases', 'action', "OK Case# $value"); + } + + setExecutionResultMessage('DONE'); + } catch (Exception $oError) { + setExecutionResultMessage('WITH ERRORS', 'error'); + eprintln(" '-".$oError->getMessage(), 'red'); } - else { - $oFile = @fopen(PATH_DATA . 'log' . PATH_SEP . 'cronError.log', 'a+'); +} + +function executeUpdateAppTitle() +{ + try { + $criteriaConf = new Criteria("workflow"); + + $criteriaConf->addSelectColumn(ConfigurationPeer::OBJ_UID); + $criteriaConf->addSelectColumn(ConfigurationPeer::CFG_VALUE); + $criteriaConf->add(ConfigurationPeer::CFG_UID, "TAS_APP_TITLE_UPDATE"); + + $rsCriteriaConf = ConfigurationPeer::doSelectRS($criteriaConf); + $rsCriteriaConf->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + setExecutionMessage("Update case labels"); + saveLog("updateCaseLabels", "action", "Update case labels", "c"); + + while ($rsCriteriaConf->next()) { + $row = $rsCriteriaConf->getRow(); + + $taskUid = $row["OBJ_UID"]; + $lang = $row["CFG_VALUE"]; + + //Update case labels + $appcv = new AppCacheView(); + $appcv->appTitleByTaskCaseLabelUpdate($taskUid, $lang); + + //Delete record + $criteria = new Criteria("workflow"); + + $criteria->add(ConfigurationPeer::CFG_UID, "TAS_APP_TITLE_UPDATE"); + $criteria->add(ConfigurationPeer::OBJ_UID, $taskUid); + $criteria->add(ConfigurationPeer::CFG_VALUE, $lang); + + $numRowDeleted = ConfigurationPeer::doDelete($criteria); + + saveLog("updateCaseLabels", "action", "OK Task $taskUid"); + } + + setExecutionResultMessage("DONE"); + } catch (Exception $e) { + setExecutionResultMessage("WITH ERRORS", "error"); + eprintln(" '-" . $e->getMessage(), "red"); + saveLog("updateCaseLabels", "error", "Error updating case labels: " . $e->getMessage()); } - @fwrite($oFile, date('Y-m-d H:i:s') . '(' . $sSource . ') ' . $sDescription . "\n"); - @fclose($oFile); - } - catch (Exception $oError) { - //CONTINUE - } } +function saveLog($sSource, $sType, $sDescription) +{ + try { + global $isDebug; -function setExecutionMessage($m){ - $len = strlen($m); - $linesize = 60; - $rOffset = $linesize - $len; + if ($isDebug) { + print date('H:i:s') ." ($sSource) $sType $sDescription
\n"; + } - eprint("* $m"); - for($i=0; $i<$rOffset; $i++) eprint('.'); + @fwrite($oFile, date('Y-m-d H:i:s') . '(' . $sSource . ') ' . $sDescription . "\n"); + + G::verifyPath(PATH_DATA . 'log' . PATH_SEP, true); + + if ($sType == 'action') { + $oFile = @fopen(PATH_DATA . 'log' . PATH_SEP . 'cron.log', 'a+'); + } else { + $oFile = @fopen(PATH_DATA . 'log' . PATH_SEP . 'cronError.log', 'a+'); + } + + @fwrite($oFile, date('Y-m-d H:i:s') . '(' . $sSource . ') ' . $sDescription . "\n"); + @fclose($oFile); + } catch (Exception $oError) { + //CONTINUE + } } -function setExecutionResultMessage($m, $t=''){ - $c='green'; - if($t=='error') $c = 'red'; - if($t=='info') $c = 'yellow'; - eprintln("[$m]", $c); +function setExecutionMessage($m) +{ + $len = strlen($m); + $linesize = 60; + $rOffset = $linesize - $len; + + eprint("* $m"); + + for ($i = 0; $i < $rOffset; $i++) { + eprint('.'); + } } +function setExecutionResultMessage($m, $t='') +{ + $c = 'green'; + if ($t == 'error') { + $c = 'red'; + } + if ($t == 'info') { + $c = 'yellow'; + } - - + eprintln("[$m]", $c); +} diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index be5c746cc..4d974a94d 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -4,7 +4,7 @@ * @package workflow.engine.classes.model */ -require_once 'classes/model/om/BaseAppCacheView.php'; +require_once ('classes/model/om/BaseAppCacheView.php'); /** @@ -18,1210 +18,1439 @@ require_once 'classes/model/om/BaseAppCacheView.php'; * */ -require_once 'classes/model/Application.php'; -require_once 'classes/model/AppDelegation.php'; -require_once 'classes/model/AppDelay.php'; -require_once 'classes/model/Task.php'; -require_once 'classes/model/AdditionalTables.php'; +require_once ('classes/model/Application.php'); +require_once ('classes/model/AppDelegation.php'); +require_once ('classes/model/AppDelay.php'); +require_once ('classes/model/Task.php'); +require_once ('classes/model/AdditionalTables.php'); /** * @package workflow.engine.classes.model * @access public */ -class AppCacheView extends BaseAppCacheView { - var $confCasesList; - var $pathToAppCacheFiles; +class AppCacheView extends BaseAppCacheView +{ + public $confCasesList; + public $pathToAppCacheFiles; - function getAllCounters ( $aTypes, $userUid, $processSummary = false ) { - $aResult = Array(); - foreach($aTypes as $type){ - $aResult[$type] = $this->getListCounters($type, $userUid, $processSummary); + public function getAllCounters($aTypes, $userUid, $processSummary=false) + { + $aResult = array(); + + foreach ($aTypes as $type) { + $aResult[$type] = $this->getListCounters($type, $userUid, $processSummary); + } + + return $aResult; } - return $aResult; - } - function getListCounters ( $type, $userUid, $processSummary ) { - switch ( $type ) { - case 'to_do' : - $Criteria = $this->getToDoCountCriteria( $userUid ); - break; - case 'draft' : - $Criteria = $this->getDraftCountCriteria( $userUid ); - break; - case 'sent' : - $Criteria = $this->getSentCountCriteria( $userUid ); - return AppCacheViewPeer::doCount($Criteria, true); - break; - case 'selfservice' : - $Criteria = $this->getUnassignedCountCriteria( $userUid ); - break; - case 'paused' : - $Criteria = $this->getPausedCountCriteria( $userUid ); - break; - case 'completed' : - $Criteria = $this->getCompletedCountCriteria( $userUid ); - break; - case 'cancelled' : - $Criteria = $this->getCancelledCountCriteria( $userUid ); - break; - case 'to_revise' : - $Criteria = $this->getToReviseCountCriteria( $userUid ); - break; - default : - return $type; + public function getListCounters($type, $userUid, $processSummary) + { + switch ($type) { + case 'to_do': + $criteria = $this->getToDoCountCriteria($userUid); + break; + case 'draft': + $criteria = $this->getDraftCountCriteria($userUid); + break; + case 'sent': + $criteria = $this->getSentCountCriteria($userUid); + return AppCacheViewPeer::doCount($criteria, true); + break; + case 'selfservice': + $criteria = $this->getUnassignedCountCriteria($userUid); + break; + case 'paused': + $criteria = $this->getPausedCountCriteria($userUid); + break; + case 'completed': + $criteria = $this->getCompletedCountCriteria($userUid); + break; + case 'cancelled': + $criteria = $this->getCancelledCountCriteria($userUid); + break; + case 'to_revise': + $criteria = $this->getToReviseCountCriteria($userUid); + break; + default: + return $type; + } + + return AppCacheViewPeer::doCount($criteria); } - return AppCacheViewPeer::doCount($Criteria); - } - - /** - * gets the todo cases list criteria - * param $userUid the current userUid - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getToDo ( $userUid, $doCount ) { - // adding configuration fields from the configuration options - // and forming the criteria object - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $Criteria = new Criteria('workflow'); - } - else { - $Criteria = $this->addPMFieldsToCriteria('todo'); - } - $Criteria->addSelectColumn(AppCacheViewPeer::TAS_UID); - $Criteria->addSelectColumn(AppCacheViewPeer::PRO_UID); - - $Criteria->add (AppCacheViewPeer::APP_STATUS, "TO_DO" , CRITERIA::EQUAL ); - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - $Criteria->add (AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); - $Criteria->add (AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); - $Criteria->add (AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); - return $Criteria; - } - - /** - * gets the todo cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getToDoCountCriteria ($userUid) { - return $this->getToDo($userUid, true); - } - - /** - * gets the todo cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getToDoListCriteria ($userUid) { - return $this->getToDo($userUid, false); - } - - /** - * gets the DRAFT cases list criteria - * param $userUid the current userUid - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getDraft ( $userUid, $doCount ) { - // adding configuration fields from the configuration options - // and forming the criteria object - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $Criteria = new Criteria('workflow'); - } - else { - $Criteria = $this->addPMFieldsToCriteria('draft'); - } - $Criteria->add (AppCacheViewPeer::APP_STATUS, "DRAFT" , CRITERIA::EQUAL ); - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - - //$Criteria->add (AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); - $Criteria->add (AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); - $Criteria->add (AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); - return $Criteria; - } /** - * gets the DRAFT cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getDraftCountCriteria ($userUid) { - return $this->getDraft($userUid, true); - } + * gets the todo cases list criteria + * param $userUid the current userUid + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getToDo($userUid, $doCount) + { + //adding configuration fields from the configuration options + //and forming the criteria object + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $criteria = new Criteria('workflow'); + } else { + $criteria = $this->addPMFieldsToCriteria('todo'); + } - /** - * gets the DRAFT cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getDraftListCriteria ($userUid) { - return $this->getDraft($userUid, false); - } + $criteria->addSelectColumn(AppCacheViewPeer::TAS_UID); + $criteria->addSelectColumn(AppCacheViewPeer::PRO_UID); + + $criteria->add(AppCacheViewPeer::APP_STATUS, "TO_DO", CRITERIA::EQUAL); + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); + $criteria->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); + $criteria->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); + $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); + + return $criteria; + } /** - * gets the SENT cases list criteria - * param $userUid the current userUid - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getSent ( $userUid, $doCount ) { - // adding configuration fields from the configuration options - // and forming the criteria object - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $Criteria = new Criteria('workflow'); + * gets the todo cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getToDoCountCriteria($userUid) + { + return $this->getToDo($userUid, true); } - else { - $Criteria = $this->addPMFieldsToCriteria('sent'); - } - $Criteria->add (AppCacheViewPeer::APP_STATUS, "DRAFT" , CRITERIA::EQUAL ); - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - - //$Criteria->add (AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); - $Criteria->add (AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); - $Criteria->add (AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); - return $Criteria; - } /** - * gets the SENT cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getSentCountCriteria ($userUid) { - $Criteria = new Criteria('workflow'); - $Criteria = $this->addPMFieldsToCriteria('sent'); + * gets the todo cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getToDoListCriteria($userUid) + { + return $this->getToDo($userUid, false); + } - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); + /** + * gets the DRAFT cases list criteria + * param $userUid the current userUid + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getDraft($userUid, $doCount) + { + //adding configuration fields from the configuration options + //and forming the criteria object + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $criteria = new Criteria('workflow'); + } else { + $criteria = $this->addPMFieldsToCriteria('draft'); + } - return $Criteria; - } + $criteria->add(AppCacheViewPeer::APP_STATUS, "DRAFT", CRITERIA::EQUAL); + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); - /** - * gets the SENT cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getSentListCriteria ($userUid) { - $Criteria = $this->addPMFieldsToCriteria('sent'); - //$Criteria->addAsColumn( 'MAX_DEL_INDEX', 'MAX(' . AppDelegationPeer::DEL_INDEX . ')' ); - //$Criteria->addJoin ( AppCacheViewPeer::APP_UID , AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN); + //$criteria->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); + $criteria->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); + $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); + return $criteria; + } - $Criteria->addGroupByColumn(AppCacheViewPeer::APP_UID); - //$Criteria->addGroupByColumn(AppCacheViewPeer::APP_); - return $Criteria; - } + /** + * gets the DRAFT cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getDraftCountCriteria($userUid) + { + return $this->getDraft($userUid, true); + } - function getSentListProcessCriteria ($userUid) { - $Criteria = $this->addPMFieldsToCriteria('sent'); - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - return $Criteria; - } + /** + * gets the DRAFT cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getDraftListCriteria($userUid) + { + return $this->getDraft($userUid, false); + } - /* - * get user's SelfService tasks - * @param string $sUIDUser - * @return $rows - */ - function getSelfServiceTasks($userUid = '') - { - $rows[] = array(); - $tasks = array(); + /** + * gets the SENT cases list criteria + * param $userUid the current userUid + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getSent($userUid, $doCount) + { + //adding configuration fields from the configuration options + //and forming the criteria object + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $criteria = new Criteria('workflow'); + } else { + $criteria = $this->addPMFieldsToCriteria('sent'); + } - //check starting task assigned directly to this user - $c = new Criteria(); - $c->clearSelectColumns(); - $c->addSelectColumn(TaskPeer::TAS_UID); - $c->addSelectColumn(TaskPeer::PRO_UID); - $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); - $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN); - $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); - $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE'); - $c->add(TaskUserPeer::USR_UID, $userUid); + $criteria->add(AppCacheViewPeer::APP_STATUS, "DRAFT", CRITERIA::EQUAL); + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); - $rs = TaskPeer::doSelectRS($c); - $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $rs->next(); - $row = $rs->getRow(); + //$criteria->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); + $criteria->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); + $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); - while (is_array($row)) { - $tasks[] = $row['TAS_UID']; + return $criteria; + } + + /** + * gets the SENT cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getSentCountCriteria($userUid) + { + $criteria = new Criteria('workflow'); + $criteria = $this->addPMFieldsToCriteria('sent'); + + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); + + return $criteria; + } + + /** + * gets the SENT cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getSentListCriteria ($userUid) + { + $criteria = $this->addPMFieldsToCriteria('sent'); + + //$criteria->addAsColumn('MAX_DEL_INDEX', 'MAX(' . AppDelegationPeer::DEL_INDEX . ')'); + //$criteria->addJoin(AppCacheViewPeer::APP_UID , AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN); + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); + $criteria->addGroupByColumn(AppCacheViewPeer::APP_UID); + //$criteria->addGroupByColumn(AppCacheViewPeer::APP_); + + return $criteria; + } + + public function getSentListProcessCriteria($userUid) + { + $criteria = $this->addPMFieldsToCriteria('sent'); + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); + return $criteria; + } + + /** + * get user's SelfService tasks + * @param string $sUIDUser + * @return $rows + */ + public function getSelfServiceTasks($userUid='') + { + $rows[] = array(); + $tasks = array(); + + //check starting task assigned directly to this user + $c = new Criteria(); + $c->clearSelectColumns(); + $c->addSelectColumn(TaskPeer::TAS_UID); + $c->addSelectColumn(TaskPeer::PRO_UID); + $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); + $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN); + $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); + $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE'); + $c->add(TaskUserPeer::USR_UID, $userUid); + + $rs = TaskPeer::doSelectRS($c); + $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); - } - //check groups assigned to SelfService task - G::LoadClass('groups'); - $group = new Groups(); - $aGroups = $group->getActiveGroupsForAnUser($userUid); + while (is_array($row)) { + $tasks[] = $row['TAS_UID']; + $rs->next(); + $row = $rs->getRow(); + } - $c = new Criteria(); - $c->clearSelectColumns(); - $c->addSelectColumn(TaskPeer::TAS_UID); - $c->addSelectColumn(TaskPeer::PRO_UID); - $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); - $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN); - $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); - $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE'); - $c->add(TaskUserPeer::USR_UID, $aGroups, Criteria::IN); + //check groups assigned to SelfService task + G::LoadClass('groups'); + $group = new Groups(); + $aGroups = $group->getActiveGroupsForAnUser($userUid); - $rs = TaskPeer::doSelectRS($c); - $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $rs->next(); - $row = $rs->getRow(); + $c = new Criteria(); + $c->clearSelectColumns(); + $c->addSelectColumn(TaskPeer::TAS_UID); + $c->addSelectColumn(TaskPeer::PRO_UID); + $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); + $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN); + $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); + $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE'); + $c->add(TaskUserPeer::USR_UID, $aGroups, Criteria::IN); - while (is_array($row)) { - $tasks[] = $row['TAS_UID']; + $rs = TaskPeer::doSelectRS($c); + $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); - } - return $tasks; - } + while (is_array($row)) { + $tasks[] = $row['TAS_UID']; + $rs->next(); + $row = $rs->getRow(); + } + + return $tasks; + } /** - * gets the UNASSIGNED cases list criteria - * param $userUid the current userUid - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getUnassigned ( $userUid, $doCount ) { - //get the valid selfservice tasks for this user - if (!class_exists('Cases')){ - G::loadClass('case'); + * gets the UNASSIGNED cases list criteria + * param $userUid the current userUid + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getUnassigned($userUid, $doCount) + { + //get the valid selfservice tasks for this user + if (!class_exists('Cases')) { + G::loadClass('case'); + } + + $oCase = new Cases(); + $tasks = $this->getSelfServiceTasks( $userUid ); + //adding configuration fields from the configuration options + //and forming the criteria object + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $criteria = new Criteria('workflow'); + } else { + $criteria = $this->addPMFieldsToCriteria('unassigned'); + } + + //$criteria->add(AppCacheViewPeer::APP_STATUS, "TO_DO"); + + $criteria->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); + //$criteria->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); + //$criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); + + $criteria->add(AppCacheViewPeer::USR_UID, ''); + $criteria->add(AppCacheViewPeer::TAS_UID, $tasks, Criteria::IN); + + return $criteria; } - $oCase = new Cases(); - $tasks = $this->getSelfServiceTasks( $userUid ); - // adding configuration fields from the configuration options - // and forming the criteria object - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $Criteria = new Criteria('workflow'); - } - else { - $Criteria = $this->addPMFieldsToCriteria('unassigned'); - } - // $Criteria->add (AppCacheViewPeer::APP_STATUS, "TO_DO" ); - - $Criteria->add (AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); -// $Criteria->add (AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); -// $Criteria->add (AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); - - $Criteria->add(AppCacheViewPeer::USR_UID, ''); - $Criteria->add(AppCacheViewPeer::TAS_UID, $tasks , Criteria::IN ); - - return $Criteria; - } - /** - * gets the UNASSIGNED cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getUnassignedCountCriteria ($userUid) { - return $this->getUnassigned($userUid, true); - } - - /** - * gets the UNASSIGNED cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getUnassignedListCriteria ($userUid) { - return $this->getUnassigned($userUid, false); - } + * gets the UNASSIGNED cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getUnassignedCountCriteria($userUid) + { + return $this->getUnassigned($userUid, true); + } /** - * gets the PAUSED cases list criteria - * param $userUid the current userUid - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getPaused ( $userUid, $doCount ) { - // adding configuration fields from the configuration options - // and forming the criteria object - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $Criteria = new Criteria('workflow'); + * gets the UNASSIGNED cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getUnassignedListCriteria($userUid) + { + return $this->getUnassigned($userUid, false); } - else { - $Criteria = $this->addPMFieldsToCriteria('paused'); - } - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - - //join with APP_DELAY table using APP_UID and DEL_INDEX - $appDelayConds[] = array(AppCacheViewPeer::APP_UID, AppDelayPeer::APP_UID); - $appDelayConds[] = array(AppCacheViewPeer::DEL_INDEX, AppDelayPeer::APP_DEL_INDEX); - $Criteria->addJoinMC($appDelayConds, Criteria::LEFT_JOIN); - - $Criteria->add($Criteria->getNewCriterion(AppDelayPeer::APP_DISABLE_ACTION_USER, null, Criteria::ISNULL)->addOr($Criteria->getNewCriterion(AppDelayPeer::APP_DISABLE_ACTION_USER, 0))); - - $Criteria->add(AppDelayPeer::APP_DELAY_UID, null, Criteria::ISNOTNULL); - $Criteria->add(AppDelayPeer::APP_TYPE, 'PAUSE'); - return $Criteria; - } /** - * gets the PAUSED cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getPausedCountCriteria ($userUid) { - return $this->getPaused($userUid, true); - } + * gets the PAUSED cases list criteria + * param $userUid the current userUid + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getPaused($userUid, $doCount) + { + //adding configuration fields from the configuration options + //and forming the criteria object + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $criteria = new Criteria('workflow'); + } else { + $criteria = $this->addPMFieldsToCriteria('paused'); + } - /** - * gets the PAUSED cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getPausedListCriteria ($userUid) { - return $this->getPaused($userUid, false); - } + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); - /** - * gets the TO_REVISE cases list criteria - * param $userUid the current userUid - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getToRevise ( $userUid, $doCount ) { - require_once 'classes/model/ProcessUser.php'; - // adding configuration fields from the configuration options - // and forming the criteria object - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ProcessUserPeer::USR_UID, $userUid ); - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aProcesses = array(); - while ($aRow = $oDataset->getRow()) { - $aProcesses[] = $aRow['PRO_UID']; + //join with APP_DELAY table using APP_UID and DEL_INDEX + $appDelayConds[] = array(AppCacheViewPeer::APP_UID, AppDelayPeer::APP_UID); + $appDelayConds[] = array(AppCacheViewPeer::DEL_INDEX, AppDelayPeer::APP_DEL_INDEX); + $criteria->addJoinMC($appDelayConds, Criteria::LEFT_JOIN); + + $criteria->add( + $criteria->getNewCriterion(AppDelayPeer::APP_DISABLE_ACTION_USER, null, Criteria::ISNULL)-> + addOr($criteria->getNewCriterion(AppDelayPeer::APP_DISABLE_ACTION_USER, 0)) + ); + + $criteria->add(AppDelayPeer::APP_DELAY_UID, null, Criteria::ISNOTNULL); + $criteria->add(AppDelayPeer::APP_TYPE, 'PAUSE'); + + return $criteria; + } + + /** + * gets the PAUSED cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getPausedCountCriteria($userUid) + { + return $this->getPaused($userUid, true); + } + + /** + * gets the PAUSED cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getPausedListCriteria($userUid) + { + return $this->getPaused($userUid, false); + } + + /** + * gets the TO_REVISE cases list criteria + * param $userUid the current userUid + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getToRevise($userUid, $doCount) + { + require_once ('classes/model/ProcessUser.php'); + + //adding configuration fields from the configuration options + //and forming the criteria object + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ProcessUserPeer::USR_UID, $userUid); + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); - } + $aProcesses = array(); - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $c = new Criteria('workflow'); - } - else { - $c = $this->addPMFieldsToCriteria('todo'); - } - $c->add(AppCacheViewPeer::PRO_UID, $aProcesses, Criteria::IN); - $c->add(AppCacheViewPeer::APP_STATUS, 'TO_DO'); - $c->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); - $c->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); - $c->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); + while ($aRow = $oDataset->getRow()) { + $aProcesses[] = $aRow['PRO_UID']; + $oDataset->next(); + } - return $c; - } + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $c = new Criteria('workflow'); + } else { + $c = $this->addPMFieldsToCriteria('todo'); + } + + $c->add(AppCacheViewPeer::PRO_UID, $aProcesses, Criteria::IN); + $c->add(AppCacheViewPeer::APP_STATUS, 'TO_DO'); + $c->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); + $c->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); + $c->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); + + return $c; + } /** - * gets the ToRevise cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getToReviseCountCriteria ($userUid) { - return $this->getToRevise($userUid, true); - } - - /** - * gets the PAUSED cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getToReviseListCriteria ($userUid) { - return $this->getToRevise($userUid, false); - } - - - /** - * gets the COMPLETED cases list criteria - * param $userUid the current userUid - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getCompleted ( $userUid, $doCount ) { - // adding configuration fields from the configuration options - // and forming the criteria object - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $Criteria = new Criteria('workflow'); + * gets the ToRevise cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getToReviseCountCriteria($userUid) + { + return $this->getToRevise($userUid, true); } - else { - $Criteria = $this->addPMFieldsToCriteria('completed'); + + /** + * gets the PAUSED cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getToReviseListCriteria($userUid) + { + return $this->getToRevise($userUid, false); } - $Criteria->add (AppCacheViewPeer::APP_STATUS, "COMPLETED" , CRITERIA::EQUAL ); - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - //$Criteria->add (AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); - $Criteria->add (AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); - $Criteria->add (AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); - - - //$c->add(AppDelegationPeer::DEL_PREVIOUS, '0', Criteria::NOT_EQUAL); - $Criteria->addGroupByColumn(AppCacheViewPeer::APP_UID); - - return $Criteria; - } - - /** - * gets the COMPLETED cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getCompletedCountCriteria ($userUid) { - return $this->getCompleted($userUid, true); - } - - /** - * gets the COMPLETED cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getCompletedListCriteria ($userUid) { - return $this->getCompleted($userUid, false); - } - - - /** - * gets the CANCELLED cases list criteria - * param $userUid the current userUid - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getCancelled ( $userUid, $doCount ) { - // adding configuration fields from the configuration options - // and forming the criteria object - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $Criteria = new Criteria('workflow'); - } - else { - $Criteria = $this->addPMFieldsToCriteria('cancelled'); - } - $Criteria->add (AppCacheViewPeer::APP_STATUS, "CANCELLED" , CRITERIA::EQUAL ); - $Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - $Criteria->add (AppCacheViewPeer::DEL_THREAD_STATUS, 'CLOSED'); - - return $Criteria; - } - - /** - * gets the CANCELLED cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getCancelledCountCriteria ($userUid) { - return $this->getCancelled($userUid, true); - } - - /** - * gets the CANCELLED cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getCancelledListCriteria ($userUid) { - return $this->getCancelled($userUid, false); - } - - /** - * gets the ADVANCED SEARCH cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getSearchCountCriteria () { - //$Criteria = new Criteria('workflow'); this sent a outer and cross join :P :P - $Criteria = $this->addPMFieldsToCriteria('sent'); - return $Criteria; - //return $this->getSearchCriteria( true); - } - - function getSearchAllCount ( ) { - $CriteriaCount = new Criteria('workflow'); - $totalCount = ApplicationPeer::doCount( $CriteriaCount); - return $totalCount; - } - - /** - * gets the ADVANCED SEARCH cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getSearchListCriteria () { - $Criteria = $this->addPMFieldsToCriteria('sent'); - $Criteria->addAsColumn( 'MAX_DEL_INDEX', 'MAX(' . AppCacheViewPeer::DEL_INDEX . ')' ); - - //$Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - - $Criteria->addGroupByColumn(AppCacheViewPeer::APP_UID); - return $Criteria; - //return $this->getSearchCriteria(false); - } - - /** - * gets the ADVANCED SEARCH cases list criteria for count - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getSimpleSearchCountCriteria () { - //$Criteria = new Criteria('workflow'); this sent a outer and cross join :P :P - $Criteria = $this->addPMFieldsToCriteria('sent'); - $Criteria->add(AppCacheViewPeer::USR_UID, $_SESSION['USER_LOGGED']); - return $Criteria; - //return $this->getSearchCriteria( true); - } - - /** - * gets the ADVANCED SEARCH cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getSimpleSearchListCriteria () { - $Criteria = $this->addPMFieldsToCriteria('sent'); - $Criteria->addAsColumn( 'DEL_INDEX', 'MAX(' . AppCacheViewPeer::DEL_INDEX . ')' ); - $Criteria->add(AppCacheViewPeer::USR_UID, $_SESSION['USER_LOGGED']); - //$Criteria->add (AppCacheViewPeer::USR_UID, $userUid); - - $Criteria->addGroupByColumn(AppCacheViewPeer::APP_UID); - return $Criteria; - //return $this->getSearchCriteria(false); - } - - /** - * gets the ADVANCED SEARCH cases list criteria for STATUS - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - function getSearchStatusCriteria () { - $Criteria = new Criteria('workflow'); - return $Criteria; - } - - - /** - * gets the SENT cases list criteria for list - * param $userUid the current userUid - * @return Criteria object $Criteria - */ - - /** - * gets the cases list criteria using the advanced search - * param $doCount if true this will return the criteria for count cases only - * @return Criteria object $Criteria - */ - function getSearchCriteria ( $doCount ) { - // adding configuration fields from the configuration options - // and forming the criteria object - if ( $doCount ) { - $Criteria = new Criteria('workflow'); - } - else { - $Criteria = $this->addPMFieldsToCriteria('sent'); - } - //$Criteria->add (AppCacheViewPeer::APP_STATUS, "TO_DO" , CRITERIA::EQUAL ); - $Criteria->add (AppCacheViewPeer::DEL_INDEX, 1); - - //$Criteria->add (AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); - //$Criteria->add (AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); - //$Criteria->add (AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); - return $Criteria; - } - - - /** - * loads the configuration fields from the database based in an action parameter - * then assemble the Criteria object with these data. - * @param String $action - * @return Criteria object $Criteria - */ - function addPMFieldsToCriteria($action) { - $caseColumns = array(); - if (!class_exists('AdditionalTables')){ - require_once ( "classes/model/AdditionalTables.php" ); - } - $caseReaderFields = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->clearSelectColumns ( ); - // default configuration fields array - $defaultFields = $this->getDefaultFields(); - // if there is PMTABLE for this case list: - if ( !empty($this->confCasesList) && isset($this->confCasesList['PMTable']) && trim($this->confCasesList['PMTable'])!='') { - // getting the table name - - $oAdditionalTables = AdditionalTablesPeer::retrieveByPK($this->confCasesList['PMTable']); - $tableName = $oAdditionalTables->getAddTabName(); - - foreach($this->confCasesList['second']['data'] as $fieldData){ - if ( !in_array($fieldData['name'],$defaultFields) ){ - $fieldName = $tableName.'.'.$fieldData['name']; - $oCriteria->addSelectColumn ( $fieldName ); + /** + * gets the COMPLETED cases list criteria + * param $userUid the current userUid + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getCompleted($userUid, $doCount) + { + //adding configuration fields from the configuration options + //and forming the criteria object + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $criteria = new Criteria('workflow'); + } else { + $criteria = $this->addPMFieldsToCriteria('completed'); } - else { - switch ($fieldData['fieldType']){ - case 'case field': - $configTable = 'APP_CACHE_VIEW'; - break; - case 'delay field': - $configTable = 'APP_DELAY'; - break; - default: - $configTable = 'APP_CACHE_VIEW'; - break; - } - $fieldName = $configTable . '.' . $fieldData['name']; - $oCriteria->addSelectColumn($fieldName); + + $criteria->add(AppCacheViewPeer::APP_STATUS, "COMPLETED", CRITERIA::EQUAL); + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); + + //$criteria->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); + $criteria->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); + $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); + + + //$c->add(AppDelegationPeer::DEL_PREVIOUS, '0', Criteria::NOT_EQUAL); + $criteria->addGroupByColumn(AppCacheViewPeer::APP_UID); + + return $criteria; + } + + /** + * gets the COMPLETED cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getCompletedCountCriteria($userUid) + { + return $this->getCompleted($userUid, true); + } + + /** + * gets the COMPLETED cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getCompletedListCriteria($userUid) + { + return $this->getCompleted($userUid, false); + } + + /** + * gets the CANCELLED cases list criteria + * param $userUid the current userUid + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getCancelled($userUid, $doCount) + { + //adding configuration fields from the configuration options + //and forming the criteria object + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $criteria = new Criteria('workflow'); + } else { + $criteria = $this->addPMFieldsToCriteria('cancelled'); } - } - //add the default and hidden DEL_INIT_DATE - $oCriteria->addSelectColumn ( 'APP_CACHE_VIEW.DEL_INIT_DATE' ); -// $oCriteria->addAlias("PM_TABLE", $tableName); - //Add the JOIN - $oCriteria->addJoin(AppCacheViewPeer::APP_UID, $tableName.'.APP_UID', Criteria::LEFT_JOIN); - return $oCriteria; + $criteria->add(AppCacheViewPeer::APP_STATUS, "CANCELLED", CRITERIA::EQUAL); + $criteria->add(AppCacheViewPeer::USR_UID, $userUid); + $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'CLOSED'); + + return $criteria; } - //else this list do not have a PM Table, - else { - if (is_array($this->confCasesList) && !empty($this->confCasesList['second']['data'])){ - foreach($this->confCasesList['second']['data'] as $fieldData){ - switch ($fieldData['fieldType']){ - case 'case field': - $configTable = 'APP_CACHE_VIEW'; - break; - case 'delay field': - $configTable = 'APP_DELAY'; - break; - default: - $configTable = 'APP_CACHE_VIEW'; - break; - } - $fieldName = $configTable . '.' . $fieldData['name']; - $oCriteria->addSelectColumn ( $fieldName ); + + /** + * gets the CANCELLED cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getCancelledCountCriteria($userUid) + { + return $this->getCancelled($userUid, true); + } + + /** + * gets the CANCELLED cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getCancelledListCriteria($userUid) + { + return $this->getCancelled($userUid, false); + } + + /** + * gets the ADVANCED SEARCH cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getSearchCountCriteria() + { + //$criteria = new Criteria('workflow'); + $criteria = $this->addPMFieldsToCriteria('sent'); + + return $criteria; + //return $this->getSearchCriteria(true); + } + + public function getSearchAllCount() + { + $criteriaCount = new Criteria('workflow'); + $totalCount = ApplicationPeer::doCount($criteriaCount); + + return $totalCount; + } + + /** + * gets the ADVANCED SEARCH cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getSearchListCriteria() + { + $criteria = $this->addPMFieldsToCriteria('sent'); + + $criteria->addAsColumn('MAX_DEL_INDEX', 'MAX(' . AppCacheViewPeer::DEL_INDEX . ')'); + //$criteria->add(AppCacheViewPeer::USR_UID, $userUid); + $criteria->addGroupByColumn(AppCacheViewPeer::APP_UID); + + return $criteria; + //return $this->getSearchCriteria(false); + } + + /** + * gets the ADVANCED SEARCH cases list criteria for count + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getSimpleSearchCountCriteria() + { + //$criteria = new Criteria('workflow'); + $criteria = $this->addPMFieldsToCriteria('sent'); + $criteria->add(AppCacheViewPeer::USR_UID, $_SESSION['USER_LOGGED']); + + return $criteria; + //return $this->getSearchCriteria(true); + } + + /** + * gets the ADVANCED SEARCH cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getSimpleSearchListCriteria() + { + $criteria = $this->addPMFieldsToCriteria('sent'); + $criteria->addAsColumn('DEL_INDEX', 'MAX(' . AppCacheViewPeer::DEL_INDEX . ')'); + $criteria->add(AppCacheViewPeer::USR_UID, $_SESSION['USER_LOGGED']); + //$criteria->add(AppCacheViewPeer::USR_UID, $userUid); + $criteria->addGroupByColumn(AppCacheViewPeer::APP_UID); + + return $criteria; + //return $this->getSearchCriteria(false); + } + + /** + * gets the ADVANCED SEARCH cases list criteria for STATUS + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + public function getSearchStatusCriteria() + { + $criteria = new Criteria('workflow'); + + return $criteria; + } + + /** + * gets the SENT cases list criteria for list + * param $userUid the current userUid + * @return Criteria object $Criteria + */ + + /** + * gets the cases list criteria using the advanced search + * param $doCount if true this will return the criteria for count cases only + * @return Criteria object $Criteria + */ + public function getSearchCriteria($doCount) + { + //adding configuration fields from the configuration options + //and forming the criteria object + if ($doCount) { + $criteria = new Criteria('workflow'); + } else { + $criteria = $this->addPMFieldsToCriteria('sent'); } - } - else { - //foreach($defaultFields as $field){ - $oCriteria->addSelectColumn('*'); - //} - } - //add the default and hidden DEL_INIT_DATE - $oCriteria->addSelectColumn ( 'APP_CACHE_VIEW.DEL_INIT_DATE' ); - return $oCriteria; + + //$criteria->add(AppCacheViewPeer::APP_STATUS, "TO_DO", CRITERIA::EQUAL); + $criteria->add(AppCacheViewPeer::DEL_INDEX, 1); + + //$criteria->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); + //$criteria->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); + //$criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); + + return $criteria; } - } - /** - * gets the Criteria object for the general cases list. - * @param Boolean $doCount - * @return Criteria - */ - public function getGeneralCases($doCount='false'){ - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $oCriteria = new Criteria('workflow'); - } else { - $oCriteria = $this->addPMFieldsToCriteria('completed'); + /** + * loads the configuration fields from the database based in an action parameter + * then assemble the Criteria object with these data. + * @param String $action + * @return Criteria object $Criteria + */ + public function addPMFieldsToCriteria($action) + { + $caseColumns = array(); + + if (!class_exists('AdditionalTables')) { + require_once ("classes/model/AdditionalTables.php"); + } + + $caseReaderFields = array(); + $oCriteria = new Criteria('workflow'); + $oCriteria->clearSelectColumns(); + + //default configuration fields array + $defaultFields = $this->getDefaultFields(); + + //if there is PMTABLE for this case list: + if (!empty($this->confCasesList) && + isset($this->confCasesList['PMTable']) && + trim($this->confCasesList['PMTable']) != '' + ) { + //getting the table name + $oAdditionalTables = AdditionalTablesPeer::retrieveByPK($this->confCasesList['PMTable']); + $tableName = $oAdditionalTables->getAddTabName(); + + foreach ($this->confCasesList['second']['data'] as $fieldData) { + if (!in_array($fieldData['name'],$defaultFields)) { + $fieldName = $tableName . '.' . $fieldData['name']; + $oCriteria->addSelectColumn($fieldName); + } else { + switch ($fieldData['fieldType']) { + case 'case field': + $configTable = 'APP_CACHE_VIEW'; + break; + case 'delay field': + $configTable = 'APP_DELAY'; + break; + default: + $configTable = 'APP_CACHE_VIEW'; + break; + } + + $fieldName = $configTable . '.' . $fieldData['name']; + $oCriteria->addSelectColumn($fieldName); + } + } + + //add the default and hidden DEL_INIT_DATE + $oCriteria->addSelectColumn('APP_CACHE_VIEW.DEL_INIT_DATE'); + //$oCriteria->addAlias("PM_TABLE", $tableName); + + //Add the JOIN + $oCriteria->addJoin(AppCacheViewPeer::APP_UID, $tableName.'.APP_UID', Criteria::LEFT_JOIN); + + return $oCriteria; + } else { + //else this list do not have a PM Table + if (is_array($this->confCasesList) && !empty($this->confCasesList['second']['data'])) { + foreach ($this->confCasesList['second']['data'] as $fieldData) { + switch ($fieldData['fieldType']) { + case 'case field': + $configTable = 'APP_CACHE_VIEW'; + break; + case 'delay field': + $configTable = 'APP_DELAY'; + break; + default: + $configTable = 'APP_CACHE_VIEW'; + break; + } + + $fieldName = $configTable . '.' . $fieldData['name']; + $oCriteria->addSelectColumn($fieldName); + } + } else { + //foreach ($defaultFields as $field) { + $oCriteria->addSelectColumn('*'); + //} + } + + //add the default and hidden DEL_INIT_DATE + $oCriteria->addSelectColumn('APP_CACHE_VIEW.DEL_INIT_DATE'); + + return $oCriteria; + } } - $oCriteria->addAsColumn( 'DEL_INDEX', 'MIN(' . AppCacheViewPeer::DEL_INDEX . ')' ); - $oCriteria->addJoin( AppCacheViewPeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN ); - $oCriteria->add ( $oCriteria->getNewCriterion(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN')->addOr($oCriteria->getNewCriterion(AppCacheViewPeer::APP_STATUS, 'COMPLETED')->addAnd($oCriteria->getNewCriterion(AppDelegationPeer::DEL_PREVIOUS, 0)))); - if (!$doCount){ - $oCriteria->addGroupByColumn(AppCacheViewPeer::APP_UID); + + /** + * gets the Criteria object for the general cases list. + * @param Boolean $doCount + * @return Criteria + */ + public function getGeneralCases($doCount='false') + { + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $oCriteria = new Criteria('workflow'); + } else { + $oCriteria = $this->addPMFieldsToCriteria('completed'); + } + + $oCriteria->addAsColumn('DEL_INDEX', 'MIN(' . AppCacheViewPeer::DEL_INDEX . ')'); + $oCriteria->addJoin(AppCacheViewPeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN); + $oCriteria->add( + $oCriteria->getNewCriterion(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN')-> + addOr( + $oCriteria->getNewCriterion(AppCacheViewPeer::APP_STATUS, 'COMPLETED')-> + addAnd($oCriteria->getNewCriterion(AppDelegationPeer::DEL_PREVIOUS, 0)) + ) + ); + + if (!$doCount) { + $oCriteria->addGroupByColumn(AppCacheViewPeer::APP_UID); + } + + //$oCriteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER); + + return $oCriteria; } -// $oCriteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER); - return $oCriteria; - } - /** - * gets the ALL cases list criteria for count - * @return Criteria object $Criteria - */ - function getAllCasesCountCriteria ( $userUid ) { - $oCriteria = $this->getGeneralCases( true ); - $oCriteria->add( AppCacheViewPeer::USR_UID, $userUid ); - return $oCriteria; - } + /** + * gets the ALL cases list criteria for count + * @return Criteria object $Criteria + */ + public function getAllCasesCountCriteria($userUid) + { + $oCriteria = $this->getGeneralCases(true); + $oCriteria->add(AppCacheViewPeer::USR_UID, $userUid); - /** - * gets the ALL cases list criteria for list - * @return Criteria object $Criteria - */ - function getAllCasesListCriteria ( $userUid ) { - $oCriteria = $this->getGeneralCases( false ); - $oCriteria->add( AppCacheViewPeer::USR_UID, $userUid ); - return $oCriteria; - } - - /** - * gets the ALL cases list criteria for count - * @return Criteria object $Criteria - */ - function getGeneralCountCriteria () { - return $this->getGeneralCases( true ); - } - - /** - * gets the ALL cases list criteria for list - * @return Criteria object $Criteria - */ - function getGeneralListCriteria () { - return $this->getGeneralCases( false ); - } - - public function getToReassign( $doCount ){ - if ( $doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { - $oCriteria = new Criteria('workflow'); + return $oCriteria; } - else { - $oCriteria = $this->addPMFieldsToCriteria('to_do'); + + /** + * gets the ALL cases list criteria for list + * @return Criteria object $Criteria + */ + public function getAllCasesListCriteria($userUid) + { + $oCriteria = $this->getGeneralCases(false); + $oCriteria->add(AppCacheViewPeer::USR_UID, $userUid); + + return $oCriteria; } - $oCriteria->add(AppCacheViewPeer::APP_STATUS, 'TO_DO'); - $oCriteria->add(AppCacheViewPeer::APP_CURRENT_USER, '', Criteria::NOT_EQUAL); - $oCriteria->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); - $oCriteria->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); - $oCriteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); -// $oCriteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER); - return $oCriteria; - } - /** - * gets the ALL cases list criteria for count - * @return Criteria object $Criteria - */ - function getToReassignCountCriteria () { - return $this->getToReassign( true ); - } + /** + * gets the ALL cases list criteria for count + * @return Criteria object $Criteria + */ + public function getGeneralCountCriteria() + { + return $this->getGeneralCases(true); + } - /** - * gets the ALL cases list criteria for list - * @return Criteria object $Criteria - */ - function getToReassignListCriteria () { - return $this->getToReassign( false ); - } + /** + * gets the ALL cases list criteria for list + * @return Criteria object $Criteria + */ + public function getGeneralListCriteria() + { + return $this->getGeneralCases(false); + } + public function getToReassign($doCount) + { + if ($doCount && !isset($this->confCasesList['PMTable']) && !empty($this->confCasesList['PMTable'])) { + $oCriteria = new Criteria('workflow'); + } else { + $oCriteria = $this->addPMFieldsToCriteria('to_do'); + } - public function getDefaultFields (){ - return array ( - 'APP_UID', - 'DEL_INDEX', - 'APP_NUMBER', - 'APP_STATUS', - 'USR_UID', - 'PREVIOUS_USR_UID', - 'TAS_UID', - 'PRO_UID', - 'DEL_DELEGATE_DATE', - 'DEL_INIT_DATE', - 'DEL_TASK_DUE_DATE', - 'DEL_FINISH_DATE', - 'DEL_THREAD_STATUS', - 'APP_THREAD_STATUS', - 'APP_TITLE', - 'APP_PRO_TITLE', - 'APP_TAS_TITLE', - 'APP_CURRENT_USER', - 'APP_DEL_PREVIOUS_USER', - 'DEL_PRIORITY', - 'DEL_DURATION', - 'DEL_QUEUE_DURATION', - 'DEL_DELAY_DURATION', - 'DEL_STARTED', - 'DEL_FINISHED', - 'DEL_DELAYED', - 'APP_CREATE_DATE', - 'APP_FINISH_DATE', - 'APP_UPDATE_DATE', - 'APP_OVERDUE_PERCENTAGE', - 'APP_DELAY_UID', - 'APP_THREAD_INDEX', - 'APP_DEL_INDEX', - 'APP_TYPE', - 'APP_DELEGATION_USER', - 'APP_ENABLE_ACTION_USER', - 'APP_ENABLE_ACTION_DATE', - 'APP_DISABLE_ACTION_USER', - 'APP_DISABLE_ACTION_DATE', - 'APP_AUTOMATIC_DISABLED_DATE' - ); - } + $oCriteria->add(AppCacheViewPeer::APP_STATUS, 'TO_DO'); + $oCriteria->add(AppCacheViewPeer::APP_CURRENT_USER, '', Criteria::NOT_EQUAL); + $oCriteria->add(AppCacheViewPeer::DEL_FINISH_DATE, null, Criteria::ISNULL); + $oCriteria->add(AppCacheViewPeer::APP_THREAD_STATUS, 'OPEN'); + $oCriteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN'); + //$oCriteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER); + return $oCriteria; + } - function setPathToAppCacheFiles ( $path ) { - $this->pathToAppCacheFiles = $path; - } + /** + * gets the ALL cases list criteria for count + * @return Criteria object $Criteria + */ + public function getToReassignCountCriteria() + { + return $this->getToReassign(true); + } - function getMySQLVersion() { - $con = Propel::getConnection("workflow"); - $stmt = $con->createStatement(); - $sql = "select version() "; - $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM); - $rs1->next(); - $row = $rs1->getRow(); - return $row[0]; + /** + * gets the ALL cases list criteria for list + * @return Criteria object $Criteria + */ + public function getToReassignListCriteria() + { + return $this->getToReassign(false); + } - } + public function getDefaultFields() + { + return array( + 'APP_UID', + 'DEL_INDEX', + 'APP_NUMBER', + 'APP_STATUS', + 'USR_UID', + 'PREVIOUS_USR_UID', + 'TAS_UID', + 'PRO_UID', + 'DEL_DELEGATE_DATE', + 'DEL_INIT_DATE', + 'DEL_TASK_DUE_DATE', + 'DEL_FINISH_DATE', + 'DEL_THREAD_STATUS', + 'APP_THREAD_STATUS', + 'APP_TITLE', + 'APP_PRO_TITLE', + 'APP_TAS_TITLE', + 'APP_CURRENT_USER', + 'APP_DEL_PREVIOUS_USER', + 'DEL_PRIORITY', + 'DEL_DURATION', + 'DEL_QUEUE_DURATION', + 'DEL_DELAY_DURATION', + 'DEL_STARTED', + 'DEL_FINISHED', + 'DEL_DELAYED', + 'APP_CREATE_DATE', + 'APP_FINISH_DATE', + 'APP_UPDATE_DATE', + 'APP_OVERDUE_PERCENTAGE', + 'APP_DELAY_UID', + 'APP_THREAD_INDEX', + 'APP_DEL_INDEX', + 'APP_TYPE', + 'APP_DELEGATION_USER', + 'APP_ENABLE_ACTION_USER', + 'APP_ENABLE_ACTION_DATE', + 'APP_DISABLE_ACTION_USER', + 'APP_DISABLE_ACTION_DATE', + 'APP_AUTOMATIC_DISABLED_DATE' + ); + } - function checkGrantsForUser( $root = false ) { - try { - if ( $root ) - $con = Propel::getConnection("root"); - else + public function setPathToAppCacheFiles($path) + { + $this->pathToAppCacheFiles = $path; + } + + public function getMySQLVersion() + { $con = Propel::getConnection("workflow"); + $stmt = $con->createStatement(); + $sql = "select version() "; + $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM); + $rs1->next(); + $row = $rs1->getRow(); - $stmt = $con->createStatement(); - $sql = "select CURRENT_USER(), USER() "; - $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM); - $rs1->next(); - $row = $rs1->getRow(); - $mysqlUser = str_replace('@', "'@'", $row[0] ); - - $super = false; - $sql = "SELECT * FROM `information_schema`.`USER_PRIVILEGES` where GRANTEE = \"'$mysqlUser'\" and PRIVILEGE_TYPE = 'SUPER' "; - $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); - $rs1->next(); - $row = $rs1->getRow(); - if ( is_array($row = $rs1->getRow() ) ) { - $super = true; - } - - return array( 'user' => $mysqlUser, 'super' => $super ); - } - catch ( Exception $e ) { - return array( 'error' => true, 'msg' => $e->getMessage() ); - } - } - - function setSuperForUser( $mysqlUser ) { - try { - $con = Propel::getConnection("root"); - $stmt = $con->createStatement(); - $sql = "GRANT SUPER on *.* to '$mysqlUser' "; - $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM); - return array(); - } - catch ( Exception $e ) { - return array( 'error' => true, 'msg' => $e->getMessage() ); + return $row[0]; } - } + public function checkGrantsForUser($root=false) + { + try { + if ($root) { + $con = Propel::getConnection("root"); + } else { + $con = Propel::getConnection("workflow"); + } - /** - * search for table APP_CACHE_VIEW - * @return void - * - */ - function checkAppCacheView () { - $con = Propel::getConnection("workflow"); - $stmt = $con->createStatement(); + $stmt = $con->createStatement(); + $sql = "select CURRENT_USER(), USER() "; + $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM); + $rs1->next(); + $row = $rs1->getRow(); + $mysqlUser = str_replace('@', "'@'", $row[0]); - //check if table APP_CACHE_VIEW exists - $sql="SHOW TABLES"; - $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM); - $rs1->next(); - $found = false; - while ( is_array($row = $rs1->getRow() ) && !$found ) { - if ( strtolower($row[0]) == 'app_cache_view' ) { - $found = true; - } - $rs1->next(); + $super = false; + + $sql = "SELECT * + FROM `information_schema`.`USER_PRIVILEGES` + WHERE GRANTEE = \"'$mysqlUser'\" and PRIVILEGE_TYPE = 'SUPER' "; + + $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); + $rs1->next(); + $row = $rs1->getRow(); + + if (is_array($row = $rs1->getRow())) { + $super = true; + } + + return array('user' => $mysqlUser, 'super' => $super); + } catch (Exception $e) { + return array('error' => true, 'msg' => $e->getMessage()); + } } - //now count how many records there are .. - $count = '-'; - if ( $found ) { - $oCriteria = new Criteria('workflow'); - $count = AppCacheViewPeer::doCount($oCriteria); - } - return array( 'found' => $found, 'count' => $count ); + public function setSuperForUser($mysqlUser) + { + try { + $con = Propel::getConnection("root"); + $stmt = $con->createStatement(); + $sql = "GRANT SUPER on *.* to '$mysqlUser' "; + $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM); - } - - /** - * populate (fill) the table APP_CACHE_VIEW - * @return void - */ - function fillAppCacheView ( $lang ) { - $con = Propel::getConnection("workflow"); - $stmt = $con->createStatement(); - - $sql ="truncate table APP_CACHE_VIEW "; - $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); - - $filenameSql = $this->pathToAppCacheFiles . 'app_cache_view_insert.sql'; - if ( !file_exists ( $filenameSql ) ) - throw ( new Exception ( "file app_cache_view_insert.sql doesn't exists ") ); - - $sql = explode ( ';', file_get_contents ( $filenameSql ) ); - foreach ( $sql as $key => $val ) { - $val = str_replace('{lang}', $lang, $val); - $stmt->executeQuery($val); + return array(); + } catch (Exception $e) { + return array('error' => true, 'msg' => $e->getMessage()); + } } - $sql = "select count(*) as CANT from APP_CACHE_VIEW "; - $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); - $rs1->next(); - $row1 = $rs1->getRow(); - $cant = $row1['CANT']; + /** + * search for table APP_CACHE_VIEW + * @return void + * + */ + public function checkAppCacheView() + { + $con = Propel::getConnection("workflow"); + $stmt = $con->createStatement(); - return "done $cant rows in table APP_CACHE_VIEW"; - } + //check if table APP_CACHE_VIEW exists + $sql = "SHOW TABLES"; + $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM); + $rs1->next(); + $found = false; + while (is_array($row = $rs1->getRow()) && !$found) { + if (strtolower($row[0]) == 'app_cache_view') { + $found = true; + } - /** - * Insert an app delegatiojn trigger - * @return void - */ - function triggerAppDelegationInsert( $lang, $recreate = false ) { - $con = Propel::getConnection("workflow"); - $stmt = $con->createStatement(); + $rs1->next(); + } - $rs = $stmt->executeQuery('Show TRIGGERS', ResultSet::FETCHMODE_ASSOC); - $rs->next(); - $row = $rs->getRow(); - $found = false; - while ( is_array ( $row ) ) { - if ( strtolower($row['Trigger'] == 'APP_DELEGATION_INSERT') && strtoupper($row['Table']) == 'APP_DELEGATION' ) { - $found = true; - } - $rs->next(); - $row = $rs->getRow(); - } - if ( $recreate ) { - $rs = $stmt->executeQuery('DROP TRIGGER IF EXISTS APP_DELEGATION_INSERT' ); - $found = false; - } - if ( ! $found ) { - $filenameSql = $this->pathToAppCacheFiles . 'triggerAppDelegationInsert.sql'; - if ( !file_exists ( $filenameSql ) ) - throw ( new Exception ( "file triggerAppDelegationInsert.sql doesn't exists ") ); - $sql = file_get_contents ( $filenameSql ); - $sql = str_replace('{lang}', $lang, $sql); - $stmt->executeQuery($sql); - return 'created'; - } - return 'exists'; - } + //now count how many records there are .. + $count = '-'; + if ($found) { + $oCriteria = new Criteria('workflow'); + $count = AppCacheViewPeer::doCount($oCriteria); + } - /** - * update the App Delegation triggers - * @return void - */ - function triggerAppDelegationUpdate( $lang, $recreate = false ) { - $con = Propel::getConnection("workflow"); - $stmt = $con->createStatement(); - - $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); - $rs->next(); - $row = $rs->getRow(); - $found = false; - while ( is_array ( $row ) ) { - if ( strtolower($row['Trigger'] == 'APP_DELEGATION_UPDATE') && strtoupper($row['Table']) == 'APP_DELEGATION' ) { - $found = true; - } - $rs->next(); - $row = $rs->getRow(); + return array('found' => $found, 'count' => $count); } - if ( $recreate ) { - $rs = $stmt->executeQuery('DROP TRIGGER IF EXISTS APP_DELEGATION_UPDATE' ); - $found = false; + /** + * populate (fill) the table APP_CACHE_VIEW + * @return void + */ + public function fillAppCacheView($lang) + { + $con = Propel::getConnection("workflow"); + $stmt = $con->createStatement(); + + $sql = "truncate table APP_CACHE_VIEW "; + $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); + + $filenameSql = $this->pathToAppCacheFiles . 'app_cache_view_insert.sql'; + + if (!file_exists($filenameSql)) { + throw (new Exception("file app_cache_view_insert.sql doesn't exists ")); + } + + $sql = explode(';', file_get_contents($filenameSql)); + + foreach ($sql as $key => $val) { + $val = str_replace('{lang}', $lang, $val); + $stmt->executeQuery($val); + } + + $sql = "select count(*) as CANT from APP_CACHE_VIEW "; + $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); + $rs1->next(); + $row1 = $rs1->getRow(); + $cant = $row1['CANT']; + + return "done $cant rows in table APP_CACHE_VIEW"; } - if ( ! $found ) { - $filenameSql = $this->pathToAppCacheFiles . '/triggerAppDelegationUpdate.sql'; - if ( !file_exists ( $filenameSql ) ) - throw ( new Exception ( "file triggerAppDelegationUpdate.sql doesn't exists ") ); - $sql = file_get_contents ( $filenameSql ); - $sql = str_replace('{lang}', $lang, $sql); - $stmt->executeQuery($sql); - return 'created'; - } - return 'exists'; - } + /** + * Insert an app delegatiojn trigger + * @return void + */ + public function triggerAppDelegationInsert($lang, $recreate=false) + { + $con = Propel::getConnection("workflow"); + $stmt = $con->createStatement(); - /** - * update the Application triggers - * @return void - */ - function triggerApplicationUpdate( $lang, $recreate = false ) { - $con = Propel::getConnection("workflow"); - $stmt = $con->createStatement(); + $rs = $stmt->executeQuery('Show TRIGGERS', ResultSet::FETCHMODE_ASSOC); + $rs->next(); + $row = $rs->getRow(); + $found = false; - $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); - $rs->next(); - $row = $rs->getRow(); - $found = false; - while ( is_array ( $row ) ) { - if ( strtolower($row['Trigger'] == 'APPLICATION_UPDATE') && strtoupper($row['Table']) == 'APPLICATION' ) { - $found = true; - } - $rs->next(); - $row = $rs->getRow(); - } - if ( $recreate ) { - $rs = $stmt->executeQuery('DROP TRIGGER IF EXISTS APPLICATION_UPDATE' ); - $found = false; + while (is_array($row)) { + if (strtolower($row['Trigger'] == 'APP_DELEGATION_INSERT') && + strtoupper($row['Table']) == 'APP_DELEGATION' + ) { + $found = true; + } + + $rs->next(); + $row = $rs->getRow(); + } + + if ($recreate) { + $rs = $stmt->executeQuery('DROP TRIGGER IF EXISTS APP_DELEGATION_INSERT'); + $found = false; + } + + if (!$found) { + $filenameSql = $this->pathToAppCacheFiles . 'triggerAppDelegationInsert.sql'; + + if (!file_exists($filenameSql)) { + throw (new Exception("file triggerAppDelegationInsert.sql doesn't exists ")); + } + + $sql = file_get_contents($filenameSql); + $sql = str_replace('{lang}', $lang, $sql); + $stmt->executeQuery($sql); + + return 'created'; + } + + return 'exists'; } - if ( ! $found ) { - $filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationUpdate.sql'; - if ( !file_exists ( $filenameSql ) ) - throw ( new Exception ( "file triggerApplicationUpdate.sql doesn't exist ") ); - $sql = file_get_contents ( $filenameSql ); - $sql = str_replace('{lang}', $lang, $sql); - $stmt->executeQuery($sql); - return 'created'; - } - return 'exists'; - } + /** + * update the App Delegation triggers + * @return void + */ + public function triggerAppDelegationUpdate($lang, $recreate=false) + { + $con = Propel::getConnection("workflow"); + $stmt = $con->createStatement(); - /** - * update the Application triggers - * @return void - */ - function triggerApplicationDelete( $lang , $recreate = false) { - $con = Propel::getConnection("workflow"); - $stmt = $con->createStatement(); + $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); + $rs->next(); + $row = $rs->getRow(); + $found = false; - $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); - $rs->next(); - $row = $rs->getRow(); - $found = false; - while ( is_array ( $row ) ) { - if ( strtolower($row['Trigger'] == 'APPLICATION_DELETE') && strtoupper($row['Table']) == 'APPLICATION' ) { - $found = true; - } - $rs->next(); - $row = $rs->getRow(); + while (is_array($row)) { + if (strtolower($row['Trigger'] == 'APP_DELEGATION_UPDATE') && + strtoupper($row['Table']) == 'APP_DELEGATION' + ) { + $found = true; + } + + $rs->next(); + $row = $rs->getRow(); + } + + if ($recreate) { + $rs = $stmt->executeQuery('DROP TRIGGER IF EXISTS APP_DELEGATION_UPDATE'); + $found = false; + } + + if (!$found) { + $filenameSql = $this->pathToAppCacheFiles . '/triggerAppDelegationUpdate.sql'; + + if (!file_exists($filenameSql)) { + throw (new Exception("file triggerAppDelegationUpdate.sql doesn't exists ")); + } + + $sql = file_get_contents($filenameSql); + $sql = str_replace('{lang}', $lang, $sql); + $stmt->executeQuery($sql); + + return 'created'; + } + + return 'exists'; } - if ( $recreate ) { - $rs = $stmt->executeQuery('DROP TRIGGER IF EXISTS APPLICATION_DELETE' ); - $found = false; + /** + * update the Application triggers + * @return void + */ + public function triggerApplicationUpdate($lang, $recreate=false) + { + $con = Propel::getConnection("workflow"); + $stmt = $con->createStatement(); + + $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); + $rs->next(); + $row = $rs->getRow(); + $found = false; + + while (is_array($row)) { + if (strtolower($row['Trigger'] == 'APPLICATION_UPDATE') && strtoupper($row['Table']) == 'APPLICATION') { + $found = true; + } + + $rs->next(); + $row = $rs->getRow(); + } + + if ($recreate) { + $rs = $stmt->executeQuery('DROP TRIGGER IF EXISTS APPLICATION_UPDATE'); + $found = false; + } + + if (!$found) { + $filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationUpdate.sql'; + + if (!file_exists($filenameSql)) { + throw (new Exception("file triggerApplicationUpdate.sql doesn't exist ")); + } + + $sql = file_get_contents($filenameSql); + $sql = str_replace('{lang}', $lang, $sql); + $stmt->executeQuery($sql); + + return 'created'; + } + + return 'exists'; } - if ( ! $found ) { - $filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationDelete.sql'; - if ( !file_exists ( $filenameSql ) ) - throw ( new Exception ( "file triggerApplicationDelete.sql doesn't exist") ); - $sql = file_get_contents ( $filenameSql ); - $sql = str_replace('{lang}', $lang, $sql); - $stmt->executeQuery($sql); - return 'created'; - } - return 'exists'; - } - - function triggerContentUpdate($lang, $recreate = false) - { - $cnn = Propel::getConnection("workflow"); - $stmt = $cnn->createStatement(); + /** + * update the Application triggers + * @return void + */ + public function triggerApplicationDelete($lang, $recreate=false) + { + $con = Propel::getConnection("workflow"); + $stmt = $con->createStatement(); - $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); - $found = false; - - while ($rs->next()) { - $row = $rs->getRow(); - - if (strtolower($row["Trigger"] == "CONTENT_UPDATE") && strtoupper($row["Table"]) == "CONTENT") { - $found = true; - } - } - - if ($recreate) { - $rs = $stmt->executeQuery("DROP TRIGGER IF EXISTS CONTENT_UPDATE"); - $found = false; + $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); + $rs->next(); + $row = $rs->getRow(); + $found = false; + + while (is_array($row)) { + if (strtolower($row['Trigger'] == 'APPLICATION_DELETE') && strtoupper($row['Table']) == 'APPLICATION') { + $found = true; + } + + $rs->next(); + $row = $rs->getRow(); + } + + if ($recreate) { + $rs = $stmt->executeQuery('DROP TRIGGER IF EXISTS APPLICATION_DELETE'); + $found = false; + } + + if (!$found) { + $filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationDelete.sql'; + + if (!file_exists($filenameSql)) { + throw (new Exception("file triggerApplicationDelete.sql doesn't exist")); + } + + $sql = file_get_contents ($filenameSql); + $sql = str_replace('{lang}', $lang, $sql); + $stmt->executeQuery($sql); + + return 'created'; + } + + return 'exists'; } - if (!$found) { - $filenameSql = $this->pathToAppCacheFiles . PATH_SEP . "triggerContentUpdate.sql"; - - if (!file_exists($filenameSql)) { - throw (new Exception("file triggerContentUpdate.sql doesn't exist")); - } - - $sql = file_get_contents($filenameSql); - $sql = str_replace("{lang}", $lang, $sql); - - $stmt->executeQuery($sql); + public function triggerContentUpdate($lang, $recreate=false) + { + $cnn = Propel::getConnection("workflow"); + $stmt = $cnn->createStatement(); - return "created"; - } - - return "exists"; - } + $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); + $found = false; - /** - * Retrieve the SQL code to create the APP_CACHE_VIEW triggers. - * - * @return array each value is a SQL statement to create a trigger. - */ - function getTriggers($lang){ - $triggerFiles = array( - 'triggerApplicationDelete.sql', - 'triggerApplicationUpdate.sql', - 'triggerAppDelegationUpdate.sql', - 'triggerAppDelegationInsert.sql', - 'triggerContentUpdate.sql'); - $triggers = array(); - foreach ($triggerFiles as $triggerFile) { - $trigger = file_get_contents("{$this->pathToAppCacheFiles}/$triggerFile"); - if ($trigger === false) - throw new Exception("Could not read trigger contents in $triggerFile"); - $trigger = str_replace('{lang}', $lang, $trigger); - $triggers[$triggerFile] = $trigger; - } - return $triggers; - } + while ($rs->next()) { + $row = $rs->getRow(); - function getFormatedUser($sFormat, $aCaseUser, $userIndex){ - require_once('classes/model/Users.php'); - $oUser = new Users(); - try { - $aCaseUserRecord = $oUser->load($aCaseUser[$userIndex]); - $sCaseUser = G::getFormatUserList ($sFormat,$aCaseUserRecord); - // . ' (' . $aCaseUserRecord['USR_USERNAME'] . ')';] - } catch (Exception $e){ - $sCaseUser = ''; - } - return($sCaseUser); - } + if (strtolower($row["Trigger"] == "CONTENT_UPDATE") && strtoupper($row["Table"]) == "CONTENT") { + $found = true; + } + } - function replaceRowUserData($rowData){ - try { - G::loadClass('configuration'); - $oConfig = new Configuration(); - $aConfig = $oConfig->load('ENVIRONMENT_SETTINGS'); - $aConfig = unserialize($aConfig['CFG_VALUE']); - } catch (Exception $e){ - // if there is no configuration record then. - $aConfig['format'] = '@userName'; - } - if (isset($rowData['USR_UID'])&&isset($rowData['APP_CURRENT_USER'])){ - $rowData['APP_CURRENT_USER'] = $this->getFormatedUser($aConfig['format'],$rowData,'USR_UID'); - } - if (isset($rowData['PREVIOUS_USR_UID'])&&isset($rowData['APP_DEL_PREVIOUS_USER'])){ - $rowData['APP_DEL_PREVIOUS_USER'] = $this->getFormatedUser($aConfig['format'],$rowData,'PREVIOUS_USR_UID'); - } - return ($rowData); - } + if ($recreate) { + $rs = $stmt->executeQuery("DROP TRIGGER IF EXISTS CONTENT_UPDATE"); + $found = false; + } - //Added By Qennix - function getTotalCasesByAllUsers(){ - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(AppCacheViewPeer::USR_UID); - $oCriteria->addAsColumn('CNT', 'COUNT(DISTINCT(APP_UID))'); - $oCriteria->addGroupByColumn(AppCacheViewPeer::USR_UID); - $Dat = AppCacheViewPeer::doSelectRS ($oCriteria); - $Dat->setFetchmode (ResultSet::FETCHMODE_ASSOC); - $aRows = Array(); - while ($Dat->next()){ - $row = $Dat->getRow(); - $aRows[$row['USR_UID']] = $row['CNT']; - } - return $aRows; - } + if (!$found) { + $filenameSql = $this->pathToAppCacheFiles . PATH_SEP . "triggerContentUpdate.sql"; + + if (!file_exists($filenameSql)) { + throw (new Exception("file triggerContentUpdate.sql doesn't exist")); + } + + $sql = file_get_contents($filenameSql); + $sql = str_replace("{lang}", $lang, $sql); + + $stmt->executeQuery($sql); + + return "created"; + } + + return "exists"; + } + + /** + * Retrieve the SQL code to create the APP_CACHE_VIEW triggers. + * + * @return array each value is a SQL statement to create a trigger. + */ + public function getTriggers($lang) + { + $triggerFiles = array( + 'triggerApplicationDelete.sql', + 'triggerApplicationUpdate.sql', + 'triggerAppDelegationUpdate.sql', + 'triggerAppDelegationInsert.sql', + 'triggerContentUpdate.sql' + ); + + $triggers = array(); + + foreach ($triggerFiles as $triggerFile) { + $trigger = file_get_contents("{$this->pathToAppCacheFiles}/$triggerFile"); + + if ($trigger === false) { + throw new Exception("Could not read trigger contents in $triggerFile"); + } + + $trigger = str_replace('{lang}', $lang, $trigger); + $triggers[$triggerFile] = $trigger; + } + + return $triggers; + } + + public function getFormatedUser($sFormat, $aCaseUser, $userIndex) + { + require_once('classes/model/Users.php'); + + $oUser = new Users(); + + try { + $aCaseUserRecord = $oUser->load($aCaseUser[$userIndex]); + $sCaseUser = G::getFormatUserList ($sFormat,$aCaseUserRecord); + // . ' (' . $aCaseUserRecord['USR_USERNAME'] . ')';] + } catch (Exception $e) { + $sCaseUser = ''; + } + + return $sCaseUser; + } + + public function replaceRowUserData($rowData) + { + try { + G::loadClass('configuration'); + $oConfig = new Configuration(); + $aConfig = $oConfig->load('ENVIRONMENT_SETTINGS'); + $aConfig = unserialize($aConfig['CFG_VALUE']); + } catch (Exception $e) { + // if there is no configuration record then. + $aConfig['format'] = '@userName'; + } + + if (isset($rowData['USR_UID'])&&isset($rowData['APP_CURRENT_USER'])) { + $rowData['APP_CURRENT_USER'] = $this->getFormatedUser($aConfig['format'],$rowData,'USR_UID'); + } + + if (isset($rowData['PREVIOUS_USR_UID'])&&isset($rowData['APP_DEL_PREVIOUS_USER'])) { + $rowData['APP_DEL_PREVIOUS_USER'] = $this->getFormatedUser($aConfig['format'],$rowData,'PREVIOUS_USR_UID'); + } + + return ($rowData); + } + + //Added By Qennix + public function getTotalCasesByAllUsers() + { + $oCriteria = new Criteria("workflow"); + + $oCriteria->addSelectColumn(AppCacheViewPeer::USR_UID); + $oCriteria->addAsColumn("CNT", "COUNT(DISTINCT(APP_UID))"); + $oCriteria->addGroupByColumn(AppCacheViewPeer::USR_UID); + $dat = AppCacheViewPeer::doSelectRS($oCriteria); + $dat->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $aRows = array(); + + while ($dat->next()) { + $row = $dat->getRow(); + + $aRows[$row["USR_UID"]] = $row["CNT"]; + } + + return $aRows; + } + + public function appTitleByTaskCaseLabelUpdate($taskUid, $lang) + { + $taskDefTitle = null; + + $criteria = new Criteria("workflow"); + + $criteria->addSelectColumn(ContentPeer::CON_VALUE); + $criteria->add(ContentPeer::CON_CATEGORY, "TAS_DEF_TITLE"); + $criteria->add(ContentPeer::CON_ID, $taskUid); + $criteria->add(ContentPeer::CON_LANG, $lang); + + $rsCriteria = ContentPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + $taskDefTitle = $row["CON_VALUE"]; + } + + //Get cases + $criteriaAPPCV = new Criteria("workflow"); + + $criteriaAPPCV->setDistinct(); + $criteriaAPPCV->addSelectColumn(AppCacheViewPeer::APP_UID); + $criteriaAPPCV->add(AppCacheViewPeer::DEL_THREAD_STATUS, "OPEN"); + $criteriaAPPCV->add(AppCacheViewPeer::TAS_UID, $taskUid); + + $rsCriteriaAPPCV = AppCacheViewPeer::doSelectRS($criteriaAPPCV); + $rsCriteriaAPPCV->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteriaAPPCV->next()) { + $row = $rsCriteriaAPPCV->getRow(); + + $appcvAppUid = $row["APP_UID"]; + + //Current task? + $criteria = new Criteria("workflow"); + + $criteria->addSelectColumn(AppCacheViewPeer::APP_UID); + $criteria->add(AppCacheViewPeer::APP_UID, $appcvAppUid); + $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, "OPEN"); + $criteria->add(AppCacheViewPeer::TAS_UID, $taskUid); + + $rsCriteria = AppCacheViewPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + if ($rsCriteria->next()) { + $appTitle = $taskDefTitle; + + $app = new Application(); + $arrayAppField = $app->Load($appcvAppUid); + + $appTitle = (!empty($appTitle))? $appTitle : "#" . $arrayAppField["APP_NUMBER"]; + $appTitleNew = G::replaceDataField($appTitle, unserialize($arrayAppField["APP_DATA"])); + + if (isset($arrayAppField["APP_TITLE"]) && $arrayAppField["APP_TITLE"] != $appTitleNew) { + //Updating the value in content, where... + $criteria1 = new Criteria("workflow"); + + $criteria1->add(ContentPeer::CON_CATEGORY, "APP_TITLE"); + $criteria1->add(ContentPeer::CON_ID, $appcvAppUid); + $criteria1->add(ContentPeer::CON_LANG, $lang); + + //Update set + $criteria2 = new Criteria("workflow"); + + $criteria2->add(ContentPeer::CON_VALUE, $appTitleNew); + + BasePeer::doUpdate($criteria1, $criteria2, Propel::getConnection("workflow")); + } + } + } + } +} +//AppCacheView -} // AppCacheView diff --git a/workflow/engine/classes/model/Task.php b/workflow/engine/classes/model/Task.php index 0fe62d324..8d4c460a0 100755 --- a/workflow/engine/classes/model/Task.php +++ b/workflow/engine/classes/model/Task.php @@ -1,29 +1,4 @@ . - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - * - */ - require_once 'classes/model/om/BaseTask.php'; require_once 'classes/model/Content.php'; @@ -39,366 +14,419 @@ require_once 'classes/model/Content.php'; * * @package workflow.engine.classes.model */ -class Task extends BaseTask { - /** - * This value goes in the content table - * @var string - */ - protected $tas_title = ''; - /** - * Get the tas_title column value. - * @return string - */ - public function getTasTitle() - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in getTasTitle, the getTasUid() can't be blank") ); - } - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $this->tas_title = Content::load ( 'TAS_TITLE', '', $this->getTasUid(), $lang ); - return $this->tas_title; - } - /** - * Set the tas_title column value. - * - * @param string $v new value - * @return void - */ - public function setTasTitle($v) - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in setTasTitle, the getTasUid() can't be blank") ); - } - $v=isset($v)?((string)$v):''; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - if ($this->tas_title !== $v || $v==="") { - $this->tas_title = $v; - - $res = Content::addContent( 'TAS_TITLE', '', $this->getTasUid(), $lang, $this->tas_title ); - return $res; - } - return 0; - } - /** - * This value goes in the content table - * @var string - */ - protected $tas_description = ''; - /** - * Get the tas_description column value. - * @return string - */ - public function getTasDescription() - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in getTasDescription, the getTasUid() can't be blank") ); - } - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $this->tas_description = Content::load ( 'TAS_DESCRIPTION', '', $this->getTasUid(), $lang ); - return $this->tas_description; - } - /** - * Set the tas_description column value. - * - * @param string $v new value - * @return void - */ - public function setTasDescription($v) - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in setTasDescription, the getTasUid() can't be blank") ); - } - $v=isset($v)?((string)$v):''; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - if ($this->tas_description !== $v || $v==="") { - $this->tas_description = $v; - - $res = Content::addContent( 'TAS_DESCRIPTION', '', $this->getTasUid(), $lang, $this->tas_description ); - return $res; - } - return 0; - } - /** - * This value goes in the content table - * @var string - */ - protected $tas_def_title = ''; - /** - * Get the tas_def_title column value. - * @return string - */ - public function getTasDefTitle() - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in getTasDefTitle, the getTasUid() can't be blank") ); - } - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $this->tas_def_title = Content::load ( 'TAS_DEF_TITLE', '', $this->getTasUid(), $lang ); - return $this->tas_def_title; - } - /** - * Set the tas_def_title column value. - * - * @param string $v new value - * @return void - */ - public function setTasDefTitle($v) - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in setTasDefTitle, the getTasUid() can't be blank") ); - } - $v=isset($v)?((string)$v):''; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - if ($this->tas_def_title !== $v || $v==="") { - $this->tas_def_title = $v; - - $res = Content::addContent( 'TAS_DEF_TITLE', '', $this->getTasUid(), $lang, $this->tas_def_title ); - return $res; - } - return 0; - } - /** - * This value goes in the content table - * @var string - */ - protected $tas_def_description = ''; - /** - * Get the tas_def_description column value. - * @return string - */ - public function getTasDefDescription() - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in getTasDefDescription, the getTasUid() can't be blank") ); - } - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $this->tas_def_description = Content::load ( 'TAS_DEF_DESCRIPTION', '', $this->getTasUid(), $lang ); - return $this->tas_def_description; - } - /** - * Set the tas_def_description column value. - * - * @param string $v new value - * @return void - */ - public function setTasDefDescription($v) - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in setTasDefDescription, the getTasUid() can't be blank") ); - } - $v=isset($v)?((string)$v):''; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - if ($this->tas_def_description !== $v || $v==="") { - $this->tas_def_description = $v; - - $res = Content::addContent( 'TAS_DEF_DESCRIPTION', '', $this->getTasUid(), $lang, $this->tas_def_description ); - return $res; - } - return 0; - } - /** - * This value goes in the content table - * @var string - */ - protected $tas_def_proc_code = ''; - /** - * Get the tas_def_proc_code column value. - * @return string - */ - public function getTasDefProcCode() - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in getTasDefProcCode, the getTasUid() can't be blank") ); - } - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $this->tas_def_proc_code = Content::load ( 'TAS_DEF_PROC_CODE', '', $this->getTasUid(), $lang ); - return $this->tas_def_proc_code; - } - /** - * Set the tas_def_proc_code column value. - * - * @param string $v new value - * @return void - */ - public function setTasDefProcCode($v) - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in setTasDefProcCode, the getTasUid() can't be blank") ); - } - $v=isset($v)?((string)$v):''; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - if ($this->tas_def_proc_code !== $v || $v==="") { - $this->tas_def_proc_code = $v; - - $res = Content::addContent( 'TAS_DEF_PROC_CODE', '', $this->getTasUid(), $lang, $this->tas_def_proc_code ); - return $res; - } - return 0; - } - /** - * This value goes in the content table - * @var string - */ - protected $tas_def_message = ''; - /** - * Get the tas_def_message column value. - * @return string - */ - public function getTasDefMessage() - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in getTasDefMessage, the getTasUid() can't be blank") ); - } - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $this->tas_def_message = Content::load ( 'TAS_DEF_MESSAGE', '', $this->getTasUid(), $lang ); - return $this->tas_def_message; - } +class Task extends BaseTask +{ + /** + * This value goes in the content table + * @var string + */ + protected $tas_title = ''; - /** - * Set the tas_def_message column value. - * - * @param string $v new value - * @return void - */ - public function setTasDefMessage($v) - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in setTasDefMessage, the getTasUid() can't be blank") ); - } - $v=isset($v)?((string)$v):''; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - if ($this->tas_def_message !== $v || $v==="") { - $this->tas_def_message = $v; - - $res = Content::addContent( 'TAS_DEF_MESSAGE', '', $this->getTasUid(), $lang, $this->tas_def_message ); - return $res; - } - return 0; - } - - /** - * This value goes in the content table - * @var string - */ - protected $tas_def_subject_message = ''; - - /** - * Get the tas_def_message column value. - * @return string - */ - public function getTasDefSubjectMessage() - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in getTasDefSubjectMessage, the getTasUid() can't be blank") ); - } - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $this->tas_def_subject_message = Content::load ( 'TAS_DEF_SUBJECT_MESSAGE', '', $this->getTasUid(), $lang ); - return $this->tas_def_subject_message; - } - - - /** - * Set the tas_def_subject_message column value. - * - * @param string $v new value - * @return void - */ - public function setTasDefSubjectMessage($v) - { - if ( $this->getTasUid() == "" ) { - throw ( new Exception( "Error in setTasDefSubjectMessage, the getTasUid() can't be blank") ); - } - $v = isset($v)? ((string)$v) : ''; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - - if ($this->tas_def_subject_message !== $v || $v==="") { - $this->tas_def_subject_message = $v; - - $res = Content::addContent( 'TAS_DEF_SUBJECT_MESSAGE', '', $this->getTasUid(), $lang, $this->tas_def_subject_message ); - - return $res; - } - return 0; - } - - /** - * create a new Task - * - * @param array $aData with new values - * @return void - */ - function create($aData) - { - $con = Propel::getConnection(TaskPeer::DATABASE_NAME); - try + /** + * Get the tas_title column value. + * @return string + */ + public function getTasTitle() { - $sTaskUID = G::generateUniqueID(); - $con->begin(); - $this->setProUid($aData['PRO_UID']); - $this->setTasUid($sTaskUID); - $this->setTasType("NORMAL"); - $this->setTasDuration("1"); - $this->setTasDelayType(""); - $this->setTasTemporizer(""); - $this->setTasTypeDay(""); - $this->setTasTimeunit("DAYS"); - $this->setTasAlert("FALSE"); - $this->setTasPriorityVariable(""); - $this->setTasAssignType("BALANCED"); - $this->setTasAssignVariable("@@SYS_NEXT_USER_TO_BE_ASSIGNED"); - $this->setTasAssignLocation("FALSE"); - $this->setTasAssignLocationAdhoc("FALSE"); - $this->setTasTransferFly("FALSE"); - $this->setTasLastAssigned("0"); - $this->setTasUser("0"); - $this->setTasCanUpload("FALSE"); - $this->setTasViewUpload("FALSE"); - $this->setTasViewAdditionalDocumentation("FALSE"); - $this->setTasCanCancel("FALSE"); - $this->setTasOwnerApp("FALSE"); - $this->setStgUid(""); - $this->setTasCanPause("FALSE"); - $this->setTasCanSendMessage("TRUE"); - $this->setTasCanDeleteDocs("FALSE"); - $this->setTasSelfService("FALSE"); - $this->setTasStart("FALSE"); - $this->setTasToLastUser("FALSE"); - $this->setTasSendLastEmail("FALSE"); - $this->setTasDerivation("NORMAL"); - $this->setTasPosx(""); - $this->setTasPosy(""); - $this->setTasColor(""); - $this->fromArray($aData,BasePeer::TYPE_FIELDNAME); - if($this->validate()) - { - $this->setTasTitle((isset($aData['TAS_TITLE']) ? $aData['TAS_TITLE']: '')); - $this->setTasDescription(""); - $this->setTasDefTitle(""); - $this->setTasDefDescription(""); - $this->setTasDefProcCode(""); - $this->setTasDefMessage(""); - $this->setTasDefSubjectMessage(""); - $this->save(); - $con->commit(); - return $sTaskUID; - } - else - { - $con->rollback(); - $e=new Exception("Failed Validation in class ".get_class($this)."."); - $e->aValidationFailures=$this->getValidationFailures(); - throw($e); - } - } - catch(Exception $e) - { - $con->rollback(); - throw($e); - } - } + if ($this->getTasUid() == "") { + throw (new Exception("Error in getTasTitle, the getTasUid() can't be blank")); + } -public function kgetassigType($pro_uid, $tas){ - + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + $this->tas_title = Content::load('TAS_TITLE', '', $this->getTasUid(), $lang); + + return $this->tas_title; + } + + /** + * Set the tas_title column value. + * + * @param string $v new value + * @return void + */ + public function setTasTitle($v) + { + if ($this->getTasUid() == "") { + throw (new Exception("Error in setTasTitle, the getTasUid() can't be blank")); + } + + $v = isset($v)? ((string)$v) : ''; + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + + if ($this->tas_title !== $v || $v === "") { + $this->tas_title = $v; + + $res = Content::addContent('TAS_TITLE', '', $this->getTasUid(), $lang, $this->tas_title); + + return $res; + } + + return 0; + } + + /** + * This value goes in the content table + * @var string + */ + protected $tas_description = ''; + + /** + * Get the tas_description column value. + * @return string + */ + public function getTasDescription() + { + if ($this->getTasUid() == "") { + throw (new Exception( "Error in getTasDescription, the getTasUid() can't be blank")); + } + + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + $this->tas_description = Content::load('TAS_DESCRIPTION', '', $this->getTasUid(), $lang); + + return $this->tas_description; + } + + /** + * Set the tas_description column value. + * + * @param string $v new value + * @return void + */ + public function setTasDescription($v) + { + if ($this->getTasUid() == "") { + throw (new Exception("Error in setTasDescription, the getTasUid() can't be blank")); + } + + $v = isset($v)? ((string)$v) : ''; + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + + if ($this->tas_description !== $v || $v === "") { + $this->tas_description = $v; + + $res = Content::addContent('TAS_DESCRIPTION', '', $this->getTasUid(), $lang, $this->tas_description); + + return $res; + } + + return 0; + } + + /** + * This value goes in the content table + * @var string + */ + protected $tas_def_title = ''; + + /** + * Get the tas_def_title column value. + * @return string + */ + public function getTasDefTitle() + { + if ($this->getTasUid() == "") { + throw (new Exception( "Error in getTasDefTitle, the getTasUid() can't be blank")); + } + + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + $this->tas_def_title = Content::load('TAS_DEF_TITLE', '', $this->getTasUid(), $lang); + + return $this->tas_def_title; + } + + /** + * Set the tas_def_title column value. + * + * @param string $v new value + * @return void + */ + public function setTasDefTitle($v) + { + if ($this->getTasUid() == "") { + throw (new Exception("Error in setTasDefTitle, the getTasUid() can't be blank")); + } + + $v = isset($v)? ((string)$v) : ''; + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + + if ($this->tas_def_title !== $v || $v === "") { + $this->tas_def_title = $v; + + $res = Content::addContent('TAS_DEF_TITLE', '', $this->getTasUid(), $lang, $this->tas_def_title); + + return $res; + } + + return 0; + } + + /** + * This value goes in the content table + * @var string + */ + protected $tas_def_description = ''; + + /** + * Get the tas_def_description column value. + * @return string + */ + public function getTasDefDescription() + { + if ($this->getTasUid() == "") { + throw (new Exception( "Error in getTasDefDescription, the getTasUid() can't be blank")); + } + + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + $this->tas_def_description = Content::load('TAS_DEF_DESCRIPTION', '', $this->getTasUid(), $lang); + + return $this->tas_def_description; + } + + /** + * Set the tas_def_description column value. + * + * @param string $v new value + * @return void + */ + public function setTasDefDescription($v) + { + if ($this->getTasUid() == "") { + throw (new Exception("Error in setTasDefDescription, the getTasUid() can't be blank")); + } + + $v = isset($v)? ((string)$v) : ''; + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + + if ($this->tas_def_description !== $v || $v === "") { + $this->tas_def_description = $v; + + $res = Content::addContent('TAS_DEF_DESCRIPTION', '', $this->getTasUid(), $lang, $v); + return $res; + } + + return 0; + } + + /** + * This value goes in the content table + * @var string + */ + protected $tas_def_proc_code = ''; + + /** + * Get the tas_def_proc_code column value. + * @return string + */ + public function getTasDefProcCode() + { + if ($this->getTasUid() == "") { + throw (new Exception( "Error in getTasDefProcCode, the getTasUid() can't be blank")); + } + + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + $this->tas_def_proc_code = Content::load('TAS_DEF_PROC_CODE', '', $this->getTasUid(), $lang); + + return $this->tas_def_proc_code; + } + + /** + * Set the tas_def_proc_code column value. + * + * @param string $v new value + * @return void + */ + public function setTasDefProcCode($v) + { + if ($this->getTasUid() == "") { + throw (new Exception("Error in setTasDefProcCode, the getTasUid() can't be blank")); + } + + $v = isset($v)? ((string)$v) : ''; + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + + if ($this->tas_def_proc_code !== $v || $v === "") { + $this->tas_def_proc_code = $v; + + $res = Content::addContent('TAS_DEF_PROC_CODE', '', $this->getTasUid(), $lang, $this->tas_def_proc_code); + + return $res; + } + + return 0; + } + + /** + * This value goes in the content table + * @var string + */ + protected $tas_def_message = ''; + + /** + * Get the tas_def_message column value. + * @return string + */ + public function getTasDefMessage() + { + if ($this->getTasUid() == "") { + throw (new Exception( "Error in getTasDefMessage, the getTasUid() can't be blank")); + } + + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + $this->tas_def_message = Content::load('TAS_DEF_MESSAGE', '', $this->getTasUid(), $lang); + + return $this->tas_def_message; + } + + /** + * Set the tas_def_message column value. + * + * @param string $v new value + * @return void + */ + public function setTasDefMessage($v) + { + if ($this->getTasUid() == "") { + throw (new Exception("Error in setTasDefMessage, the getTasUid() can't be blank")); + } + $v = isset($v)? ((string)$v) : ''; + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + + if ($this->tas_def_message !== $v || $v === "") { + $this->tas_def_message = $v; + + $res = Content::addContent('TAS_DEF_MESSAGE', '', $this->getTasUid(), $lang, $this->tas_def_message); + + return $res; + } + + return 0; + } + + /** + * This value goes in the content table + * @var string + */ + protected $tas_def_subject_message = ''; + + /** + * Get the tas_def_message column value. + * @return string + */ + public function getTasDefSubjectMessage() + { + if ($this->getTasUid() == "") { + throw (new Exception("Error in getTasDefSubjectMessage, the getTasUid() can't be blank")); + } + + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + $this->tas_def_subject_message = Content::load('TAS_DEF_SUBJECT_MESSAGE', '', $this->getTasUid(), $lang); + + return $this->tas_def_subject_message; + } + + /** + * Set the tas_def_subject_message column value. + * + * @param string $v new value + * @return void + */ + public function setTasDefSubjectMessage($v) + { + if ($this->getTasUid() == "") { + throw (new Exception( "Error in setTasDefSubjectMessage, the getTasUid() can't be blank")); + } + + $v = isset($v)? ((string)$v) : ''; + $lang = defined('SYS_LANG')? SYS_LANG : 'en'; + + if ($this->tas_def_subject_message !== $v || $v === "") { + $this->tas_def_subject_message = $v; + + $res = Content::addContent('TAS_DEF_SUBJECT_MESSAGE', '', $this->getTasUid(), $lang, $v); + + return $res; + } + + return 0; + } + + /** + * create a new Task + * + * @param array $aData with new values + * @return void + */ + public function create($aData) + { + $con = Propel::getConnection(TaskPeer::DATABASE_NAME); + + try { + $sTaskUID = G::generateUniqueID(); + $con->begin(); + $this->setProUid($aData['PRO_UID']); + $this->setTasUid($sTaskUID); + $this->setTasType("NORMAL"); + $this->setTasDuration("1"); + $this->setTasDelayType(""); + $this->setTasTemporizer(""); + $this->setTasTypeDay(""); + $this->setTasTimeunit("DAYS"); + $this->setTasAlert("FALSE"); + $this->setTasPriorityVariable(""); + $this->setTasAssignType("BALANCED"); + $this->setTasAssignVariable("@@SYS_NEXT_USER_TO_BE_ASSIGNED"); + $this->setTasAssignLocation("FALSE"); + $this->setTasAssignLocationAdhoc("FALSE"); + $this->setTasTransferFly("FALSE"); + $this->setTasLastAssigned("0"); + $this->setTasUser("0"); + $this->setTasCanUpload("FALSE"); + $this->setTasViewUpload("FALSE"); + $this->setTasViewAdditionalDocumentation("FALSE"); + $this->setTasCanCancel("FALSE"); + $this->setTasOwnerApp("FALSE"); + $this->setStgUid(""); + $this->setTasCanPause("FALSE"); + $this->setTasCanSendMessage("TRUE"); + $this->setTasCanDeleteDocs("FALSE"); + $this->setTasSelfService("FALSE"); + $this->setTasStart("FALSE"); + $this->setTasToLastUser("FALSE"); + $this->setTasSendLastEmail("FALSE"); + $this->setTasDerivation("NORMAL"); + $this->setTasPosx(""); + $this->setTasPosy(""); + $this->setTasColor(""); + $this->fromArray($aData,BasePeer::TYPE_FIELDNAME); + + if ($this->validate()) { + $this->setTasTitle((isset($aData['TAS_TITLE']) ? $aData['TAS_TITLE']: '')); + $this->setTasDescription(""); + $this->setTasDefTitle(""); + $this->setTasDefDescription(""); + $this->setTasDefProcCode(""); + $this->setTasDefMessage(""); + $this->setTasDefSubjectMessage(""); + $this->save(); + $con->commit(); + + return $sTaskUID; + } else { + $con->rollback(); + $e = new Exception("Failed Validation in class " . get_class($this) . "."); + $e->aValidationFailures=$this->getValidationFailures(); + + throw ($e); + } + } catch (Exception $e) { + $con->rollback(); + + throw ($e); + } + } + + public function kgetassigType($pro_uid, $tas) + { $k = new Criteria(); $k->clearSelectColumns(); $k->addSelectColumn(TaskPeer::TAS_UID); @@ -409,293 +437,343 @@ public function kgetassigType($pro_uid, $tas){ $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); - - return $row; - } - public function load($TasUid) - { - try { - $oRow = TaskPeer::retrieveByPK($TasUid); - - if (!is_null($oRow)) - { - $aFields = $oRow->toArray(BasePeer::TYPE_FIELDNAME); - - $this->fromArray($aFields, BasePeer::TYPE_FIELDNAME); //Populating an object from of the array //Populating attributes - $this->setNew(false); - - /////// - //Create new records for TASK in CONTENT for the current language, this if is necesary //Populating others attributes - $this->setTasUid($TasUid); - - $aFields["TAS_TITLE"] = $this->getTasTitle(); - $aFields["TAS_DESCRIPTION"] = $this->getTasDescription(); - $aFields["TAS_DEF_TITLE"] = $this->getTasDefTitle(); - $aFields["TAS_DEF_DESCRIPTION"] = $this->getTasDefDescription(); - $aFields["TAS_DEF_PROC_CODE"] = $this->getTasDefProcCode(); - $aFields["TAS_DEF_MESSAGE"] = $this->getTasDefMessage(); - $aFields["TAS_DEF_SUBJECT_MESSAGE"] = $this->getTasDefSubjectMessage(); - - /////// - return $aFields; - } - else { - throw(new Exception("The row '" . $TasUid . "' in table TASK doesn't exist!")); - } + return $row; } - catch (Exception $oError) { - throw($oError); - } - } - - function update($fields) - { - ini_set("max_execution_time", 0); - - require_once ("classes/model/AppCacheView.php"); - - $con = Propel::getConnection(TaskPeer::DATABASE_NAME); - try + + public function load($TasUid) { - $con->begin(); - $this->load($fields['TAS_UID']); - $this->fromArray($fields,BasePeer::TYPE_FIELDNAME); - if($this->validate()) - { - $contentResult=0; - if (array_key_exists("TAS_TITLE", $fields)) $contentResult+=$this->setTasTitle($fields["TAS_TITLE"]); - if (array_key_exists("TAS_DESCRIPTION", $fields)) $contentResult+=$this->setTasDescription($fields["TAS_DESCRIPTION"]); - if (array_key_exists("TAS_DEF_TITLE", $fields)) $contentResult+=$this->setTasDefTitle($fields["TAS_DEF_TITLE"]); - if (array_key_exists("TAS_DEF_DESCRIPTION", $fields)) $contentResult+=$this->setTasDefDescription($fields["TAS_DEF_DESCRIPTION"]); - if (array_key_exists("TAS_DEF_PROC_CODE", $fields)) $contentResult+=$this->setTasDefProcCode($fields["TAS_DEF_PROC_CODE"]); - if (array_key_exists("TAS_DEF_MESSAGE", $fields)) $contentResult+=$this->setTasDefMessage(trim($fields["TAS_DEF_MESSAGE"])); - if (array_key_exists("TAS_DEF_SUBJECT_MESSAGE", $fields)) $contentResult+=$this->setTasDefSubjectMessage(trim($fields["TAS_DEF_SUBJECT_MESSAGE"])); - if (array_key_exists("TAS_CALENDAR", $fields)) $contentResult+=$this->setTasCalendar($fields['TAS_UID'],$fields["TAS_CALENDAR"]); - $result=$this->save(); - $result=($result==0)?($contentResult>0?1:0):$result; - $con->commit(); - - if ($result == 1 && array_key_exists("TAS_DEF_TITLE", $fields)) { - //Get cases - $criteriaAPPCV = new Criteria("workflow"); - - $criteriaAPPCV->setDistinct(); - $criteriaAPPCV->addSelectColumn(AppCacheViewPeer::APP_UID); - $criteriaAPPCV->add(AppCacheViewPeer::TAS_UID, $fields["TAS_UID"]); - - $rsCriteriaAPPCV = AppCacheViewPeer::doSelectRS($criteriaAPPCV); - $rsCriteriaAPPCV->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - while ($rsCriteriaAPPCV->next()) { - $row = $rsCriteriaAPPCV->getRow(); - - $appcv_application_uid = $row["APP_UID"]; - - //Get DEL_INDEX_MAX - $criteria = new Criteria("workflow"); - - $criteria->addAsColumn("DEL_INDEX_MAX", "MAX(" . AppCacheViewPeer::DEL_INDEX . ")"); - $criteria->add(AppCacheViewPeer::APP_UID, $appcv_application_uid); - - $rsCriteria = AppCacheViewPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $rsCriteria->next(); - $row = $rsCriteria->getRow(); - - $appcvDelIndexMax = $row["DEL_INDEX_MAX"]; - - //Current task? - $criteria = new Criteria("workflow"); - - $criteria->addSelectColumn(AppCacheViewPeer::APP_UID); - $criteria->add(AppCacheViewPeer::APP_UID, $appcv_application_uid); - $criteria->add(AppCacheViewPeer::DEL_INDEX, $appcvDelIndexMax); - $criteria->add(AppCacheViewPeer::TAS_UID, $fields["TAS_UID"]); - - $rsCriteria = AppCacheViewPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - if ($rsCriteria->next()) { - $appTitle = $fields["TAS_DEF_TITLE"]; - - $app = new Application(); - $arrayAppField = $app->Load($appcv_application_uid); - - $appTitle = (!empty($appTitle))? $appTitle : "#" . $arrayAppField["APP_NUMBER"]; - $appTitleNew = G::replaceDataField($appTitle, unserialize($arrayAppField["APP_DATA"])); - - if (isset($arrayAppField["APP_TITLE"]) && $arrayAppField["APP_TITLE"] != $appTitleNew) { - //Updating the value in content, where... - $criteria1 = new Criteria("workflow"); - $criteria1->add(ContentPeer::CON_CATEGORY, "APP_TITLE"); - $criteria1->add(ContentPeer::CON_ID, $appcv_application_uid); - $criteria1->add(ContentPeer::CON_LANG, SYS_LANG); - - //Update set - $criteria2 = new Criteria("workflow"); - $criteria2->add(ContentPeer::CON_VALUE, $appTitleNew); - - BasePeer::doUpdate($criteria1, $criteria2, Propel::getConnection("workflow")); - } + try { + $oRow = TaskPeer::retrieveByPK($TasUid); + + if (!is_null($oRow)) { + $aFields = $oRow->toArray(BasePeer::TYPE_FIELDNAME); + + $this->fromArray($aFields, BasePeer::TYPE_FIELDNAME); //Populating an object from of the array + //Populating attributes + $this->setNew(false); + + /////// + //Create new records for TASK in CONTENT for the current language, this if is necesary + //Populating others attributes + $this->setTasUid($TasUid); + + $aFields["TAS_TITLE"] = $this->getTasTitle(); + $aFields["TAS_DESCRIPTION"] = $this->getTasDescription(); + $aFields["TAS_DEF_TITLE"] = $this->getTasDefTitle(); + $aFields["TAS_DEF_DESCRIPTION"] = $this->getTasDefDescription(); + $aFields["TAS_DEF_PROC_CODE"] = $this->getTasDefProcCode(); + $aFields["TAS_DEF_MESSAGE"] = $this->getTasDefMessage(); + $aFields["TAS_DEF_SUBJECT_MESSAGE"] = $this->getTasDefSubjectMessage(); + + /////// + return $aFields; + } else { + throw (new Exception("The row '" . $TasUid . "' in table TASK doesn't exist!")); } - } + } catch (Exception $oError) { + throw ($oError); } - - return $result; - } - else - { - $con->rollback(); - throw(new Exception("Failed Validation in class ".get_class($this).".")); - } } - catch(Exception $e) + + public function update($fields) { - $con->rollback(); - throw($e); - } - } - function remove($TasUid) - { - $oConnection = Propel::getConnection(TaskPeer::DATABASE_NAME); - try { - $oTask = TaskPeer::retrieveByPK($TasUid); - if (!is_null($oTask)) - { - $oConnection->begin(); - Content::removeContent('TAS_TITLE', '', $oTask->getTasUid()); - Content::removeContent('TAS_DESCRIPTION', '', $oTask->getTasUid()); - Content::removeContent('TAS_DEF_TITLE', '', $oTask->getTasUid()); - Content::removeContent('TAS_DEF_DESCRIPTION', '', $oTask->getTasUid()); - Content::removeContent('TAS_DEF_PROC_CODE', '', $oTask->getTasUid()); - Content::removeContent('TAS_DEF_MESSAGE', '', $oTask->getTasUid()); - Content::removeContent('TAS_DEF_SUBJECT_MESSAGE', '', $oTask->getTasUid()); - $iResult = $oTask->delete(); - $oConnection->commit(); - return $iResult; - } - else { - throw( new Exception( "The row '" . $TasUid . "' in table TASK doesn't exist!" )); - } - } - catch (Exception $oError) { - $oConnection->rollback(); - throw($oError); - } - } + require_once ("classes/model/AppCacheView.php"); + require_once ("classes/model/Configuration.php"); - /** - * verify if Task row specified in [TasUid] exists. - * - * @param string $sProUid the uid of the Prolication - */ + $con = Propel::getConnection(TaskPeer::DATABASE_NAME); - function taskExists ( $TasUid ) { - $con = Propel::getConnection(TaskPeer::DATABASE_NAME); - try { - $oPro = TaskPeer::retrieveByPk( $TasUid ); - if ( is_object($oPro) && get_class ($oPro) == 'Task' ) { - return true; - } - else { - return false; - } + try { + $con->begin(); + $this->load($fields["TAS_UID"]); + $this->fromArray($fields, BasePeer::TYPE_FIELDNAME); + + if ($this->validate()) { + $taskDefTitlePrevious = null; + + $criteria = new Criteria("workflow"); + + $criteria->addSelectColumn(ContentPeer::CON_VALUE); + $criteria->add(ContentPeer::CON_CATEGORY, "TAS_DEF_TITLE"); + $criteria->add(ContentPeer::CON_ID, $fields["TAS_UID"]); + $criteria->add(ContentPeer::CON_LANG, SYS_LANG); + + $rsCriteria = ContentPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + $taskDefTitlePrevious = $row["CON_VALUE"]; + } + + $contentResult = 0; + + if (array_key_exists("TAS_TITLE", $fields)) { + $contentResult += $this->setTasTitle($fields["TAS_TITLE"]); + } + + if (array_key_exists("TAS_DESCRIPTION", $fields)) { + $contentResult += $this->setTasDescription($fields["TAS_DESCRIPTION"]); + } + + if (array_key_exists("TAS_DEF_TITLE", $fields)) { + $contentResult += $this->setTasDefTitle($fields["TAS_DEF_TITLE"]); + } + + if (array_key_exists("TAS_DEF_DESCRIPTION", $fields)) { + $contentResult += $this->setTasDefDescription($fields["TAS_DEF_DESCRIPTION"]); + } + + if (array_key_exists("TAS_DEF_PROC_CODE", $fields)) { + $contentResult += $this->setTasDefProcCode($fields["TAS_DEF_PROC_CODE"]); + } + + if (array_key_exists("TAS_DEF_MESSAGE", $fields)) { + $contentResult += $this->setTasDefMessage(trim($fields["TAS_DEF_MESSAGE"])); + } + + if (array_key_exists("TAS_DEF_SUBJECT_MESSAGE", $fields)) { + $contentResult += $this->setTasDefSubjectMessage(trim($fields["TAS_DEF_SUBJECT_MESSAGE"])); + } + + if (array_key_exists("TAS_CALENDAR", $fields)) { + $contentResult += $this->setTasCalendar($fields['TAS_UID'],$fields["TAS_CALENDAR"]); + } + + $result = $this->save(); + $result = ($result == 0)? (($contentResult > 0)? 1 : 0) : $result; + $con->commit(); + + if ($result == 1 && + array_key_exists("TAS_DEF_TITLE", $fields) && + $fields["TAS_DEF_TITLE"] != $taskDefTitlePrevious + ) { + $criteria = new Criteria("workflow"); + + $criteria->addAsColumn("APPCV_NUM_ROWS", "COUNT(DISTINCT " . AppCacheViewPeer::APP_UID . ")"); + $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, "OPEN"); + $criteria->add(AppCacheViewPeer::TAS_UID, $fields["TAS_UID"]); + + $rsCriteria = AppCacheViewPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $rsCriteria->next(); + $row = $rsCriteria->getRow(); + + $appcvNumRows = intval($row["APPCV_NUM_ROWS"]); + + if ($appcvNumRows <= 1000) { + $appcv = new AppCacheView(); + $appcv->appTitleByTaskCaseLabelUpdate($fields["TAS_UID"], SYS_LANG); + + $result = 2; + } else { + //Delete record + $criteria = new Criteria("workflow"); + + $criteria->add(ConfigurationPeer::CFG_UID, "TAS_APP_TITLE_UPDATE"); + $criteria->add(ConfigurationPeer::OBJ_UID, $fields["TAS_UID"]); + $criteria->add(ConfigurationPeer::CFG_VALUE, SYS_LANG); + + $numRowDeleted = ConfigurationPeer::doDelete($criteria); + + //Insert record + $conf = new Configuration(); + + $conf->create( + array( + "CFG_UID" => "TAS_APP_TITLE_UPDATE", + "OBJ_UID" => $fields["TAS_UID"], + "CFG_VALUE" => SYS_LANG, + "PRO_UID" => "", + "USR_UID" => "", + "APP_UID" => "" + ) + ); + + $result = 3; + } + } + + return $result; + } else { + $con->rollback(); + + throw (new Exception("Failed Validation in class " . get_class($this) . ".")); + } + } catch (Exception $e) { + $con->rollback(); + + throw ($e); + } } - catch (Exception $oError) { - throw($oError); - } - } - - /** - * create a new Task - * - * @param array $aData with new values - * @return void - */ - function createRow($aData) - { - $con = Propel::getConnection(TaskPeer::DATABASE_NAME); - try - { - $con->begin(); - - $this->fromArray($aData,BasePeer::TYPE_FIELDNAME); - if($this->validate()) - { - $this->setTasTitle((isset($aData['TAS_TITLE']) ? $aData['TAS_TITLE']: '')); - $this->setTasDescription((isset($aData['TAS_DESCRIPTION']) ? $aData['TAS_DESCRIPTION']: '')); - $this->setTasDefTitle((isset($aData['TAS_DEF_TITLE']) ? $aData['TAS_DEF_TITLE']: '')); - $this->setTasDefDescription((isset($aData['TAS_DEF_DESCRIPTION']) ? $aData['TAS_DEF_DESCRIPTION']: '')); - $this->setTasDefProcCode((isset($aData['TAS_DEF_DESCRIPTION']) ? $aData['TAS_DEF_DESCRIPTION']: '')); - $this->setTasDefMessage((isset($aData['TAS_DEF_MESSAGE']) ? $aData['TAS_DEF_MESSAGE']: '')); - $this->setTasDefSubjectMessage((isset($aData['TAS_DEF_SUBJECT_MESSAGE']) ? $aData['TAS_DEF_SUBJECT_MESSAGE']: '')); - $this->save(); - $con->commit(); - return; - } - else - { - $con->rollback(); - $e=new Exception("Failed Validation in class ".get_class($this)."."); - $e->aValidationFailures=$this->getValidationFailures(); - throw($e); - } - } - catch(Exception $e) + + public function remove($TasUid) { - $con->rollback(); - throw($e); - } - } - function setTasCalendar($taskUid,$calendarUid){ - //Save Calendar ID for this process - G::LoadClass("calendar"); - $calendarObj=new Calendar(); - $calendarObj->assignCalendarTo($taskUid,$calendarUid,'TASK'); - } + $oConnection = Propel::getConnection(TaskPeer::DATABASE_NAME); - function getDelegatedTaskData($TAS_UID, $APP_UID, $DEL_INDEX) - { - require_once 'classes/model/AppDelegation.php'; - require_once 'classes/model/Task.php'; - $oTask = new Task(); - - $aFields = $oTask->load($TAS_UID); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID); - $oCriteria->add(AppDelegationPeer::DEL_INDEX, $DEL_INDEX); - $oDataset = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $taskData = $oDataset->getRow(); - - $iDiff = strtotime($taskData['DEL_FINISH_DATE']) - strtotime($taskData['DEL_INIT_DATE']); - $aFields['INIT_DATE'] = ($taskData['DEL_INIT_DATE'] != null ? $taskData['DEL_INIT_DATE'] : G::LoadTranslation('ID_CASE_NOT_YET_STARTED')); - $aFields['DUE_DATE'] = ($taskData['DEL_TASK_DUE_DATE'] != null ? $taskData['DEL_TASK_DUE_DATE'] : G::LoadTranslation('ID_NOT_FINISHED')); - $aFields['FINISH'] = ($taskData['DEL_FINISH_DATE'] != null ? $taskData['DEL_FINISH_DATE'] : G::LoadTranslation('ID_NOT_FINISHED')); - $aFields['DURATION'] = ($taskData['DEL_FINISH_DATE'] != null ? (int) ($iDiff / 3600) . ' ' . ((int) ($iDiff / 3600) == 1 ? G::LoadTranslation('ID_HOUR') : G::LoadTranslation('ID_HOURS')) . ' ' . (int) (($iDiff % 3600) / 60) . ' ' . ((int) (($iDiff % 3600) / 60) == 1 ? G::LoadTranslation('ID_MINUTE') : G::LoadTranslation('ID_MINUTES')) . ' ' . (int) (($iDiff % 3600) % 60) . ' ' . ((int) (($iDiff % 3600) % 60) == 1 ? G::LoadTranslation('ID_SECOND') : G::LoadTranslation('ID_SECONDS')) : G::LoadTranslation('ID_NOT_FINISHED')); - - return $aFields; - } - - //Added by qennix - //Gets Starting Event of current task - function getStartingEvent(){ - require_once 'classes/model/Event.php'; - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(EventPeer::EVN_UID); - $oCriteria->add(EventPeer::EVN_TAS_UID_TO,$this->tas_uid); - //$oCriteria->add(EventPeer::EVN_TYPE,'bpmnEventMessageStart'); - $oDataset = EventPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - if ($oDataset->next()){ - $row = $oDataset->getRow(); - $event_uid = $row['EVN_UID']; - }else{ - $event_uid = ''; + try { + $oTask = TaskPeer::retrieveByPK($TasUid); + + if (!is_null($oTask)) { + $oConnection->begin(); + + Content::removeContent('TAS_TITLE', '', $oTask->getTasUid()); + Content::removeContent('TAS_DESCRIPTION', '', $oTask->getTasUid()); + Content::removeContent('TAS_DEF_TITLE', '', $oTask->getTasUid()); + Content::removeContent('TAS_DEF_DESCRIPTION', '', $oTask->getTasUid()); + Content::removeContent('TAS_DEF_PROC_CODE', '', $oTask->getTasUid()); + Content::removeContent('TAS_DEF_MESSAGE', '', $oTask->getTasUid()); + Content::removeContent('TAS_DEF_SUBJECT_MESSAGE', '', $oTask->getTasUid()); + + $iResult = $oTask->delete(); + $oConnection->commit(); + + return $iResult; + } else { + throw (new Exception( "The row '" . $TasUid . "' in table TASK doesn't exist!")); + } + } catch (Exception $oError) { + $oConnection->rollback(); + + throw ($oError); + } } - return $event_uid; - } -} // Task + + /** + * verify if Task row specified in [TasUid] exists. + * + * @param string $sProUid the uid of the Prolication + */ + public function taskExists($TasUid) + { + $con = Propel::getConnection(TaskPeer::DATABASE_NAME); + + try { + $oPro = TaskPeer::retrieveByPk($TasUid); + + if (is_object($oPro) && get_class($oPro) == 'Task') { + return true; + } else { + return false; + } + } catch (Exception $oError) { + throw ($oError); + } + } + + /** + * create a new Task + * + * @param array $aData with new values + * @return void + */ + public function createRow($aData) + { + $con = Propel::getConnection(TaskPeer::DATABASE_NAME); + + try { + $con->begin(); + + $this->fromArray($aData,BasePeer::TYPE_FIELDNAME); + + if ($this->validate()) { + $this->setTasTitle((isset($aData['TAS_TITLE'])? $aData['TAS_TITLE'] : '')); + $this->setTasDescription((isset($aData['TAS_DESCRIPTION'])? $aData['TAS_DESCRIPTION'] : '')); + $this->setTasDefTitle((isset($aData['TAS_DEF_TITLE'])? $aData['TAS_DEF_TITLE'] : '')); + $this->setTasDefDescription((isset($aData['TAS_DEF_DESCRIPTION'])? $aData['TAS_DEF_DESCRIPTION'] : '')); + $this->setTasDefProcCode((isset($aData['TAS_DEF_DESCRIPTION'])? $aData['TAS_DEF_DESCRIPTION'] : '')); + $this->setTasDefMessage((isset($aData['TAS_DEF_MESSAGE'])? $aData['TAS_DEF_MESSAGE'] : '')); + + $strAux = isset($aData['TAS_DEF_SUBJECT_MESSAGE'])? $aData['TAS_DEF_SUBJECT_MESSAGE'] : ''; + $this->setTasDefSubjectMessage($strAux); + + $this->save(); + $con->commit(); + + return; + } else { + $con->rollback(); + $e = new Exception("Failed Validation in class " . get_class($this) . "."); + $e->aValidationFailures=$this->getValidationFailures(); + + throw ($e); + } + } catch (Exception $e) { + $con->rollback(); + throw ($e); + } + } + + public function setTasCalendar($taskUid, $calendarUid) + { + //Save Calendar ID for this process + G::LoadClass("calendar"); + $calendarObj = new Calendar(); + $calendarObj->assignCalendarTo($taskUid, $calendarUid, 'TASK'); + } + + public function getDelegatedTaskData($TAS_UID, $APP_UID, $DEL_INDEX) + { + require_once ('classes/model/AppDelegation.php'); + require_once ('classes/model/Task.php'); + + $oTask = new Task(); + + $aFields = $oTask->load($TAS_UID); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID); + $oCriteria->add(AppDelegationPeer::DEL_INDEX, $DEL_INDEX); + $oDataset = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $taskData = $oDataset->getRow(); + + $iDiff = strtotime($taskData['DEL_FINISH_DATE']) - strtotime($taskData['DEL_INIT_DATE']); + + $aFields['INIT_DATE'] = ( + $taskData['DEL_INIT_DATE'] != null ? + $taskData['DEL_INIT_DATE'] : G::LoadTranslation('ID_CASE_NOT_YET_STARTED') + ); + + $aFields['DUE_DATE'] = ( + $taskData['DEL_TASK_DUE_DATE'] != null ? + $taskData['DEL_TASK_DUE_DATE'] : G::LoadTranslation('ID_NOT_FINISHED') + ); + + $aFields['FINISH'] = ( + $taskData['DEL_FINISH_DATE'] != null ? + $taskData['DEL_FINISH_DATE'] : G::LoadTranslation('ID_NOT_FINISHED') + ); + + $aFields['DURATION'] = ($taskData['DEL_FINISH_DATE'] != null ? (int) ($iDiff / 3600) . ' ' . ((int) ($iDiff / 3600) == 1 ? G::LoadTranslation('ID_HOUR') : G::LoadTranslation('ID_HOURS')) . ' ' . (int) (($iDiff % 3600) / 60) . ' ' . ((int) (($iDiff % 3600) / 60) == 1 ? G::LoadTranslation('ID_MINUTE') : G::LoadTranslation('ID_MINUTES')) . ' ' . (int) (($iDiff % 3600) % 60) . ' ' . ((int) (($iDiff % 3600) % 60) == 1 ? G::LoadTranslation('ID_SECOND') : G::LoadTranslation('ID_SECONDS')) : G::LoadTranslation('ID_NOT_FINISHED')); + + return $aFields; + } + + //Added by qennix + //Gets Starting Event of current task + public function getStartingEvent() + { + require_once ('classes/model/Event.php'); + + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(EventPeer::EVN_UID); + $oCriteria->add(EventPeer::EVN_TAS_UID_TO, $this->tas_uid); + //$oCriteria->add(EventPeer::EVN_TYPE, 'bpmnEventMessageStart'); + $oDataset = EventPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + if ($oDataset->next()) { + $row = $oDataset->getRow(); + $event_uid = $row['EVN_UID']; + } else { + $event_uid = ''; + } + + return $event_uid; + } +} +//Task + diff --git a/workflow/engine/js/processmap/core/processes_Map.js b/workflow/engine/js/processmap/core/processes_Map.js index f86a72d70..102384e68 100755 --- a/workflow/engine/js/processmap/core/processes_Map.js +++ b/workflow/engine/js/processmap/core/processes_Map.js @@ -76,7 +76,7 @@ var saveDataTaskTemporal = function(iForm) oTaskData.TAS_TYPE_DAY = getField('TAS_TYPE_DAY').value; oTaskData.TAS_CALENDAR = getField('TAS_CALENDAR').value; oTaskData.TAS_TRANSFER_FLY = (getField('TAS_TRANSFER_FLY').checked ? 'TRUE' : 'FALSE'); - + var fieldEval = new input(getField('TAS_DURATION')); if (getField('TAS_DURATION').value.trim() == '') { fieldEval.failed(); @@ -178,82 +178,72 @@ var saveDataTaskTemporal = function(iForm) var saveTaskData = function(oForm, iForm, iType) { iLastTab = iForm; - + if (!saveDataTaskTemporal(iForm)) { return false; } - + oTaskData.TAS_UID = getField("TAS_UID").value; - + /* while (oTaskData.TAS_TITLE.charAt(0)==" "){ oTaskData.TAS_TITLE = oTaskData.TAS_TITLE.substring(1,oTaskData.TAS_TITLE.length) ; } */ - + oTaskData.TAS_TITLE = oTaskData.TAS_TITLE.trim(); - + if (oTaskData.TAS_TITLE == "") { alert(G_STRINGS.ID_REQ_TITLE ); - + return false; } - - //Panel processing //iForm = 6 //Case Labels - var pnlProcessing; - - pnlProcessing = new leimnud.module.panel(); - - pnlProcessing.options = { - //title: "", - //theme: this.options.theme, - limit: true, - size: {w: 250, h: 110}, - position: {x: 50, y: 50, center: true}, - control: {close: false, resize: false}, - statusBar: true, - fx:{shadow: true, modal: true} - }; - - pnlProcessing.make(); - - //pnlProcessing.loader.show(); - pnlProcessing.addContent("
" + _("ID_PROCESSING") + "
"); - + //Set AJAX var sParameters = "function=saveTaskData"; - + var oRPC = new leimnud.module.rpc.xmlhttp({ url: "../tasks/tasks_Ajax", method: "POST", args: sParameters + "&oData=" + oTaskData.toJSONString() }); - + oRPC.callback = function (rpc) { - //pnlProcessing.loader.hide(); - pnlProcessing.remove(); - + var res = rpc.xmlhttp.responseText.parseJSON(); + if (oTaskData.TAS_TITLE) { Pm.data.db.task[getField("INDEX").value].label = Pm.data.db.task[getField("INDEX").value].object.elements.label.innerHTML = oTaskData.TAS_TITLE.replace(re2, "&"); } - + if (oTaskData.TAS_START) { oTaskData.TAS_START = ((oTaskData.TAS_START == "TRUE")? true : false); Pm.data.render.setTaskINI({task: oTaskData.TAS_UID, value: oTaskData.TAS_START}); } - + try { - new leimnud.module.app.info().make({ + var option = { label: changesSavedLabel - }); + } + + switch (res.status) { + case "CRONCL": + option = { + label: changesSavedLabel + "

" + _("APP_TITLE_CASE_LABEL_UPDATE"), + width: 350, + height: 175 + } + break; + } + + new leimnud.module.app.info().make(option); } catch (e) { //No show confirmation } - + Pm.tmp.propertiesPanel.remove(); }.extend(this); - + oRPC.make(); }; diff --git a/workflow/engine/methods/tasks/tasks_Ajax.php b/workflow/engine/methods/tasks/tasks_Ajax.php index 2b44465a0..2ae7bb15f 100755 --- a/workflow/engine/methods/tasks/tasks_Ajax.php +++ b/workflow/engine/methods/tasks/tasks_Ajax.php @@ -1,87 +1,81 @@ . - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - * - */ try { - global $RBAC; - switch ($RBAC->userCanAccess('PM_FACTORY')) { - case -2: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - case -1: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - } + global $RBAC; - $oJSON = new Services_JSON(); - $aData = get_object_vars($oJSON->decode($_POST['oData'])); - if(isset($_POST['function'])) - $sAction = $_POST['function']; - else - $sAction = $_POST['functions']; + switch ($RBAC->userCanAccess('PM_FACTORY')) { + case -2: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); + G::header('location: ../login/login'); + die; + break; + case -1: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); + G::header('location: ../login/login'); + die; + break; + } - switch ($sAction) { - case 'saveTaskData': - require_once 'classes/model/Task.php'; - $oTask = new Task(); - - /** - * routine to replace @amp@ by & - * that why the char "&" can't be passed by XmlHttpRequest directly - * @autor erik - */ - foreach($aData as $k=>$v) { - $aData[$k] = str_replace('@amp@', '&', $v); - } - - if (isset($aData['SEND_EMAIL'])) { - $aData['TAS_SEND_LAST_EMAIL'] = $aData['SEND_EMAIL'] == 'TRUE' ? 'TRUE' : 'FALSE'; - } else { - $aData['TAS_SEND_LAST_EMAIL'] = 'FALSE'; - } - - // Additional configuration - if (isset($aData['TAS_DEF_MESSAGE_TYPE']) && isset($aData['TAS_DEF_MESSAGE_TEMPLATE'])) { - G::loadClass('configuration'); - $oConf = new Configurations; - $oConf->aConfig = Array( - 'TAS_DEF_MESSAGE_TYPE' => $aData['TAS_DEF_MESSAGE_TYPE'], - 'TAS_DEF_MESSAGE_TEMPLATE'=> $aData['TAS_DEF_MESSAGE_TEMPLATE'] - ); - $oConf->saveConfig('TAS_EXTRA_PROPERTIES', $aData['TAS_UID'], '', ''); - unset($aData['TAS_DEF_MESSAGE_TYPE']); - unset($aData['TAS_DEF_MESSAGE_TEMPLATE']); - } + $oJSON = new Services_JSON(); + $aData = get_object_vars($oJSON->decode($_POST['oData'])); - $oTask->update($aData); - break; - } + if (isset($_POST['function'])) { + $sAction = $_POST['function']; + } else { + $sAction = $_POST['functions']; + } + + switch ($sAction) { + case "saveTaskData": + require_once ("classes/model/Task.php"); + + $response = array(); + + $oTask = new Task(); + + /** + * routine to replace @amp@ by & + * that why the char "&" can't be passed by XmlHttpRequest directly + * @autor erik + */ + + foreach ($aData as $k => $v) { + $aData[$k] = str_replace('@amp@', '&', $v); + } + + if (isset($aData['SEND_EMAIL'])) { + $aData['TAS_SEND_LAST_EMAIL'] = $aData['SEND_EMAIL'] == 'TRUE' ? 'TRUE' : 'FALSE'; + } else { + $aData['TAS_SEND_LAST_EMAIL'] = 'FALSE'; + } + + //Additional configuration + if (isset($aData['TAS_DEF_MESSAGE_TYPE']) && isset($aData['TAS_DEF_MESSAGE_TEMPLATE'])) { + G::LoadClass('configuration'); + + $oConf = new Configurations(); + $oConf->aConfig = array( + 'TAS_DEF_MESSAGE_TYPE' => $aData['TAS_DEF_MESSAGE_TYPE'], + 'TAS_DEF_MESSAGE_TEMPLATE' => $aData['TAS_DEF_MESSAGE_TEMPLATE'] + ); + + $oConf->saveConfig('TAS_EXTRA_PROPERTIES', $aData['TAS_UID'], '', ''); + + unset($aData['TAS_DEF_MESSAGE_TYPE']); + unset($aData['TAS_DEF_MESSAGE_TEMPLATE']); + } + + $result = $oTask->update($aData); + + $response["status"] = "OK"; + + if ($result == 3) { + $response["status"] = "CRONCL"; + } + + echo G::json_encode($response); + break; + } +} catch (Exception $oException) { + die($oException->getMessage()); } -catch (Exception $oException) { - die($oException->getMessage()); -} -?> \ No newline at end of file +