function index($httpData) { if (!isset($httpData->id)) { throw new Exception('The Process ID was not set!'); } require_once 'classes/model/Process.php'; $process = ProcessPeer::retrieveByPK($httpData->id); if (get_class($process) != 'Process') { throw new Exception("The Process with UID: {$httpData->id} doesn't exist!"); } $_SESSION['PROCESS'] = $httpData->id; $_SESSION['PROCESSMAP'] = 'BPMN'; $this->includeExtJS('bpmn/MyWorkflow', true); $this->includeExtJS('bpmn/pmosExt', true); $this->includeExtJS('bpmn/TaskContext', true); $this->includeExtJS('bpmn/designerComponents', true); $this->includeExtJS('bpmn/designer', true); $this->includeExtJS('bpmn/Annotation', true); $this->includeExtJS('bpmn/bpmnShapes', true); $this->includeExtJS('bpmn/EventEmptyStart'); $this->includeExtJS('bpmn/EventMessageStart'); $this->includeExtJS('bpmn/EventTimerStart'); $this->includeExtJS('bpmn/EventEmptyInter'); $this->includeExtJS('bpmn/EventMessageRecInter'); $this->includeExtJS('bpmn/EventMessageSendInter'); $this->includeExtJS('bpmn/EventTimerInter'); $this->includeExtJS('bpmn/EventEmptyEnd'); $this->includeExtJS('bpmn/EventMessageEnd'); $this->includeExtJS('bpmn/GatewayInclusive'); $this->includeExtJS('bpmn/GatewayExclusiveData'); $this->includeExtJS('bpmn/GatewayParallel'); $this->includeExtJS('bpmn/GridPanel'); $this->includeExtJS('bpmn/SubProcess'); $this->includeExtJS('bpmn/ProcessOptions', true); $this->includeExtJS('bpmn/ProcessMapContext', true); $this->includeExtJS('bpmn/ProcessOptions', true); $this->setJSVar('pro_uid', $httpData->id); $this->setJSVar('pro_title', $process->getProTitle()); $this->setView('bpmn/designer'); G::RenderPage('publish', 'extJs'); }
$html .= '<label for="prefix_label">' . $filter->xssFilterHard(G::LoadTranslation('ID_PREFIX')) . '</label>'; $html .= '</td>'; $html .= '<td width="25%">'; $html .= '<label for="variables_label">' . $filter->xssFilterHard(G::LoadTranslation('ID_SEARCH')) . '</label>'; $html .= '</td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td width="25%">'; $html .= '<select name="type_variables" id="type_variables">'; $html .= '<option value="all">' . $filter->xssFilterHard(G::LoadTranslation('ID_TINY_ALL_VARIABLES')) . '</option>'; $html .= '<option value="system">' . $filter->xssFilterHard(G::LoadTranslation('ID_TINY_SYSTEM_VARIABLES')) . '</option>'; $html .= '<option value="process">' . $filter->xssFilterHard(G::LoadTranslation('ID_TINY_PROCESS_VARIABLES')) . '</option>'; $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(BpmnProjectPeer::PRJ_UID); $oCriteria->add(BpmnProjectPeer::PRJ_UID, $_REQUEST['sProcess']); $oDataset = ProcessPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro')); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $row = $oDataset->getRow(); $isBpmn = false; if (isset($row["PRJ_UID"])) { $isBpmn = true; $html .= '<option value="grid">' . $filter->xssFilterHard(G::LoadTranslation('ID_TINY_GRID_VARIABLES')) . '</option>'; } $html .= '</select> '; $html .= '</td>'; $html .= '<td width="25%">'; $html .= '<select name="prefix" id="prefix">'; if ($isBpmn) { $html .= '<option value="ID_TO_STRING">@@</option>'; $html .= '<option value="ID_TO_FLOAT">@#</option>';
function getProcessArray($action, $userUid) { global $oAppCache; $processes = array(); $processes[] = array("", G::LoadTranslation("ID_ALL_PROCESS")); switch ($action) { case "simple_search": case "search": //In search action, the query to obtain all process is too slow, so we need to query directly to //process and content tables, and for that reason we need the current language in AppCacheView. G::loadClass("configuration"); $oConf = new Configurations(); $oConf->loadConfig($x, "APP_CACHE_VIEW_ENGINE", "", "", "", ""); $appCacheViewEngine = $oConf->aConfig; $lang = isset($appCacheViewEngine["LANG"]) ? $appCacheViewEngine["LANG"] : "en"; $cProcess = new Criteria("workflow"); $cProcess->clearSelectColumns(); $cProcess->addSelectColumn(ProcessPeer::PRO_UID); $cProcess->addSelectColumn(ContentPeer::CON_VALUE); $del = DBAdapter::getStringDelimiter(); $conds = array(); $conds[] = array(ProcessPeer::PRO_UID, ContentPeer::CON_ID); $conds[] = array(ContentPeer::CON_CATEGORY, $del . "PRO_TITLE" . $del); $conds[] = array(ContentPeer::CON_LANG, $del . $lang . $del); $cProcess->addJoinMC($conds, Criteria::LEFT_JOIN); $cProcess->add(ProcessPeer::PRO_STATUS, "ACTIVE"); $oDataset = ProcessPeer::doSelectRS($cProcess); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $processes[] = array($aRow["PRO_UID"], $aRow["CON_VALUE"]); $oDataset->next(); } return $processes; break; case "consolidated": default: $cProcess = $oAppCache->getToDoListCriteria($userUid); //fast enough break; } $cProcess->clearSelectColumns(); $cProcess->setDistinct(); $cProcess->addSelectColumn(AppCacheViewPeer::PRO_UID); $cProcess->addSelectColumn(AppCacheViewPeer::APP_PRO_TITLE); $oDataset = AppCacheViewPeer::doSelectRS($cProcess); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $processes[] = array($aRow["PRO_UID"], $aRow["APP_PRO_TITLE"]); $oDataset->next(); } return $processes; }
require_once 'classes/model/DbSource.php'; require_once 'classes/model/Content.php'; $G_PUBLISH = new Publisher(); G::LoadClass('processMap'); G::LoadClass('ArrayPeer'); G::LoadClass('dbConnections'); global $_DBArray; switch ($action) { case 'loadInfoAssigConnecctionDB': $oStep = new Step(); return print $oStep->loadInfoAssigConnecctionDB($_POST['PRO_UID'], $_POST['DBS_UID']); break; case 'showDbConnectionsList': $oProcess = new processMap(); $oCriteria = $oProcess->getConditionProcessList(); if (ProcessPeer::doCount($oCriteria) > 0) { $aProcesses = array(); $aProcesses[] = array('PRO_UID' => 'char', 'PRO_TITLE' => 'char'); $oDataset = ArrayBasePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $sProcessUID = ''; while ($aRow = $oDataset->getRow()) { if ($sProcessUID == '') { $sProcessUID = $aRow['PRO_UID']; } $aProcesses[] = array('PRO_UID' => isset($aRow['PRO_UID']) ? $aRow['PRO_UID'] : '', 'PRO_TITLE' => isset($aRow['PRO_TITLE']) ? $aRow['PRO_TITLE'] : ''); $oDataset->next(); } $_DBArray['PROCESSES'] = $aProcesses; $_SESSION['_DBArray'] = $_DBArray;
/** * get all groups * * @param none * @return $result will return an object */ public function processList () { try { $result = array (); $oCriteria = new Criteria( 'workflow' ); //$oCriteria->add(ProcessPeer::PRO_STATUS , 'ACTIVE'); $oCriteria->add( ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL ); $oDataset = ProcessPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oProcess = new Process(); $arrayProcess = $oProcess->Load( $aRow['PRO_UID'] ); $result[] = array ('guid' => $aRow['PRO_UID'],'name' => $arrayProcess['PRO_TITLE'] ); $oDataset->next(); } return $result; } catch (Exception $e) { $result[] = array ('guid' => $e->getMessage(),'name' => $e->getMessage() ); return $result; } }
public function listLanguage($dyn_uid) { $list = array(); $a = new Criteria("workflow"); $a->addSelectColumn(DynaformPeer::DYN_LABEL); $a->add(DynaformPeer::DYN_UID, $dyn_uid, Criteria::EQUAL); $ds = ProcessPeer::doSelectRS($a); $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC); $ds->next(); $row = $ds->getRow(); if ($row["DYN_LABEL"] === null || $row["DYN_LABEL"] === "") { return $list; } $dyn_label = \G::json_decode($row["DYN_LABEL"]); foreach ($dyn_label as $key => $value) { array_push($list, array( "Lang" => $key, "File-Name" => isset($value->{"File-Name"}) ? $value->{"File-Name"} : "", "Project-Id-Version" => isset($value->{"Project-Id-Version"}) ? $value->{"Project-Id-Version"} : "", "POT-Creation-Date" => isset($value->{"POT-Creation-Date"}) ? $value->{"POT-Creation-Date"} : "", "PO-Revision-Date" => isset($value->{"PO-Revision-Date"}) ? $value->{"PO-Revision-Date"} : "", "Last-Translator" => isset($value->{"Last-Translator"}) ? $value->{"Last-Translator"} : "", "Language-Team" => isset($value->{"Language-Team"}) ? $value->{"Language-Team"} : "", "MIME-Version" => isset($value->{"MIME-Version"}) ? $value->{"MIME-Version"} : "", "Content-Type" => isset($value->{"Content-Type"}) ? $value->{"Content-Type"} : "", "Content-Transfer_Encoding" => isset($value->{"Content-Transfer_Encoding"}) ? $value->{"Content-Transfer_Encoding"} : "", "X-Poedit-Language" => isset($value->{"X-Poedit-Language"}) ? $value->{"X-Poedit-Language"} : "", "X-Poedit-Country" => isset($value->{"X-Poedit-Country"}) ? $value->{"X-Poedit-Country"} : "", "X-Poedit-SourceCharset" => isset($value->{"X-Poedit-SourceCharset"}) ? $value->{"X-Poedit-SourceCharset"} : "", "Content-Transfer-Encoding" => isset($value->{"Content-Transfer-Encoding"}) ? $value->{"Content-Transfer-Encoding"} : "" )); } return $list; }
/** * PROPFIND method handler * * @param array general parameter passing array * @param array return array for file properties * @return bool true on success */ function PROPFIND(&$options, &$files) { $paths = $this->paths; // prepare property array $files["files"] = array(); $pathClasses = PATH_DB . PATH_SEP . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP; if (count($paths) == 0 && is_dir($pathClasses)) { $props = array(); $props[] = $this->mkprop("displayname", 'Classes'); $props[] = $this->mkprop("creationdate", filectime($pathClasses)); $props[] = $this->mkprop("getlastmodified", filemtime($pathClasses)); $props[] = $this->mkprop("lastaccessed", filemtime($pathClasses)); $props[] = $this->mkprop("resourcetype", 'collection'); $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory'); $files["files"][] = array('path' => 'classes', 'props' => $props); } if (count($paths) > 0 && $paths[0] == 'classes' && is_dir($pathClasses)) { // try to open directory $handle = @opendir($pathClasses); if ($handle) { while ($filename = readdir($handle)) { $ext = array_pop(explode('.', $filename)); if ($filename != "." && $filename != ".." && !is_dir($pathClasses . $filename) && $ext == 'php') { $props = array(); $props[] = $this->mkprop("displayname", $filename); $props[] = $this->mkprop("creationdate", filectime($pathClasses . $filename)); $props[] = $this->mkprop("getlastmodified", filemtime($pathClasses . $filename)); $props[] = $this->mkprop("getetag", fileatime($pathClasses . $filename)); $props[] = $this->mkprop("lastaccessed", filemtime($pathClasses . $filename)); $props[] = $this->mkprop("resourcetype", ''); $props[] = $this->mkprop("getcontenttype", 'text/plain'); $props[] = $this->mkprop("getcontentlength", filesize($pathClasses . $filename)); if (count($paths) == 1 || count($paths) == 2 && $paths[1] == $filename) { $files["files"][] = array('path' => "classes/{$filename}", 'props' => $props); } } } } } //path classes $pathProcesses = PATH_DB . SYS_SYS . PATH_SEP; if (count($paths) == 0 && is_dir($pathProcesses)) { $props = array(); $props[] = $this->mkprop("displayname", 'Processes'); $props[] = $this->mkprop("creationdate", filectime($pathProcesses)); $props[] = $this->mkprop("getlastmodified", filemtime($pathProcesses)); $props[] = $this->mkprop("resourcetype", 'collection'); $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory'); $files["files"][] = array('path' => 'processes', 'props' => $props); } //list all active processes if (count($paths) == 1 && $paths[0] == 'processes' && is_dir($pathProcesses)) { // try to get the process directory list G::LoadClass('processMap'); G::LoadClass('model/Process'); $oProcessMap = new processMap(); $oProcess = new Process(); $c = $oProcessMap->getConditionProcessList(); $oDataset = ProcessPeer::doSelectRS($c); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($aRow['PRO_STATUS'] == 'ACTIVE') { $aProcess = $oProcess->load($aRow['PRO_UID']); $props = array(); $props[] = $this->mkprop("displayname", $aProcess['PRO_TITLE']); $props[] = $this->mkprop("creationdate", filectime($pathProcesses)); $props[] = $this->mkprop("getlastmodified", filemtime($pathProcesses)); $props[] = $this->mkprop("lastaccessed", filemtime($pathProcesses)); $props[] = $this->mkprop("resourcetype", 'collection'); $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory'); $files["files"][] = array('path' => "processes/" . $aRow['PRO_UID'], 'props' => $props); } $oDataset->next(); } } //dir of processes //content of any process ( the three major folders of Processes ) $pathXmlform = $pathProcesses . 'xmlForms' . PATH_SEP; if (count($paths) == 2 && $paths[0] == 'processes' && is_dir($pathProcesses)) { $props = array(); $props[] = $this->mkprop("displayname", 'xmlforms'); $props[] = $this->mkprop("creationdate", filectime($pathXmlform)); $props[] = $this->mkprop("getlastmodified", filemtime($pathXmlform)); $props[] = $this->mkprop("lastaccessed", filemtime($pathXmlform)); $props[] = $this->mkprop("resourcetype", 'collection'); $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory'); $files["files"][] = array('path' => 'processes/' . $paths[1] . '/xmlforms', 'props' => $props); $props[] = $this->mkprop("displayname", 'mailTemplates'); $props[] = $this->mkprop("creationdate", filectime($pathProcesses)); $props[] = $this->mkprop("getlastmodified", filemtime($pathProcesses)); $props[] = $this->mkprop("lastaccessed", filemtime($pathProcesses)); $props[] = $this->mkprop("resourcetype", 'collection'); $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory'); $files["files"][] = array('path' => 'processes/' . $paths[1] . '/mailTemplates', 'props' => $props); $props[] = $this->mkprop("displayname", 'public_html'); $props[] = $this->mkprop("creationdate", filectime($pathProcesses)); $props[] = $this->mkprop("getlastmodified", filemtime($pathProcesses)); $props[] = $this->mkprop("lastaccessed", filemtime($pathProcesses)); $props[] = $this->mkprop("resourcetype", 'collection'); $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory'); $files["files"][] = array('path' => 'processes/' . $paths[1] . '/public_html', 'props' => $props); } //content of any processes //list available xmlforms if (count($paths) == 3 && $paths[0] == 'processes' && $paths[2] == 'xmlforms' && is_dir($pathXmlform)) { $pathXmlform = $pathProcesses . 'xmlForms' . PATH_SEP . $paths[1] . PATH_SEP; $handle = @opendir($pathXmlform); if ($handle) { while ($filename = readdir($handle)) { $ext = array_pop(explode('.', $filename)); if ($filename != "." && $filename != ".." && !is_dir($pathXmlform . $filename) && ($ext == 'xml' || $ext == 'html')) { $props = array(); $props[] = $this->mkprop("displayname", $filename); $props[] = $this->mkprop("creationdate", filectime($pathXmlform . $filename)); $props[] = $this->mkprop("getlastmodified", filemtime($pathXmlform . $filename)); $props[] = $this->mkprop("getetag", fileatime($pathXmlform . $filename)); $props[] = $this->mkprop("lastaccessed", filemtime($pathXmlform . $filename)); $props[] = $this->mkprop("resourcetype", ''); $props[] = $this->mkprop("getcontenttype", 'text/plain'); $props[] = $this->mkprop("getcontentlength", filesize($pathXmlform . $filename)); //if ( count( $paths ) == 1 || ( count( $paths ) == 2 && $paths[1] == $filename ) ) $files["files"][] = array('path' => 'processes/' . $paths[1] . '/xmlforms/' . $filename, 'props' => $props); } } } } //content of xmlforms //list available mailTemplates $pathTemplates = $pathProcesses . 'mailTemplates' . PATH_SEP; if (count($paths) == 3 && $paths[0] == 'processes' && $paths[2] == 'mailTemplates' && is_dir($pathTemplates)) { $pathTemplates = $pathProcesses . 'mailTemplates' . PATH_SEP . $paths[1] . PATH_SEP; $handle = @opendir($pathTemplates); if ($handle) { while ($filename = readdir($handle)) { $ext = array_pop(explode('.', $filename)); if ($filename != "." && $filename != ".." && !is_dir($pathTemplates . $filename)) { $props = array(); $props[] = $this->mkprop("displayname", $filename); $props[] = $this->mkprop("creationdate", filectime($pathTemplates . $filename)); $props[] = $this->mkprop("getlastmodified", filemtime($pathTemplates . $filename)); $props[] = $this->mkprop("getetag", fileatime($pathTemplates . $filename)); $props[] = $this->mkprop("lastaccessed", filemtime($pathTemplates . $filename)); $props[] = $this->mkprop("resourcetype", ''); $props[] = $this->mkprop("getcontenttype", 'text/plain'); $props[] = $this->mkprop("getcontentlength", filesize($pathTemplates . $filename)); //if ( count( $paths ) == 1 || ( count( $paths ) == 2 && $paths[1] == $filename ) ) $files["files"][] = array('path' => 'processes/' . $paths[1] . '/mailTemplates/' . $filename, 'props' => $props); } } } } //content of mailTemplates //list available public_html files $pathPublic = $pathProcesses . 'public' . PATH_SEP; if (count($paths) == 3 && $paths[0] == 'processes' && $paths[2] == 'public_html' && is_dir($pathTemplates)) { $pathPublic = $pathProcesses . 'public' . PATH_SEP . $paths[1] . PATH_SEP; $handle = @opendir($pathPublic); if ($handle) { while ($filename = readdir($handle)) { $ext = array_pop(explode('.', $filename)); if ($filename != "." && $filename != ".." && !is_dir($pathPublic . $filename)) { $props = array(); $props[] = $this->mkprop("displayname", $filename); $props[] = $this->mkprop("creationdate", filectime($pathPublic . $filename)); $props[] = $this->mkprop("getlastmodified", filemtime($pathPublic . $filename)); $props[] = $this->mkprop("getetag", fileatime($pathPublic . $filename)); $props[] = $this->mkprop("lastaccessed", filemtime($pathPublic . $filename)); $props[] = $this->mkprop("resourcetype", ''); $props[] = $this->mkprop("getcontenttype", 'text/plain'); $props[] = $this->mkprop("getcontentlength", filesize($pathPublic . $filename)); //if ( count( $paths ) == 1 || ( count( $paths ) == 2 && $paths[1] == $filename ) ) $files["files"][] = array('path' => 'processes/' . $paths[1] . '/public_html/' . $filename, 'props' => $props); } } } } //content of public_html files /* if ( 1 ) { $props = array (); $props[] = $this->mkprop("displayname", print_r ($pathPublic, 1) ); $props[] = $this->mkprop("creationdate", filectime( PATH_DB ) ); $props[] = $this->mkprop("getlastmodified", filemtime( PATH_DB ) ); $props[] = $this->mkprop("resourcetype", 'collection' ); $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory' ); $files["files"][] = array ( 'path' => '/' , 'props' => $props); } */ // ok, all done return true; }
/** * Will return all the information of a WS. * - Status * - # of cases * - # of processes * - # of users * @param string $wsName * @return array */ function getWorkspaceInfo($wsName) { $aResult = array('num_processes' => '0', 'num_cases' => '0'); $result = array(); require_once 'classes/model/Process.php'; require_once 'classes/model/Application.php'; require_once 'classes/model/Users.php'; $Criteria = new Criteria('workflow'); $Criteria->add(ProcessPeer::PRO_STATUS, 'ACTIVE', CRITERIA::EQUAL); $aResult['num_processes'] = ProcessPeer::doCount($Criteria); $Criteria = new Criteria('workflow'); $Criteria->add(ApplicationPeer::APP_STATUS, 'COMPLETED', CRITERIA::NOT_EQUAL); $aResult['num_cases'] = ApplicationPeer::doCount($Criteria); $Criteria = new Criteria('workflow'); $Criteria->add(UsersPeer::USR_STATUS, array('DELETED', 'DISABLED'), CRITERIA::NOT_IN); $aResult['num_users'] = UsersPeer::doCount($Criteria); return $aResult; }
/** * Function updateTables * This function updated the Report Tables * * @access public * @param string $sProcessUid * @param string $sApplicationUid * @param string $iApplicationNumber * @param string $aFields * @return void */ public function updateTables($sProcessUid, $sApplicationUid, $iApplicationNumber, $aFields) { try { $c = new Criteria('workflow'); $c->addSelectColumn(BpmnProjectPeer::PRJ_UID); $c->add(BpmnProjectPeer::PRJ_UID, $sProcessUid, Criteria::EQUAL); $ds = ProcessPeer::doSelectRS($c); $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC); $ds->next(); $row = $ds->getRow(); $isBpmn = isset($row['PRJ_UID']); if (!class_exists('ReportTablePeer')) { require_once 'classes/model/ReportTablePeer.php'; } //get all Active Report Tables $oCriteria = new Criteria('workflow'); $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUid); $oCriteria->add(ReportTablePeer::REP_TAB_STATUS, 'ACTIVE'); $oDataset = ReportTablePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aVars = array(); while ($aRow = $oDataset->getRow()) { $aRow['REP_TAB_NAME'] = $this->sPrefix . $aRow['REP_TAB_NAME']; $PropelDatabase = $this->chooseDB($aRow['REP_TAB_CONNECTION']); $con = Propel::getConnection($PropelDatabase); $stmt = $con->createStatement(); switch (DB_ADAPTER) { case 'mysql': $aTableFields = $this->getTableVars($aRow['REP_TAB_UID'], true); if ($aRow['REP_TAB_TYPE'] == 'NORMAL') { $sqlExists = "SELECT * FROM `" . $aRow['REP_TAB_NAME'] . "` WHERE APP_UID = '" . $sApplicationUid . "'"; $rsExists = $stmt->executeQuery($sqlExists, ResultSet::FETCHMODE_ASSOC); $rsExists->next(); $aRow2 = $rsExists->getRow(); if (is_array($aRow2)) { $sQuery = 'UPDATE `' . $aRow['REP_TAB_NAME'] . '` SET '; foreach ($aTableFields as $aField) { $sQuery .= '`' . $aField['sFieldName'] . '` = '; if (!$isBpmn && !isset($aFields[$aField['sFieldName']])) { foreach ($aFields as $row) { if (is_array($row) && isset($row[count($row)])) { $aFields = $row[count($row)]; } } } switch ($aField['sType']) { case 'number': $sQuery .= (isset($aFields[$aField['sFieldName']]) ? (double) str_replace(',', '', $aFields[$aField['sFieldName']]) : '0') . ','; break; case 'char': case 'text': if (!isset($aFields[$aField['sFieldName']])) { $aFields[$aField['sFieldName']] = ''; } if (!isset($aFields[$aField['sFieldName'] . '_label'])) { $aFields[$aField['sFieldName'] . '_label'] = ''; } if (is_array($aFields[$aField['sFieldName']])) { $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']][0] : '') . "',"; } else { if (!isset($aFields[$aField['sFieldName'] . '_label'])) { $aFields[$aField['sFieldName'] . '_label'] = ''; } if ($aFields[$aField['sFieldName']] == $aFields[$aField['sFieldName'] . '_label']) { $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? @mysql_real_escape_string($aFields[$aField['sFieldName']]) : '') . "',"; } else { $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? @mysql_real_escape_string($aFields[$aField['sFieldName'] . '_label']) : '') . "',"; } } break; case 'date': $mysqlDate = isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']] : ''; if ($mysqlDate != '') { $mysqlDate = str_replace('/', '-', $mysqlDate); $mysqlDate = date('Y-m-d', strtotime($mysqlDate)); } $value = trim($mysqlDate) != '' ? "'" . $mysqlDate . "'" : 'NULL'; $sQuery .= $value . ","; break; } } $sQuery = substr($sQuery, 0, -1); $sQuery .= " WHERE APP_UID = '" . $sApplicationUid . "'"; } else { $sQuery = 'INSERT INTO `' . $aRow['REP_TAB_NAME'] . '` ('; $sQuery .= '`APP_UID`,`APP_NUMBER`'; foreach ($aTableFields as $aField) { $sQuery .= ',`' . $aField['sFieldName'] . '`'; } $sQuery .= ") VALUES ('" . $sApplicationUid . "'," . (int) $iApplicationNumber; foreach ($aTableFields as $aField) { switch ($aField['sType']) { case 'number': $sQuery .= ',' . (isset($aFields[$aField['sFieldName']]) ? (double) str_replace(',', '', $aFields[$aField['sFieldName']]) : '0'); break; case 'char': case 'text': if (!isset($aFields[$aField['sFieldName']])) { $aFields[$aField['sFieldName']] = ''; } $sQuery .= ",'" . (isset($aFields[$aField['sFieldName']]) ? mysql_real_escape_string($aFields[$aField['sFieldName']]) : '') . "'"; break; case 'date': $mysqlDate = isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']] : ''; if ($mysqlDate != '') { $mysqlDate = str_replace('/', '-', $mysqlDate); $mysqlDate = date('Y-m-d', strtotime($mysqlDate)); } $value = trim($mysqlDate) != '' ? "'" . $mysqlDate . "'" : 'NULL'; $sQuery .= "," . $value; break; } } $sQuery .= ')'; } $rs = $stmt->executeQuery($sQuery); } else { //remove old rows from database $sqlDelete = 'DELETE FROM `' . $aRow['REP_TAB_NAME'] . "` WHERE APP_UID = '" . $sApplicationUid . "'"; $rsDelete = $stmt->executeQuery($sqlDelete); $aAux = explode('-', $aRow['REP_TAB_GRID']); if (isset($aFields[$aAux[0]])) { if (is_array($aFields[$aAux[0]])) { foreach ($aFields[$aAux[0]] as $iRow => $aGridRow) { $sQuery = 'INSERT INTO `' . $aRow['REP_TAB_NAME'] . '` ('; $sQuery .= '`APP_UID`,`APP_NUMBER`,`ROW`'; foreach ($aTableFields as $aField) { $sQuery .= ',`' . $aField['sFieldName'] . '`'; } $sQuery .= ") VALUES ('" . $sApplicationUid . "'," . (int) $iApplicationNumber . ',' . $iRow; foreach ($aTableFields as $aField) { switch ($aField['sType']) { case 'number': $sQuery .= ',' . (isset($aGridRow[$aField['sFieldName']]) ? (double) str_replace(',', '', $aGridRow[$aField['sFieldName']]) : '0'); break; case 'char': case 'text': if (!isset($aGridRow[$aField['sFieldName']])) { $aGridRow[$aField['sFieldName']] = ''; } $sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? mysql_real_escape_string($aGridRow[$aField['sFieldName']]) : '') . "'"; break; case 'date': $sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? $aGridRow[$aField['sFieldName']] : '') . "'"; break; } } $sQuery .= ')'; $rs = $stmt->executeQuery($sQuery); } } } } break; /** * For SQLServer code */ /** * For SQLServer code */ case 'mssql': $aTableFields = $this->getTableVars($aRow['REP_TAB_UID'], true); if ($aRow['REP_TAB_TYPE'] == 'NORMAL') { $oDataset2 = mssql_query("SELECT * FROM [" . $aRow['REP_TAB_NAME'] . "] WHERE APP_UID = '" . $sApplicationUid . "'"); if ($aRow2 = mssql_fetch_row($oDataset2)) { $sQuery = 'UPDATE [' . $aRow['REP_TAB_NAME'] . '] SET '; foreach ($aTableFields as $aField) { $sQuery .= '[' . $aField['sFieldName'] . '] = '; switch ($aField['sType']) { case 'number': $sQuery .= (isset($aFields[$aField['sFieldName']]) ? (double) str_replace(',', '', $aFields[$aField['sFieldName']]) : '0') . ','; break; case 'char': case 'text': if (!isset($aFields[$aField['sFieldName']])) { $aFields[$aField['sFieldName']] = ''; } $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? mysql_real_escape_string($aFields[$aField['sFieldName']]) : '') . "',"; break; case 'date': $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']] : '') . "',"; break; } } $sQuery = substr($sQuery, 0, -1); $sQuery .= " WHERE APP_UID = '" . $sApplicationUid . "'"; } else { $sQuery = 'INSERT INTO [' . $aRow['REP_TAB_NAME'] . '] ('; $sQuery .= '[APP_UID],[APP_NUMBER]'; foreach ($aTableFields as $aField) { $sQuery .= ',[' . $aField['sFieldName'] . ']'; } $sQuery .= ") VALUES ('" . $sApplicationUid . "'," . (int) $iApplicationNumber; foreach ($aTableFields as $aField) { switch ($aField['sType']) { case 'number': $sQuery .= ',' . (isset($aFields[$aField['sFieldName']]) ? (double) str_replace(',', '', $aFields[$aField['sFieldName']]) : '0'); break; case 'char': case 'text': if (!isset($aFields[$aField['sFieldName']])) { $aFields[$aField['sFieldName']] = ''; } $sQuery .= ",'" . (isset($aFields[$aField['sFieldName']]) ? mysql_real_escape_string($aFields[$aField['sFieldName']]) : '') . "'"; break; case 'date': $sQuery .= ",'" . (isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']] : '') . "'"; break; } } $sQuery .= ')'; } $rs = $stmt->executeQuery($sQuery); } else { mysql_query('DELETE FROM [' . $aRow['REP_TAB_NAME'] . "] WHERE APP_UID = '" . $sApplicationUid . "'"); $aAux = explode('-', $aRow['REP_TAB_GRID']); if (isset($aFields[$aAux[0]])) { foreach ($aFields[$aAux[0]] as $iRow => $aGridRow) { $sQuery = 'INSERT INTO [' . $aRow['REP_TAB_NAME'] . '] ('; $sQuery .= '[APP_UID],[APP_NUMBER],[ROW]'; foreach ($aTableFields as $aField) { $sQuery .= ',[' . $aField['sFieldName'] . ']'; } $sQuery .= ") VALUES ('" . $sApplicationUid . "'," . (int) $iApplicationNumber . ',' . $iRow; foreach ($aTableFields as $aField) { switch ($aField['sType']) { case 'number': $sQuery .= ',' . (isset($aGridRow[$aField['sFieldName']]) ? (double) str_replace(',', '', $aGridRow[$aField['sFieldName']]) : '0'); break; case 'char': case 'text': if (!isset($aGridRow[$aField['sFieldName']])) { $aGridRow[$aField['sFieldName']] = ''; } $sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? mysql_real_escape_string($aGridRow[$aField['sFieldName']]) : '') . "'"; break; case 'date': $sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? $aGridRow[$aField['sFieldName']] : '') . "'"; break; } } $sQuery .= ')'; $rs = $stmt->executeQuery($sQuery); } } } break; } $oDataset->next(); } } catch (Exception $oError) { throw $oError; } }
/** * @param $action * @param $categoryUid * @param $userUid * @return array * @throws \PropelException */ public function getProcessList ($action, $categoryUid, $userUid) { //$action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : null; //$categoryUid = isset( $_REQUEST['CATEGORY_UID'] ) ? $_REQUEST['CATEGORY_UID'] : null; //$userUid = (isset( $_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '') ? $_SESSION['USER_LOGGED'] : null; // global $oAppCache; $oAppCache = new \AppCacheView(); $processes = array (); $processes[] = array ('',G::LoadTranslation( 'ID_ALL_PROCESS' )); //get the list based in the action provided switch ($action) { case 'draft': $cProcess = $oAppCache->getDraftListCriteria( $userUid ); //fast enough break; case 'sent': $cProcess = $oAppCache->getSentListProcessCriteria( $userUid ); // fast enough break; case 'simple_search': case 'search': //in search action, the query to obtain all process is too slow, so we need to query directly to //process and content tables, and for that reason we need the current language in AppCacheView. G::loadClass( 'configuration' ); $oConf = new \Configurations(); $oConf->loadConfig( $x, 'APP_CACHE_VIEW_ENGINE', '', '', '', '' ); $appCacheViewEngine = $oConf->aConfig; $lang = isset( $appCacheViewEngine['LANG'] ) ? $appCacheViewEngine['LANG'] : 'en'; $cProcess = new Criteria( 'workflow' ); $cProcess->clearSelectColumns(); $cProcess->addSelectColumn( \ProcessPeer::PRO_UID ); $cProcess->addSelectColumn( \ContentPeer::CON_VALUE ); if ($categoryUid) { $cProcess->add( \ProcessPeer::PRO_CATEGORY, $categoryUid ); } $del = DBAdapter::getStringDelimiter(); $conds = array (); $conds[] = array (ProcessPeer::PRO_UID,ContentPeer::CON_ID); $conds[] = array (ContentPeer::CON_CATEGORY,$del . 'PRO_TITLE' . $del); $conds[] = array (ContentPeer::CON_LANG,$del . $lang . $del); $cProcess->addJoinMC( $conds, Criteria::LEFT_JOIN ); $cProcess->add( ProcessPeer::PRO_STATUS, 'ACTIVE' ); $cProcess->addAscendingOrderByColumn(ContentPeer::CON_VALUE); $oDataset = ProcessPeer::doSelectRS( $cProcess ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $processes[] = array ($aRow['PRO_UID'],$aRow['CON_VALUE'] ); $oDataset->next(); } return print G::json_encode( $processes ); break; case 'unassigned': $cProcess = $oAppCache->getUnassignedListCriteria( $userUid ); break; case 'paused': $cProcess = $oAppCache->getPausedListCriteria( $userUid ); break; case 'to_revise': $cProcess = $oAppCache->getToReviseListCriteria( $userUid ); break; case 'to_reassign': $cProcess = $oAppCache->getToReassignListCriteria($userUid); break; case 'gral': $cProcess = $oAppCache->getGeneralListCriteria(); break; case 'todo': default: $cProcess = $oAppCache->getToDoListCriteria( $userUid ); //fast enough break; } //get the processes for this user in this action $cProcess->clearSelectColumns(); $cProcess->addSelectColumn( \AppCacheViewPeer::PRO_UID ); $cProcess->addSelectColumn( \AppCacheViewPeer::APP_PRO_TITLE ); $cProcess->setDistinct( \AppCacheViewPeer::PRO_UID ); if ($categoryUid) { require_once 'classes/model/Process.php'; $cProcess->addAlias( 'CP', 'PROCESS' ); $cProcess->add( 'CP.PRO_CATEGORY', $categoryUid, Criteria::EQUAL ); $cProcess->addJoin( \AppCacheViewPeer::PRO_UID, 'CP.PRO_UID', Criteria::LEFT_JOIN ); $cProcess->addAsColumn( 'CATEGORY_UID', 'CP.PRO_CATEGORY' ); } $cProcess->addAscendingOrderByColumn(\AppCacheViewPeer::APP_PRO_TITLE); $oDataset = \AppCacheViewPeer::doSelectRS( $cProcess, \Propel::getDbConnection('workflow_ro') ); $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $processes[] = array ($aRow['PRO_UID'],$aRow['APP_PRO_TITLE'] ); $oDataset->next(); } return $processes; }
</script>'); } try { if ($_GET['APP_UID'] !== $_SESSION['APPLICATION']) { throw new Exception( G::LoadTranslation( 'ID_INVALID_APPLICATION_ID_MSG', array ('<a href=\'' . $_SERVER['HTTP_REFERER'] . '\'>{1}</a>',G::LoadTranslation( 'ID_REOPEN' ) ) ) ); } /* * PMDynaform * DYN_VERSION is 1: classic Dynaform, * DYN_VERSION is 2: responsive form, Pmdynaform. */ $a = new Criteria("workflow"); $a->addSelectColumn(DynaformPeer::DYN_VERSION); $a->add(DynaformPeer::DYN_UID, $_GET['UID'], Criteria::EQUAL); $a = ProcessPeer::doSelectRS($a); $a->setFetchmode(ResultSet::FETCHMODE_ASSOC); $a->next(); $row = $a->getRow(); $swpmdynaform = isset($row) && $row["DYN_VERSION"] == 2; if ($swpmdynaform) { $pmdynaform = $_POST["form"]; } $oForm = new Form( $_SESSION["PROCESS"] . "/" . $_GET["UID"], PATH_DYNAFORM ); $oForm->validatePost(); //Includes G::LoadClass( "case" ); //Load the variables
function getAllProcessesByCategory() { $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(ProcessPeer::PRO_CATEGORY); $oCriteria->addSelectColumn('COUNT(*) AS CNT'); $oCriteria->addGroupByColumn(ProcessPeer::PRO_CATEGORY); $oDataSet = ProcessPeer::doSelectRS($oCriteria); $oDataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC); $aProc = array(); while ($oDataSet->next()) { $row = $oDataSet->getRow(); $aProc[$row['PRO_CATEGORY']] = $row['CNT']; } return $aProc; }
/** * Verify if exists the title of a Process * * @param string $processTitle Title * @param string $processUidExclude Unique id of Process to exclude * * return bool Return true if exists the title of a Process, false otherwise */ public function existsTitle($processTitle, $processUidExclude = "") { try { $delimiter = \DBAdapter::getStringDelimiter(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\ProcessPeer::PRO_UID); $criteria->addAlias("CT", \ContentPeer::TABLE_NAME); $arrayCondition = array(); $arrayCondition[] = array(\ProcessPeer::PRO_UID, "CT.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "PRO_TITLE" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); if ($processUidExclude != "") { $criteria->add(\ProcessPeer::PRO_UID, $processUidExclude, \Criteria::NOT_EQUAL); } $criteria->add("CT.CON_VALUE", $processTitle, \Criteria::EQUAL); $rsCriteria = \ProcessPeer::doSelectRS($criteria); if ($rsCriteria->next()) { return true; } else { return false; } } catch (\Exception $e) { throw $e; } }
/** * Function getDynaformsVars * * @access public * @param eter string $sProcessUID * @param eter boolean $bSystemVars * @return array */ function getDynaformsVars ($sProcessUID, $typeVars = 'all', $bIncMulSelFields = 0) { $aFields = array (); $aFieldsNames = array (); if ($typeVars == 'system' || $typeVars == 'all') { $aAux = G::getSystemConstants(); foreach ($aAux as $sName => $sValue) { $aFields[] = array ('sName' => $sName,'sType' => 'system','sLabel' => G::LoadTranslation('ID_TINY_SYSTEM_VARIABLES')); } //we're adding the ping variable to the system list $aFields[] = array ('sName' => 'PIN','sType' => 'system','sLabel' => G::LoadTranslation('ID_TINY_SYSTEM_VARIABLES')); } $aInvalidTypes = array("title", "subtitle", "file", "button", "reset", "submit", "javascript", "pmconnection"); $aMultipleSelectionFields = array("listbox", "checkgroup"); if ($bIncMulSelFields != 0) { $aInvalidTypes = array_merge( $aInvalidTypes, $aMultipleSelectionFields ); } // getting bpmn projects $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(BpmnProjectPeer::PRJ_UID); $oCriteria->add(BpmnProjectPeer::PRJ_UID, $sProcessUID); $oDataset = ProcessPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro')); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $row = $oDataset->getRow(); if (isset($row["PRJ_UID"])) { if($typeVars == 'process' || $typeVars == 'all') { $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_UID); $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_NAME); $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_FIELD_TYPE); $oCriteria->add(ProcessVariablesPeer::PRJ_UID, $sProcessUID); $oDataset = DynaformPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); while ($oDataset->next()) { $row = $oDataset->getRow(); array_push($aFields, array( "sName" => $row["VAR_NAME"], "sType" => $row["VAR_FIELD_TYPE"], "sLabel" => $row["VAR_FIELD_TYPE"] )); } } if($typeVars == 'grid' || $typeVars == 'all') { $oC = new Criteria( 'workflow' ); $oC->addSelectColumn( DynaformPeer::DYN_CONTENT ); $oC->add( DynaformPeer::PRO_UID, $sProcessUID ); $oC->add( DynaformPeer::DYN_TYPE, 'xmlform' ); $oData = DynaformPeer::doSelectRS( $oC ); $oData->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oData->next(); while ($aRowd = $oData->getRow()) { $dynaform = G::json_decode($aRowd['DYN_CONTENT'],true); if(is_array($dynaform) && sizeof($dynaform)) { $items = $dynaform['items'][0]['items']; foreach($items as $key => $val){ if($val[0]['type'] == 'grid'){ if(sizeof($val[0]['columns'])) { $columns = $val[0]['columns']; foreach($columns as $column) { array_push($aFields, array( "sName" => $column['name'], "sType" => $column['type'], "sLabel" => $column['type'] )); } } } } } $oData->next(); } } } else { require_once 'classes/model/Dynaform.php'; $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( DynaformPeer::DYN_FILENAME ); $oCriteria->add( DynaformPeer::PRO_UID, $sProcessUID ); $oCriteria->add( DynaformPeer::DYN_TYPE, 'xmlform' ); $oDataset = DynaformPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if (file_exists( PATH_DYNAFORM . PATH_SEP . $aRow['DYN_FILENAME'] . '.xml' )) { $G_FORM = new Form( $aRow['DYN_FILENAME'], PATH_DYNAFORM, SYS_LANG ); if (($G_FORM->type == 'xmlform') || ($G_FORM->type == '')) { foreach ($G_FORM->fields as $k => $v) { if (! in_array( $v->type, $aInvalidTypes )) { if (! in_array( $k, $aFieldsNames )) { $aFields[] = array ('sName' => $k,'sType' => $v->type,'sLabel' => ($v->type != 'grid' ? $v->label : '[ ' . G::LoadTranslation( 'ID_GRID' ) . ' ]') ); $aFieldsNames[] = $k; } } } } } $oDataset->next(); } } return $aFields; }
public static function removeIfExists($proUid) { $process = \ProcessPeer::retrieveByPK($proUid); if ($process) { $me = new self(); $me->proUid = $process->getProUid(); $me->remove(); } }
<?php if ($RBAC->userCanAccess('PM_SETUP') != 1 && $RBAC->userCanAccess('PM_SETUP_ADVANCE') != 1) { G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); //G::header('location: ../login/login'); die; } try { $form = $_POST['form']; $CategoryUid = $form['CATEGORY_UID']; require_once "classes/model/ProcessCategory.php"; require_once 'classes/model/Process.php'; //we'are looking for data into process with this CategoryUid $oCriteria = new Criteria('workflow'); $oCriteria->add(ProcessPeer::PRO_CATEGORY, $CategoryUid); $oDataset = ProcessPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); while ($oDataset->next()) { $aDataProcess = $oDataset->getRow(); $oCriteria1 = new Criteria('workflow'); $oCriteria1->add(ProcessPeer::PRO_CATEGORY, ''); $oCriteria2 = new Criteria('workflow'); $oCriteria2->add(ProcessPeer::PRO_UID, $aDataProcess['PRO_UID']); BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow')); } //if exists the row in the database propel will update it, otherwise will insert. $tr = ProcessCategoryPeer::retrieveByPK($CategoryUid); if (is_object($tr) && get_class($tr) == 'ProcessCategory') { $tr->delete(); } G::Header('location: processCategoryList'); } catch (Exception $e) {
/** * get all the Active process * * SELECT PROCESS.PRO_UID AS UID, CONTENT.CON_VALUE AS VALUE FROM PROCESS, CONTENT * WHERE (PROCESS.PRO_UID=CONTENT.CON_ID AND PROCESS.PRO_STATUS!='DISABLED' AND CONTENT.CON_CATEGORY='PRO_TITLE' AND CONTENT.CON_LANG='en') * ORDER BY CONTENT.CON_VALUE * ]]> */ public function getAllProcesses() { $aProcesses = array(); //$aProcesses [] = array ('PRO_UID' => 'char', 'PRO_TITLE' => 'char'); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(ProcessPeer::PRO_UID); $oCriteria->add(ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL); $oDataset = ProcessPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $oProcess = new Process(); while ($aRow = $oDataset->getRow()) { $aProcess = $oProcess->load($aRow['PRO_UID']); $aProcesses[] = array('value' => $aProcess['PRO_UID'], 'name' => $aProcess['PRO_TITLE']); $oDataset->next(); } //$oJSON = new Services_JSON(); return Bootstrap::json_encode($aProcesses); //$oJSON->encode( $aProcesses ); }
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; } } $criteria = new Criteria("workflow"); $criteria->addSelectColumn(ProcessPeer::PRO_UID); $criteria->add(ProcessPeer::PRO_UID, $_GET["PRO_UID"], Criteria::EQUAL); $criteria->add($criteria->getNewCriterion(ProcessPeer::PRO_CREATE_USER, $_SESSION["USER_LOGGED"], Criteria::EQUAL)->addOr($criteria->getNewCriterion(ProcessPeer::PRO_TYPE_PROCESS, "PUBLIC", Criteria::EQUAL))); $rsCriteria = ProcessPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if (!$rsCriteria->next()) { echo "You don't have privileges to edit this process."; exit(0); } $processUID = $_GET['PRO_UID']; $_SESSION['PROCESS'] = $processUID; $_SESSION['PROCESSMAP'] = 'LEIMNUD'; G::LoadClass('processMap'); $oTemplatePower = new TemplatePower(PATH_TPL . 'processes/processes_Map.html'); $oTemplatePower->prepare(); $G_MAIN_MENU = 'processmaker'; $G_ID_MENU_SELECTED = 'PROCESSES'; $G_SUB_MENU = 'processes'; $G_ID_SUB_MENU_SELECTED = '_';
/** * Implementation for 'DELETE' method for Rest API * * @param mixed $proUid Primary key * * @return array $result Returns array within multiple records or a single record depending if * a single selection was requested passing id(s) as param */ protected function delete($proUid) { $conn = Propel::getConnection(ProcessPeer::DATABASE_NAME); try { $conn->begin(); $obj = ProcessPeer::retrieveByPK($proUid); if (!is_object($obj)) { throw new RestException(412, 'Record does not exist.'); } $obj->delete(); $conn->commit(); } catch (Exception $e) { $conn->rollback(); throw new RestException(412, $e->getMessage()); } }
public function generateBpmn($processUid, $processUidFieldNameForException, $userUid = "") { $bpmnProjectUid = ""; try { //Verify data $obj = \ProcessPeer::retrieveByPK($processUid); if (is_null($obj)) { throw new \Exception(\G::LoadTranslation("ID_PROCESS_DOES_NOT_EXIST", array($processUidFieldNameForException, $processUid))); } //Verify data $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\BpmnProjectPeer::PRJ_UID); $criteria->add(\BpmnProjectPeer::PRJ_UID, $processUid, \Criteria::EQUAL); $rsCriteria = \BpmnProjectPeer::doSelectRS($criteria); if ($rsCriteria->next()) { throw new \Exception(\G::LoadTranslation("ID_PROJECT_IS_BPMN", array($processUidFieldNameForException, $processUid))); } //Set data $processUidBk = $processUid; list($arrayWorkflowData, $arrayWorkflowFile) = $this->getData($processUid); //Get workflow data $arrayWorkflowData["process"] = $arrayWorkflowData["process"][0]; $arrayWorkflowData["groupwfs"] = array(); //Create WorkflowBpmn $arrayUid = array(); $arrayUid2 = array(); //Process $arrayProcessData = $arrayWorkflowData["process"]; unset( $arrayProcessData["PRO_UID"], $arrayProcessData["PRO_UPDATE_DATE"] ); $arrayProcessData["PRO_PARENT"] = $processUidBk; $arrayProcessData["PRO_TITLE"] = $arrayProcessData["PRO_TITLE"] . " - New version - " . date("M d, H:i:s"); $arrayProcessData["PRO_CREATE_USER"] = ($userUid != "")? $userUid : "00000000000000000000000000000001"; $this->create($arrayProcessData); $processUid = $this->getUid(); $bpmnProjectUid = $processUid; //Task foreach ($arrayWorkflowData["tasks"] as $value) { $arrayTaskData = $value; $taskUidOld = $arrayTaskData["TAS_UID"]; //Add unset($arrayTaskData["TAS_UID"]); $taskUid = $this->addTask($arrayTaskData); //Add new UID $arrayUid["task"][$taskUidOld] = $taskUid; $arrayUid2[] = array( "old_uid" => $taskUidOld, "new_uid" => $taskUid ); } //$arrayWorkflowData["tasks"] = array(); //Route $arrayRouteSecJoin = array(); foreach ($arrayWorkflowData["routes"] as $value) { $arrayRouteData = $value; $arrayRouteData["TAS_UID"] = $arrayUid["task"][$arrayRouteData["TAS_UID"]]; $arrayRouteData["ROU_NEXT_TASK"] = ($arrayRouteData["ROU_NEXT_TASK"] != "-1")? $arrayUid["task"][$arrayRouteData["ROU_NEXT_TASK"]] : $arrayRouteData["ROU_NEXT_TASK"]; if ($arrayRouteData["ROU_TYPE"] != "SEC-JOIN") { //Add $result = $this->addRoute($arrayRouteData["TAS_UID"], $arrayRouteData["ROU_NEXT_TASK"], $arrayRouteData["ROU_TYPE"], $arrayRouteData["ROU_CONDITION"]); } else { $arrayRouteSecJoin[] = $arrayRouteData; } } $arrayWorkflowData["routes"] = array(); //Route SEC-JOIN foreach ($arrayRouteSecJoin as $value) { $arrayRouteData = $value; $result = $this->addRouteSecJoin($arrayRouteData["TAS_UID"], $arrayRouteData["ROU_NEXT_TASK"]); } //Lane foreach ($arrayWorkflowData["lanes"] as $value) { $arrayLaneData = $value; $swiX = (int)($arrayLaneData["SWI_X"]); $swiY = (int)($arrayLaneData["SWI_Y"]); switch ($arrayLaneData["SWI_TYPE"]) { case "TEXT": $swiUid = $this->addText($arrayLaneData["SWI_TEXT"], $swiX, $swiY); break; case "LINE": $direction = (($swiX == 0)? "HORIZONTAL" : "VERTICAL"); $swiUid = $this->addLine(($direction == "HORIZONTAL")? $swiY : $swiX, $direction); break; } } $arrayWorkflowData["lanes"] = array(); //Data $arrayUid2 = array_merge( array( array( "old_uid" => $processUidBk, "new_uid" => $processUid ) ), $arrayUid2 ); list($arrayWorkflowData, $arrayWorkflowFile) = $this->updateDataUidByArrayUid($arrayWorkflowData, $arrayWorkflowFile, $arrayUid2); $arrayWorkflowData["tasks"] = array(); $this->createDataByArrayData($arrayWorkflowData); $this->createDataFileByArrayFile($arrayWorkflowFile); //Return return $bpmnProjectUid; } catch (\Exception $e) { if ($bpmnProjectUid != "") { $this->remove(); } throw $e; } }
/** * Get Process details * * @param object $httpData{PRO_UID} * @return array */ public function getProcessDetail($httpData) { require_once 'classes/model/Process.php'; G::loadClass('tasks'); $tasks = new Tasks(); $PRO_UID = $httpData->PRO_UID; $process = ProcessPeer::retrieveByPk($PRO_UID); $tasksList = $tasks->getAllTasks($PRO_UID); $rootNode->id = $process->getProUid(); $rootNode->type = 'process'; $rootNode->typeLabel = G::LoadTranslation('ID_PROCESS'); $rootNode->text = $process->getProTitle(); $rootNode->leaf = count($tasksList) > 0 ? false : true; $rootNode->iconCls = 'ss_sprite ss_application'; $rootNode->expanded = true; foreach ($tasksList as $task) { $node = new stdClass(); $node->id = $task['TAS_UID']; $node->type = 'task'; $node->typeLabel = G::LoadTranslation('ID_TASK'); $node->text = $task['TAS_TITLE']; $node->iconCls = 'ss_sprite ss_layout'; $node->leaf = true; $rootNode->children[] = $node; } $treeDetail[] = $rootNode; return $treeDetail; }
public function getTriggerWebBotProcess($proUid, $action) { require_once "classes/model/Triggers.php"; if (!isset($proUid) && $proUid == '' || !isset($action) && $action == '') { return false; } $action = G::toUpper($action); $webBotTrigger = ''; switch ($action) { case 'DELETED': $var = ProcessPeer::PRO_TRI_DELETED; break; case 'CANCELED': $var = ProcessPeer::PRO_TRI_CANCELED; break; case 'PAUSED': $var = ProcessPeer::PRO_TRI_PAUSED; break; case 'REASSIGNED': $var = ProcessPeer::PRO_TRI_REASSIGNED; break; } $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn($var); $oCriteria->addSelectColumn(TriggersPeer::TRI_WEBBOT); $oCriteria->addJoin($var, TriggersPeer::TRI_UID, Criteria::LEFT_JOIN); $oCriteria->add(ProcessPeer::PRO_UID, $proUid); $oDataSet = ProcessPeer::doSelectRS($oCriteria); $oDataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($oDataSet->next()) { $row = $oDataSet->getRow(); $webBotTrigger = $row['TRI_WEBBOT']; } return $webBotTrigger; }
/** * disable all previous process with the parent $sProUid * * @param $sProUid process uid * @return void */ public function disablePreviousProcesses ($sProUid) { //change status of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( ProcessPeer::PRO_PARENT, $sProUid ); $oDataset = ProcessPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $oProcess = new Process(); while ($aRow = $oDataset->getRow()) { $aRow['PRO_STATUS'] = 'DISABLED'; $aRow['PRO_UPDATE_DATE'] = 'now'; $oProcess->update( $aRow ); $oDataset->next(); } }
$G_MAIN_MENU = 'caseTracker'; $G_ID_MENU_SELECTED = 'MAP'; require_once 'classes/model/CaseTracker.php'; $oCaseTracker = new CaseTracker(); $aCaseTracker = $oCaseTracker->load($_SESSION['PROCESS']); $idProcess = $_SESSION['PROCESS']; $oProcess = new Process(); $aProcessFieds = $oProcess->load($idProcess); $noShowTitle = 0; if (isset($aProcessFieds['PRO_SHOW_MESSAGE'])) { $noShowTitle = $aProcessFieds['PRO_SHOW_MESSAGE']; } // getting bpmn projects $c = new Criteria('workflow'); $c->addSelectColumn(BpmnProjectPeer::PRJ_UID); $ds = ProcessPeer::doSelectRS($c); $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC); $bpmnProjects = array(); while ($ds->next()) { $row = $ds->getRow(); $bpmnProjects[] = $row['PRJ_UID']; } switch ($aCaseTracker['CT_MAP_TYPE']) { case 'NONE': //Nothing break; case 'PROCESSMAP': G::LoadClass('case'); G::LoadClass('processMap'); $oCase = new Cases(); $aFields = $oCase->loadCase($_SESSION['APPLICATION']);
public function getAllConfiguredCurrencies() { $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(ProcessPeer::PRO_UNIT_COST); $oCriteria->setDistinct(); $oDataSet = ProcessPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro')); $oDataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC); $aProc = array(); while ($oDataSet->next()) { $row = $oDataSet->getRow(); $aProc[$row['PRO_UNIT_COST']] = $row['PRO_UNIT_COST']; } return $aProc; }
/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param Connection $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, $con = null) { if ($con === null) { $con = Propel::getConnection(self::DATABASE_NAME); } $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(); $criteria->add(ProcessPeer::PRO_UID, $pks, Criteria::IN); $objs = ProcessPeer::doSelect($criteria, $con); } return $objs; }
public function getProcessDescription () { $c = new Criteria( 'workflow' ); $c->clearSelectColumns(); $c->addSelectColumn( ProcessPeer::PRO_UID ); $oDataset = ProcessPeer::doSelectRS( $c ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aRows = Array (); while ($aRow = $oDataset->getRow()) { $aRows[] = $aRow; $oDataset->next(); } foreach ($aRows as $k => $aRow) { $oProcess = new Process(); $aProcessRow = $oProcess->load( $aRow['PRO_UID'] ); $aRows[$k] = array_merge( $aRow, array ('PRO_TITLE' => $aProcessRow['PRO_TITLE'] ) ); } return $aRows; }
$cProcess = new Criteria('workflow'); $cProcess->clearSelectColumns(); $cProcess->addSelectColumn(ProcessPeer::PRO_UID); $cProcess->addSelectColumn(ContentPeer::CON_VALUE); if ($categoryUid) { $cProcess->add(ProcessPeer::PRO_CATEGORY, $categoryUid); } $del = DBAdapter::getStringDelimiter(); $conds = array(); $conds[] = array(ProcessPeer::PRO_UID, ContentPeer::CON_ID); $conds[] = array(ContentPeer::CON_CATEGORY, $del . 'PRO_TITLE' . $del); $conds[] = array(ContentPeer::CON_LANG, $del . $lang . $del); $cProcess->addJoinMC($conds, Criteria::LEFT_JOIN); $cProcess->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); $cProcess->addAscendingOrderByColumn(ContentPeer::CON_VALUE); $oDataset = ProcessPeer::doSelectRS($cProcess); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $processes[] = array($aRow['PRO_UID'], $aRow['CON_VALUE']); $oDataset->next(); } return print G::json_encode($processes); break; case 'unassigned': $cProcess = $oAppCache->getUnassignedListCriteria($userUid); break; case 'paused': $cProcess = $oAppCache->getPausedListCriteria($userUid); break; case 'to_revise':
/** * Populates the object using an array. * * This is particularly useful when populating an object from one of the * request arrays (e.g. $_POST). This method goes through the column * names, checking to see whether a matching key exists in populated * array. If so the setByName() method is called for that column. * * You can specify the key type of the array by additionally passing one * of the class type constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME, * TYPE_NUM. The default key type is the column's phpname (e.g. 'authorId') * * @param array $arr An array to populate the object from. * @param string $keyType The type of keys the array uses. * @return void */ public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = ProcessPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setProUid($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setProParent($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setProTime($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setProTimeunit($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setProStatus($arr[$keys[4]]); } if (array_key_exists($keys[5], $arr)) { $this->setProTypeDay($arr[$keys[5]]); } if (array_key_exists($keys[6], $arr)) { $this->setProType($arr[$keys[6]]); } if (array_key_exists($keys[7], $arr)) { $this->setProAssignment($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { $this->setProShowMap($arr[$keys[8]]); } if (array_key_exists($keys[9], $arr)) { $this->setProShowMessage($arr[$keys[9]]); } if (array_key_exists($keys[10], $arr)) { $this->setProSubprocess($arr[$keys[10]]); } if (array_key_exists($keys[11], $arr)) { $this->setProTriDeleted($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { $this->setProTriCanceled($arr[$keys[12]]); } if (array_key_exists($keys[13], $arr)) { $this->setProTriPaused($arr[$keys[13]]); } if (array_key_exists($keys[14], $arr)) { $this->setProTriReassigned($arr[$keys[14]]); } if (array_key_exists($keys[15], $arr)) { $this->setProTriUnpaused($arr[$keys[15]]); } if (array_key_exists($keys[16], $arr)) { $this->setProTypeProcess($arr[$keys[16]]); } if (array_key_exists($keys[17], $arr)) { $this->setProShowDelegate($arr[$keys[17]]); } if (array_key_exists($keys[18], $arr)) { $this->setProShowDynaform($arr[$keys[18]]); } if (array_key_exists($keys[19], $arr)) { $this->setProCategory($arr[$keys[19]]); } if (array_key_exists($keys[20], $arr)) { $this->setProSubCategory($arr[$keys[20]]); } if (array_key_exists($keys[21], $arr)) { $this->setProIndustry($arr[$keys[21]]); } if (array_key_exists($keys[22], $arr)) { $this->setProUpdateDate($arr[$keys[22]]); } if (array_key_exists($keys[23], $arr)) { $this->setProCreateDate($arr[$keys[23]]); } if (array_key_exists($keys[24], $arr)) { $this->setProCreateUser($arr[$keys[24]]); } if (array_key_exists($keys[25], $arr)) { $this->setProHeight($arr[$keys[25]]); } if (array_key_exists($keys[26], $arr)) { $this->setProWidth($arr[$keys[26]]); } if (array_key_exists($keys[27], $arr)) { $this->setProTitleX($arr[$keys[27]]); } if (array_key_exists($keys[28], $arr)) { $this->setProTitleY($arr[$keys[28]]); } if (array_key_exists($keys[29], $arr)) { $this->setProDebug($arr[$keys[29]]); } if (array_key_exists($keys[30], $arr)) { $this->setProDynaforms($arr[$keys[30]]); } if (array_key_exists($keys[31], $arr)) { $this->setProDerivationScreenTpl($arr[$keys[31]]); } }
function getProcessArray($action, $userUid) { global $oAppCache; $processes = array(); $processes[] = array('', G::LoadTranslation('ID_ALL_PROCESS')); //get the list based in the action provided // G::pr($action);die; switch ($action) { case 'draft': $cProcess = $oAppCache->getDraftListCriteria($userUid); //fast enough break; case 'sent': $cProcess = $oAppCache->getSentListProcessCriteria($userUid); // fast enough break; case 'simple_search': case 'search': //in search action, the query to obtain all process is too slow, so we need to query directly to //process and content tables, and for that reason we need the current language in AppCacheView. G::loadClass('configuration'); $oConf = new Configurations(); $oConf->loadConfig($x, 'APP_CACHE_VIEW_ENGINE', '', '', '', ''); $appCacheViewEngine = $oConf->aConfig; $lang = isset($appCacheViewEngine['LANG']) ? $appCacheViewEngine['LANG'] : 'en'; $cProcess = new Criteria('workflow'); $cProcess->clearSelectColumns(); $cProcess->addSelectColumn(ProcessPeer::PRO_UID); $cProcess->addSelectColumn(ContentPeer::CON_VALUE); $del = DBAdapter::getStringDelimiter(); $conds = array(); $conds[] = array(ProcessPeer::PRO_UID, ContentPeer::CON_ID); $conds[] = array(ContentPeer::CON_CATEGORY, $del . 'PRO_TITLE' . $del); $conds[] = array(ContentPeer::CON_LANG, $del . $lang . $del); $cProcess->addJoinMC($conds, Criteria::LEFT_JOIN); $cProcess->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); $oDataset = ProcessPeer::doSelectRS($cProcess); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $processes[] = array($aRow['PRO_UID'], $aRow['CON_VALUE']); $oDataset->next(); } return $processes; break; case 'unassigned': $cProcess = $oAppCache->getUnassignedListCriteria($userUid); break; case 'paused': $cProcess = $oAppCache->getPausedListCriteria($userUid); break; case 'to_revise': $cProcess = $oAppCache->getToReviseListCriteria($userUid); break; case 'to_reassign': $cProcess = $oAppCache->getToReassignListCriteria(); $cProcess->addAscendingOrderByColumn(AppCacheViewPeer::APP_PRO_TITLE); break; case 'gral': $cProcess = $oAppCache->getGeneralListCriteria(); $cProcess->addAscendingOrderByColumn(AppCacheViewPeer::APP_PRO_TITLE); break; case 'todo': default: $cProcess = $oAppCache->getToDoListCriteria($userUid); //fast enough break; } //get the processes for this user in this action $cProcess->clearSelectColumns(); $cProcess->addSelectColumn(AppCacheViewPeer::PRO_UID); $cProcess->addSelectColumn(AppCacheViewPeer::APP_PRO_TITLE); $cProcess->setDistinct(AppCacheViewPeer::PRO_UID); $oDataset = AppCacheViewPeer::doSelectRS($cProcess); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $processes[] = array($aRow['PRO_UID'], $aRow['APP_PRO_TITLE']); $oDataset->next(); } return $processes; }