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/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index c3e313873..ab05c0f3c 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -61,8 +61,9 @@ if (!class_exists('PMScript')) { * @return date | $date | Current Date (Y-m-d) | It returns the current date as a string value. * */ -function getCurrentDate() { - return G::CurDate('Y-m-d'); +function getCurrentDate() +{ + return G::CurDate('Y-m-d'); } /** * @method @@ -77,8 +78,9 @@ function getCurrentDate() { * @return time | $time | Current Time (H:i:s)| The function returns the current time as a string. * */ -function getCurrentTime() { - return G::CurDate('H:i:s'); +function getCurrentTime() +{ + return G::CurDate('H:i:s'); } /** * @method @@ -93,15 +95,15 @@ function getCurrentTime() { * @return array | $userInfo | User Info | An associative array with Information * */ -function userInfo($user_uid) { - try { - require_once 'classes/model/Users.php'; - $oUser = new Users(); - return $oUser->getAllInformation($user_uid); - } - catch (Exception $oException) { - throw $oException; - } +function userInfo($user_uid) +{ + try { + require_once 'classes/model/Users.php'; + $oUser = new Users(); + return $oUser->getAllInformation($user_uid); + } catch (Exception $oException) { + throw $oException; + } } /** * @method @@ -116,8 +118,9 @@ function userInfo($user_uid) { * @return string | $TextC | Text Converted | Returns a string with the text converted into upper case letters. * */ -function upperCase($sText) { - return G::toUpper($sText); +function upperCase($sText) +{ + return G::toUpper($sText); } /** * @method @@ -132,8 +135,9 @@ function upperCase($sText) { * @return string | $TextC | Text Converted | Returns a string with the text converted into lower case letters. * */ -function lowerCase($sText) { - return G::toLower($sText); +function lowerCase($sText) +{ + return G::toLower($sText); } /** * @method @@ -149,8 +153,9 @@ function lowerCase($sText) { * @return string | $TextC | Text Converted | It returns the introduced text with the first letter capitalized in each word and the subsequent letters into lowercase letters * */ -function capitalize($sText) { - return G::capitalizeWords($sText); +function capitalize($sText) +{ + return G::capitalizeWords($sText); } /** * @method @@ -167,15 +172,16 @@ function capitalize($sText) { * @return string | $formatDate | Date whit format | It returns the passed date according to the given date format. * */ -function formatDate($date, $format='', $lang='en') { - if( !isset($date) or $date == '') { - throw new Exception('function:formatDate::Bad param'); - } - try { - return G::getformatedDate($date, $format, $lang); - } catch (Exception $oException) { - throw $oException; - } +function formatDate($date, $format='', $lang='en') +{ + if ( !isset($date) or $date == '') { + throw new Exception('function:formatDate::Bad param'); + } + try { + return G::getformatedDate($date, $format, $lang); + } catch (Exception $oException) { + throw $oException; + } } /** * @method @@ -191,21 +197,24 @@ function formatDate($date, $format='', $lang='en') { * @return string | $literaDate | Literal date | It returns the literal date as a string value. * */ -function literalDate($date, $lang = 'en') { - if( !isset($date) or $date == '' ) { - throw new Exception('function:formatDate::Bad param'); - } - try { - switch($lang) { - case 'en': $ret = G::getformatedDate($date, 'M d,yyyy', $lang); - break; - case 'es': $ret = G::getformatedDate($date, 'd de M de yyyy', $lang); - break; +function literalDate($date, $lang='en') +{ + if ( !isset($date) or $date == '' ) { + throw new Exception('function:formatDate::Bad param'); + } + try { + switch ($lang) { + case 'en': + $ret = G::getformatedDate($date, 'M d,yyyy', $lang); + break; + case 'es': + $ret = G::getformatedDate($date, 'd de M de yyyy', $lang); + break; + } + return $ret; + } catch (Exception $oException) { + throw $oException; } - return $ret; - } catch (Exception $oException) { - throw $oException; - } } /** * @method @@ -223,24 +232,25 @@ function literalDate($date, $lang = 'en') { * @return None | $none | None | None * */ -function pauseCase($sApplicationUID = '', $iDelegation = 0, $sUserUID = '', $sUnpauseDate = null) {//var_dump($sApplicationUID, $iDelegation, $sUserUID, $sUnpauseDate);die(':|'); - try { - if ($sApplicationUID == '') { - throw new Exception('The application UID cannot be empty!'); +function pauseCase($sApplicationUID='', $iDelegation=0, $sUserUID='', $sUnpauseDate=null) +{ + //var_dump($sApplicationUID, $iDelegation, $sUserUID, $sUnpauseDate);die(':|'); + try { + if ($sApplicationUID == '') { + throw new Exception('The application UID cannot be empty!'); + } + if ($iDelegation == 0) { + throw new Exception('The delegation index cannot be 0!'); + } + if ($sUserUID == '') { + throw new Exception('The user UID cannot be empty!'); + } + G::LoadClass('case'); + $oCase = new Cases(); + $oCase->pauseCase($sApplicationUID, $iDelegation, $sUserUID, $sUnpauseDate); + } catch (Exception $oException) { + throw $oException; } - if ($iDelegation == 0) { - throw new Exception('The delegation index cannot be 0!'); - } - if ($sUserUID == '') { - throw new Exception('The user UID cannot be empty!'); - } - G::LoadClass('case'); - $oCase = new Cases(); - $oCase->pauseCase($sApplicationUID, $iDelegation, $sUserUID, $sUnpauseDate); - } - catch (Exception $oException) { - throw $oException; - } } /** * @method @@ -257,53 +267,53 @@ function pauseCase($sApplicationUID = '', $iDelegation = 0, $sUserUID = '', $sUn * @return array or string | $Resultquery | Result | Result of the query | If executing a SELECT statement, it returns an array of associative arrays * */ -function executeQuery($SqlStatement, $DBConnectionUID = 'workflow', $aParameter = array()) { - $con = Propel::getConnection($DBConnectionUID); - $con->begin(); - try { - $statement = trim($SqlStatement); - $statement = str_replace('(', '', $statement); +function executeQuery($SqlStatement, $DBConnectionUID='workflow', $aParameter=array()) +{ + $con = Propel::getConnection($DBConnectionUID); + $con->begin(); + try { + $statement = trim($SqlStatement); + $statement = str_replace('(', '', $statement); - $result = false; - if (getEngineDataBaseName($con) != 'oracle' ) { - switch(true) { - case preg_match("/^(SELECT|EXECUTE|EXEC|SHOW|DESCRIBE|EXPLAIN|BEGIN)\s/i", $statement): - $rs = $con->executeQuery($SqlStatement); - $con->commit(); + $result = false; + if (getEngineDataBaseName($con) != 'oracle' ) { + switch(true) { + case preg_match("/^(SELECT|EXECUTE|EXEC|SHOW|DESCRIBE|EXPLAIN|BEGIN)\s/i", $statement): + $rs = $con->executeQuery($SqlStatement); + $con->commit(); - $result = Array(); - $i = 1; - while ($rs->next()) { - $result[$i++] = $rs->getRow(); - } - break; - case preg_match("/^INSERT\s/i", $statement): - $rs = $con->executeUpdate($SqlStatement); - $con->commit(); - //$result = $lastId->getId(); - $result = 1; - break; - case preg_match("/^UPDATE\s/i", $statement): - $rs = $con->executeUpdate($SqlStatement); - $con->commit(); - $result = $con->getUpdateCount(); - break; - case preg_match("/^DELETE\s/i", $statement): - $rs = $con->executeUpdate($SqlStatement); - $con->commit(); - $result = $con->getUpdateCount(); - break; - } + $result = Array(); + $i = 1; + while ($rs->next()) { + $result[$i++] = $rs->getRow(); + } + break; + case preg_match("/^INSERT\s/i", $statement): + $rs = $con->executeUpdate($SqlStatement); + $con->commit(); + //$result = $lastId->getId(); + $result = 1; + break; + case preg_match("/^UPDATE\s/i", $statement): + $rs = $con->executeUpdate($SqlStatement); + $con->commit(); + $result = $con->getUpdateCount(); + break; + case preg_match("/^DELETE\s/i", $statement): + $rs = $con->executeUpdate($SqlStatement); + $con->commit(); + $result = $con->getUpdateCount(); + break; + } + } else { + $result = executeQueryOci($SqlStatement, $con, $aParameter); + } + + return $result; + } catch (SQLException $sqle) { + $con->rollback(); + throw $sqle; } - else { - $result = executeQueryOci($SqlStatement, $con, $aParameter); - } - - return $result; - } catch (SQLException $sqle) { - $con->rollback(); - throw $sqle; - } } /** * @method @@ -320,28 +330,29 @@ function executeQuery($SqlStatement, $DBConnectionUID = 'workflow', $aParameter * @return array | $dataM | Grid Sorted | Grid sorted * */ -function orderGrid($dataM, $field, $ord = 'ASC') { - if(!is_array($dataM) or !isset($field) or $field=='') { - throw new Exception('function:orderGrid Error!, bad parameters found!'); - } - for($i=1; $i <= count($dataM)-1; $i++) { - for($j=$i+1; $j <= count($dataM); $j++) { - if(strtoupper($ord) == 'ASC') { - if(strtolower($dataM[$j][$field]) < strtolower($dataM[$i][$field])) { - $swap = $dataM[$i]; - $dataM[$i] = $dataM[$j]; - $dataM[$j] = $swap; - } - } else { - if($dataM[$j][$field] > $dataM[$i][$field]) { - $swap = $dataM[$i]; - $dataM[$i] = $dataM[$j]; - $dataM[$j] = $swap; - } - } +function orderGrid($dataM, $field, $ord='ASC') +{ + if (!is_array($dataM) or !isset($field) or $field=='') { + throw new Exception('function:orderGrid Error!, bad parameters found!'); } - } - return $dataM; + for ($i=1; $i <= count($dataM)-1; $i++) { + for ($j=$i+1; $j <= count($dataM); $j++) { + if (strtoupper($ord) == 'ASC') { + if (strtolower($dataM[$j][$field]) < strtolower($dataM[$i][$field])) { + $swap = $dataM[$i]; + $dataM[$i] = $dataM[$j]; + $dataM[$j] = $swap; + } + } else { + if ($dataM[$j][$field] > $dataM[$i][$field]) { + $swap = $dataM[$i]; + $dataM[$i] = $dataM[$j]; + $dataM[$j] = $swap; + } + } + } + } + return $dataM; } /** * @method @@ -357,23 +368,24 @@ function orderGrid($dataM, $field, $ord = 'ASC') { * @return array | $aGrid | Grid | Grid with executed operation * */ -function evaluateFunction($aGrid, $sExpresion) { - $sExpresion = str_replace('Array','$this->aFields', $sExpresion); - $sExpresion .= ';'; - G::LoadClass('pmScript'); - $pmScript = new PMScript(); - $pmScript->setScript($sExpresion); +function evaluateFunction($aGrid, $sExpresion) +{ + $sExpresion = str_replace('Array','$this->aFields', $sExpresion); + $sExpresion .= ';'; + G::LoadClass('pmScript'); + $pmScript = new PMScript(); + $pmScript->setScript($sExpresion); - for($i=1; $i<=count($aGrid); $i++) { - $aFields = $aGrid[$i]; + for ($i=1; $i<=count($aGrid); $i++) { + $aFields = $aGrid[$i]; - $pmScript->setFields($aFields); + $pmScript->setFields($aFields); - $pmScript->execute(); + $pmScript->execute(); - $aGrid[$i] = $pmScript->aFields; - } - return $aGrid; + $aGrid[$i] = $pmScript->aFields; + } + return $aGrid; } /** Web Services Functions **/ @@ -392,39 +404,39 @@ function evaluateFunction($aGrid, $sExpresion) { * @return string | $unique ID | Unique Id |The unique ID for the initiated session. * */ -function WSLogin($user, $pass, $endpoint = "") { - $client = WSOpen(true); +function WSLogin($user, $pass, $endpoint="") +{ + $client = WSOpen(true); - $params = array("userid" => $user, "password" => $pass); + $params = array("userid" => $user, "password" => $pass); - $result = $client->__soapCall("login", array($params)); + $result = $client->__soapCall("login", array($params)); - if ($result->status_code == 0) { - if ($endpoint != "") { - if (isset($_SESSION["WS_SESSION_ID"])) { - $_SESSION["WS_END_POINT"] = $endpoint; - } + if ($result->status_code == 0) { + if ($endpoint != "") { + if (isset($_SESSION["WS_SESSION_ID"])) { + $_SESSION["WS_END_POINT"] = $endpoint; + } + } + /* + if (isset($_SESSION["WS_SESSION_ID"])) + return $_SESSION["WS_SESSION_ID"] = $result->message; + else + return $result->message; + */ + + $_SESSION["WS_SESSION_ID"] = $result->message; + + return $result->message; + } else { + if (isset($_SESSION["WS_SESSION_ID"])) { + unset($_SESSION["WS_SESSION_ID"]); + } + + $wp = (trim($pass) != "")? "YES" : "NO"; + + throw new Exception("WSAccess denied! for user $user with password $wp"); } - /* - if (isset($_SESSION["WS_SESSION_ID"])) - return $_SESSION["WS_SESSION_ID"] = $result->message; - else - return $result->message; - */ - - $_SESSION["WS_SESSION_ID"] = $result->message; - - return $result->message; - } - else { - if (isset($_SESSION["WS_SESSION_ID"])) { - unset($_SESSION["WS_SESSION_ID"]); - } - - $wp = (trim($pass) != "")? "YES" : "NO"; - - throw new Exception("WSAccess denied! for user $user with password $wp"); - } } /** * @method @@ -440,21 +452,22 @@ function WSLogin($user, $pass, $endpoint = "") { * @return Object Client | $client | SoapClient object | A SoapClient object. If unable to establish a connection, returns NULL. * */ -function WSOpen($force = false) { - if (isset($_SESSION["WS_SESSION_ID"]) || $force) { - if (!isset($_SESSION["WS_END_POINT"])) { - $defaultEndpoint = "http://" . $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . "/sys" . SYS_SYS . "/en/classic/services/wsdl2"; +function WSOpen($force=false) +{ + if (isset($_SESSION["WS_SESSION_ID"]) || $force) { + if (!isset($_SESSION["WS_END_POINT"])) { + $defaultEndpoint = "http://" . $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] + . "/sys" . SYS_SYS . "/en/classic/services/wsdl2"; + } + + $endpoint = isset($_SESSION["WS_END_POINT"])? $_SESSION["WS_END_POINT"] : $defaultEndpoint; + + $client = new SoapClient($endpoint); + + return $client; + } else { + throw new Exception("WS session is not open"); } - - $endpoint = isset($_SESSION["WS_END_POINT"])? $_SESSION["WS_END_POINT"] : $defaultEndpoint; - - $client = new SoapClient($endpoint); - - return $client; - } - else { - throw new Exception("WS session is not open"); - } } /** * @method @@ -469,35 +482,35 @@ function WSOpen($force = false) { * @return array | $rows | Array of tasks open | An array of tasks in the indicated case which have open delegations. * */ -function WSTaskCase($caseId) { - $client = WSOpen(); +function WSTaskCase($caseId) +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId, "caseId" => $caseId); + $sessionId = $_SESSION["WS_SESSION_ID"]; + $params = array("sessionId" => $sessionId, "caseId" => $caseId); - $result = $client->__soapCall("taskCase", array($params)); + $result = $client->__soapCall("taskCase", array($params)); - $rows = array(); - $i = 0; + $rows = array(); + $i = 0; - if (isset($result->taskCases)) { - //Processing when it is an array - if (is_array($result->taskCases)) { - foreach ($result->taskCases as $key => $obj) { - $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); - $i = $i + 1; - } + if (isset($result->taskCases)) { + //Processing when it is an array + if (is_array($result->taskCases)) { + foreach ($result->taskCases as $key => $obj) { + $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); + $i = $i + 1; + } + } else { + //Processing when it is an object //1 row + if (is_object($result->taskCases)) { + $rows[$i] = array("guid" => $result->taskCases->guid, "name" => $result->taskCases->name); + $i = $i + 1; + } + } } - else { - //Processing when it is an object //1 row - if (is_object($result->taskCases)) { - $rows[$i] = array("guid" => $result->taskCases->guid, "name" => $result->taskCases->name); - $i = $i + 1; - } - } - } - return $rows; + return $rows; } /** * @method @@ -512,35 +525,35 @@ function WSTaskCase($caseId) { * @return array | $rows |List of tasks | This function returns a list of tasks * */ -function WSTaskList() { - $client = WSOpen(); +function WSTaskList() +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId); + $sessionId = $_SESSION["WS_SESSION_ID"]; + $params = array("sessionId" => $sessionId); - $result = $client->__soapCall("TaskList", array($params)); + $result = $client->__soapCall("TaskList", array($params)); - $rows = array(); - $i = 0; + $rows = array(); + $i = 0; - if (isset($result->tasks)) { - //Processing when it is an array - if (is_array($result->tasks)) { - foreach ($result->tasks as $key => $obj) { - $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); - $i = $i + 1; - } + if (isset($result->tasks)) { + //Processing when it is an array + if (is_array($result->tasks)) { + foreach ($result->tasks as $key => $obj) { + $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); + $i = $i + 1; + } + } else { + //Processing when it is an object //1 row + if (is_object($result->tasks)) { + $rows[$i] = array("guid" => $result->tasks->guid, "name" => $result->tasks->name); + $i = $i + 1; + } + } } - else { - //Processing when it is an object //1 row - if (is_object($result->tasks)) { - $rows[$i] = array("guid" => $result->tasks->guid, "name" => $result->tasks->name); - $i = $i + 1; - } - } - } - return $rows; + return $rows; } /** * @method @@ -554,35 +567,35 @@ function WSTaskList() { * @return array | $rows | List | List of Active users in the workspace * */ -function WSUserList() { - $client = WSOpen(); +function WSUserList() +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId); + $sessionId = $_SESSION["WS_SESSION_ID"]; + $params = array("sessionId" => $sessionId); - $result = $client->__soapCall("UserList", array($params)); + $result = $client->__soapCall("UserList", array($params)); - $rows = array(); - $i = 0; + $rows = array(); + $i = 0; - if (isset($result->users)) { - //Processing when it is an array - if (is_array($result->users)) { - foreach ($result->users as $key => $obj) { - $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); - $i = $i + 1; - } + if (isset($result->users)) { + //Processing when it is an array + if (is_array($result->users)) { + foreach ($result->users as $key => $obj) { + $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); + $i = $i + 1; + } + } else { + //Processing when it is an object //1 row + if (is_object($result->users)) { + $rows[$i] = array("guid" => $result->users->guid, "name" => $result->users->name); + $i = $i + 1; + } + } } - else { - //Processing when it is an object //1 row - if (is_object($result->users)) { - $rows[$i] = array("guid" => $result->users->guid, "name" => $result->users->name); - $i = $i + 1; - } - } - } - return $rows; + return $rows; } /** * @method @@ -596,35 +609,35 @@ function WSUserList() { * @return array | $rows | List | List of active groups in the workspace * */ -function WSGroupList() { - $client = WSOpen(); +function WSGroupList() +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId); + $sessionId = $_SESSION["WS_SESSION_ID"]; + $params = array("sessionId" => $sessionId); - $result = $client->__soapCall("GroupList", array($params)); + $result = $client->__soapCall("GroupList", array($params)); - $rows = array(); - $i = 0; + $rows = array(); + $i = 0; - if (isset($result->groups)) { - //Processing when it is an array - if (is_array($result->groups)) { - foreach ($result->groups as $key => $obj) { - $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); - $i = $i + 1; - } + if (isset($result->groups)) { + //Processing when it is an array + if (is_array($result->groups)) { + foreach ($result->groups as $key => $obj) { + $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); + $i = $i + 1; + } + } else { + //Processing when it is an object //1 row + if (is_object($result->groups)) { + $rows[$i] = array("guid" => $result->groups->guid, "name" => $result->groups->name); + $i = $i + 1; + } + } } - else { - //Processing when it is an object //1 row - if (is_object($result->groups)) { - $rows[$i] = array("guid" => $result->groups->guid, "name" => $result->groups->name); - $i = $i + 1; - } - } - } - return $rows; + return $rows; } /** @@ -639,35 +652,35 @@ function WSGroupList() { * @return array | $rows | List | List of roles in the workspace * */ -function WSRoleList() { - $client = WSOpen(); +function WSRoleList() +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId); + $sessionId = $_SESSION["WS_SESSION_ID"]; + $params = array("sessionId" => $sessionId); - $result = $client->__soapCall("RoleList", array($params)); + $result = $client->__soapCall("RoleList", array($params)); - $rows = array(); - $i = 0; + $rows = array(); + $i = 0; - if (isset($result->roles)) { - //Processing when it is an array - if (is_array($result->roles)) { - foreach ($result->roles as $key => $obj) { - $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); - $i = $i + 1; - } + if (isset($result->roles)) { + //Processing when it is an array + if (is_array($result->roles)) { + foreach ($result->roles as $key => $obj) { + $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); + $i = $i + 1; + } + } else { + //Processing when it is an object //1 row + if (is_object($result->roles)) { + $rows[$i] = array("guid" => $result->roles->guid, "name" => $result->roles->name); + $i = $i + 1; + } + } } - else { - //Processing when it is an object //1 row - if (is_object($result->roles)) { - $rows[$i] = array("guid" => $result->roles->guid, "name" => $result->roles->name); - $i = $i + 1; - } - } - } - return $rows; + return $rows; } /** * @method @@ -682,35 +695,35 @@ function WSRoleList() { * @return array | $rows | List of the cases |It returns a list of cases * */ -function WSCaseList() { - $client = WSOpen(); +function WSCaseList() +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId); + $sessionId = $_SESSION["WS_SESSION_ID"]; + $params = array("sessionId" => $sessionId); - $result = $client->__soapCall("CaseList", array($params)); + $result = $client->__soapCall("CaseList", array($params)); - $rows = array(); - $i = 0; + $rows = array(); + $i = 0; - if (isset($result->cases)) { - //Processing when it is an array - if (is_array($result->cases)) { - foreach ($result->cases as $key => $obj) { - $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); - $i = $i + 1; - } + if (isset($result->cases)) { + //Processing when it is an array + if (is_array($result->cases)) { + foreach ($result->cases as $key => $obj) { + $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); + $i = $i + 1; + } + } else { + //Processing when it is an object //1 row + if (is_object($result->cases)) { + $rows[$i] = array("guid" => $result->cases->guid, "name" => $result->cases->name); + $i = $i + 1; + } + } } - else { - //Processing when it is an object //1 row - if (is_object($result->cases)) { - $rows[$i] = array("guid" => $result->cases->guid, "name" => $result->cases->name); - $i = $i + 1; - } - } - } - return $rows; + return $rows; } /** * @method @@ -724,35 +737,35 @@ function WSCaseList() { * @return array | $rows | List of processes | A list of processes * */ -function WSProcessList() { - $client = WSOpen(); +function WSProcessList() +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId); + $sessionId = $_SESSION["WS_SESSION_ID"]; + $params = array("sessionId" => $sessionId); - $result = $client->__soapCall("ProcessList", array($params)); + $result = $client->__soapCall("ProcessList", array($params)); - $rows = array(); - $i = 0; + $rows = array(); + $i = 0; - if (isset($result->processes)) { - //Processing when it is an array - if (is_array($result->processes)) { - foreach ($result->processes as $key => $obj) { - $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); - $i = $i + 1; - } + if (isset($result->processes)) { + //Processing when it is an array + if (is_array($result->processes)) { + foreach ($result->processes as $key => $obj) { + $rows[$i] = array("guid" => $obj->guid, "name" => $obj->name); + $i = $i + 1; + } + } else { + //Processing when it is an object //1 row + if (is_object($result->processes)) { + $rows[$i] = array("guid" => $result->processes->guid, "name" => $result->processes->name); + $i = $i + 1; + } + } } - else { - //Processing when it is an object //1 row - if (is_object($result->processes)) { - $rows[$i] = array("guid" => $result->processes->guid, "name" => $result->processes->name); - $i = $i + 1; - } - } - } - return $rows; + return $rows; } /** * @method @@ -769,8 +782,8 @@ function WSProcessList() { //private function to get current email configuration function getEmailConfiguration() { - G::loadClass('system'); - return System::getEmailConfiguration(); + G::loadClass('system'); + return System::getEmailConfiguration(); } /** @@ -795,18 +808,18 @@ function getEmailConfiguration() * */ //@param array | $aFields=array() | An associative array optional | Optional parameter. An associative array where the keys are the variable name and the values are the variable's value. -function PMFSendMessage($caseId, $sFrom, $sTo, $sCc, $sBcc, $sSubject, $sTemplate, $aFields = array(), $aAttachment = array()) { +function PMFSendMessage($caseId, $sFrom, $sTo, $sCc, $sBcc, $sSubject, $sTemplate, $aFields=array(), $aAttachment=array()) +{ - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->sendMessage($caseId, $sFrom, $sTo, $sCc, $sBcc, $sSubject, $sTemplate, $aFields, $aAttachment); + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->sendMessage($caseId, $sFrom, $sTo, $sCc, $sBcc, $sSubject, $sTemplate, $aFields, $aAttachment); - if ( $result->status_code == 0) { - return 1; - } - else { - return 0; - } + if ( $result->status_code == 0) { + return 1; + } else { + return 0; + } } /** * @method @@ -826,30 +839,31 @@ function PMFSendMessage($caseId, $sFrom, $sTo, $sCc, $sBcc, $sSubject, $sTemplat * @return array | $fields | WS Response Associative Array: | The function returns a WS Response associative array. * */ -function WSSendVariables($caseId, $name1, $value1, $name2, $value2) { - $client = WSOpen(); +function WSSendVariables($caseId, $name1, $value1, $name2, $value2) +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; + $sessionId = $_SESSION["WS_SESSION_ID"]; - $v1 = new stdClass(); - $v1->name = $name1; - $v1->value = $value1; + $v1 = new stdClass(); + $v1->name = $name1; + $v1->value = $value1; - $v2 = new stdClass(); - $v2->name = $name2; - $v2->value = $value2; + $v2 = new stdClass(); + $v2->name = $name2; + $v2->value = $value2; - $variables = array($v1, $v2); + $variables = array($v1, $v2); - $params = array("sessionId" => $sessionId, "caseId" => $caseId, "variables" => $variables); + $params = array("sessionId" => $sessionId, "caseId" => $caseId, "variables" => $variables); - $result = $client->__soapCall("SendVariables", array($params)); + $result = $client->__soapCall("SendVariables", array($params)); - $fields["status_code"] = $result->status_code; - $fields["message"] = $result->message; - $fields["time_stamp"] = $result->timestamp; + $fields["status_code"] = $result->status_code; + $fields["message"] = $result->message; + $fields["time_stamp"] = $result->timestamp; - return $fields; + return $fields; } /** * @method @@ -866,20 +880,21 @@ function WSSendVariables($caseId, $name1, $value1, $name2, $value2) { * @return array | $fields | WS Response Associative Array | A WS Response associative array. * */ -function WSDerivateCase($caseId, $delIndex) { - $client = WSOpen(); +function WSDerivateCase($caseId, $delIndex) +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; + $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId, "caseId" => $caseId, "delIndex" => $delIndex); + $params = array("sessionId" => $sessionId, "caseId" => $caseId, "delIndex" => $delIndex); - $result = $client->__soapCall("DerivateCase", array($params)); + $result = $client->__soapCall("DerivateCase", array($params)); - $fields["status_code"] = $result->status_code; - $fields["message"] = $result->message; - $fields["time_stamp"] = $result->timestamp; + $fields["status_code"] = $result->status_code; + $fields["message"] = $result->message; + $fields["time_stamp"] = $result->timestamp; - return $fields; + return $fields; } /** * @method @@ -899,32 +914,36 @@ function WSDerivateCase($caseId, $delIndex) { * @return array | $fields | WS Response Associative Array | A WS Response associative array. * */ -function WSNewCaseImpersonate($processId, $userId, $name1, $value1, $name2, $value2) { - $client = WSOpen(); +function WSNewCaseImpersonate($processId, $userId, $name1, $value1, $name2, $value2) +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; + $sessionId = $_SESSION["WS_SESSION_ID"]; - $v1 = new stdClass(); - $v1->name = $name1; - $v1->value = $value1; + $v1 = new stdClass(); + $v1->name = $name1; + $v1->value = $value1; - $v2 = new stdClass(); - $v2->name = $name2; - $v2->value = $value2; + $v2 = new stdClass(); + $v2->name = $name2; + $v2->value = $value2; - $variables = array($v1, $v2); + $variables = array($v1, $v2); - $params = array("sessionId" => $sessionId, "processId" => $processId, "userId" => $userId, "variables" => $variables); + $params = array("sessionId" => $sessionId, + "processId" => $processId, + "userId" => $userId, + "variables" => $variables); - $result = $client->__soapCall("NewCaseImpersonate", array($params)); + $result = $client->__soapCall("NewCaseImpersonate", array($params)); - $fields["status_code"] = $result->status_code; - $fields["message"] = $result->message; - $fields["time_stamp"] = $result->timestamp; - $fields["case_id"] = $result->caseId; - $fields["case_number"] = $result->caseNumber; + $fields["status_code"] = $result->status_code; + $fields["message"] = $result->message; + $fields["time_stamp"] = $result->timestamp; + $fields["case_id"] = $result->caseId; + $fields["case_number"] = $result->caseNumber; - return $fields; + return $fields; } /** * @method @@ -945,31 +964,35 @@ function WSNewCaseImpersonate($processId, $userId, $name1, $value1, $name2, $val * @return array | $fields | WS array | A WS Response associative array. * */ -function WSNewCase($processId, $taskId, $name1, $value1, $name2, $value2) { - $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; +function WSNewCase($processId, $taskId, $name1, $value1, $name2, $value2) +{ + $client = WSOpen(); + $sessionId = $_SESSION["WS_SESSION_ID"]; - $v1 = new stdClass(); - $v1->name = $name1; - $v1->value = $value1; + $v1 = new stdClass(); + $v1->name = $name1; + $v1->value = $value1; - $v2 = new stdClass(); - $v2->name = $name2; - $v2->value = $value2; + $v2 = new stdClass(); + $v2->name = $name2; + $v2->value = $value2; - $variables = array($v1, $v2); + $variables = array($v1, $v2); - $params = array("sessionId" => $sessionId, "processId" => $processId, "taskId" => $taskId, "variables" => $variables); + $params = array("sessionId" => $sessionId, + "processId" => $processId, + "taskId" => $taskId, + "variables" => $variables); - $result = $client->__soapCall("NewCase", array($params)); + $result = $client->__soapCall("NewCase", array($params)); - $fields["status_code"] = $result->status_code; - $fields["message"] = $result->message; - $fields["time_stamp"] = $result->timestamp; - $fields["case_id"] = $result->caseId; - $fields["case_number"] = $result->caseNumber; + $fields["status_code"] = $result->status_code; + $fields["message"] = $result->message; + $fields["time_stamp"] = $result->timestamp; + $fields["case_id"] = $result->caseId; + $fields["case_number"] = $result->caseNumber; - return $fields; + return $fields; } /** * @method @@ -986,20 +1009,21 @@ function WSNewCase($processId, $taskId, $name1, $value1, $name2, $value2) { * @return array | $fields | WS array |A WS Response associative array. * */ -function WSAssignUserToGroup($userId, $groupId) { - $client = WSOpen(); +function WSAssignUserToGroup($userId, $groupId) +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; + $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId, "userId" => $userId, "groupId" => $groupId); + $params = array("sessionId" => $sessionId, "userId" => $userId, "groupId" => $groupId); - $result = $client->__soapCall("AssignUserToGroup", array($params)); + $result = $client->__soapCall("AssignUserToGroup", array($params)); - $fields["status_code"] = $result->status_code; - $fields["message"] = $result->message; - $fields["time_stamp"] = $result->timestamp; + $fields["status_code"] = $result->status_code; + $fields["message"] = $result->message; + $fields["time_stamp"] = $result->timestamp; - return $fields; + return $fields; } /** * @method @@ -1019,19 +1043,26 @@ function WSAssignUserToGroup($userId, $groupId) { * @return array | $fields | WS array | A WS Response associative array. * */ -function WSCreateUser($userId, $password, $firstname, $lastname, $email, $role) { - $client = WSOpen(); +function WSCreateUser($userId, $password, $firstname, $lastname, $email, $role) +{ + $client = WSOpen(); - $sessionId = $_SESSION["WS_SESSION_ID"]; - $params = array("sessionId" => $sessionId, "userId" => $userId, "firstname" => $firstname, "lastname" => $lastname, "email" => $email, "role" => $role, "password" => $password); + $sessionId = $_SESSION["WS_SESSION_ID"]; + $params = array("sessionId" => $sessionId, + "userId" => $userId, + "firstname" => $firstname, + "lastname" => $lastname, + "email" => $email, + "role" => $role, + "password" => $password); - $result = $client->__soapCall("CreateUser", array($params)); + $result = $client->__soapCall("CreateUser", array($params)); - $fields["status_code"] = $result->status_code; - $fields["message"] = $result->message; - $fields["time_stamp"] = $result->timestamp; + $fields["status_code"] = $result->status_code; + $fields["message"] = $result->message; + $fields["time_stamp"] = $result->timestamp; - return $fields; + return $fields; } /** * @method @@ -1045,16 +1076,16 @@ function WSCreateUser($userId, $password, $firstname, $lastname, $email, $role) * @return string | $userId | Sesion ID | The unique ID for the current active session. * */ -function WSGetSession() { - if (isset($_SESSION["WS_SESSION_ID"])) { - return $_SESSION["WS_SESSION_ID"]; - } - else { - throw new Exception("SW session is not open!"); - } +function WSGetSession() +{ + if (isset($_SESSION["WS_SESSION_ID"])) { + return $_SESSION["WS_SESSION_ID"]; + } else { + throw new Exception("SW session is not open!"); + } } -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** Local Services Functions **/ @@ -1073,17 +1104,17 @@ function WSGetSession() { */ function PMFTaskCase($caseId) #its test was successfull { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->taskCase($caseId); - $rows = Array(); - $i = 1; - if(isset ($result)) { - foreach ( $result as $item) { - $rows[$i++] = $item; + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->taskCase($caseId); + $rows = Array(); + $i = 1; + if (isset ($result)) { + foreach ($result as $item) { + $rows[$i++] = $item; + } } - } - return $rows; + return $rows; } /** * @method @@ -1100,17 +1131,17 @@ function PMFTaskCase($caseId) #its test was successfull */ function PMFTaskList($userId) #its test was successfull { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->taskList($userId); - $rows = Array(); - $i = 1; - if(isset ($result)) { - foreach ( $result as $item) { - $rows[$i++] = $item; + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->taskList($userId); + $rows = Array(); + $i = 1; + if (isset ($result)) { + foreach ($result as $item) { + $rows[$i++] = $item; + } } - } - return $rows; + return $rows; } /** * @method @@ -1126,17 +1157,17 @@ function PMFTaskList($userId) #its test was successfull */ function PMFUserList() #its test was successfull { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->userList(); - $rows = Array(); - $i = 1; - if(isset ($result)) { - foreach ( $result as $item) { - $rows[$i++] = $item; + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->userList(); + $rows = Array(); + $i = 1; + if (isset ($result)) { + foreach ($result as $item) { + $rows[$i++] = $item; + } } - } - return $rows; + return $rows; } /** * @method @@ -1150,215 +1181,236 @@ function PMFUserList() #its test was successfull * @return none | $none | None | None * */ -function PMFGenerateOutputDocument($outputID, $sApplication = null, $index = null, $sUserLogged = null) { - if(!$sApplication){ - $sApplication = $_SESSION['APPLICATION']; - } - if(!$index){ - $index = $_SESSION['INDEX']; - } - if(!$sUserLogged){ - $sUserLogged = $_SESSION['USER_LOGGED']; - } - - G::LoadClass('case'); - $oCase = new Cases(); - $oCase->thisIsTheCurrentUser($sApplication, $index, $sUserLogged, '', 'cases_List'); - - //require_once 'classes/model/OutputDocument.php'; - $oOutputDocument = new OutputDocument(); - $aOD = $oOutputDocument->load($outputID); - $Fields = $oCase->loadCase( $sApplication ); - //The $_GET['UID'] variable is used when a process executes. - //$_GET['UID']=($aOD['OUT_DOC_VERSIONING'])?$_GET['UID']:$aOD['OUT_DOC_UID']; - //$sUID = ($aOD['OUT_DOC_VERSIONING'])?$_GET['UID']:$aOD['OUT_DOC_UID']; - $sFilename = preg_replace('[^A-Za-z0-9_]', '_', G::replaceDataField($aOD['OUT_DOC_FILENAME'], $Fields['APP_DATA'])); - require_once 'classes/model/AppFolder.php'; - require_once 'classes/model/AppDocument.php'; - - //Get the Custom Folder ID (create if necessary) - $oFolder=new AppFolder(); - //$aOD['OUT_DOC_DESTINATION_PATH'] = ($aOD['OUT_DOC_DESTINATION_PATH']=='')?PATH_DOCUMENT . $_SESSION['APPLICATION'] . PATH_SEP . 'outdocs'. PATH_SEP:$aOD['OUT_DOC_DESTINATION_PATH']; - $folderId=$oFolder->createFromPath($aOD['OUT_DOC_DESTINATION_PATH'], $sApplication); - //Tags - $fileTags=$oFolder->parseTags($aOD['OUT_DOC_TAGS'], $sApplication); - - //Get last Document Version and apply versioning if is enabled - $oAppDocument= new AppDocument(); - $lastDocVersion=$oAppDocument->getLastDocVersion($outputID, $sApplication); - - $oCriteria = new Criteria('workflow'); - $oCriteria->add(AppDocumentPeer::APP_UID, $sApplication); - //$oCriteria->add(AppDocumentPeer::DEL_INDEX, $index); - $oCriteria->add(AppDocumentPeer::DOC_UID, $outputID); - $oCriteria->add(AppDocumentPeer::DOC_VERSION, $lastDocVersion); - $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'); - $oDataset = AppDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - - if(($aOD['OUT_DOC_VERSIONING'])&&($lastDocVersion!=0)){//Create new Version of current output - $lastDocVersion++; - if ($aRow = $oDataset->getRow()) { - $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], - 'APP_UID' => $sApplication, - 'DEL_INDEX' => $index, - 'DOC_UID' => $outputID, - 'DOC_VERSION' => $lastDocVersion+1, - 'USR_UID' => $sUserLogged, - 'APP_DOC_TYPE' => 'OUTPUT', - 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), - 'APP_DOC_FILENAME' => $sFilename, - 'FOLDER_UID' => $folderId, - 'APP_DOC_TAGS' => $fileTags); - $oAppDocument = new AppDocument(); - $oAppDocument->create($aFields); - $sDocUID = $aRow['APP_DOC_UID']; +function PMFGenerateOutputDocument($outputID, $sApplication=null, $index=null, $sUserLogged=null) +{ + if (!$sApplication) { + $sApplication = $_SESSION['APPLICATION']; } - }else{//No versioning so Update a current Output or Create new if no exist - if ($aRow = $oDataset->getRow()) { //Update - $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], - 'APP_UID' => $sApplication, - 'DEL_INDEX' => $index, - 'DOC_UID' => $outputID, - 'DOC_VERSION' => $lastDocVersion, - 'USR_UID' => $sUserLogged, - 'APP_DOC_TYPE' => 'OUTPUT', - 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), - 'APP_DOC_FILENAME' => $sFilename, - 'FOLDER_UID' => $folderId, - 'APP_DOC_TAGS' => $fileTags); - $oAppDocument = new AppDocument(); - $oAppDocument->update($aFields); - $sDocUID = $aRow['APP_DOC_UID']; - }else{ - //we are creating the appdocument row - //create - if($lastDocVersion==0) $lastDocVersion++; - $aFields = array('APP_UID' => $sApplication, - 'DEL_INDEX' => $index, - 'DOC_UID' => $outputID, - 'DOC_VERSION' => $lastDocVersion, - 'USR_UID' => $sUserLogged, - 'APP_DOC_TYPE' => 'OUTPUT', - 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), - 'APP_DOC_FILENAME' => $sFilename, - 'FOLDER_UID' => $folderId, - 'APP_DOC_TAGS' => $fileTags); - $oAppDocument = new AppDocument(); - $aFields['APP_DOC_UID']=$sDocUID = $oAppDocument->create($aFields); + if (!$index) { + $index = $_SESSION['INDEX']; + } + if (!$sUserLogged) { + $sUserLogged = $_SESSION['USER_LOGGED']; } - } - $sFilename = $aFields['APP_DOC_UID']. "_".$lastDocVersion; - $pathOutput = PATH_DOCUMENT . $sApplication . PATH_SEP . 'outdocs'. PATH_SEP ;//G::pr($sFilename);die; - G::mk_dir ( $pathOutput ); + G::LoadClass('case'); + $oCase = new Cases(); + $oCase->thisIsTheCurrentUser($sApplication, $index, $sUserLogged, '', 'cases_List'); - $aProperties = array(); + //require_once 'classes/model/OutputDocument.php'; + $oOutputDocument = new OutputDocument(); + $aOD = $oOutputDocument->load($outputID); + $Fields = $oCase->loadCase( $sApplication ); + //The $_GET['UID'] variable is used when a process executes. + //$_GET['UID']=($aOD['OUT_DOC_VERSIONING'])?$_GET['UID']:$aOD['OUT_DOC_UID']; + //$sUID = ($aOD['OUT_DOC_VERSIONING'])?$_GET['UID']:$aOD['OUT_DOC_UID']; + $sFilename = preg_replace('[^A-Za-z0-9_]', '_', G::replaceDataField($aOD['OUT_DOC_FILENAME'], $Fields['APP_DATA'])); + require_once 'classes/model/AppFolder.php'; + require_once 'classes/model/AppDocument.php'; - if(!isset($aOD['OUT_DOC_MEDIA'])) - $aOD['OUT_DOC_MEDIA'] = 'Letter'; - if(!isset($aOD['OUT_DOC_LEFT_MARGIN'])) - $aOD['OUT_DOC_LEFT_MARGIN'] = '15'; - if(!isset($aOD['OUT_DOC_RIGHT_MARGIN'])) - $aOD['OUT_DOC_RIGHT_MARGIN'] = '15'; - if(!isset($aOD['OUT_DOC_TOP_MARGIN'])) - $aOD['OUT_DOC_TOP_MARGIN'] = '15'; - if(!isset($aOD['OUT_DOC_BOTTOM_MARGIN'])) - $aOD['OUT_DOC_BOTTOM_MARGIN'] = '15'; + //Get the Custom Folder ID (create if necessary) + $oFolder=new AppFolder(); + //$aOD['OUT_DOC_DESTINATION_PATH'] = ($aOD['OUT_DOC_DESTINATION_PATH']=='')?PATH_DOCUMENT + // . $_SESSION['APPLICATION'] . PATH_SEP . 'outdocs'. PATH_SEP:$aOD['OUT_DOC_DESTINATION_PATH']; + $folderId=$oFolder->createFromPath($aOD['OUT_DOC_DESTINATION_PATH'], $sApplication); + //Tags + $fileTags=$oFolder->parseTags($aOD['OUT_DOC_TAGS'], $sApplication); - $aProperties['media']=$aOD['OUT_DOC_MEDIA']; - $aProperties['margins']=array('left' => $aOD['OUT_DOC_LEFT_MARGIN'], 'right' => $aOD['OUT_DOC_RIGHT_MARGIN'], 'top' => $aOD['OUT_DOC_TOP_MARGIN'], 'bottom' => $aOD['OUT_DOC_BOTTOM_MARGIN'],); - $oOutputDocument->generate( $outputID, $Fields['APP_DATA'], $pathOutput, $sFilename, $aOD['OUT_DOC_TEMPLATE'], (boolean)$aOD['OUT_DOC_LANDSCAPE'], $aOD['OUT_DOC_GENERATE'] ); + //Get last Document Version and apply versioning if is enabled + $oAppDocument= new AppDocument(); + $lastDocVersion=$oAppDocument->getLastDocVersion($outputID, $sApplication); - //Plugin Hook PM_UPLOAD_DOCUMENT for upload document - //G::LoadClass('plugin'); - $oPluginRegistry =& PMPluginRegistry::getSingleton(); - if ( $oPluginRegistry->existsTrigger ( PM_UPLOAD_DOCUMENT ) && class_exists ('uploadDocumentData' ) ) { - $triggerDetail=$oPluginRegistry->getTriggerInfo( PM_UPLOAD_DOCUMENT ); - $aFields['APP_DOC_PLUGIN']=$triggerDetail->sNamespace; + $oCriteria = new Criteria('workflow'); + $oCriteria->add(AppDocumentPeer::APP_UID, $sApplication); + //$oCriteria->add(AppDocumentPeer::DEL_INDEX, $index); + $oCriteria->add(AppDocumentPeer::DOC_UID, $outputID); + $oCriteria->add(AppDocumentPeer::DOC_VERSION, $lastDocVersion); + $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'); + $oDataset = AppDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); - $oAppDocument1 = new AppDocument(); - $oAppDocument1->update($aFields); + if (($aOD['OUT_DOC_VERSIONING'])&&($lastDocVersion!=0)) { + //Create new Version of current output + $lastDocVersion++; + if ($aRow = $oDataset->getRow()) { + $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], + 'APP_UID' => $sApplication, + 'DEL_INDEX' => $index, + 'DOC_UID' => $outputID, + 'DOC_VERSION' => $lastDocVersion+1, + 'USR_UID' => $sUserLogged, + 'APP_DOC_TYPE' => 'OUTPUT', + 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), + 'APP_DOC_FILENAME' => $sFilename, + 'FOLDER_UID' => $folderId, + 'APP_DOC_TAGS' => $fileTags); + $oAppDocument = new AppDocument(); + $oAppDocument->create($aFields); + $sDocUID = $aRow['APP_DOC_UID']; + } + } else { + ////No versioning so Update a current Output or Create new if no exist + if ($aRow = $oDataset->getRow()) { + //Update + $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], + 'APP_UID' => $sApplication, + 'DEL_INDEX' => $index, + 'DOC_UID' => $outputID, + 'DOC_VERSION' => $lastDocVersion, + 'USR_UID' => $sUserLogged, + 'APP_DOC_TYPE' => 'OUTPUT', + 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), + 'APP_DOC_FILENAME' => $sFilename, + 'FOLDER_UID' => $folderId, + 'APP_DOC_TAGS' => $fileTags); + $oAppDocument = new AppDocument(); + $oAppDocument->update($aFields); + $sDocUID = $aRow['APP_DOC_UID']; + } else { + //we are creating the appdocument row + //create + if ($lastDocVersion==0) { + $lastDocVersion++; + } + $aFields = array('APP_UID' => $sApplication, + 'DEL_INDEX' => $index, + 'DOC_UID' => $outputID, + 'DOC_VERSION' => $lastDocVersion, + 'USR_UID' => $sUserLogged, + 'APP_DOC_TYPE' => 'OUTPUT', + 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), + 'APP_DOC_FILENAME' => $sFilename, + 'FOLDER_UID' => $folderId, + 'APP_DOC_TAGS' => $fileTags); + $oAppDocument = new AppDocument(); + $aFields['APP_DOC_UID']=$sDocUID = $oAppDocument->create($aFields); + } + } + $sFilename = $aFields['APP_DOC_UID']. "_".$lastDocVersion; - $sPathName = PATH_DOCUMENT . $sApplication . PATH_SEP; + $pathOutput = PATH_DOCUMENT . $sApplication . PATH_SEP . 'outdocs'. PATH_SEP ;//G::pr($sFilename);die; + G::mk_dir ( $pathOutput ); - $oData['APP_UID'] = $sApplication; - $oData['ATTACHMENT_FOLDER'] = true; - switch($aOD['OUT_DOC_GENERATE']){ - case "BOTH": - $documentData = new uploadDocumentData ( + $aProperties = array(); + + if (!isset($aOD['OUT_DOC_MEDIA'])) { + $aOD['OUT_DOC_MEDIA'] = 'Letter'; + } + if (!isset($aOD['OUT_DOC_LEFT_MARGIN'])) { + $aOD['OUT_DOC_LEFT_MARGIN'] = '15'; + } + if (!isset($aOD['OUT_DOC_RIGHT_MARGIN'])) { + $aOD['OUT_DOC_RIGHT_MARGIN'] = '15'; + } + if (!isset($aOD['OUT_DOC_TOP_MARGIN'])) { + $aOD['OUT_DOC_TOP_MARGIN'] = '15'; + } + if (!isset($aOD['OUT_DOC_BOTTOM_MARGIN'])) { + $aOD['OUT_DOC_BOTTOM_MARGIN'] = '15'; + } + + + $aProperties['media'] = $aOD['OUT_DOC_MEDIA']; + $aProperties['margins'] = array('left' => $aOD['OUT_DOC_LEFT_MARGIN'], + 'right' => $aOD['OUT_DOC_RIGHT_MARGIN'], + 'top' => $aOD['OUT_DOC_TOP_MARGIN'], + 'bottom' => $aOD['OUT_DOC_BOTTOM_MARGIN']); + $oOutputDocument->generate( $outputID, $Fields['APP_DATA'], $pathOutput, $sFilename, $aOD['OUT_DOC_TEMPLATE'], + (boolean)$aOD['OUT_DOC_LANDSCAPE'], $aOD['OUT_DOC_GENERATE'] ); + + //Plugin Hook PM_UPLOAD_DOCUMENT for upload document + //G::LoadClass('plugin'); + $oPluginRegistry =& PMPluginRegistry::getSingleton(); + if ( $oPluginRegistry->existsTrigger ( PM_UPLOAD_DOCUMENT ) && class_exists ('uploadDocumentData' ) ) { + $triggerDetail=$oPluginRegistry->getTriggerInfo( PM_UPLOAD_DOCUMENT ); + $aFields['APP_DOC_PLUGIN']=$triggerDetail->sNamespace; + + $oAppDocument1 = new AppDocument(); + $oAppDocument1->update($aFields); + + $sPathName = PATH_DOCUMENT . $sApplication . PATH_SEP; + + $oData['APP_UID'] = $sApplication; + $oData['ATTACHMENT_FOLDER'] = true; + switch ($aOD['OUT_DOC_GENERATE']) { + case "BOTH": + $documentData = new uploadDocumentData ( $sApplication, $sUserLogged, $pathOutput . $sFilename . '.pdf', $sFilename. '.pdf', $sDocUID, $oAppDocument->getDocVersion() - ); + ); - $documentData->sFileType = "PDF"; - $documentData->bUseOutputFolder = true; - $uploadReturn=$oPluginRegistry->executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData ); - if($uploadReturn){//Only delete if the file was saved correctly - unlink ( $pathOutput . $sFilename. '.pdf' ); - } + $documentData->sFileType = "PDF"; + $documentData->bUseOutputFolder = true; + $uploadReturn=$oPluginRegistry->executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData ); + if ($uploadReturn) { + //Only delete if the file was saved correctly + unlink ( $pathOutput . $sFilename. '.pdf' ); + } - $documentData = new uploadDocumentData ( + $documentData = new uploadDocumentData ( $sApplication, $sUserLogged, $pathOutput . $sFilename . '.doc', $sFilename. '.doc', $sDocUID, $oAppDocument->getDocVersion() - ); + ); - $documentData->sFileType = "DOC"; - $documentData->bUseOutputFolder = true; - $uploadReturn=$oPluginRegistry->executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData ); - if($uploadReturn){//Only delete if the file was saved correctly - unlink ( $pathOutput . $sFilename. '.doc' ); - } + $documentData->sFileType = "DOC"; + $documentData->bUseOutputFolder = true; + $uploadReturn = $oPluginRegistry->executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData ); + if ($uploadReturn) { + //Only delete if the file was saved correctly + unlink ( $pathOutput . $sFilename. '.doc' ); + } - break; - case "PDF": - $documentData = new uploadDocumentData ( + break; + case "PDF": + $documentData = new uploadDocumentData ( $sApplication, $sUserLogged, $pathOutput . $sFilename . '.pdf', $sFilename. '.pdf', $sDocUID, $oAppDocument->getDocVersion() - ); + ); - $documentData->sFileType = "PDF"; - $documentData->bUseOutputFolder = true; - $uploadReturn=$oPluginRegistry->executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData ); - if($uploadReturn){//Only delete if the file was saved correctly - unlink ( $pathOutput . $sFilename. '.pdf' ); - } - break; - case "DOC": - $documentData = new uploadDocumentData ( + $documentData->sFileType = "PDF"; + $documentData->bUseOutputFolder = true; + $uploadReturn=$oPluginRegistry->executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData ); + if ($uploadReturn) { + //Only delete if the file was saved correctly + unlink ( $pathOutput . $sFilename. '.pdf' ); + } + break; + case "DOC": + $documentData = new uploadDocumentData ( $sApplication, $sUserLogged, $pathOutput . $sFilename . '.doc', $sFilename. '.doc', $sDocUID, $oAppDocument->getDocVersion() - ); + ); - $documentData->sFileType = "DOC"; - $documentData->bUseOutputFolder = true; - $uploadReturn=$oPluginRegistry->executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData ); - if($uploadReturn){//Only delete if the file was saved correctly - unlink ( $pathOutput . $sFilename. '.doc' ); - } - break; + $documentData->sFileType = "DOC"; + $documentData->bUseOutputFolder = true; + $uploadReturn=$oPluginRegistry->executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData ); + if ($uploadReturn) { + //Only delete if the file was saved correctly + unlink ( $pathOutput . $sFilename. '.doc' ); + } + break; + } } - } } /** * @method @@ -1374,17 +1426,17 @@ function PMFGenerateOutputDocument($outputID, $sApplication = null, $index = nul */ function PMFGroupList() #its test was successfull { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->groupList(); - $rows = Array(); - $i = 1; - if(isset ($result)) { - foreach ( $result as $item) { - $rows[$i++] = $item; + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->groupList(); + $rows = Array(); + $i = 1; + if (isset ($result)) { + foreach ($result as $item) { + $rows[$i++] = $item; + } } - } - return $rows; + return $rows; } /** @@ -1401,17 +1453,17 @@ function PMFGroupList() #its test was successfull */ function PMFRoleList() #its test was successfull { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->roleList(); - $rows = Array(); - $i = 1; - if(isset ($result)) { - foreach ( $result as $item) { - $rows[$i++] = $item; + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->roleList(); + $rows = Array(); + $i = 1; + if (isset ($result)) { + foreach ($result as $item) { + $rows[$i++] = $item; + } } - } - return $rows; + return $rows; } /** * @method @@ -1428,17 +1480,17 @@ function PMFRoleList() #its test was successfull */ function PMFCaseList($userId) #its test was successfull { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->caseList($userId); - $rows = Array(); - $i = 1; - if(isset ($result)) { - foreach ( $result as $item) { - $rows[$i++] = $item; + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->caseList($userId); + $rows = Array(); + $i = 1; + if (isset ($result)) { + foreach ($result as $item) { + $rows[$i++] = $item; + } } - } - return $rows; + return $rows; } /** * @method @@ -1454,17 +1506,17 @@ function PMFCaseList($userId) #its test was successfull */ function PMFProcessList() #its test was successfull { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->processList(); - $rows = Array(); - $i = 1; - if(isset ($result)) { - foreach ( $result as $item) { - $rows[$i++] = $item; + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->processList(); + $rows = Array(); + $i = 1; + if (isset ($result)) { + foreach ($result as $item) { + $rows[$i++] = $item; + } } - } - return $rows; + return $rows; } /** @@ -1481,16 +1533,17 @@ function PMFProcessList() #its test was successfull * @return int | $result | Result of send variables | Returns 1 if the variables were sent successfully to the case; otherwise, returns 0 if an error occurred. * */ -function PMFSendVariables($caseId, $variables) { - G::LoadClass('wsBase'); - $ws = new wsBase (); +function PMFSendVariables($caseId, $variables) +{ + G::LoadClass('wsBase'); + $ws = new wsBase (); - $result = $ws->sendVariables($caseId, $variables); - if($result->status_code == 0) { - return 1; - } else { - return 0; - } + $result = $ws->sendVariables($caseId, $variables); + if ($result->status_code == 0) { + return 1; + } else { + return 0; + } } /** * @method @@ -1508,24 +1561,24 @@ function PMFSendVariables($caseId, $variables) { * @return int | $result | Result of Derivate case | Returns 1 if new case was derivated (routed) successfully; otherwise, returns 0 if an error occurred. * */ -function PMFDerivateCase($caseId, $delIndex, $bExecuteTriggersBeforeAssignment = false, $sUserLogged = null) { - if(!$sUserLogged) { - $sUserLogged = $_SESSION['USER_LOGGED']; - } - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->derivateCase($sUserLogged, $caseId, $delIndex, $bExecuteTriggersBeforeAssignment);//var_dump($result);die; - if (isset($result->status_code)) { - return $result->status_code; - } - else { - return 0; - } - if($result->status_code == 0) { - return 1; - } else { - return 0; - } +function PMFDerivateCase($caseId, $delIndex, $bExecuteTriggersBeforeAssignment=false, $sUserLogged=null) +{ + if (!$sUserLogged) { + $sUserLogged = $_SESSION['USER_LOGGED']; + } + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->derivateCase($sUserLogged, $caseId, $delIndex, $bExecuteTriggersBeforeAssignment); + if (isset($result->status_code)) { + return $result->status_code; + } else { + return 0; + } + if ($result->status_code == 0) { + return 1; + } else { + return 0; + } } /** * @method @@ -1543,18 +1596,18 @@ function PMFDerivateCase($caseId, $delIndex, $bExecuteTriggersBeforeAssignment = * @return int | $result | Result | Returns 1 if new case was created successfully; otherwise, returns 0 if an error occurred. * */ -function PMFNewCaseImpersonate($processId, $userId, $variables) { - G::LoadClass("wsBase"); +function PMFNewCaseImpersonate($processId, $userId, $variables) +{ + G::LoadClass("wsBase"); - $ws = new wsBase(); - $result = $ws->newCaseImpersonate($processId, $userId, $variables); + $ws = new wsBase(); + $result = $ws->newCaseImpersonate($processId, $userId, $variables); - if ($result->status_code == 0) { - return $result->caseId; - } - else { - return 0; - } + if ($result->status_code == 0) { + return $result->caseId; + } else { + return 0; + } } /** * @method @@ -1572,17 +1625,18 @@ function PMFNewCaseImpersonate($processId, $userId, $variables) { * @return string | $idNewCase | Case ID | If an error occured, it returns the integer zero. Otherwise, it returns a string with the case UID of the new case. * */ -function PMFNewCase($processId, $userId, $taskId, $variables) { - G::LoadClass('wsBase'); - $ws = new wsBase (); +function PMFNewCase($processId, $userId, $taskId, $variables) +{ + G::LoadClass('wsBase'); + $ws = new wsBase (); - $result = $ws->newCase($processId, $userId,$taskId, $variables); + $result = $ws->newCase($processId, $userId,$taskId, $variables); - if($result->status_code == 0) { - return $result->caseId; - } else { - return 0; - } + if ($result->status_code == 0) { + return $result->caseId; + } else { + return 0; + } } /** * @method @@ -1598,16 +1652,17 @@ function PMFNewCase($processId, $userId, $taskId, $variables) { * @return int | $result | Result of the assignment | Returns 1 if the user was successfully assigned to the group; otherwise, returns 0. * */ -function PMFAssignUserToGroup($userId, $groupId) { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->assignUserToGroup($userId, $groupId); +function PMFAssignUserToGroup($userId, $groupId) +{ + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->assignUserToGroup($userId, $groupId); - if($result->status_code == 0) { - return 1; - } else { - return 0; - } + if ($result->status_code == 0) { + return 1; + } else { + return 0; + } } /** * @method @@ -1627,16 +1682,17 @@ function PMFAssignUserToGroup($userId, $groupId) { * @return int | $result | Result of the creation | Returns 1 if the new user was created successfully; otherwise, returns 0 if an error occurred. * */ -function PMFCreateUser($userId, $password, $firstname, $lastname, $email, $role) { - G::LoadClass('wsBase'); - $ws = new wsBase (); - $result = $ws->createUser($userId, $firstname, $lastname, $email, $role, $password); +function PMFCreateUser($userId, $password, $firstname, $lastname, $email, $role) +{ + G::LoadClass('wsBase'); + $ws = new wsBase (); + $result = $ws->createUser($userId, $firstname, $lastname, $email, $role, $password); - if($result->status_code == 0) { - return 1; - } else { - return 0; - } + if ($result->status_code == 0) { + return 1; + } else { + return 0; + } } /** * @method @@ -1653,8 +1709,9 @@ function PMFCreateUser($userId, $password, $firstname, $lastname, $email, $role) * @return string | $generateString | Generated string | The generated string of random characters. * */ -function generateCode ( $iDigits = 4, $sType = 'NUMERIC' ) { - return G::generateCode ($iDigits, $sType ); +function generateCode($iDigits=4, $sType='NUMERIC') +{ + return G::generateCode ($iDigits, $sType ); } /** @@ -1672,22 +1729,22 @@ function generateCode ( $iDigits = 4, $sType = 'NUMERIC' ) { * @return int | $result | Result | If successful, returns zero, otherwise a non-zero error number. * */ -function setCaseTrackerCode($sApplicationUID, $sCode, $sPIN = '') { - if ($sCode != '') { - G::LoadClass('case'); - $oCase = new Cases(); - $aFields = $oCase->loadCase($sApplicationUID); - $aFields['APP_PROC_CODE'] = $sCode; - if ($sPIN != '') { - $aFields['APP_DATA']['PIN'] = $sPIN; - $aFields['APP_PIN'] = md5($sPIN); +function setCaseTrackerCode($sApplicationUID, $sCode, $sPIN='') +{ + if ($sCode != '') { + G::LoadClass('case'); + $oCase = new Cases(); + $aFields = $oCase->loadCase($sApplicationUID); + $aFields['APP_PROC_CODE'] = $sCode; + if ($sPIN != '') { + $aFields['APP_DATA']['PIN'] = $sPIN; + $aFields['APP_PIN'] = md5($sPIN); + } + $oCase->updateCase($sApplicationUID, $aFields); + return 1; + } else { + return 0; } - $oCase->updateCase($sApplicationUID, $aFields); - return 1; - } - else { - return 0; - } } /** * @method @@ -1703,15 +1760,17 @@ function setCaseTrackerCode($sApplicationUID, $sCode, $sPIN = '') { * @return none | $none | None | None * */ -function jumping ( $caseId, $delIndex ) { - try { - $x = PMFDerivateCase($caseId, $delIndex); - if($x==0) - G::SendTemporalMessage('ID_NOT_DERIVATED', 'error', 'labels'); - } catch (Exception $oException) { - G::SendTemporalMessage('ID_NOT_DERIVATED', 'error', 'labels'); - } - G::header('Location: cases_List'); +function jumping ($caseId, $delIndex) +{ + try { + $x = PMFDerivateCase($caseId, $delIndex); + if ($x == 0) { + G::SendTemporalMessage('ID_NOT_DERIVATED', 'error', 'labels'); + } + } catch (Exception $oException) { + G::SendTemporalMessage('ID_NOT_DERIVATED', 'error', 'labels'); + } + G::header('Location: cases_List'); } /** * @method @@ -1730,13 +1789,14 @@ function jumping ( $caseId, $delIndex ) { * @return string | $label | Label of the specified option | A string holding the label of the specified option or NULL if the specified option does not exist. * */ -function PMFgetLabelOption($PROCESS, $DYNAFORM_UID, $FIELD_NAME, $FIELD_SELECTED_ID) { - $G_FORM = new Form ("{$PROCESS}/{$DYNAFORM_UID}", PATH_DYNAFORM, SYS_LANG, false); - if( isset($G_FORM->fields[$FIELD_NAME]->option[$FIELD_SELECTED_ID]) ) { - return $G_FORM->fields[$FIELD_NAME]->option[$FIELD_SELECTED_ID]; - } else { - return null; - } +function PMFgetLabelOption($PROCESS, $DYNAFORM_UID, $FIELD_NAME, $FIELD_SELECTED_ID) +{ + $G_FORM = new Form ("{$PROCESS}/{$DYNAFORM_UID}", PATH_DYNAFORM, SYS_LANG, false); + if ( isset($G_FORM->fields[$FIELD_NAME]->option[$FIELD_SELECTED_ID]) ) { + return $G_FORM->fields[$FIELD_NAME]->option[$FIELD_SELECTED_ID]; + } else { + return null; + } } /** * @method @@ -1756,60 +1816,62 @@ function PMFgetLabelOption($PROCESS, $DYNAFORM_UID, $FIELD_NAME, $FIELD_SELECTED * @return none | $none | None | None * */ -function PMFRedirectToStep($sApplicationUID, $iDelegation, $sStepType, $sStepUid) { - $iDelegation = intval($iDelegation); - require_once 'classes/model/AppDelegation.php'; - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(AppDelegationPeer::TAS_UID); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::DEL_INDEX, $iDelegation); - $oDataset = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - global $oPMScript; - $aRow = $oDataset->getRow(); - if ($aRow) { - require_once 'classes/model/Step.php'; - $oStep = new Step(); - $oTheStep = $oStep->loadByType($aRow['TAS_UID'], $sStepType, $sStepUid); - $bContinue = true; - G::LoadClass('case'); - $oCase = new Cases(); - $aFields = $oCase->loadCase($sApplicationUID); - if ($oTheStep->getStepCondition() != '') { - G::LoadClass('pmScript'); - $pmScript = new PMScript(); - $pmScript->setFields($aFields['APP_DATA']); - $pmScript->setScript($oTheStep->getStepCondition()); - $bContinue = $pmScript->evaluate(); +function PMFRedirectToStep($sApplicationUID, $iDelegation, $sStepType, $sStepUid) +{ + $iDelegation = intval($iDelegation); + require_once 'classes/model/AppDelegation.php'; + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(AppDelegationPeer::TAS_UID); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::DEL_INDEX, $iDelegation); + $oDataset = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + global $oPMScript; + $aRow = $oDataset->getRow(); + if ($aRow) { + require_once 'classes/model/Step.php'; + $oStep = new Step(); + $oTheStep = $oStep->loadByType($aRow['TAS_UID'], $sStepType, $sStepUid); + $bContinue = true; + G::LoadClass('case'); + $oCase = new Cases(); + $aFields = $oCase->loadCase($sApplicationUID); + if ($oTheStep->getStepCondition() != '') { + G::LoadClass('pmScript'); + $pmScript = new PMScript(); + $pmScript->setFields($aFields['APP_DATA']); + $pmScript->setScript($oTheStep->getStepCondition()); + $bContinue = $pmScript->evaluate(); + } + if ($bContinue) { + switch ($oTheStep->getStepTypeObj()) { + case 'DYNAFORM': + $sAction = 'EDIT'; + break; + case 'OUTPUT_DOCUMENT': + $sAction = 'GENERATE'; + break; + case 'INPUT_DOCUMENT': + $sAction = 'ATTACH'; + break; + case 'EXTERNAL': + $sAction = 'EDIT'; + break; + case 'MESSAGE': + $sAction = ''; + break; + } + // save data + if (!is_null($oPMScript)) { + $aFields['APP_DATA'] = $oPMScript->aFields; + $oCase->updateCase($sApplicationUID,$aFields); + } + G::header('Location: ' . 'cases_Step?TYPE=' . $sStepType . '&UID=' . $sStepUid + . '&POSITION=' . $oTheStep->getStepPosition() . '&ACTION=' . $sAction); + die; + } } - if ($bContinue) { - switch ($oTheStep->getStepTypeObj()) { - case 'DYNAFORM': - $sAction = 'EDIT'; - break; - case 'OUTPUT_DOCUMENT': - $sAction = 'GENERATE'; - break; - case 'INPUT_DOCUMENT': - $sAction = 'ATTACH'; - break; - case 'EXTERNAL': - $sAction = 'EDIT'; - break; - case 'MESSAGE': - $sAction = ''; - break; - } - // save data - if (!is_null($oPMScript)) { - $aFields['APP_DATA'] = $oPMScript->aFields; - $oCase->updateCase($sApplicationUID,$aFields); - } - G::header('Location: ' . 'cases_Step?TYPE=' . $sStepType . '&UID=' . $sStepUid . '&POSITION=' . $oTheStep->getStepPosition() . '&ACTION=' . $sAction); - die; - } - } } /** @@ -1825,51 +1887,51 @@ function PMFRedirectToStep($sApplicationUID, $iDelegation, $sStepType, $sStepUid * @return array | $array | List of users | Return a list of users * */ -function PMFGetNextAssignedUser ($application, $task) { +function PMFGetNextAssignedUser ($application, $task) +{ - require_once 'classes/model/AppDelegation.php'; - require_once 'classes/model/Task.php'; - require_once 'classes/model/TaskUser.php'; - require_once 'classes/model/Users.php'; - require_once 'classes/model/Groupwf.php'; - require_once 'classes/model/GroupUser.php'; + require_once 'classes/model/AppDelegation.php'; + require_once 'classes/model/Task.php'; + require_once 'classes/model/TaskUser.php'; + require_once 'classes/model/Users.php'; + require_once 'classes/model/Groupwf.php'; + require_once 'classes/model/GroupUser.php'; - $oTask = new Task(); - $TaskFields = $oTask->load ($task); - $typeTask = $TaskFields ['TAS_ASSIGN_TYPE']; + $oTask = new Task(); + $TaskFields = $oTask->load ($task); + $typeTask = $TaskFields ['TAS_ASSIGN_TYPE']; - if($typeTask == 'BALANCED') - { + if ($typeTask == 'BALANCED') { - G::LoadClass('derivation'); - $oDerivation = new Derivation(); - $aDeriv = $oDerivation->prepareInformation( - array( 'USER_UID' => $_SESSION['USER_LOGGED'], - 'APP_UID' => $application, - 'DEL_INDEX' => $_SESSION['INDEX']) - ); + G::LoadClass('derivation'); + $oDerivation = new Derivation(); + $aDeriv = $oDerivation->prepareInformation( + array( 'USER_UID' => $_SESSION['USER_LOGGED'], + 'APP_UID' => $application, + 'DEL_INDEX' => $_SESSION['INDEX']) + ); - foreach($aDeriv as $derivation){ + foreach ($aDeriv as $derivation) { - $aUser = array( - 'USR_UID' => $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_UID'], - 'USR_USERNAME' => $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_USERNAME'], - 'USR_FIRSTNAME'=> $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_FIRSTNAME'], - 'USR_LASTNAME' => $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_LASTNAME'], - 'USR_EMAIL' => $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_EMAIL'] - ); - $aUsers[] = $aUser; + $aUser = array( + 'USR_UID' => $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_UID'], + 'USR_USERNAME' => $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_USERNAME'], + 'USR_FIRSTNAME'=> $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_FIRSTNAME'], + 'USR_LASTNAME' => $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_LASTNAME'], + 'USR_EMAIL' => $derivation['NEXT_TASK']['USER_ASSIGNED']['USR_EMAIL'] + ); + $aUsers[] = $aUser; + } + + if (count($aUsers) == 1) { + return $aUser; + } else { + return $aUsers; + } + + } else { + return false; } - - if(count($aUsers) == 1) - return $aUser; - else - return $aUsers; - - } else - { - return false; - } } /** @@ -1886,131 +1948,130 @@ function PMFGetNextAssignedUser ($application, $task) { * @return array | $aRecipient | Array of the Recipient | Return an Array of the Recipient * */ -function PMFGetUserEmailAddress($id, $APP_UID = null, $prefix='usr') +function PMFGetUserEmailAddress($id, $APP_UID=null, $prefix='usr') { - require_once 'classes/model/UsersPeer.php'; - require_once 'classes/model/AppDelegation.php'; - G::LoadClass('case'); + require_once 'classes/model/UsersPeer.php'; + require_once 'classes/model/AppDelegation.php'; + G::LoadClass('case'); - if( is_string($id) && trim($id) == "" ){ - return false; - } - if( is_array($id) && count($id) == 0 ){ - return false; - } - - - //recipient to store the email addresses - $aRecipient = Array(); - $aItems = Array(); - - /* - * First at all the $id user input can be by example erik@colosa.com - * 2. this $id param can be a array by example Array('000000000001', '000000000002') in this case $prefix is necessary - * 3. this same param can be a array by example Array('usr|000000000001', 'usr|-1', 'grp|2245141479413131441') - */ - - /* - * The second thing is that the return type will be configurated depend of the input type (using $retType) - */ - if( is_array($id) ){ - $aItems = $id; - $retType = 'array'; - } else { - $retType = 'string'; - if( strpos($id, ",") !== false ){ - $aItems = explode(',', $id); - } else { - array_push($aItems, $id); + if ( is_string($id) && trim($id) == "" ) { + return false; } - } - - foreach ($aItems as $sItem) { - //cleaning for blank spaces into each array item - $sItem = trim($sItem); - if( strpos($sItem, "|") !== false ){ - //explode the parameter because always will be compose with pipe separator to indicate the type (user or group) and the target mai - list($sType, $sID) = explode('|', $sItem); - $sType = trim($sType); - $sID = trim($sID); - } else { - $sType = $prefix; - $sID = $sItem; + if ( is_array($id) && count($id) == 0 ) { + return false; } - switch($sType) { - case 'ext': - if( G::emailAddress($sID) ) { - array_push($aRecipient, $sID); - } - break; - case 'usr': - if ($sID == '-1') { // -1: Cuurent user, load from user record - if( isset($APP_UID) ){ - $oAppDelegation = new AppDelegation; - $aAppDel = $oAppDelegation->getLastDeleration($APP_UID); - if(isset($aAppDel)){ - $oUserRow = UsersPeer::retrieveByPK($aAppDel['USR_UID']); - if( isset($oUserRow) ){ - $sID = $oUserRow->getUsrEmail(); - } else { - throw new Exception('User with ID '.$oAppDelegation->getUsrUid(). 'doesn\'t exist'); - } - if( G::emailAddress($sID) ) { - array_push($aRecipient, $sID); - } - } - } + //recipient to store the email addresses + $aRecipient = Array(); + $aItems = Array(); + + /* + * First at all the $id user input can be by example erik@colosa.com + * 2.this $id param can be a array by example Array('000000000001','000000000002') in this case $prefix is necessary + * 3.this same param can be a array by example Array('usr|000000000001', 'usr|-1', 'grp|2245141479413131441') + */ + + /* + * The second thing is that the return type will be configurated depend of the input type (using $retType) + */ + if ( is_array($id) ) { + $aItems = $id; + $retType = 'array'; + } else { + $retType = 'string'; + if ( strpos($id, ",") !== false ) { + $aItems = explode(',', $id); } else { - $oUserRow = UsersPeer::retrieveByPK($sID); - $sID = $oUserRow->getUsrEmail(); - if( G::emailAddress($sID) ) { - array_push($aRecipient, $sID); - } + array_push($aItems, $id); } - - break; - - case 'grp': - G::LoadClass('groups'); - $oGroups = new Groups(); - $oCriteria = $oGroups->getUsersGroupCriteria($sID); - $oDataset = GroupwfPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - while ($oDataset->next()) { - $aGroup = $oDataset->getRow(); - //to validate email address - if( G::emailAddress($aGroup['USR_EMAIL']) ) { - array_push($aRecipient, $aGroup['USR_EMAIL']); - } - } - - break; - - case 'dyn': - $oCase = new Cases(); - $aFields = $oCase->loadCase($APP_UID); - $aFields['APP_DATA'] = array_merge($aFields['APP_DATA'], G::getSystemConstants()); - - //to validate email address - if( isset($aFields['APP_DATA'][$sID]) && G::emailAddress($aFields['APP_DATA'][$sID]) ) { - array_push($aRecipient, $aFields['APP_DATA'][$sID]); - } - break; } - } - switch($retType){ - case 'array': - return $aRecipient; + foreach ($aItems as $sItem) { + //cleaning for blank spaces into each array item + $sItem = trim($sItem); + if ( strpos($sItem, "|") !== false ) { + // explode the parameter because always will be compose with pipe separator to indicate + // the type (user or group) and the target mai + list($sType, $sID) = explode('|', $sItem); + $sType = trim($sType); + $sID = trim($sID); + } else { + $sType = $prefix; + $sID = $sItem; + } - case 'string': - return implode(',', $aRecipient); + switch ($sType) { + case 'ext': + if ( G::emailAddress($sID) ) { + array_push($aRecipient, $sID); + } + break; + case 'usr': + if ($sID == '-1') { + // -1: Curent user, load from user record + if ( isset($APP_UID) ) { + $oAppDelegation = new AppDelegation; + $aAppDel = $oAppDelegation->getLastDeleration($APP_UID); + if (isset($aAppDel)) { + $oUserRow = UsersPeer::retrieveByPK($aAppDel['USR_UID']); + if ( isset($oUserRow) ) { + $sID = $oUserRow->getUsrEmail(); + } else { + throw new Exception('User with ID '.$oAppDelegation->getUsrUid(). 'doesn\'t exist'); + } + if ( G::emailAddress($sID) ) { + array_push($aRecipient, $sID); + } + } + } + } else { + $oUserRow = UsersPeer::retrieveByPK($sID); + $sID = $oUserRow->getUsrEmail(); + if ( G::emailAddress($sID) ) { + array_push($aRecipient, $sID); + } + } - default: - return $aRecipient; - } + break; + case 'grp': + G::LoadClass('groups'); + $oGroups = new Groups(); + $oCriteria = $oGroups->getUsersGroupCriteria($sID); + $oDataset = GroupwfPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + while ($oDataset->next()) { + $aGroup = $oDataset->getRow(); + //to validate email address + if ( G::emailAddress($aGroup['USR_EMAIL']) ) { + array_push($aRecipient, $aGroup['USR_EMAIL']); + } + } + + break; + case 'dyn': + $oCase = new Cases(); + $aFields = $oCase->loadCase($APP_UID); + $aFields['APP_DATA'] = array_merge($aFields['APP_DATA'], G::getSystemConstants()); + + //to validate email address + if ( isset($aFields['APP_DATA'][$sID]) && G::emailAddress($aFields['APP_DATA'][$sID]) ) { + array_push($aRecipient, $aFields['APP_DATA'][$sID]); + } + break; + } + } + + switch ($retType) { + case 'array': + return $aRecipient; + break; + case 'string': + return implode(',', $aRecipient); + break; + default: + return $aRecipient; + } } /** @@ -2027,9 +2088,9 @@ function PMFGetUserEmailAddress($id, $APP_UID = null, $prefix='usr') * @return array, object or string | $response | Array of the response | Return an Array or Object or String * */ -function PMFGetCaseNotes ($applicationID, $type = 'array', $userUid = '') +function PMFGetCaseNotes ($applicationID, $type='array', $userUid='') { - G::LoadClass('case'); - $response = Cases::getCaseNotes($applicationID, $type, $userUid); - return $response; + G::LoadClass('case'); + $response = Cases::getCaseNotes($applicationID, $type, $userUid); + return $response; } diff --git a/workflow/engine/classes/class.pmScript.php b/workflow/engine/classes/class.pmScript.php index 4507f82e9..94fb58714 100755 --- a/workflow/engine/classes/class.pmScript.php +++ b/workflow/engine/classes/class.pmScript.php @@ -1,4 +1,5 @@ * last modify 2008.08.13 by Erik Amaru Ortiz * last modify comment was added and adapted the catch errors * @copyright 2007 COLOSA */ - -function __autoload($sClassName) +function __autoload($sClassName) { - if (defined('SYS_SYS')) { - $sPath = PATH_DB . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP; - if (file_exists($sPath . $sClassName . '.php')) { - require_once $sPath . $sClassName . '.php'; + if (defined('SYS_SYS')) { + $sPath = PATH_DB . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP; + if (file_exists($sPath . $sClassName . '.php')) { + require_once $sPath . $sClassName . '.php'; + } } - } } //Start - Custom functions @@ -54,31 +54,32 @@ G::LoadClass('pmFunctions'); //End - Custom functions //call plugin if (class_exists('folderData')) { - //$folderData = new folderData($sProUid, $proFields['PRO_TITLE'], $sAppUid, $Fields['APP_TITLE'], $sUsrUid); - $oPluginRegistry = &PMPluginRegistry::getSingleton(); - $aAvailablePmFunctions = $oPluginRegistry->getPmFunctions(); - foreach ($aAvailablePmFunctions as $key => $class ) { - $filePlugin = PATH_PLUGINS . $class . PATH_SEP . 'classes' . PATH_SEP . 'class.pmFunctions.php'; - if ( file_exists ( $filePlugin ) ) - include_once( $filePlugin); - } + //$folderData = new folderData($sProUid, $proFields['PRO_TITLE'], $sAppUid, $Fields['APP_TITLE'], $sUsrUid); + $oPluginRegistry = &PMPluginRegistry::getSingleton(); + $aAvailablePmFunctions = $oPluginRegistry->getPmFunctions(); + foreach ($aAvailablePmFunctions as $key => $class) { + $filePlugin = PATH_PLUGINS . $class . PATH_SEP . 'classes' . PATH_SEP . 'class.pmFunctions.php'; + if (file_exists($filePlugin)) { + include_once( $filePlugin); + } + } } //end plugin - //Add External Triggers -$dir=G::ExpandPath( "classes" ).'triggers'; -$filesArray=array(); -if (file_exists($dir)){ - if ($handle = opendir($dir)) { - while (false !== ($file = readdir($handle))) { - if(($file!=".")&&($file!="..")){ - $extFile =explode(".",$file); - if($extFile[sizeof($extFile)-1] == 'php') - include_once( $dir.PATH_SEP.$file); - } - } - closedir($handle); - } +$dir = G::ExpandPath("classes") . 'triggers'; +$filesArray = array(); +if (file_exists($dir)) { + if ($handle = opendir($dir)) { + while (false !== ($file = readdir($handle))) { + if (($file != ".") && ($file != "..")) { + $extFile = explode(".", $file); + if ($extFile[sizeof($extFile) - 1] == 'php') { + include_once( $dir . PATH_SEP . $file); + } + } + } + closedir($handle); + } } /** @@ -88,406 +89,453 @@ if (file_exists($dir)){ */ class PMScript { - /** - * Original fields - */ - var $aOriginalFields = array(); - /** - * Fields to use - */ - var $aFields = array(); + /** + * Original fields + */ + public $aOriginalFields = array(); - /** - * Script - */ - var $sScript = ''; + /** + * Fields to use + */ + public $aFields = array(); - /** - * Error has happened? - */ - var $bError = false; + /** + * Script + */ + public $sScript = ''; - /** - * Affected fields - */ - var $affected_fields; - - /** - * Constructor of the class PMScript - * @return void - */ - function PMScript() - { - $this->aFields['__ERROR__'] = 'none'; - } - - /** - * Set the fields to use - * @param array $aFields - * @return void - */ - function setFields($aFields = array()) - { - if (!is_array($aFields)) { - $aFields = array(); + /** + * Error has happened? + */ + public $bError = false; + + /** + * Affected fields + */ + public $affected_fields; + + /** + * Constructor of the class PMScript + * @return void + */ + public function PMScript() + { + $this->aFields['__ERROR__'] = 'none'; } - $this->aOriginalFields = $this->aFields = $aFields; - } - /** - * Set the current script - * @param string $sScript - * @return void - */ - function setScript($sScript = '') - { - $this->sScript = $sScript; - } - - /** - * Verify the syntax - * @param string $sScript - * @return boolean - */ - function validSyntax($sScript) - { - return true; - } - - - function executeAndCatchErrors($sScript, $sCode) { - ob_start('handleFatalErrors'); - set_error_handler('handleErrors'); - $_SESSION['_CODE_'] = $sCode; - eval($sScript); - unset($_SESSION['_CODE_']); - ob_end_flush(); - } - - /** - * Execute the current script - * @return void - */ - function execute() - { - $sScript = ""; - $iAux = 0; - $bEqual = false; - $iOcurrences = preg_match_all('/\@(?:([\@\%\#\?\$\=])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*(?:[\\\\][\w\W])?)*)\))((?:\s*\[[\'"]?\w+[\'"]?\])+)?/', $this->sScript, $aMatch, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); - if ($iOcurrences){ - for($i = 0; $i < $iOcurrences; $i++){ - $sAux = substr($this->sScript, $iAux, $aMatch[0][$i][1] - $iAux); - if (!$bEqual){ - if (strpos($sAux, '==') !== false){ - $bEqual = false; - } - else { - if (strpos($sAux, '=') !== false){ - $bEqual = true; - } - } + /** + * Set the fields to use + * @param array $aFields + * @return void + */ + public function setFields($aFields=array()) + { + if (!is_array($aFields)) { + $aFields = array(); } - if ($bEqual){ - if (strpos($sAux, ';') !== false){ - $bEqual = false; - } - } - if ($bEqual) { - if (!isset($aMatch[5][$i][0])) { - eval("if (!isset(\$this->aFields['" . $aMatch[2][$i][0] . "'])) { \$this->aFields['" . $aMatch[2][$i][0] . "'] = null; }"); - } - else { - eval("if (!isset(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")) { \$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . " = null; }"); - } - } - $sScript .= $sAux; - $iAux = $aMatch[0][$i][1] + strlen($aMatch[0][$i][0]); - switch ($aMatch[1][$i][0]) - { case '@': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmToString(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmToString(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '%': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmToInteger(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmToInteger(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '#': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmToFloat(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmToFloat(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '?': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmToUrl(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmToUrl(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '$': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmSqlEscape(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmSqlEscape(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '=': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - } - $this->affected_fields[] = $aMatch[2][$i][0]; - } + $this->aOriginalFields = $this->aFields = $aFields; } - $sScript .= substr($this->sScript, $iAux); - $sScript = "try {\n" . $sScript . "\n} catch (Exception \$oException) {\n \$this->aFields['__ERROR__'] = utf8_encode(\$oException->getMessage());\n}"; - //echo '
-->'; print_r($this->aFields); echo '<---
'; - $this->executeAndCatchErrors($sScript, $this->sScript); - for($i=0; $iaffected_fields); $i++){ - $_SESSION['TRIGGER_DEBUG']['DATA'][] = Array( - 'key' => $this->affected_fields[$i], - 'value' => isset($this->aFields[$this->affected_fields[$i]]) ? $this->aFields[$this->affected_fields[$i]] : '' - ); - } - //echo '
-->'; print_r($_SESSION['TRIGGER_DEBUG']['DATA']); echo '<---
'; - } - /** - * Evaluate the current script - * @return void - */ - function evaluate() - { - $bResult = null; - $sScript = ''; - $iAux = 0; - $bEqual = false; - $variableIsDefined = true; - $iOcurrences = preg_match_all('/\@(?:([\@\%\#\?\$\=])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*(?:[\\\\][\w\W])?)*)\))((?:\s*\[[\'"]?\w+[\'"]?\])+)?/', $this->sScript, $aMatch, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); - if ($iOcurrences){ - for($i = 0; $i < $iOcurrences; $i++){ - // if the variables for that condition has not been previously defined then $variableIsDefined is set to false - if (!isset($this->aFields[$aMatch[2][$i][0]])){ -// $variableIsDefined = false; - $this->aFields[$aMatch[2][$i][0]] = ''; - } - $sAux = substr($this->sScript, $iAux, $aMatch[0][$i][1] - $iAux); - if (!$bEqual){ - if (strpos($sAux, '=') !== false){ - $bEqual = true; - } - } - if ($bEqual){ - if (strpos($sAux, ';') !== false) - { - $bEqual = false; - } - } - $sScript .= $sAux; - $iAux = $aMatch[0][$i][1] + strlen($aMatch[0][$i][0]); - switch ($aMatch[1][$i][0]){ - case '@': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmToString(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmToString(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '%': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmToInteger(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmToInteger(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '#': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmToFloat(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmToFloat(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '?': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmToUrl(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmToUrl(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '$': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "pmSqlEscape(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; - } - else { - $sScript .= "pmSqlEscape(\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0] . ")"; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - case '=': - if ($bEqual){ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - else{ - if (!isset($aMatch[5][$i][0])) { - $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; - } - else { - $sScript .= "\$this->aFields" . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] . "']" : '') . $aMatch[5][$i][0]; - } - } - break; - } - } + /** + * Set the current script + * @param string $sScript + * @return void + */ + public function setScript($sScript='') + { + $this->sScript = $sScript; } - $sScript .= substr($this->sScript, $iAux); - $sScript = '$bResult = ' . $sScript . ';'; - // checks if the syntax is valid or if the variables in that condition has been previously defined - if ($this->validSyntax($sScript)&&$variableIsDefined){ - $this->bError = false; - eval($sScript); + + /** + * Verify the syntax + * @param string $sScript + * @return boolean + */ + public function validSyntax($sScript) + { + return true; } - else{ -// echo ""; - G::SendTemporalMessage('MSG_CONDITION_NOT_DEFINED', 'error', 'labels'); - $this->bError = true; + + public function executeAndCatchErrors($sScript, $sCode) + { + ob_start('handleFatalErrors'); + set_error_handler('handleErrors'); + $_SESSION['_CODE_'] = $sCode; + eval($sScript); + unset($_SESSION['_CODE_']); + ob_end_flush(); + } + + /** + * Execute the current script + * @return void + */ + public function execute() + { + $sScript = ""; + $iAux = 0; + $bEqual = false; + $iOcurrences = preg_match_all( '/\@(?:([\@\%\#\?\$\=])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]' + . '*(?:[\\\\][\w\W])?)*)\))((?:\s*\[[\'"]?\w+[\'"]?\])+)?/', + $this->sScript, $aMatch, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); + if ($iOcurrences) { + for ($i = 0; $i < $iOcurrences; $i++) { + $sAux = substr($this->sScript, $iAux, $aMatch[0][$i][1] - $iAux); + if (!$bEqual) { + if (strpos($sAux, '==') !== false) { + $bEqual = false; + } else { + if (strpos($sAux, '=') !== false) { + $bEqual = true; + } + } + } + if ($bEqual) { + if (strpos($sAux, ';') !== false) { + $bEqual = false; + } + } + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + eval("if (!isset(\$this->aFields['" . $aMatch[2][$i][0] . "'])) { \$this->aFields['" + . $aMatch[2][$i][0] . "'] = null; }"); + } else { + eval( "if (!isset(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")) { \$this->aFields" + . (isset($aMatch[2][$i][0]) ? "['" . $aMatch[2][$i][0] + . "']" : '') . $aMatch[5][$i][0] . " = null; }"); + } + } + $sScript .= $sAux; + $iAux = $aMatch[0][$i][1] + strlen($aMatch[0][$i][0]); + switch ($aMatch[1][$i][0]) { + case '@': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmToString(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmToString(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '%': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmToInteger(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmToInteger(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '#': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmToFloat(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmToFloat(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '?': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmToUrl(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmToUrl(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '$': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmSqlEscape(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmSqlEscape(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '=': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + } + $this->affected_fields[] = $aMatch[2][$i][0]; + } + } + $sScript .= substr($this->sScript, $iAux); + $sScript = "try {\n" . $sScript . "\n} catch (Exception \$oException) {\n " + . " \$this->aFields['__ERROR__'] = utf8_encode(\$oException->getMessage());\n}"; + //echo '
-->'; print_r($this->aFields); echo '<---
'; + $this->executeAndCatchErrors($sScript, $this->sScript); + for ($i = 0; $i < count($this->affected_fields); $i++) { + $_SESSION['TRIGGER_DEBUG']['DATA'][] = Array( + 'key' => $this->affected_fields[$i], + 'value' => isset($this->aFields[$this->affected_fields[$i]]) + ? $this->aFields[$this->affected_fields[$i]] + : '' + ); + } + //echo '
-->'; print_r($_SESSION['TRIGGER_DEBUG']['DATA']); echo '<---
'; + } + + /** + * Evaluate the current script + * @return void + */ + public function evaluate() + { + $bResult = null; + $sScript = ''; + $iAux = 0; + $bEqual = false; + $variableIsDefined = true; + $iOcurrences = preg_match_all('/\@(?:([\@\%\#\?\$\=])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]' + . '*(?:[\\\\][\w\W])?)*)\))((?:\s*\[[\'"]?\w+[\'"]?\])+)?/', + $this->sScript, $aMatch, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); + if ($iOcurrences) { + for ($i = 0; $i < $iOcurrences; $i++) { + // if the variables for that condition has not been previously defined then $variableIsDefined + // is set to false + if (!isset($this->aFields[$aMatch[2][$i][0]])) { + // $variableIsDefined = false; + $this->aFields[$aMatch[2][$i][0]] = ''; + } + $sAux = substr($this->sScript, $iAux, $aMatch[0][$i][1] - $iAux); + if (!$bEqual) { + if (strpos($sAux, '=') !== false) { + $bEqual = true; + } + } + if ($bEqual) { + if (strpos($sAux, ';') !== false) { + $bEqual = false; + } + } + $sScript .= $sAux; + $iAux = $aMatch[0][$i][1] + strlen($aMatch[0][$i][0]); + switch ($aMatch[1][$i][0]) { + case '@': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmToString(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmToString(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '%': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmToInteger(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmToInteger(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '#': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmToFloat(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmToFloat(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '?': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmToUrl(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmToUrl(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '$': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "pmSqlEscape(\$this->aFields['" . $aMatch[2][$i][0] . "'])"; + } else { + $sScript .= "pmSqlEscape(\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0] . ")"; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + case '=': + if ($bEqual) { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } else { + if (!isset($aMatch[5][$i][0])) { + $sScript .= "\$this->aFields['" . $aMatch[2][$i][0] . "']"; + } else { + $sScript .= "\$this->aFields" + . (isset($aMatch[2][$i][0]) + ? "['" . $aMatch[2][$i][0] . "']" + : '') . $aMatch[5][$i][0]; + } + } + break; + } + } + } + $sScript .= substr($this->sScript, $iAux); + $sScript = '$bResult = ' . $sScript . ';'; + // checks if the syntax is valid or if the variables in that condition has been previously defined + if ($this->validSyntax($sScript) && $variableIsDefined) { + $this->bError = false; + eval($sScript); + } else { + // echo ""; + G::SendTemporalMessage('MSG_CONDITION_NOT_DEFINED', 'error', 'labels'); + $this->bError = true; + } + return $bResult; } - return $bResult; - } } //Start - Private functions @@ -499,7 +547,7 @@ class PMScript */ function pmToString($vValue) { - return (string)$vValue; + return (string) $vValue; } /** @@ -509,7 +557,7 @@ function pmToString($vValue) */ function pmToInteger($vValue) { - return (int)$vValue; + return (int) $vValue; } /** @@ -519,7 +567,7 @@ function pmToInteger($vValue) */ function pmToFloat($vValue) { - return (float)$vValue; + return (float) $vValue; } /** @@ -529,7 +577,7 @@ function pmToFloat($vValue) */ function pmToUrl($vValue) { - return urlencode($vValue); + return urlencode($vValue); } /** @@ -539,18 +587,18 @@ function pmToUrl($vValue) */ function pmSqlEscape($vValue) { - return G::sqlEscape($vValue); + return G::sqlEscape($vValue); } //End - Private functions -/*************************************************************************** -* Error handler -* author: Julio Cesar Laura Avenda�o -* date: 2009-10-01 -***************************************************************************/ +/* * ************************************************************************* + * Error handler + * author: Julio Cesar Laura Avenda�o + * date: 2009-10-01 + * ************************************************************************* */ /* * Convert to data base escaped string * @param string $errno @@ -559,15 +607,15 @@ function pmSqlEscape($vValue) * @param string $errline * @return void */ -function handleErrors($errno, $errstr, $errfile, $errline) +function handleErrors($errno, $errstr, $errfile, $errline) { - if ($errno != '' && ($errno != 8) && ($errno != 2048)) { - if( isset($_SESSION['_CODE_']) ){ - $sCode = $_SESSION['_CODE_']; - unset($_SESSION['_CODE_']); - registerError(1, $errstr, $errline - 1, $sCode); + if ($errno != '' && ($errno != 8) && ($errno != 2048)) { + if (isset($_SESSION['_CODE_'])) { + $sCode = $_SESSION['_CODE_']; + unset($_SESSION['_CODE_']); + registerError(1, $errstr, $errline - 1, $sCode); + } } - } } /* @@ -575,49 +623,56 @@ function handleErrors($errno, $errstr, $errfile, $errline) * @param variant $buffer * @return buffer */ -function handleFatalErrors($buffer) + +function handleFatalErrors($buffer) { - if (preg_match('/(error<\/b>:)(.+)(/', '', $regs[2]); - $aAux = explode(' in ', $err); - $sCode = $_SESSION['_CODE_']; - unset($_SESSION['_CODE_']); - registerError(2, $aAux[0], 0, $sCode); - if (strpos($_SERVER['REQUEST_URI'], '/cases/cases_Step') !== false) { - if (strpos($_SERVER['REQUEST_URI'], '&ACTION=GENERATE') !== false) { - G::LoadClass('case'); - $oCase = new Cases(); - $aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION']); - if($_SESSION['TRIGGER_DEBUG']['ISSET']) { - $_SESSION['TRIGGER_DEBUG']['TIME'] = 'AFTER'; - $_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $aNextStep['PAGE']; - $aNextStep['PAGE'] = $aNextStep['PAGE'].'&breakpoint=triggerdebug'; + if (preg_match('/(error<\/b>:)(.+)(/', '', $regs[2]); + $aAux = explode(' in ', $err); + $sCode = $_SESSION['_CODE_']; + unset($_SESSION['_CODE_']); + registerError(2, $aAux[0], 0, $sCode); + if (strpos($_SERVER['REQUEST_URI'], '/cases/cases_Step') !== false) { + if (strpos($_SERVER['REQUEST_URI'], '&ACTION=GENERATE') !== false) { + G::LoadClass('case'); + $oCase = new Cases(); + $aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], + $_SESSION['APPLICATION'], + $_SESSION['INDEX'], + $_SESSION['STEP_POSITION']); + if ($_SESSION['TRIGGER_DEBUG']['ISSET']) { + $_SESSION['TRIGGER_DEBUG']['TIME'] = 'AFTER'; + $_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $aNextStep['PAGE']; + $aNextStep['PAGE'] = $aNextStep['PAGE'] . '&breakpoint=triggerdebug'; + } + G::header('Location: ' . $aNextStep['PAGE']); + die; + } + $_SESSION['_NO_EXECUTE_TRIGGERS_'] = 1; + G::header('Location: ' . $_SERVER['REQUEST_URI']); + die; + } else { + G::LoadClass('case'); + $oCase = new Cases(); + $aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], + $_SESSION['APPLICATION'], + $_SESSION['INDEX'], + $_SESSION['STEP_POSITION']); + if ($_SESSION['TRIGGER_DEBUG']['ISSET']) { + $_SESSION['TRIGGER_DEBUG']['TIME'] = 'AFTER'; + $_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $aNextStep['PAGE']; + $aNextStep['PAGE'] = $aNextStep['PAGE'] . '&breakpoint=triggerdebug'; + } + if (strpos($aNextStep['PAGE'], 'TYPE=ASSIGN_TASK&UID=-1') !== false) { + G::SendMessageText('Fatal error in trigger', 'error'); + } + G::header('Location: ' . $aNextStep['PAGE']); + die; } - G::header('Location: ' . $aNextStep['PAGE']); - die; - } - $_SESSION['_NO_EXECUTE_TRIGGERS_'] = 1; - G::header('Location: ' . $_SERVER['REQUEST_URI']); - die; } - else { - G::LoadClass('case'); - $oCase = new Cases(); - $aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION']); - if($_SESSION['TRIGGER_DEBUG']['ISSET']) { - $_SESSION['TRIGGER_DEBUG']['TIME'] = 'AFTER'; - $_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $aNextStep['PAGE']; - $aNextStep['PAGE'] = $aNextStep['PAGE'].'&breakpoint=triggerdebug'; - } - if (strpos($aNextStep['PAGE'], 'TYPE=ASSIGN_TASK&UID=-1') !== false) { - G::SendMessageText('Fatal error in trigger', 'error'); - } - G::header('Location: ' . $aNextStep['PAGE']); - die; - } - } - return $buffer; + return $buffer; } + /* * Register Error * @param string $iType @@ -626,10 +681,12 @@ function handleFatalErrors($buffer) * @param string $sCode * @return void */ -function registerError($iType, $sError, $iLine, $sCode) + +function registerError($iType, $sError, $iLine, $sCode) { - $sType = ($iType == 1 ? 'ERROR' : 'FATAL'); - $_SESSION['TRIGGER_DEBUG']['ERRORS'][][$sType] = $sError . ($iLine > 0 ? ' (line ' . $iLine . ')' : '') . ':

' . $sCode; + $sType = ($iType == 1 ? 'ERROR' : 'FATAL'); + $_SESSION['TRIGGER_DEBUG']['ERRORS'][][$sType] = $sError . ($iLine > 0 ? ' (line ' . $iLine . ')' : '') + . ':

' . $sCode; } /** @@ -640,8 +697,8 @@ function registerError($iType, $sError, $iLine, $sCode) */ function getEngineDataBaseName($connection) { - $aDNS = $connection->getDSN(); - return $aDNS["phptype"]; + $aDNS = $connection->getDSN(); + return $aDNS["phptype"]; } /** @@ -650,89 +707,87 @@ function getEngineDataBaseName($connection) * @param type $sql * @param type $connection */ -function executeQueryOci($sql, $connection, $aParameter = array()) +function executeQueryOci($sql, $connection, $aParameter=array()) { - $aDNS = $connection->getDSN(); - $sUsername = $aDNS["username"]; - $sPassword = $aDNS["password"]; - $sHostspec = $aDNS["hostspec"]; - $sDatabse = $aDNS["database"]; - $sPort = $aDNS["port"]; + $aDNS = $connection->getDSN(); + $sUsername = $aDNS["username"]; + $sPassword = $aDNS["password"]; + $sHostspec = $aDNS["hostspec"]; + $sDatabse = $aDNS["database"]; + $sPort = $aDNS["port"]; - if ($sPort != "1521") { // if not default port - $conn = oci_connect($sUsername, $sPassword, $sHostspec . ":" . $sPort . "/" . $sDatabse); - } - else { - $conn = oci_connect($sUsername, $sPassword, $sHostspec . "/" . $sDatabse); - } + if ($sPort != "1521") { + // if not default port + $conn = oci_connect($sUsername, $sPassword, $sHostspec . ":" . $sPort . "/" . $sDatabse); + } else { + $conn = oci_connect($sUsername, $sPassword, $sHostspec . "/" . $sDatabse); + } - if (!$conn) { - $e = oci_error(); - trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); - return $e; - } + if (!$conn) { + $e = oci_error(); + trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); + return $e; + } - switch(true) { - case preg_match("/^(SELECT|SHOW|DESCRIBE|DESC)\s/i", $sql): - $stid = oci_parse($conn, $sql); - if (count($aParameter) > 0) { - foreach ($aParameter as $key => $val) { - oci_bind_by_name($stid, $key, $val); - } - } - oci_execute($stid, OCI_DEFAULT); - - $result = Array(); - $i = 1; - while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) { - $result[$i++] = $row; - } - oci_free_statement($stid); - oci_close($conn); - return $result; - break; - case preg_match("/^(INSERT|UPDATE|DELETE)\s/i", $sql): - $stid = oci_parse($conn, $sql); - $isValid = true; - if (count($aParameter) > 0){ - foreach ($aParameter as $key => $val) { - oci_bind_by_name($stid, $key, $val); - } - } - $objExecute = oci_execute($stid, OCI_DEFAULT); - if ($objExecute) { - oci_commit($conn); - } - else { - oci_rollback($conn); - $isValid = false; - } - oci_free_statement($stid); - oci_close($conn); - if ($isValid) { - return true; - } - else { - return oci_error(); - } - break; - default: - // Stored procedures - $stid = oci_parse($conn, $sql); - $aParameterRet = array(); - if (count($aParameter) > 0){ - foreach ($aParameter as $key => $val) { - $aParameterRet[$key] = $val; - // The third parameter ($aParameterRet[$key]) returned a value by reference. - oci_bind_by_name($stid, $key, $aParameterRet[$key]); - } - } - $objExecute = oci_execute($stid, OCI_DEFAULT); - oci_free_statement($stid); - oci_close($conn); - return $aParameterRet; - break; - } + switch (true) { + case preg_match("/^(SELECT|SHOW|DESCRIBE|DESC)\s/i", $sql): + $stid = oci_parse($conn, $sql); + if (count($aParameter) > 0) { + foreach ($aParameter as $key => $val) { + oci_bind_by_name($stid, $key, $val); + } + } + oci_execute($stid, OCI_DEFAULT); + $result = Array(); + $i = 1; + while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) { + $result[$i++] = $row; + } + oci_free_statement($stid); + oci_close($conn); + return $result; + break; + case preg_match("/^(INSERT|UPDATE|DELETE)\s/i", $sql): + $stid = oci_parse($conn, $sql); + $isValid = true; + if (count($aParameter) > 0) { + foreach ($aParameter as $key => $val) { + oci_bind_by_name($stid, $key, $val); + } + } + $objExecute = oci_execute($stid, OCI_DEFAULT); + if ($objExecute) { + oci_commit($conn); + } else { + oci_rollback($conn); + $isValid = false; + } + oci_free_statement($stid); + oci_close($conn); + if ($isValid) { + return true; + } else { + return oci_error(); + } + break; + default: + // Stored procedures + $stid = oci_parse($conn, $sql); + $aParameterRet = array(); + if (count($aParameter) > 0) { + foreach ($aParameter as $key => $val) { + $aParameterRet[$key] = $val; + // The third parameter ($aParameterRet[$key]) returned a value by reference. + oci_bind_by_name($stid, $key, $aParameterRet[$key]); + } + } + $objExecute = oci_execute($stid, OCI_DEFAULT); + oci_free_statement($stid); + oci_close($conn); + return $aParameterRet; + break; + } } + \ No newline at end of file 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 b7e44c323..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,221 +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 $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!")); + } + } catch (Exception $oError) { + throw ($oError); + } + } + + public function update($fields) + { + require_once ("classes/model/AppCacheView.php"); + require_once ("classes/model/Configuration.php"); + + $con = Propel::getConnection(TaskPeer::DATABASE_NAME); + + 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); + } + } + + public 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); + } + } + + /** + * 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; - } - else { - throw(new Exception("The row '" . $TasUid . "' in table TASK doesn't exist!")); - } } - catch (Exception $oError) { - throw($oError); - } - } - - function update($fields) - { - $con = Propel::getConnection(TaskPeer::DATABASE_NAME); - try - { - $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(); - return $result; - } - else - { - $con->rollback(); - throw(new Exception("Failed Validation in class ".get_class($this).".")); - } - } - catch(Exception $e) - { - $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); - } - } - /** - * verify if Task row specified in [TasUid] exists. - * - * @param string $sProUid the uid of the Prolication - */ - - 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 - */ - 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) + //Added by qennix + //Gets Starting Event of current task + public function getStartingEvent() { - $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'); - } + require_once ('classes/model/Event.php'); - 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 = ''; + $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; } - return $event_uid; - } -} // Task +} +//Task + diff --git a/workflow/engine/js/processmap/core/processes_Map.js b/workflow/engine/js/processmap/core/processes_Map.js index d13368eb1..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,45 +178,73 @@ var saveDataTaskTemporal = function(iForm) var saveTaskData = function(oForm, iForm, iType) { iLastTab = iForm; - if ( !saveDataTaskTemporal(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; - } - var sParameters = 'function=saveTaskData'; + 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; + } + + //Set AJAX + var sParameters = "function=saveTaskData"; + var oRPC = new leimnud.module.rpc.xmlhttp({ - url : '../tasks/tasks_Ajax', - async : false, - method: 'POST', - args : sParameters + '&oData=' + oTaskData.toJSONString() + url: "../tasks/tasks_Ajax", + method: "POST", + args: sParameters + "&oData=" + oTaskData.toJSONString() }); + + oRPC.callback = function (rpc) { + 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 { + 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(); - 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( { - label: changesSavedLabel - }); - } - catch (e) { - // No show confirmation - } - Pm.tmp.propertiesPanel.remove(); }; var showTriggers = function(sStep, sType) 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 + diff --git a/workflow/engine/methods/users/usersGroups.php b/workflow/engine/methods/users/usersGroups.php index 9fff413fd..b08913894 100755 --- a/workflow/engine/methods/users/usersGroups.php +++ b/workflow/engine/methods/users/usersGroups.php @@ -1,4 +1,5 @@ userCanAccess("PM_LOGIN"))!=1) return $RBAC_Response; +if (($RBAC_Response = $RBAC->userCanAccess("PM_LOGIN")) != 1) { + return $RBAC_Response; +} global $RBAC; $access = $RBAC->userCanAccess('PM_USERS'); -if( $access != 1 ){ - switch ($access) - { - case -1: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - case -2: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - default: - G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); - G::header('location: ../login/login'); - die; - break; - } +if ($access != 1) { + switch ($access) { + case -1: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); + G::header('location: ../login/login'); + die; + break; + case -2: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); + G::header('location: ../login/login'); + die; + break; + default: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); + G::header('location: ../login/login'); + die; + break; + } } -$G_MAIN_MENU = 'processmaker'; -$G_SUB_MENU = 'users'; -$G_ID_MENU_SELECTED = 'USERS'; +$G_MAIN_MENU = 'processmaker'; +$G_SUB_MENU = 'users'; +$G_ID_MENU_SELECTED = 'USERS'; $G_ID_SUB_MENU_SELECTED = 'USERS'; $G_PUBLISH = new Publisher; @@ -69,10 +71,16 @@ $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aRow = $oDataset->getRow(); -switch($_REQUEST['type']){ - case 'summary': $ctab = 0; break; - case 'group': $ctab = 1; break; - case 'auth': $ctab = 2; break; +switch ($_REQUEST['type']) { + case 'summary': + $ctab = 0; + break; + case 'group': + $ctab = 1; + break; + case 'auth': + $ctab = 2; + break; } $users = Array(); @@ -83,11 +91,12 @@ $users['USR_USERNAME'] = $aRow['USR_USERNAME']; $users['fullNameFormat'] = $Config['fullNameFormat']; $users['CURRENT_TAB'] = $ctab; -$oHeadPublisher =& headPublisher::getSingleton(); +$oHeadPublisher = & headPublisher::getSingleton(); $oHeadPublisher->addExtJsScript('users/usersGroups', false); //adding a javascript file .js // $oHeadPublisher->addContent('users/usersGroups'); //adding a html file .html. $oHeadPublisher->assign('USERS', $users); - $oHeadPublisher->assign('hasAuthPerm', ($RBAC->userCanAccess('PM_SETUP_ADVANCE') == 1)); +$oHeadPublisher->assign('hasAuthPerm', ($RBAC->userCanAccess('PM_SETUP_ADVANCE') == 1)); -G::RenderPage('publish', 'extJs'); \ No newline at end of file +G::RenderPage('publish', 'extJs'); + \ No newline at end of file diff --git a/workflow/engine/templates/triggers/triggers_CreateWizard.php b/workflow/engine/templates/triggers/triggers_CreateWizard.php index edcc46751..3297bf38c 100755 --- a/workflow/engine/templates/triggers/triggers_CreateWizard.php +++ b/workflow/engine/templates/triggers/triggers_CreateWizard.php @@ -1,149 +1,164 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - * - */ - -try { - - G::LoadClass ( 'triggerLibrary' ); - $triggerLibrary = triggerLibrary::getSingleton (); - $libraryClassName = $_GET ['LIBRARY']; - $libraryMethod = $_GET ['NAME_FUN']; - $sProUid = $_GET ['PRO_UID']; - $libraryO = $triggerLibrary->getLibraryDefinition ( $libraryClassName ); - - $libraryName = $libraryO->info ['name']; - $libraryDescription = trim ( str_replace ( "*", "", implode ( " ", $libraryO->info ['description'] ) ) ); - $libraryIcon = isset ( $libraryO->info ['icon'] ) && ($libraryO->info ['icon'] != "") ? $libraryO->info ['icon'] : "/images/browse.gif"; - $aDataTrigger = $_GET; - - $sProUid = $aDataTrigger ['PRO_UID']; - $sNameFun = $aDataTrigger ['NAME_FUN']; - - $methodObject = $libraryO->methods [$sNameFun]; - - $methodName = $methodObject->info ['name']; - $methodLabel = $methodObject->info ['label']; - $methodDescription = trim ( str_replace ( "*", "", implode ( " ", $methodObject->info ['description'] ) ) ); - $methodReturn = $methodObject->info ['return']; - $methodParameters = array_keys ( $methodObject->params ); - $methodLink = isset ( $methodObject->info ['link'] ) && ($methodObject->info ['link'] != "") ? $methodObject->info ['link'] : ""; - $methodreturnA = explode ( "|", $methodReturn ); - - $bReturnValue = true; - $displayMode = 'display:block'; - $methodreturnDescription = (trim(strtoupper($methodreturnA [3])) == strtoupper(G::LoadTranslation ( 'ID_NONE')) )? G::LoadTranslation ( 'ID_NOT_REQUIRED') : $methodreturnA [3]; - $methodReturnLabel = isset ( $methodreturnA [3] ) ? $methodreturnDescription : $methodReturn; - if ( (isset($methodreturnA[0]) && isset($methodreturnA[1])) && (trim(strtoupper($methodreturnA[0]) ) != strtoupper(G::LoadTranslation ( 'ID_NONE')) ) ) { - $methodReturnLabelRequired = (trim( $methodreturnA[1] ) != "" )? G::LoadTranslation ( "ID_REQUIRED_FIELD" ) : $methodreturnA[1]; - $methodReturnLabel .= "
" . trim( $methodReturnLabelRequired ) . " | " . trim($methodreturnA[0]); - } - else { - $bReturnValue = false; - $displayMode = 'display:none'; - } - $aParametersFun = $methodParameters; - $triggerWizardTemplate = PATH_TPL . 'triggers' . PATH_SEP . 'triggers_CreateWizard.html'; - $template = new TemplatePower ( $triggerWizardTemplate ); - $template->prepare (); - - $tds = ''; - $nrows = 2; - - $template->assign ( 'LIBRARY_NAME', $libraryName ); - $template->assign ( 'LIBRARY_DESCRIPTION', $libraryDescription ); - $template->assign ( 'LIBRARY_ICON', $libraryIcon ); - $template->assign ( 'LIBRARY_CLASS', $libraryClassName ); - if ($methodLink != "") { - $template->newBlock ( 'methodLink' ); - $template->assign ( 'LIBRARY_METHOD_LINK', $methodLink ); - $template->assign ( 'MORE_INFO', G::LoadTranslation ( 'ID_MORE_INFO' ) ); - $template->gotoBlock ( '_ROOT' ); - } - - $template->assign ( 'PMFUNTION', $sNameFun ); - $template->assign ( 'PMFUNTION_LABEL', $methodLabel ); - $template->assign ( 'PMFUNTION_DESCRIPTION', $methodDescription ); - $template->assign ( 'TITLE', G::LoadTranslation ( 'ID_TITLE' ) ); - $template->assign ( 'DESCRIPTION', G::LoadTranslation ( 'ID_DESCRIPTION' ) ); - $template->assign ( 'DETAILS_LABEL', G::LoadTranslation ( 'ID_DETAILS' ) ); - $template->assign ( 'RETURN_TITLE', G::LoadTranslation ( 'ID_TRIGGER_RETURN_TITLE' ) ); - if ( $bReturnValue ) { - $template->assign ( 'RETURN_LABEL', G::LoadTranslation ( 'ID_TRIGGER_RETURN_LABEL' ) ); - } - $template->assign ( 'METHOD_LABEL', G::LoadTranslation ( 'ID_METHOD' ) ); - $template->assign ( 'ROWS', sizeof ( $aParametersFun ) + 3 ); - $template->assign ( 'TRIGGER_INFORMATION', 'Trigger Information' ); - $template->assign ( 'TRIGGER_ACTION', '../triggers/triggers_WizardSave' ); - $template->assign ( 'PRO_UID', $sProUid ); - $template->assign ( 'PAGED_TABLE_ID', $aDataTrigger ['PAGED_TABLE_ID'] ); - $template->assign ( 'RETURN_DESCRIPTION', $methodReturnLabel ); - $template->assign ( 'ID_SAVE', G::LoadTranslation ( 'ID_SAVE' ) ); - $template->assign ( 'ID_CANCEL', G::LoadTranslation ( 'ID_CANCEL' ) ); - $template->assign ( 'DISPLAY_MODE', $displayMode ); - - $sPMfunction = $sNameFun . " ("; - $methodParametersOnlyNames = array (); - if (count ( $aParametersFun ) > 0) { - $template->newBlock ( 'paremetersTriggersGroup' ); - $template->assign ( 'PARAMETERS_LABEL', G::LoadTranslation ( 'ID_PARAMETERS' ) ); - foreach ( $aParametersFun as $k => $v ) { - if ($v != '') { - $aParametersFunA = explode ( "|", $v ); - $paramType = $aParametersFunA [0]; - $paramDefinition = $aParametersFunA [1]; - $paramDefinitionA = explode ( "=", $paramDefinition ); - $paramName = $paramDefinitionA [0]; - $methodParametersOnlyNames [] = $paramName; - $paramDefaultValue = isset ( $paramDefinitionA [1] ) ? $paramDefinitionA [1] : ""; - $paramLabel = isset ( $aParametersFunA [2] ) ? $aParametersFunA [2] : $paramName; - $paramDescription = isset ( $aParametersFunA [3] ) ? $aParametersFunA [3] : ""; - $sPMfunction .= ($nrows != 2) ? ', "' . trim ( str_replace ( "$", "", $paramName ) ) . '"' : '"' . trim ( str_replace ( "$", "", $paramName ) . '"' ); - $template->newBlock ( 'paremetersTriggers' ); - $template->assign ( 'LABEL_PARAMETER', $paramLabel ); - $template->assign ( 'OPT_PARAMETER', trim ( str_replace ( "$", "", $paramName ) ) ); - $sNameTag = 'form.' . trim ( str_replace ( "$", "", $paramName ) ) . '.name'; - $sNameTag = trim ( $sNameTag ); - $template->assign ( 'SNAMETAG', $sNameTag ); - $tri_Button = ""; - $template->assign ( 'ADD_TRI_VARIABLE', $tri_Button ); - $template->assign ( 'ADD_TRI_VALUE', str_replace ( "'", "", str_replace ( '"', '', $paramDefaultValue ) ) ); - $fieldDescription = ($paramDescription!="")?$paramDescription . "
":""; - $fieldDescription .= $paramDefaultValue != "" ? $paramDefaultValue . " | " . $paramType : G::LoadTranslation ( "ID_REQUIRED_FIELD" ) . " | " . $paramType; - $template->assign ( 'ADD_TRI_DESCRIPTION', $fieldDescription ); - $nrows ++; - } - } - - } - $template->gotoBlock ( '_ROOT' ); - $template->assign ( 'ALLFUNCTION', implode ( ",", $methodParametersOnlyNames ) ); - $sPMfunction .= ");"; - $content = $template->getOutputContent (); - print $content; - -} catch ( Exception $oException ) { - die ( $oException->getMessage () ); -} -unset ( $_SESSION ['PROCESS'] ); -?> +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + +try { + + G::LoadClass ( 'triggerLibrary' ); + $triggerLibrary = triggerLibrary::getSingleton (); + $libraryClassName = $_GET ['LIBRARY']; + $libraryMethod = $_GET ['NAME_FUN']; + $sProUid = $_GET ['PRO_UID']; + $libraryO = $triggerLibrary->getLibraryDefinition ( $libraryClassName ); + + $libraryName = $libraryO->info ['name']; + $libraryDescription = trim ( str_replace ( "*", "", implode ( " ", $libraryO->info ['description'] ) ) ); + $libraryIcon = isset ( $libraryO->info ['icon'] ) && ($libraryO->info ['icon'] != "") + ? $libraryO->info ['icon'] : "/images/browse.gif"; + $aDataTrigger = $_GET; + + $sProUid = $aDataTrigger ['PRO_UID']; + $sNameFun = $aDataTrigger ['NAME_FUN']; + + $methodObject = $libraryO->methods [$sNameFun]; + + $methodName = $methodObject->info ['name']; + $methodLabel = $methodObject->info ['label']; + $methodDescription = trim ( str_replace ( "*", "", implode ( " ", $methodObject->info ['description'] ) ) ); + $methodReturn = $methodObject->info ['return']; + $methodParameters = array_keys ( $methodObject->params ); + $methodLink = isset ( $methodObject->info ['link'] ) && ($methodObject->info ['link'] != "") + ? $methodObject->info ['link'] : ""; + + $methodreturnA = explode ( "|", $methodReturn ); + + $bReturnValue = true; + $displayMode = 'display:block'; + $methodreturnDescription = (trim(strtoupper($methodreturnA [3])) == strtoupper(G::LoadTranslation ( 'ID_NONE')) ) + ? G::LoadTranslation ( 'ID_NOT_REQUIRED') : $methodreturnA [3]; + $methodReturnLabel = isset ( $methodreturnA [3] ) ? $methodreturnDescription : $methodReturn; + if ( (isset($methodreturnA[0]) && isset($methodreturnA[1])) + && (trim(strtoupper($methodreturnA[0]) ) != strtoupper(G::LoadTranslation ( 'ID_NONE')) ) ) { + $methodReturnLabelRequired = (trim( $methodreturnA[1] ) != "" ) + ? G::LoadTranslation ( "ID_REQUIRED_FIELD" ) : $methodreturnA[1]; + $methodReturnLabel .= "
" . trim( $methodReturnLabelRequired ) . " | " . trim($methodreturnA[0]); + } else { + $bReturnValue = false; + $displayMode = 'display:none'; + } + $aParametersFun = $methodParameters; + $triggerWizardTemplate = PATH_TPL . 'triggers' . PATH_SEP . 'triggers_CreateWizard.html'; + $template = new TemplatePower ( $triggerWizardTemplate ); + $template->prepare (); + + $tds = ''; + $nrows = 2; + + $template->assign ( 'LIBRARY_NAME', $libraryName ); + $template->assign ( 'LIBRARY_DESCRIPTION', $libraryDescription ); + $template->assign ( 'LIBRARY_ICON', $libraryIcon ); + $template->assign ( 'LIBRARY_CLASS', $libraryClassName ); + if ($methodLink != "") { + $template->newBlock ( 'methodLink' ); + $template->assign ( 'LIBRARY_METHOD_LINK', $methodLink ); + $template->assign ( 'MORE_INFO', G::LoadTranslation ( 'ID_MORE_INFO' ) ); + $template->gotoBlock ( '_ROOT' ); + } + + $template->assign ( 'PMFUNTION', $sNameFun ); + $template->assign ( 'PMFUNTION_LABEL', $methodLabel ); + $template->assign ( 'PMFUNTION_DESCRIPTION', $methodDescription ); + $template->assign ( 'TITLE', G::LoadTranslation ( 'ID_TITLE' ) ); + $template->assign ( 'DESCRIPTION', G::LoadTranslation ( 'ID_DESCRIPTION' ) ); + $template->assign ( 'DETAILS_LABEL', G::LoadTranslation ( 'ID_DETAILS' ) ); + $template->assign ( 'RETURN_TITLE', G::LoadTranslation ( 'ID_TRIGGER_RETURN_TITLE' ) ); + if ( $bReturnValue ) { + $template->assign ( 'RETURN_LABEL', G::LoadTranslation ( 'ID_TRIGGER_RETURN_LABEL' ) ); + } + $template->assign ( 'METHOD_LABEL', G::LoadTranslation ( 'ID_METHOD' ) ); + $template->assign ( 'ROWS', sizeof ( $aParametersFun ) + 3 ); + $template->assign ( 'TRIGGER_INFORMATION', 'Trigger Information' ); + $template->assign ( 'TRIGGER_ACTION', '../triggers/triggers_WizardSave' ); + $template->assign ( 'PRO_UID', $sProUid ); + $template->assign ( 'PAGED_TABLE_ID', $aDataTrigger ['PAGED_TABLE_ID'] ); + $template->assign ( 'RETURN_DESCRIPTION', $methodReturnLabel ); + $template->assign ( 'ID_SAVE', G::LoadTranslation ( 'ID_SAVE' ) ); + $template->assign ( 'ID_CANCEL', G::LoadTranslation ( 'ID_CANCEL' ) ); + $template->assign ( 'DISPLAY_MODE', $displayMode ); + + $sPMfunction = $sNameFun . " ("; + $methodParametersOnlyNames = array (); + if (count ( $aParametersFun ) > 0) { + $template->newBlock ( 'paremetersTriggersGroup' ); + $template->assign ( 'PARAMETERS_LABEL', G::LoadTranslation ( 'ID_PARAMETERS' ) ); + foreach ($aParametersFun as $k => $v) { + if ($v != '') { + $aParametersFunA = explode ( "|", $v ); + $paramType = $aParametersFunA [0]; + $paramDefinition = $aParametersFunA [1]; + $paramDefinitionA = explode ( "=", $paramDefinition ); + $paramName = $paramDefinitionA [0]; + $methodParametersOnlyNames [] = $paramName; + $paramDefaultValue = isset ( $paramDefinitionA [1] ) ? $paramDefinitionA [1] : ""; + $paramLabel = isset ( $aParametersFunA [2] ) ? $aParametersFunA [2] : $paramName; + $paramDescription = isset ( $aParametersFunA [3] ) ? $aParametersFunA [3] : ""; + $sPMfunction .= ($nrows != 2) + ? ', "' . trim ( str_replace ( "$", "", $paramName ) ) . '"' + : '"' . trim ( str_replace ( "$", "", $paramName ) . '"' ); + + $template->newBlock ( 'paremetersTriggers' ); + $template->assign ( 'LABEL_PARAMETER', $paramLabel ); + $template->assign ( 'OPT_PARAMETER', trim ( str_replace ( "$", "", $paramName ) ) ); + $sNameTag = 'form.' . trim ( str_replace ( "$", "", $paramName ) ) . '.name'; + $sNameTag = trim ( $sNameTag ); + $template->assign ( 'SNAMETAG', $sNameTag ); + $tri_Button = ""; + + $template->assign ( 'ADD_TRI_VARIABLE', $tri_Button ); + $template->assign ( 'ADD_TRI_VALUE', + str_replace ( "'", "", str_replace ( '"', '', $paramDefaultValue ) ) ); + + $fieldDescription = ($paramDescription!="")?$paramDescription . "
":""; + $fieldDescription .= $paramDefaultValue != "" + ? $paramDefaultValue . " | " . $paramType + : G::LoadTranslation ( "ID_REQUIRED_FIELD" ) . " | " . $paramType; + $template->assign ( 'ADD_TRI_DESCRIPTION', $fieldDescription ); + $nrows ++; + } + } + + } + $template->gotoBlock ( '_ROOT' ); + $template->assign ( 'ALLFUNCTION', implode ( ",", $methodParametersOnlyNames ) ); + $sPMfunction .= ");"; + $content = $template->getOutputContent (); + print $content; + +} catch ( Exception $oException ) { + die ( $oException->getMessage () ); +} +unset ($_SESSION ['PROCESS']); + \ No newline at end of file diff --git a/workflow/engine/templates/triggers/triggers_EditWizard.php b/workflow/engine/templates/triggers/triggers_EditWizard.php index 23e8976a9..7ccbadd4a 100755 --- a/workflow/engine/templates/triggers/triggers_EditWizard.php +++ b/workflow/engine/templates/triggers/triggers_EditWizard.php @@ -1,154 +1,168 @@ -. - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - * - */ - -try { - G::LoadClass ( 'triggerLibrary' ); - $triggerLibrary = triggerLibrary::getSingleton (); - $libraryClassName = $_GET ['LIBRARY_CLASS']; - $libraryMethod = $_GET ['PMFUNTION_NAME']; - $sProUid = $_GET ['PRO_UID']; - $libraryO = $triggerLibrary->getLibraryDefinition ( $libraryClassName ); - - $libraryName = $libraryO->info ['name']; - $libraryDescription = trim ( str_replace ( "*", "", implode ( " ", $libraryO->info ['description'] ) ) ); - $libraryIcon = isset ( $libraryO->info ['icon'] ) && ($libraryO->info ['icon'] != "") ? $libraryO->info ['icon'] : "/images/browse.gif"; - $aDataTrigger = $_GET; - - $sProUid = $aDataTrigger ['PRO_UID']; - $sNameFun = $aDataTrigger ['PMFUNTION_NAME']; - - $methodObject = $libraryO->methods [$sNameFun]; - - $methodName = $methodObject->info ['name']; - $methodLabel = $methodObject->info ['label']; - $methodDescription = trim ( str_replace ( "*", "", implode ( " ", $methodObject->info ['description'] ) ) ); - $methodReturn = $methodObject->info ['return']; - $methodParameters = array_keys ( $methodObject->params ); - $methodLink = isset ( $methodObject->info ['link'] ) && ($methodObject->info ['link'] != "") ? $methodObject->info ['link'] : ""; - $methodreturnA = explode ( "|", $methodReturn ); - - $bReturnValue = true; - $displayMode = 'display:block'; - $methodreturnDescription = (trim(strtoupper($methodreturnA [3])) == strtoupper(G::LoadTranslation ( 'ID_NONE')) )? G::LoadTranslation ( 'ID_NOT_REQUIRED') : $methodreturnA [3]; - $methodReturnLabel = isset ( $methodreturnA [3] ) ? $methodreturnDescription : $methodReturn; - if ( (isset($methodreturnA[0]) && isset($methodreturnA[1])) && (trim(strtoupper($methodreturnA[0]) ) != strtoupper(G::LoadTranslation ( 'ID_NONE')) ) ) { - $methodReturnLabelRequired = (trim( $methodreturnA[1] ) != "" )? G::LoadTranslation ( "ID_REQUIRED_FIELD" ) : $methodreturnA[1]; - $methodReturnLabel .= "
" . trim( $methodReturnLabelRequired ) . " | " . trim($methodreturnA[0]); - } - else { - $bReturnValue = false; - $displayMode = 'display:none'; - } - $aParametersFun = $methodParameters; - $triggerWizardTemplate = PATH_TPL . 'triggers' . PATH_SEP . 'triggers_EditWizard.html'; - $template = new TemplatePower ( $triggerWizardTemplate ); - $template->prepare (); - - $tds = ''; - $nrows = 2; - - $template->assign ( 'LIBRARY_NAME', $libraryName ); - $template->assign ( 'LIBRARY_DESCRIPTION', $libraryDescription ); - $template->assign ( 'LIBRARY_ICON', $libraryIcon ); - $template->assign ( 'LIBRARY_CLASS', $libraryClassName ); - if ($methodLink != "") { - $template->newBlock ( 'methodLink' ); - $template->assign ( 'LIBRARY_METHOD_LINK', $methodLink ); - $template->gotoBlock ( '_ROOT' ); - } - - $template->assign ( 'PMFUNTION', $sNameFun ); - $template->assign ( 'PMFUNTION_LABEL', $methodLabel ); - $template->assign ( 'PMFUNTION_DESCRIPTION', $methodDescription ); - $template->assign ( 'TITLE', G::LoadTranslation ( 'ID_TITLE' ) ); - $template->assign ( 'TITLE_CONTENT', $_GET['TRI_TITLE'] ); - $template->assign ( 'TRI_UID', $_GET['TRI_UID'] ); - $template->assign ( 'SOURCE_LINK', G::LoadTranslation ( 'ID_TRIGGER_SOURCE_LINK' ) ); - $template->assign ( 'DESCRIPTION', G::LoadTranslation ( 'ID_DESCRIPTION' ) ); - $template->assign ( 'DESCRIPTION_CONTENT', $_GET['TRI_DESCRIPTION'] ); - $template->assign ( 'DETAILS_LABEL', G::LoadTranslation ( 'ID_DETAILS' ) ); - $template->assign ( 'RETURN_TITLE', G::LoadTranslation ( 'ID_TRIGGER_RETURN_TITLE' ) ); - if ( $bReturnValue ) { - $template->assign ( 'RETURN_LABEL', G::LoadTranslation ( 'ID_TRIGGER_RETURN_LABEL' ) ); - } - $template->assign ( 'RETURN_VALUE', $_GET['TRI_ANSWER'] ); - $template->assign ( 'METHOD_LABEL', G::LoadTranslation ( 'ID_METHOD' ) ); - $template->assign ( 'ROWS', sizeof ( $aParametersFun ) + 3 ); - $template->assign ( 'TRIGGER_INFORMATION', 'Triggers Edit Form' ); - $template->assign ( 'TRIGGER_ACTION', '../triggers/triggers_WizardUpdate' ); - $template->assign ( 'PRO_UID', $sProUid ); - $template->assign ( 'PAGED_TABLE_ID', $aDataTrigger ['PAGED_TABLE_ID'] ); - $template->assign ( 'RETURN_DESCRIPTION', $methodReturnLabel ); - $template->assign ( 'ID_SAVE', G::LoadTranslation ( 'ID_SAVE' ) ); - $template->assign ( 'ID_CANCEL', G::LoadTranslation ( 'ID_CANCEL' ) ); - $template->assign ( 'DISPLAY_MODE', $displayMode ); - - $sPMfunction = $sNameFun . " ("; - $methodParametersOnlyNames = array (); - if (count ( $aParametersFun ) > 0) { - $template->newBlock ( 'paremetersTriggersGroup' ); - $template->assign ( 'PARAMETERS_LABEL', G::LoadTranslation ( 'ID_PARAMETERS' ) ); - foreach ( $aParametersFun as $k => $v ) { - if ($v != '') { - $aParametersFunA = explode ( "|", $v ); - $paramType = $aParametersFunA [0]; - $paramDefinition = $aParametersFunA [1]; - $paramDefinitionA = explode ( "=", $paramDefinition ); - $paramName = $paramDefinitionA [0]; - $methodParametersOnlyNames [] = $paramName; - $paramDefaultValue = isset ( $paramDefinitionA [1] ) ? $paramDefinitionA [1] : ""; - $paramLabel = isset ( $aParametersFunA [2] ) ? $aParametersFunA [2] : $paramName; - $paramDescription = isset ( $aParametersFunA [3] ) ? $aParametersFunA [3] : ""; - $sPMfunction .= ($nrows != 2) ? ', "' . trim ( str_replace ( "$", "", $paramName ) ) . '"' : '"' . trim ( str_replace ( "$", "", $paramName ) . '"' ); - $template->newBlock ( 'paremetersTriggers' ); - $template->assign ( 'LABEL_PARAMETER', $paramLabel ); - $template->assign ( 'OPT_PARAMETER', trim ( str_replace ( "$", "", $paramName ) ) ); - $sNameTag = 'form.' . trim ( str_replace ( "$", "", $paramName ) ) . '.name'; - $sNameTag = trim ( $sNameTag ); - $template->assign ( 'SNAMETAG', $sNameTag ); - $tri_Button = ""; - $template->assign ( 'ADD_TRI_VARIABLE', $tri_Button ); -// $template->assign ( 'ADD_TRI_VALUE', str_replace ( "'", "", str_replace ( '"', '', $paramDefaultValue ) ) ); - $paramValue = $_GET[trim( str_replace( "$", "", $paramName ) )]; - $template->assign ( 'ADD_TRI_VALUE', str_replace("\'", "'", $paramValue) ); - $fieldDescription = ($paramDescription!="")?$paramDescription . "
":""; - $fieldDescription .= $paramDefaultValue != "" ? $paramDefaultValue . " | " . $paramType : G::LoadTranslation ( "ID_REQUIRED_FIELD" ) . " | " . $paramType; - $template->assign ( 'ADD_TRI_DESCRIPTION', $fieldDescription ); - $nrows ++; - } - } - - } - $template->gotoBlock ( '_ROOT' ); - $template->assign ( 'ALLFUNCTION', implode ( ",", $methodParametersOnlyNames ) ); - $sPMfunction .= ");"; - $content = $template->getOutputContent (); - print $content; - -} catch ( Exception $oException ) { - die ( $oException->getMessage () ); -} -unset ( $_SESSION ['PROCESS'] ); -?> \ No newline at end of file +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + +try { + G::LoadClass ( 'triggerLibrary' ); + $triggerLibrary = triggerLibrary::getSingleton (); + $libraryClassName = $_GET ['LIBRARY_CLASS']; + $libraryMethod = $_GET ['PMFUNTION_NAME']; + $sProUid = $_GET ['PRO_UID']; + $libraryO = $triggerLibrary->getLibraryDefinition ( $libraryClassName ); + + $libraryName = $libraryO->info ['name']; + $libraryDescription = trim ( str_replace ( "*", "", implode ( " ", $libraryO->info ['description'] ) ) ); + $libraryIcon = isset ( $libraryO->info ['icon'] ) && ($libraryO->info ['icon'] != "") + ? $libraryO->info ['icon'] : "/images/browse.gif"; + $aDataTrigger = $_GET; + + $sProUid = $aDataTrigger ['PRO_UID']; + $sNameFun = $aDataTrigger ['PMFUNTION_NAME']; + + $methodObject = $libraryO->methods [$sNameFun]; + + $methodName = $methodObject->info ['name']; + $methodLabel = $methodObject->info ['label']; + $methodDescription = trim ( str_replace ( "*", "", implode ( " ", $methodObject->info ['description'] ) ) ); + $methodReturn = $methodObject->info ['return']; + $methodParameters = array_keys ( $methodObject->params ); + $methodLink = isset ( $methodObject->info ['link'] ) && ($methodObject->info ['link'] != "") + ? $methodObject->info ['link'] : ""; + $methodreturnA = explode ( "|", $methodReturn ); + + $bReturnValue = true; + $displayMode = 'display:block'; + $methodreturnDescription = (trim(strtoupper($methodreturnA [3])) == strtoupper(G::LoadTranslation ( 'ID_NONE')) ) + ? G::LoadTranslation ( 'ID_NOT_REQUIRED') : $methodreturnA [3]; + $methodReturnLabel = isset ( $methodreturnA [3] ) ? $methodreturnDescription : $methodReturn; + if ( (isset($methodreturnA[0]) && isset($methodreturnA[1])) + && (trim(strtoupper($methodreturnA[0]) ) != strtoupper(G::LoadTranslation ( 'ID_NONE')) ) ) { + $methodReturnLabelRequired = (trim( $methodreturnA[1] ) != "" ) + ? G::LoadTranslation ( "ID_REQUIRED_FIELD" ) : $methodreturnA[1]; + $methodReturnLabel .= "
" . trim( $methodReturnLabelRequired ) . " | " . trim($methodreturnA[0]); + } else { + $bReturnValue = false; + $displayMode = 'display:none'; + } + $aParametersFun = $methodParameters; + $triggerWizardTemplate = PATH_TPL . 'triggers' . PATH_SEP . 'triggers_EditWizard.html'; + $template = new TemplatePower ( $triggerWizardTemplate ); + $template->prepare (); + + $tds = ''; + $nrows = 2; + + $template->assign ( 'LIBRARY_NAME', $libraryName ); + $template->assign ( 'LIBRARY_DESCRIPTION', $libraryDescription ); + $template->assign ( 'LIBRARY_ICON', $libraryIcon ); + $template->assign ( 'LIBRARY_CLASS', $libraryClassName ); + if ($methodLink != "") { + $template->newBlock ( 'methodLink' ); + $template->assign ( 'LIBRARY_METHOD_LINK', $methodLink ); + $template->gotoBlock ( '_ROOT' ); + } + + $template->assign ( 'PMFUNTION', $sNameFun ); + $template->assign ( 'PMFUNTION_LABEL', $methodLabel ); + $template->assign ( 'PMFUNTION_DESCRIPTION', $methodDescription ); + $template->assign ( 'TITLE', G::LoadTranslation ( 'ID_TITLE' ) ); + $template->assign ( 'TITLE_CONTENT', $_GET['TRI_TITLE'] ); + $template->assign ( 'TRI_UID', $_GET['TRI_UID'] ); + $template->assign ( 'SOURCE_LINK', G::LoadTranslation ( 'ID_TRIGGER_SOURCE_LINK' ) ); + $template->assign ( 'DESCRIPTION', G::LoadTranslation ( 'ID_DESCRIPTION' ) ); + $template->assign ( 'DESCRIPTION_CONTENT', $_GET['TRI_DESCRIPTION'] ); + $template->assign ( 'DETAILS_LABEL', G::LoadTranslation ( 'ID_DETAILS' ) ); + $template->assign ( 'RETURN_TITLE', G::LoadTranslation ( 'ID_TRIGGER_RETURN_TITLE' ) ); + if ( $bReturnValue ) { + $template->assign ( 'RETURN_LABEL', G::LoadTranslation ( 'ID_TRIGGER_RETURN_LABEL' ) ); + } + $template->assign ( 'RETURN_VALUE', $_GET['TRI_ANSWER'] ); + $template->assign ( 'METHOD_LABEL', G::LoadTranslation ( 'ID_METHOD' ) ); + $template->assign ( 'ROWS', sizeof ( $aParametersFun ) + 3 ); + $template->assign ( 'TRIGGER_INFORMATION', 'Triggers Edit Form' ); + $template->assign ( 'TRIGGER_ACTION', '../triggers/triggers_WizardUpdate' ); + $template->assign ( 'PRO_UID', $sProUid ); + $template->assign ( 'PAGED_TABLE_ID', $aDataTrigger ['PAGED_TABLE_ID'] ); + $template->assign ( 'RETURN_DESCRIPTION', $methodReturnLabel ); + $template->assign ( 'ID_SAVE', G::LoadTranslation ( 'ID_SAVE' ) ); + $template->assign ( 'ID_CANCEL', G::LoadTranslation ( 'ID_CANCEL' ) ); + $template->assign ( 'DISPLAY_MODE', $displayMode ); + + $sPMfunction = $sNameFun . " ("; + $methodParametersOnlyNames = array (); + if (count ( $aParametersFun ) > 0) { + $template->newBlock ( 'paremetersTriggersGroup' ); + $template->assign ( 'PARAMETERS_LABEL', G::LoadTranslation ( 'ID_PARAMETERS' ) ); + foreach ($aParametersFun as $k => $v) { + if ($v != '') { + $aParametersFunA = explode ( "|", $v ); + $paramType = $aParametersFunA [0]; + $paramDefinition = $aParametersFunA [1]; + $paramDefinitionA = explode ( "=", $paramDefinition ); + $paramName = $paramDefinitionA [0]; + $methodParametersOnlyNames [] = $paramName; + $paramDefaultValue = isset ( $paramDefinitionA [1] ) ? $paramDefinitionA [1] : ""; + $paramLabel = isset ( $aParametersFunA [2] ) ? $aParametersFunA [2] : $paramName; + $paramDescription = isset ( $aParametersFunA [3] ) ? $aParametersFunA [3] : ""; + $sPMfunction .= ($nrows != 2) + ? ', "' . trim ( str_replace ( "$", "", $paramName ) ) . '"' + : '"' . trim ( str_replace ( "$", "", $paramName ) . '"' ); + + $template->newBlock ( 'paremetersTriggers' ); + $template->assign ( 'LABEL_PARAMETER', $paramLabel ); + $template->assign ( 'OPT_PARAMETER', trim ( str_replace ( "$", "", $paramName ) ) ); + $sNameTag = 'form.' . trim ( str_replace ( "$", "", $paramName ) ) . '.name'; + $sNameTag = trim ( $sNameTag ); + $template->assign ( 'SNAMETAG', $sNameTag ); + $tri_Button = ""; + + $template->assign ( 'ADD_TRI_VARIABLE', $tri_Button ); + // $template->assign ( 'ADD_TRI_VALUE', str_replace ( "'", "", + // str_replace ( '"', '', $paramDefaultValue ) ) ); + $paramValue = $_GET[trim( str_replace( "$", "", $paramName ) )]; + $template->assign ( 'ADD_TRI_VALUE', str_replace("\'", "'", $paramValue) ); + $fieldDescription = ($paramDescription!="")?$paramDescription . "
":""; + $fieldDescription .= $paramDefaultValue != "" + ? $paramDefaultValue . " | " . $paramType + : G::LoadTranslation ( "ID_REQUIRED_FIELD" ) . " | " . $paramType; + + $template->assign ( 'ADD_TRI_DESCRIPTION', $fieldDescription ); + $nrows ++; + } + } + + } + $template->gotoBlock ( '_ROOT' ); + $template->assign ( 'ALLFUNCTION', implode ( ",", $methodParametersOnlyNames ) ); + $sPMfunction .= ");"; + $content = $template->getOutputContent (); + print $content; + +} catch ( Exception $oException ) { + die ( $oException->getMessage () ); +} +unset ( $_SESSION ['PROCESS'] ); + \ No newline at end of file