diff --git a/workflow/engine/classes/class.applications.php b/workflow/engine/classes/class.applications.php index 22a898018..9faf36b8f 100644 --- a/workflow/engine/classes/class.applications.php +++ b/workflow/engine/classes/class.applications.php @@ -1,756 +1,737 @@ -getConfiguration('casesList',($action=='search'||$action=='simple_search')?'sent':$action ); - // var_dump($confCasesList); - $oAppCache->confCasesList = $confCasesList; - - // get the action based list - switch ( $action ) { - case 'draft' : - $Criteria = $oAppCache->getDraftListCriteria($userUid); - $CriteriaCount = $oAppCache->getDraftCountCriteria($userUid); - break; - case 'sent' : - $Criteria = $oAppCache->getSentListCriteria($userUid); - $CriteriaCount = $oAppCache->getSentCountCriteria($userUid); - // var_dump($Criteria); - break; - case 'selfservice' : - case 'unassigned': - $Criteria = $oAppCache->getUnassignedListCriteria($userUid); - $CriteriaCount = $oAppCache->getUnassignedCountCriteria($userUid); - break; - case 'paused' : - $Criteria = $oAppCache->getPausedListCriteria($userUid); - $CriteriaCount = $oAppCache->getPausedCountCriteria($userUid); - break; - case 'completed' : - $Criteria = $oAppCache->getCompletedListCriteria($userUid); - $CriteriaCount = $oAppCache->getCompletedCountCriteria($userUid); - break; - case 'cancelled' : - $Criteria = $oAppCache->getCancelledListCriteria($userUid); - $CriteriaCount = $oAppCache->getCancelledCountCriteria($userUid); - break; - case 'search' : - $Criteria = $oAppCache->getSearchListCriteria(); - $CriteriaCount = $oAppCache->getSearchCountCriteria(); - break; - case 'simple_search' : - $Criteria = $oAppCache->getSimpleSearchListCriteria(); - $CriteriaCount = $oAppCache->getSimpleSearchCountCriteria(); - break; - case 'to_revise' : - $Criteria = $oAppCache->getToReviseListCriteria($userUid); - $CriteriaCount = $oAppCache->getToReviseCountCriteria($userUid); - break; - case 'to_reassign' : - $Criteria = $oAppCache->getToReassignListCriteria(); - $CriteriaCount = $oAppCache->getToReassignCountCriteria(); - break; - case 'all' : - $Criteria = $oAppCache->getAllCasesListCriteria($userUid); - $CriteriaCount = $oAppCache->getAllCasesCountCriteria($userUid); - break; - // general criteria probably will be deprecated - case 'gral' : - $Criteria = $oAppCache->getGeneralListCriteria(); - $CriteriaCount = $oAppCache->getGeneralCountCriteria(); - break; - case 'todo' : - default: - $Criteria = $oAppCache->getToDoListCriteria($userUid); - $CriteriaCount = $oAppCache->getToDoCountCriteria($userUid); - break; - } - - $Criteria->addAlias('CU', 'USERS'); - $Criteria->addJoin(AppCacheViewPeer::USR_UID, 'CU.USR_UID', Criteria::LEFT_JOIN); - $Criteria->addAsColumn('USR_FIRSTNAME', 'CU.USR_FIRSTNAME'); - $Criteria->addAsColumn('USR_LASTNAME', 'CU.USR_LASTNAME'); - $Criteria->addAsColumn('USR_USERNAME', 'CU.USR_USERNAME'); - - // Fix for previous user - if ($action == 'todo' || $action == 'selfservice' || $action =='unassigned' || $action == 'paused' || $action == 'to_revise' || $action == 'sent') { - $Criteria->addAlias('PU', 'USERS'); - $Criteria->addJoin(AppCacheViewPeer::PREVIOUS_USR_UID, 'PU.USR_UID', Criteria::LEFT_JOIN); - $Criteria->addAsColumn('PREVIOUS_USR_FIRSTNAME', 'PU.USR_FIRSTNAME'); - $Criteria->addAsColumn('PREVIOUS_USR_LASTNAME', 'PU.USR_LASTNAME'); - $Criteria->addAsColumn('PREVIOUS_USR_USERNAME', 'PU.USR_USERNAME'); - } - - if ( !is_array($confCasesList) ) { - $rows = $this->getDefaultFields( $action ); - $result = $this->genericJsonResponse( '', array(), $rows , 20, '' ); - //$conf->saveObject($result,'casesList',$action,'','',''); - } - - // add the process filter - if ( $process != '' ) { - $Criteria->add (AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL ); - $CriteriaCount->add (AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL ); - } - - // add the category filter - if ($category != '') { - $Criteria->addAlias('CP', 'PROCESS'); - $Criteria->add('CP.PRO_CATEGORY', $category, Criteria::EQUAL ); - $Criteria->addJoin(AppCacheViewPeer::PRO_UID, 'CP.PRO_UID', Criteria::LEFT_JOIN); - $Criteria->addAsColumn('CATEGORY_UID', 'CP.PRO_CATEGORY'); - } - - // add the user filter - if ( $user != '' ) { - $Criteria->add(AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL ); - $CriteriaCount->add (AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL ); - } - - if ( $status != '' ) { - $Criteria->add(AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL ); - $CriteriaCount->add (AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL ); - } - - if ( $dateFrom != '' ) { - if( $dateTo != '' ){ - $Criteria->add( - $Criteria->getNewCriterion( - AppCacheViewPeer::DEL_DELEGATE_DATE, - $dateFrom, Criteria::GREATER_EQUAL - )->addAnd($Criteria->getNewCriterion( - AppCacheViewPeer::DEL_DELEGATE_DATE, - $dateTo, Criteria::LESS_EQUAL - )) - ); - $CriteriaCount->add( - $CriteriaCount->getNewCriterion( - AppCacheViewPeer::DEL_DELEGATE_DATE, - $dateFrom, Criteria::GREATER_EQUAL - )->addAnd($Criteria->getNewCriterion( - AppCacheViewPeer::DEL_DELEGATE_DATE, - $dateTo, Criteria::LESS_EQUAL - )) - ); - } else { - $Criteria->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL ); - $CriteriaCount->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL ); - } - } else if ( $dateTo != '' ) { - $Criteria->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL ); - $CriteriaCount->add (AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL ); - } - - //add the filter - if ( $filter != '' ) { - switch ( $filter ) { - case 'read' : - $Criteria->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL); - $CriteriaCount->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL); - break; - case 'unread' : - $Criteria->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL); - $CriteriaCount->add (AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL); - break; - case 'started' : - $Criteria->add (AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL); - $CriteriaCount->add (AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL); - break; - case 'completed' : - $Criteria->add (AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL); - $CriteriaCount->add (AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL); - break; - } - } - - //add the search filter - if ( $search != '' ) { - - $defaultFields = $oAppCache->getDefaultFields(); - $oTmpCriteria = ''; - // if there is PMTABLE for this case list: - if ( !empty($oAppCache->confCasesList) && isset($oAppCache->confCasesList['PMTable']) && trim($oAppCache->confCasesList['PMTable'])!='' ) { - // getting the table name - $oAdditionalTables = AdditionalTablesPeer::retrieveByPK($oAppCache->confCasesList['PMTable']); - $tableName = $oAdditionalTables->getAddTabName(); - $oNewCriteria = new Criteria( 'workflow' ); - $counter = 0; - foreach($oAppCache->confCasesList['second']['data'] as $fieldData){ - if ( !in_array($fieldData['name'],$defaultFields) ){ - $fieldName = $tableName.'.'.$fieldData['name']; - if ( $counter == 0 ) { - $oTmpCriteria = $oNewCriteria->getNewCriterion ( $fieldName, '%' . $search . '%', Criteria::LIKE ); - } else { - $oTmpCriteria = $oNewCriteria->getNewCriterion ( $fieldName, '%' . $search . '%', Criteria::LIKE )->addOr($oTmpCriteria); - } - $counter++; - } - } - //add the default and hidden DEL_INIT_DATE - } - - // the criteria adds new fields if there are defined PM Table Fields in the cases list - if ($oTmpCriteria!='') { - $Criteria->add( - $Criteria->getNewCriterion( - AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE - )->addOr($Criteria->getNewCriterion( - AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE - )->addOr($Criteria->getNewCriterion( - AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE - )->addOr($oTmpCriteria)) - )); - } else { - $Criteria->add( - $Criteria->getNewCriterion( - AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE - )->addOr($Criteria->getNewCriterion( - AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE - )->addOr($Criteria->getNewCriterion( - AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE - )) - )); - } - - // the count query needs to be the normal criteria query if there are defined PM Table Fields in the cases list - if ($oTmpCriteria!='') { - $CriteriaCount = $Criteria; - } else { - $CriteriaCount->add( - $CriteriaCount->getNewCriterion( - AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE - )->addOr($CriteriaCount->getNewCriterion( - AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE - )->addOr($CriteriaCount->getNewCriterion( - AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE - )) - )); - } - } - - //here we count how many records exists for this criteria. - //BUT there are some special cases, and if we dont optimize them the server will crash. - $doCountAlreadyExecuted = false; - //case 1. when the SEARCH action is selected and none filter, search criteria is defined, - //we need to count using the table APPLICATION, because APP_CACHE_VIEW takes 3 seconds - - if ( $action == 'search' && $filter == '' && $search == '' && $process == '' && $status == '' && $dateFrom == '' && $dateTo == '' && $category == '') { - $totalCount = $oAppCache->getSearchAllCount(); - $doCountAlreadyExecuted = true; - } - if ( $category != '' ) { - $totalCount = $oAppCache->getSearchCountCriteria(); - $doCountAlreadyExecuted = true; - } - - if ( $doCountAlreadyExecuted == false ) { - // in the case of reassign the distinct attribute shows a diferent count result comparing to the - // original list - if ($action == 'to_reassign' || $action == 'todo'){ - $distinct = false; - } else{ - $distinct = true; - } - // first check if there is a PMTable defined within the list, - // the issue that brokes the normal criteria query seems to be fixed - if (isset($oAppCache->confCasesList['PMTable']) && !empty($oAppCache->confCasesList['PMTable'])) { - // then - $oAdditionalTables = AdditionalTablesPeer::retrieveByPK($oAppCache->confCasesList['PMTable']); - $tableName = $oAdditionalTables->getAddTabName(); - $tableName = strtolower($tableName); - $tableNameArray = explode('_',$tableName); - foreach ($tableNameArray as $item){ - $newTableName[] = ucfirst($item); - } - $tableName = implode('',$newTableName); - // so the pm table class can be invoqued from the pm table model clases - if (!class_exists($tableName)){ - require_once(PATH_DB.SYS_SYS.PATH_SEP."classes".PATH_SEP.$tableName.".php"); - } - } - $totalCount = AppCacheViewPeer::doCount( $CriteriaCount, $distinct ); - } - - //add sortable options - if ( $sort != '' ) { - if ( $dir == 'DESC' ) - $Criteria->addDescendingOrderByColumn( $sort ); - else - $Criteria->addAscendingOrderByColumn( $sort ); - } - - //limit the results according the interface - $Criteria->setLimit( $limit ); - $Criteria->setOffset( $start ); - - - - // this is the optimal way or query to render the cases search list - // fixing the bug related to the wrong data displayed in the list - if ( $action == 'search' ) { - $oDatasetIndex = AppCacheViewPeer::doSelectRS( $Criteria ); - $oDatasetIndex->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDatasetIndex->next(); - $maxDelIndexList = array(); - // a list of MAX_DEL_INDEXES is required in order to validate the right row - while($aRow = $oDatasetIndex->getRow()){ - $maxDelIndexList[] = $aRow['MAX_DEL_INDEX']; - $oDatasetIndex->next(); - } - // adding the validation condition in order to get the right row using the group by sentence - $Criteria->add(AppCacheViewPeer::DEL_INDEX, $maxDelIndexList, Criteria::IN ); - // - $params = array ( $maxDelIndexList ); - - } - - //execute the query - $oDataset = AppCacheViewPeer::doSelectRS($Criteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - - $result = array(); - $result['totalCount'] = $totalCount; - $rows = array(); - $aPriorities = array('1'=>'VL', '2'=>'L', '3'=>'N', '4'=>'H', '5'=>'VH'); - $index = $start; - while($aRow = $oDataset->getRow()){ - //$aRow = $oAppCache->replaceRowUserData($aRow); - - /* For participated cases, we want the last step in the case, not only - * the last step this user participated. To do that we get every case - * information again for the last step. (This could be solved by a subquery, - * but Propel might not support it and subqueries can be slower for larger - * datasets). - */ - /*if ($action == 'sent' || $action == 'search') { - $maxCriteria = new Criteria('workflow'); - $maxCriteria->add(AppCacheViewPeer::APP_UID, $aRow['APP_UID'], Criteria::EQUAL); - $maxCriteria->addDescendingOrderByColumn(AppCacheViewPeer::DEL_INDEX); - $maxCriteria->setLimit(1); - - $maxDataset = AppCacheViewPeer::doSelectRS( $maxCriteria ); - $maxDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $maxDataset->next(); - - $newData = $maxDataset->getRow(); - foreach ($aRow as $col => $value) { - if (array_key_exists($col, $newData)) - $aRow[$col] = $newData[$col]; - } - - $maxDataset->close(); - }*/ - - if (!isset($aRow['APP_CURRENT_USER'])) - $aRow['APP_CURRENT_USER'] = "[Unassigned]"; - - // replacing the status data with their respective translation - if( isset($aRow['APP_STATUS']) ){ - $aRow['APP_STATUS'] = G::LoadTranslation("ID_{$aRow['APP_STATUS']}"); - } - - // replacing the priority data with their respective translation - if( isset($aRow['DEL_PRIORITY']) ){ - $aRow['DEL_PRIORITY'] = G::LoadTranslation("ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}"); - } - - $rows[] = $aRow; - $oDataset->next(); - } - - $result['data'] = $rows; - - return $result; - } - - - //TODO: Encapsulates these and another default generation functions inside a class - /** - * generate all the default fields - * @return Array $fields - */ - function setDefaultFields() { - $fields = array(); - $fields['APP_NUMBER'] = array( 'name' => 'APP_NUMBER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_NUMBER') , 'width' => 40, 'align' => 'left'); - $fields['APP_UID'] = array( 'name' => 'APP_UID' , 'fieldType' => 'key', 'label' => G::loadTranslation('ID_CASESLIST_APP_UID'), 'width' => 80, 'align' => 'left'); - $fields['DEL_INDEX'] = array( 'name' => 'DEL_INDEX' , 'fieldType' => 'key' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_INDEX') , 'width' => 50, 'align' => 'left'); - $fields['TAS_UID'] = array( 'name' => 'TAS_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_TAS_UID') , 'width' => 80, 'align' => 'left'); - $fields['USR_UID'] = array( 'name' => 'USR_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_USR_UID') , 'width' => 80, 'align' => 'left', 'hidden' => true); - $fields['PREVIOUS_USR_UID'] = array( 'name' => 'PREVIOUS_USR_UID' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_PREVIOUS_USR_UID') , 'width' => 80, 'align' => 'left', 'hidden' => true); - $fields['APP_TITLE'] = array( 'name' => 'APP_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TITLE') , 'width' => 140, 'align' => 'left'); - $fields['APP_PRO_TITLE'] = array( 'name' => 'APP_PRO_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_PRO_TITLE') , 'width' => 140, 'align' => 'left'); - $fields['APP_TAS_TITLE'] = array( 'name' => 'APP_TAS_TITLE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TAS_TITLE') , 'width' => 140, 'align' => 'left'); - $fields['APP_DEL_PREVIOUS_USER'] = array( 'name' => 'APP_DEL_PREVIOUS_USER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DEL_PREVIOUS_USER') , 'width' => 120, 'align' => 'left'); - $fields['APP_CURRENT_USER'] = array( 'name' => 'APP_CURRENT_USER' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_CURRENT_USER') ,'width' => 120, 'align' => 'left'); - $fields['USR_FIRSTNAME'] = array( 'name' => 'USR_FIRSTNAME' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_CURRENT_USER') , 'width' => 120, 'align' => 'left'); - $fields['USR_LASTNAME'] = array( 'name' => 'USR_LASTNAME' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_CURRENT_USER') , 'width' => 120, 'align' => 'left'); - $fields['DEL_TASK_DUE_DATE'] = array( 'name' => 'DEL_TASK_DUE_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_TASK_DUE_DATE') , 'width' => 100, 'align' => 'left'); - $fields['APP_UPDATE_DATE'] = array( 'name' => 'APP_UPDATE_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_UPDATE_DATE') , 'width' => 100, 'align' => 'left'); - $fields['DEL_PRIORITY'] = array( 'name' => 'DEL_PRIORITY' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_DEL_PRIORITY') , 'width' => 80, 'align' => 'left'); - $fields['APP_STATUS'] = array( 'name' => 'APP_STATUS' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_STATUS') , 'width' => 80, 'align' => 'left'); - $fields['APP_FINISH_DATE'] = array( 'name' => 'APP_FINISH_DATE' , 'fieldType' => 'case field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_FINISH_DATE') , 'width' => 100, 'align' => 'left'); - $fields['APP_DELAY_UID'] = array( 'name' => 'APP_DELAY_UID' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DELAY_UID') , 'width' => 100, 'align' => 'left'); - $fields['APP_THREAD_INDEX'] = array( 'name' => 'APP_THREAD_INDEX' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_THREAD_INDEX') , 'width' => 100, 'align' => 'left'); - $fields['APP_DEL_INDEX'] = array( 'name' => 'APP_DEL_INDEX' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DEL_INDEX') , 'width' => 100, 'align' => 'left'); - $fields['APP_TYPE'] = array( 'name' => 'APP_TYPE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_TYPE') , 'width' => 100, 'align' => 'left'); - $fields['APP_DELEGATION_USER'] = array( 'name' => 'APP_DELEGATION_USER' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DELEGATION_USER') , 'width' => 100, 'align' => 'left'); - $fields['APP_ENABLE_ACTION_USER'] = array( 'name' => 'APP_ENABLE_ACTION_USER' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_ENABLE_ACTION_USER') , 'width' => 100, 'align' => 'left'); - $fields['APP_ENABLE_ACTION_DATE'] = array( 'name' => 'APP_ENABLE_ACTION_DATE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_AAPP_ENABLE_ACTION_DATE') , 'width' => 100, 'align' => 'left'); - $fields['APP_DISABLE_ACTION_USER'] = array( 'name' => 'APP_DISABLE_ACTION_USER', 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DISABLE_ACTION_USER') , 'width' => 100, 'align' => 'left'); - $fields['APP_DISABLE_ACTION_DATE'] = array( 'name' => 'APP_DISABLE_ACTION_DATE', 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_DISABLE_ACTION_DATE') , 'width' => 100, 'align' => 'left'); - $fields['APP_AUTOMATIC_DISABLED_DATE'] = array( 'name' => 'APP_AUTOMATIC_DISABLED_DATE' , 'fieldType' => 'delay field' , 'label' => G::loadTranslation('ID_CASESLIST_APP_AUTOMATIC_DISABLED_DATE') , 'width' => 100, 'align' => 'left'); - return $fields; - - } - - /** - * this function return the default fields for a default case list - * @param $action - * @return an array with the default fields for an specific case list (action) - */ - function getDefaultFields ( $action ) { - $rows = array(); - switch ( $action ) { - case 'todo' : // #, Case, task, process, sent by, due date, Last Modify, Priority - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['DEL_TASK_DUE_DATE']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['DEL_PRIORITY']; - break; - - case 'draft' : //#, Case, task, process, due date, Last Modify, Priority }, - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['DEL_TASK_DUE_DATE']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['DEL_PRIORITY']; - break; - case 'sent' : // #, Case, task, process, current user, sent by, Last Modify, Status - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['APP_CURRENT_USER']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['APP_STATUS']; - $rows[] = $fields['USR_FIRSTNAME']; - $rows[] = $fields['USR_LASTNAME']; - break; - case 'unassigned' : //#, Case, task, process, completed by user, finish date - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['APP_UPDATE_DATE']; - break; - case 'paused' : //#, Case, task, process, sent by - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['APP_THREAD_INDEX']; - $rows[] = $fields['APP_DEL_INDEX']; - break; - case 'completed' : //#, Case, task, process, completed by user, finish date - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - break; - - case 'cancelled' : //#, Case, task, process, due date, Last Modify - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - break; - - case 'to_revise' : //#, Case, task, process, due date, Last Modify - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['APP_CURRENT_USER']; - $rows[] = $fields['DEL_PRIORITY']; - $rows[] = $fields['APP_STATUS']; - break; - - case 'to_reassign' : //#, Case, task, process, due date, Last Modify - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['TAS_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_UID']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_CURRENT_USER']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['APP_STATUS']; - - - break; - - case 'all' : //#, Case, task, process, due date, Last Modify - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_CURRENT_USER']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['APP_STATUS']; - break; - - case 'gral' : //#, Case, task, process, due date, Last Modify - $fields = $this->setDefaultFields(); - $rows[] = $fields['APP_UID']; - $rows[] = $fields['DEL_INDEX']; - $rows[] = $fields['USR_UID']; - $rows[] = $fields['PREVIOUS_USR_UID']; - $rows[] = $fields['APP_NUMBER']; - $rows[] = $fields['APP_TITLE']; - $rows[] = $fields['APP_PRO_TITLE']; - $rows[] = $fields['APP_TAS_TITLE']; - $rows[] = $fields['APP_CURRENT_USER']; - $rows[] = $fields['APP_DEL_PREVIOUS_USER']; - $rows[] = $fields['APP_UPDATE_DATE']; - $rows[] = $fields['APP_STATUS']; - break; - } - return $rows; - } - - /** - * set the generic Json Response, using two array for the grid stores and a string for the pmtable name - * @param string $pmtable - * @param array $first - * @param array $second - * @return $response a json string - */ - function genericJsonResponse($pmtable, $first, $second, $rowsperpage, $dateFormat ) { - $firstGrid['totalCount'] = count($first); - $firstGrid['data'] = $first; - $secondGrid['totalCount'] = count($second); - $secondGrid['data'] = $second; - $result = array(); - $result['first'] = $firstGrid; - $result['second'] = $secondGrid; - $result['PMTable'] = isset($pmtable) ? $pmtable : ''; - $result['rowsperpage'] = isset($rowsperpage) ? $rowsperpage : 20; - $result['dateformat'] = isset($dateFormat) && $dateFormat != '' ? $dateFormat : 'M d, Y'; - return $result; - } - - public function getSteps($appUid, $index, $tasUid, $proUid) - { - require_once 'classes/model/Step.php'; - require_once 'classes/model/Content.php'; - require_once 'classes/model/AppDocument.php'; - require_once 'classes/model/InputDocumentPeer.php'; - require_once 'classes/model/OutputDocument.php'; - require_once 'classes/model/Dynaform.php'; - - G::LoadClass('pmScript'); - G::LoadClass('case'); - - $steps = Array(); - $case = new Cases; - $step = new Step; - $appDocument = new AppDocument; - - $caseSteps = $step->getAllCaseSteps($proUid, $tasUid, $appUid); - - //getting externals steps - $oPluginRegistry = &PMPluginRegistry::getSingleton(); - $eSteps = $oPluginRegistry->getSteps(); - $externalSteps = array(); - - foreach ($eSteps as $externalStep) { - $externalSteps[$externalStep->sStepId] = $externalStep; - } - - //getting the case record - if ($appUid) { - $caseData = $case->loadCase($appUid); - $pmScript = new PMScript(); - $pmScript->setFields($caseData['APP_DATA']); - } - - $externalStepCount = 0; - - foreach ($caseSteps as $caseStep) { - - if (trim($caseStep->getStepCondition()) != '') { // if it has a condition - $pmScript->setScript($caseStep->getStepCondition()); - - if (!$pmScript->evaluate()) { //evaluate - //evaluated false, jump & continue with the others steps - continue; - } - } - - $stepUid = $caseStep->getStepUidObj(); - $stepType = $caseStep->getStepTypeObj(); - $stepPosition = $caseStep->getStepPosition(); - - $stepItem = array(); - $stepItem['id'] = $stepUid; - $stepItem['type'] = $stepType; - - switch ($stepType) { - case 'DYNAFORM': - $oDocument = DynaformPeer::retrieveByPK($stepUid); - - $stepItem['title'] = $oDocument->getDynTitle(); - $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=EDIT"; - break; - - case 'OUTPUT_DOCUMENT': - $oDocument = OutputDocumentPeer::retrieveByPK($caseStep->getStepUidObj()); - $outputDoc = $appDocument->getObject($appUid, $index, $caseStep->getStepUidObj(), 'OUTPUT'); - - $stepItem['title'] = $oDocument->getOutDocTitle(); - - if ($outputDoc['APP_DOC_UID']) { - $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=VIEW&DOC={$outputDoc['APP_DOC_UID']}"; - } - else { - $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=GENERATE"; - } - break; - - case 'INPUT_DOCUMENT': - $oDocument = InputDocumentPeer::retrieveByPK($stepUid); - - $stepItem['title'] = $oDocument->getInpDocTitle(); - $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=ATTACH"; - break; - - case 'EXTERNAL': - $stepTitle = 'unknown ' . $caseStep->getStepUidObj(); - $oPluginRegistry = PMPluginRegistry::getSingleton(); - - $externalStep = $externalSteps[$caseStep->getStepUidObj()]; - $stepItem['id'] = $externalStep->sStepId; - $stepItem['title'] = $externalStep->sStepTitle; - $stepItem['url'] = "cases/cases_Step?UID={$externalStep->sStepId}&TYPE=EXTERNAL&POSITION=$stepPosition&ACTION=EDIT"; - break; - } - - $steps[] = $stepItem; - } - - //last, assign task - $stepItem = array(); - $stepItem['id'] = '-1'; - $stepItem['type'] = ''; - $stepItem['title'] = G::LoadTranslation('ID_ASSIGN_TASK'); - $stepItem['url'] = "cases/cases_Step?TYPE=ASSIGN_TASK&UID=-1&POSITION=10000&ACTION=ASSIGN"; - - $steps[] = $stepItem; - - return $steps; - } -} \ No newline at end of file +getConfiguration( 'casesList', ($action == 'search' || $action == 'simple_search') ? 'sent' : $action ); + // var_dump($confCasesList); + $oAppCache->confCasesList = $confCasesList; + + // get the action based list + switch ($action) { + case 'draft': + $Criteria = $oAppCache->getDraftListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getDraftCountCriteria( $userUid ); + break; + case 'sent': + $Criteria = $oAppCache->getSentListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getSentCountCriteria( $userUid ); + // var_dump($Criteria); + break; + case 'selfservice': + case 'unassigned': + $Criteria = $oAppCache->getUnassignedListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getUnassignedCountCriteria( $userUid ); + break; + case 'paused': + $Criteria = $oAppCache->getPausedListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getPausedCountCriteria( $userUid ); + break; + case 'completed': + $Criteria = $oAppCache->getCompletedListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getCompletedCountCriteria( $userUid ); + break; + case 'cancelled': + $Criteria = $oAppCache->getCancelledListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getCancelledCountCriteria( $userUid ); + break; + case 'search': + $Criteria = $oAppCache->getSearchListCriteria(); + $CriteriaCount = $oAppCache->getSearchCountCriteria(); + break; + case 'simple_search': + $Criteria = $oAppCache->getSimpleSearchListCriteria(); + $CriteriaCount = $oAppCache->getSimpleSearchCountCriteria(); + break; + case 'to_revise': + $Criteria = $oAppCache->getToReviseListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getToReviseCountCriteria( $userUid ); + break; + case 'to_reassign': + $Criteria = $oAppCache->getToReassignListCriteria(); + $CriteriaCount = $oAppCache->getToReassignCountCriteria(); + break; + case 'all': + $Criteria = $oAppCache->getAllCasesListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getAllCasesCountCriteria( $userUid ); + break; + // general criteria probably will be deprecated + case 'gral': + $Criteria = $oAppCache->getGeneralListCriteria(); + $CriteriaCount = $oAppCache->getGeneralCountCriteria(); + break; + case 'todo': + default: + $Criteria = $oAppCache->getToDoListCriteria( $userUid ); + $CriteriaCount = $oAppCache->getToDoCountCriteria( $userUid ); + break; + } + + $Criteria->addAlias( 'CU', 'USERS' ); + $Criteria->addJoin( AppCacheViewPeer::USR_UID, 'CU.USR_UID', Criteria::LEFT_JOIN ); + $Criteria->addAsColumn( 'USR_FIRSTNAME', 'CU.USR_FIRSTNAME' ); + $Criteria->addAsColumn( 'USR_LASTNAME', 'CU.USR_LASTNAME' ); + $Criteria->addAsColumn( 'USR_USERNAME', 'CU.USR_USERNAME' ); + + // Fix for previous user + if ($action == 'todo' || $action == 'selfservice' || $action == 'unassigned' || $action == 'paused' || $action == 'to_revise' || $action == 'sent') { + $Criteria->addAlias( 'PU', 'USERS' ); + $Criteria->addJoin( AppCacheViewPeer::PREVIOUS_USR_UID, 'PU.USR_UID', Criteria::LEFT_JOIN ); + $Criteria->addAsColumn( 'PREVIOUS_USR_FIRSTNAME', 'PU.USR_FIRSTNAME' ); + $Criteria->addAsColumn( 'PREVIOUS_USR_LASTNAME', 'PU.USR_LASTNAME' ); + $Criteria->addAsColumn( 'PREVIOUS_USR_USERNAME', 'PU.USR_USERNAME' ); + } + + if (! is_array( $confCasesList )) { + $rows = $this->getDefaultFields( $action ); + $result = $this->genericJsonResponse( '', array (), $rows, 20, '' ); + //$conf->saveObject($result,'casesList',$action,'','',''); + } + + // add the process filter + if ($process != '') { + $Criteria->add( AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL ); + $CriteriaCount->add( AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL ); + } + + // add the category filter + if ($category != '') { + $Criteria->addAlias( 'CP', 'PROCESS' ); + $Criteria->add( 'CP.PRO_CATEGORY', $category, Criteria::EQUAL ); + $Criteria->addJoin( AppCacheViewPeer::PRO_UID, 'CP.PRO_UID', Criteria::LEFT_JOIN ); + $Criteria->addAsColumn( 'CATEGORY_UID', 'CP.PRO_CATEGORY' ); + } + + // add the user filter + if ($user != '') { + $Criteria->add( AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL ); + $CriteriaCount->add( AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL ); + } + + if ($status != '') { + $Criteria->add( AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL ); + $CriteriaCount->add( AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL ); + } + + if ($dateFrom != '') { + if ($dateTo != '') { + $Criteria->add( $Criteria->getNewCriterion( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $Criteria->getNewCriterion( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL ) ) ); + $CriteriaCount->add( $CriteriaCount->getNewCriterion( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $Criteria->getNewCriterion( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL ) ) ); + } else { + $Criteria->add( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL ); + $CriteriaCount->add( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL ); + } + } else if ($dateTo != '') { + $Criteria->add( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL ); + $CriteriaCount->add( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL ); + } + + //add the filter + if ($filter != '') { + switch ($filter) { + case 'read': + $Criteria->add( AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL ); + $CriteriaCount->add( AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL ); + break; + case 'unread': + $Criteria->add( AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL ); + $CriteriaCount->add( AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL ); + break; + case 'started': + $Criteria->add( AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL ); + $CriteriaCount->add( AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL ); + break; + case 'completed': + $Criteria->add( AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL ); + $CriteriaCount->add( AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL ); + break; + } + } + + //add the search filter + if ($search != '') { + + $defaultFields = $oAppCache->getDefaultFields(); + $oTmpCriteria = ''; + // if there is PMTABLE for this case list: + if (! empty( $oAppCache->confCasesList ) && isset( $oAppCache->confCasesList['PMTable'] ) && trim( $oAppCache->confCasesList['PMTable'] ) != '') { + // getting the table name + $oAdditionalTables = AdditionalTablesPeer::retrieveByPK( $oAppCache->confCasesList['PMTable'] ); + $tableName = $oAdditionalTables->getAddTabName(); + $oNewCriteria = new Criteria( 'workflow' ); + $counter = 0; + foreach ($oAppCache->confCasesList['second']['data'] as $fieldData) { + if (! in_array( $fieldData['name'], $defaultFields )) { + $fieldName = $tableName . '.' . $fieldData['name']; + if ($counter == 0) { + $oTmpCriteria = $oNewCriteria->getNewCriterion( $fieldName, '%' . $search . '%', Criteria::LIKE ); + } else { + $oTmpCriteria = $oNewCriteria->getNewCriterion( $fieldName, '%' . $search . '%', Criteria::LIKE )->addOr( $oTmpCriteria ); + } + $counter ++; + } + } + //add the default and hidden DEL_INIT_DATE + } + + // the criteria adds new fields if there are defined PM Table Fields in the cases list + if ($oTmpCriteria != '') { + $Criteria->add( $Criteria->getNewCriterion( AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE )->addOr( $oTmpCriteria ) ) ) ); + } else { + $Criteria->add( $Criteria->getNewCriterion( AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE ) ) ) ); + } + + // the count query needs to be the normal criteria query if there are defined PM Table Fields in the cases list + if ($oTmpCriteria != '') { + $CriteriaCount = $Criteria; + } else { + $CriteriaCount->add( $CriteriaCount->getNewCriterion( AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $CriteriaCount->getNewCriterion( AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $CriteriaCount->getNewCriterion( AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE ) ) ) ); + } + } + + //here we count how many records exists for this criteria. + //BUT there are some special cases, and if we dont optimize them the server will crash. + $doCountAlreadyExecuted = false; + //case 1. when the SEARCH action is selected and none filter, search criteria is defined, + //we need to count using the table APPLICATION, because APP_CACHE_VIEW takes 3 seconds + + + if ($action == 'search' && $filter == '' && $search == '' && $process == '' && $status == '' && $dateFrom == '' && $dateTo == '' && $category == '') { + $totalCount = $oAppCache->getSearchAllCount(); + $doCountAlreadyExecuted = true; + } + if ($category != '') { + $totalCount = $oAppCache->getSearchCountCriteria(); + $doCountAlreadyExecuted = true; + } + + if ($doCountAlreadyExecuted == false) { + // in the case of reassign the distinct attribute shows a diferent count result comparing to the + // original list + if ($action == 'to_reassign' || $action == 'todo') { + $distinct = false; + } else { + $distinct = true; + } + // first check if there is a PMTable defined within the list, + // the issue that brokes the normal criteria query seems to be fixed + if (isset( $oAppCache->confCasesList['PMTable'] ) && ! empty( $oAppCache->confCasesList['PMTable'] )) { + // then + $oAdditionalTables = AdditionalTablesPeer::retrieveByPK( $oAppCache->confCasesList['PMTable'] ); + $tableName = $oAdditionalTables->getAddTabName(); + $tableName = strtolower( $tableName ); + $tableNameArray = explode( '_', $tableName ); + foreach ($tableNameArray as $item) { + $newTableName[] = ucfirst( $item ); + } + $tableName = implode( '', $newTableName ); + // so the pm table class can be invoqued from the pm table model clases + if (! class_exists( $tableName )) { + require_once (PATH_DB . SYS_SYS . PATH_SEP . "classes" . PATH_SEP . $tableName . ".php"); + } + } + $totalCount = AppCacheViewPeer::doCount( $CriteriaCount, $distinct ); + } + + //add sortable options + if ($sort != '') { + if ($dir == 'DESC') { + $Criteria->addDescendingOrderByColumn( $sort ); + } else { + $Criteria->addAscendingOrderByColumn( $sort ); + } + } + + //limit the results according the interface + $Criteria->setLimit( $limit ); + $Criteria->setOffset( $start ); + + // this is the optimal way or query to render the cases search list + // fixing the bug related to the wrong data displayed in the list + if ($action == 'search') { + $oDatasetIndex = AppCacheViewPeer::doSelectRS( $Criteria ); + $oDatasetIndex->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDatasetIndex->next(); + $maxDelIndexList = array (); + // a list of MAX_DEL_INDEXES is required in order to validate the right row + while ($aRow = $oDatasetIndex->getRow()) { + $maxDelIndexList[] = $aRow['MAX_DEL_INDEX']; + $oDatasetIndex->next(); + } + // adding the validation condition in order to get the right row using the group by sentence + $Criteria->add( AppCacheViewPeer::DEL_INDEX, $maxDelIndexList, Criteria::IN ); + // + $params = array ($maxDelIndexList + ); + + } + + //execute the query + $oDataset = AppCacheViewPeer::doSelectRS( $Criteria ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + + $result = array (); + $result['totalCount'] = $totalCount; + $rows = array (); + $aPriorities = array ('1' => 'VL','2' => 'L','3' => 'N','4' => 'H','5' => 'VH' + ); + $index = $start; + while ($aRow = $oDataset->getRow()) { + //$aRow = $oAppCache->replaceRowUserData($aRow); + + + /* + * For participated cases, we want the last step in the case, not only the last step this user participated. To do that we get every case information again for the last step. (This could be solved by a subquery, but Propel might not support it and subqueries can be slower for larger + * datasets). + */ + /*if ($action == 'sent' || $action == 'search') { + $maxCriteria = new Criteria('workflow'); + $maxCriteria->add(AppCacheViewPeer::APP_UID, $aRow['APP_UID'], Criteria::EQUAL); + $maxCriteria->addDescendingOrderByColumn(AppCacheViewPeer::DEL_INDEX); + $maxCriteria->setLimit(1); + + $maxDataset = AppCacheViewPeer::doSelectRS( $maxCriteria ); + $maxDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $maxDataset->next(); + + $newData = $maxDataset->getRow(); + foreach ($aRow as $col => $value) { + if (array_key_exists($col, $newData)) + $aRow[$col] = $newData[$col]; + } + + $maxDataset->close(); + }*/ + + if (! isset( $aRow['APP_CURRENT_USER'] )) { + $aRow['APP_CURRENT_USER'] = "[Unassigned]"; + } + + // replacing the status data with their respective translation + if (isset( $aRow['APP_STATUS'] )) { + $aRow['APP_STATUS'] = G::LoadTranslation( "ID_{$aRow['APP_STATUS']}" ); + } + + // replacing the priority data with their respective translation + if (isset( $aRow['DEL_PRIORITY'] )) { + $aRow['DEL_PRIORITY'] = G::LoadTranslation( "ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}" ); + } + + $rows[] = $aRow; + $oDataset->next(); + } + + $result['data'] = $rows; + + return $result; + } + + //TODO: Encapsulates these and another default generation functions inside a class + /** + * generate all the default fields + * + * @return Array $fields + */ + public function setDefaultFields () + { + $fields = array (); + $fields['APP_NUMBER'] = array ('name' => 'APP_NUMBER','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_NUMBER' ),'width' => 40,'align' => 'left' + ); + $fields['APP_UID'] = array ('name' => 'APP_UID','fieldType' => 'key','label' => G::loadTranslation( 'ID_CASESLIST_APP_UID' ),'width' => 80,'align' => 'left' + ); + $fields['DEL_INDEX'] = array ('name' => 'DEL_INDEX','fieldType' => 'key','label' => G::loadTranslation( 'ID_CASESLIST_DEL_INDEX' ),'width' => 50,'align' => 'left' + ); + $fields['TAS_UID'] = array ('name' => 'TAS_UID','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_TAS_UID' ),'width' => 80,'align' => 'left' + ); + $fields['USR_UID'] = array ('name' => 'USR_UID','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_USR_UID' ),'width' => 80,'align' => 'left','hidden' => true + ); + $fields['PREVIOUS_USR_UID'] = array ('name' => 'PREVIOUS_USR_UID','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_PREVIOUS_USR_UID' ),'width' => 80,'align' => 'left','hidden' => true + ); + $fields['APP_TITLE'] = array ('name' => 'APP_TITLE','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_TITLE' ),'width' => 140,'align' => 'left' + ); + $fields['APP_PRO_TITLE'] = array ('name' => 'APP_PRO_TITLE','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_PRO_TITLE' ),'width' => 140,'align' => 'left' + ); + $fields['APP_TAS_TITLE'] = array ('name' => 'APP_TAS_TITLE','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_TAS_TITLE' ),'width' => 140,'align' => 'left' + ); + $fields['APP_DEL_PREVIOUS_USER'] = array ('name' => 'APP_DEL_PREVIOUS_USER','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_DEL_PREVIOUS_USER' ),'width' => 120,'align' => 'left' + ); + $fields['APP_CURRENT_USER'] = array ('name' => 'APP_CURRENT_USER','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_CURRENT_USER' ),'width' => 120,'align' => 'left' + ); + $fields['USR_FIRSTNAME'] = array ('name' => 'USR_FIRSTNAME','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_CURRENT_USER' ),'width' => 120,'align' => 'left' + ); + $fields['USR_LASTNAME'] = array ('name' => 'USR_LASTNAME','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_CURRENT_USER' ),'width' => 120,'align' => 'left' + ); + $fields['DEL_TASK_DUE_DATE'] = array ('name' => 'DEL_TASK_DUE_DATE','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_DEL_TASK_DUE_DATE' ),'width' => 100,'align' => 'left' + ); + $fields['APP_UPDATE_DATE'] = array ('name' => 'APP_UPDATE_DATE','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_UPDATE_DATE' ),'width' => 100,'align' => 'left' + ); + $fields['DEL_PRIORITY'] = array ('name' => 'DEL_PRIORITY','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_DEL_PRIORITY' ),'width' => 80,'align' => 'left' + ); + $fields['APP_STATUS'] = array ('name' => 'APP_STATUS','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_STATUS' ),'width' => 80,'align' => 'left' + ); + $fields['APP_FINISH_DATE'] = array ('name' => 'APP_FINISH_DATE','fieldType' => 'case field','label' => G::loadTranslation( 'ID_CASESLIST_APP_FINISH_DATE' ),'width' => 100,'align' => 'left' + ); + $fields['APP_DELAY_UID'] = array ('name' => 'APP_DELAY_UID','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_DELAY_UID' ),'width' => 100,'align' => 'left' + ); + $fields['APP_THREAD_INDEX'] = array ('name' => 'APP_THREAD_INDEX','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_THREAD_INDEX' ),'width' => 100,'align' => 'left' + ); + $fields['APP_DEL_INDEX'] = array ('name' => 'APP_DEL_INDEX','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_DEL_INDEX' ),'width' => 100,'align' => 'left' + ); + $fields['APP_TYPE'] = array ('name' => 'APP_TYPE','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_TYPE' ),'width' => 100,'align' => 'left' + ); + $fields['APP_DELEGATION_USER'] = array ('name' => 'APP_DELEGATION_USER','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_DELEGATION_USER' ),'width' => 100,'align' => 'left' + ); + $fields['APP_ENABLE_ACTION_USER'] = array ('name' => 'APP_ENABLE_ACTION_USER','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_ENABLE_ACTION_USER' ),'width' => 100,'align' => 'left' + ); + $fields['APP_ENABLE_ACTION_DATE'] = array ('name' => 'APP_ENABLE_ACTION_DATE','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_AAPP_ENABLE_ACTION_DATE' ),'width' => 100,'align' => 'left' + ); + $fields['APP_DISABLE_ACTION_USER'] = array ('name' => 'APP_DISABLE_ACTION_USER','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_DISABLE_ACTION_USER' ),'width' => 100,'align' => 'left' + ); + $fields['APP_DISABLE_ACTION_DATE'] = array ('name' => 'APP_DISABLE_ACTION_DATE','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_DISABLE_ACTION_DATE' ),'width' => 100,'align' => 'left' + ); + $fields['APP_AUTOMATIC_DISABLED_DATE'] = array ('name' => 'APP_AUTOMATIC_DISABLED_DATE','fieldType' => 'delay field','label' => G::loadTranslation( 'ID_CASESLIST_APP_AUTOMATIC_DISABLED_DATE' ),'width' => 100,'align' => 'left' + ); + return $fields; + + } + + /** + * this function return the default fields for a default case list + * + * @param $action + * @return an array with the default fields for an specific case list (action) + */ + public function getDefaultFields ($action) + { + $rows = array (); + switch ($action) { + case 'todo': // #, Case, task, process, sent by, due date, Last Modify, Priority + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['DEL_TASK_DUE_DATE']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['DEL_PRIORITY']; + break; + case 'draft': //#, Case, task, process, due date, Last Modify, Priority }, + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['DEL_TASK_DUE_DATE']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['DEL_PRIORITY']; + break; + case 'sent': // #, Case, task, process, current user, sent by, Last Modify, Status + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['APP_CURRENT_USER']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['APP_STATUS']; + $rows[] = $fields['USR_FIRSTNAME']; + $rows[] = $fields['USR_LASTNAME']; + break; + case 'unassigned': //#, Case, task, process, completed by user, finish date + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['APP_UPDATE_DATE']; + break; + case 'paused': //#, Case, task, process, sent by + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['APP_THREAD_INDEX']; + $rows[] = $fields['APP_DEL_INDEX']; + break; + case 'completed': //#, Case, task, process, completed by user, finish date + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + break; + case 'cancelled': //#, Case, task, process, due date, Last Modify + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + break; + case 'to_revise': //#, Case, task, process, due date, Last Modify + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['APP_CURRENT_USER']; + $rows[] = $fields['DEL_PRIORITY']; + $rows[] = $fields['APP_STATUS']; + break; + case 'to_reassign': //#, Case, task, process, due date, Last Modify + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['TAS_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_UID']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_CURRENT_USER']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['APP_STATUS']; + break; + case 'all': //#, Case, task, process, due date, Last Modify + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_CURRENT_USER']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['APP_STATUS']; + break; + case 'gral': //#, Case, task, process, due date, Last Modify + $fields = $this->setDefaultFields(); + $rows[] = $fields['APP_UID']; + $rows[] = $fields['DEL_INDEX']; + $rows[] = $fields['USR_UID']; + $rows[] = $fields['PREVIOUS_USR_UID']; + $rows[] = $fields['APP_NUMBER']; + $rows[] = $fields['APP_TITLE']; + $rows[] = $fields['APP_PRO_TITLE']; + $rows[] = $fields['APP_TAS_TITLE']; + $rows[] = $fields['APP_CURRENT_USER']; + $rows[] = $fields['APP_DEL_PREVIOUS_USER']; + $rows[] = $fields['APP_UPDATE_DATE']; + $rows[] = $fields['APP_STATUS']; + break; + } + return $rows; + } + + /** + * set the generic Json Response, using two array for the grid stores and a string for the pmtable name + * + * @param string $pmtable + * @param array $first + * @param array $second + * @return $response a json string + */ + public function genericJsonResponse ($pmtable, $first, $second, $rowsperpage, $dateFormat) + { + $firstGrid['totalCount'] = count( $first ); + $firstGrid['data'] = $first; + $secondGrid['totalCount'] = count( $second ); + $secondGrid['data'] = $second; + $result = array (); + $result['first'] = $firstGrid; + $result['second'] = $secondGrid; + $result['PMTable'] = isset( $pmtable ) ? $pmtable : ''; + $result['rowsperpage'] = isset( $rowsperpage ) ? $rowsperpage : 20; + $result['dateformat'] = isset( $dateFormat ) && $dateFormat != '' ? $dateFormat : 'M d, Y'; + return $result; + } + + public function getSteps ($appUid, $index, $tasUid, $proUid) + { + require_once 'classes/model/Step.php'; + require_once 'classes/model/Content.php'; + require_once 'classes/model/AppDocument.php'; + require_once 'classes/model/InputDocumentPeer.php'; + require_once 'classes/model/OutputDocument.php'; + require_once 'classes/model/Dynaform.php'; + + G::LoadClass( 'pmScript' ); + G::LoadClass( 'case' ); + + $steps = Array (); + $case = new Cases(); + $step = new Step(); + $appDocument = new AppDocument(); + + $caseSteps = $step->getAllCaseSteps( $proUid, $tasUid, $appUid ); + + //getting externals steps + $oPluginRegistry = &PMPluginRegistry::getSingleton(); + $eSteps = $oPluginRegistry->getSteps(); + $externalSteps = array (); + + foreach ($eSteps as $externalStep) { + $externalSteps[$externalStep->sStepId] = $externalStep; + } + + //getting the case record + if ($appUid) { + $caseData = $case->loadCase( $appUid ); + $pmScript = new PMScript(); + $pmScript->setFields( $caseData['APP_DATA'] ); + } + + $externalStepCount = 0; + + foreach ($caseSteps as $caseStep) { + // if it has a condition + if (trim( $caseStep->getStepCondition() ) != '') { + $pmScript->setScript( $caseStep->getStepCondition() ); + + if (! $pmScript->evaluate()) { + //evaluated false, jump & continue with the others steps + continue; + } + } + + $stepUid = $caseStep->getStepUidObj(); + $stepType = $caseStep->getStepTypeObj(); + $stepPosition = $caseStep->getStepPosition(); + + $stepItem = array (); + $stepItem['id'] = $stepUid; + $stepItem['type'] = $stepType; + + switch ($stepType) { + case 'DYNAFORM': + $oDocument = DynaformPeer::retrieveByPK( $stepUid ); + + $stepItem['title'] = $oDocument->getDynTitle(); + $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=EDIT"; + break; + case 'OUTPUT_DOCUMENT': + $oDocument = OutputDocumentPeer::retrieveByPK( $caseStep->getStepUidObj() ); + $outputDoc = $appDocument->getObject( $appUid, $index, $caseStep->getStepUidObj(), 'OUTPUT' ); + $stepItem['title'] = $oDocument->getOutDocTitle(); + + if ($outputDoc['APP_DOC_UID']) { + $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=VIEW&DOC={$outputDoc['APP_DOC_UID']}"; + } else { + $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=GENERATE"; + } + break; + case 'INPUT_DOCUMENT': + $oDocument = InputDocumentPeer::retrieveByPK( $stepUid ); + $stepItem['title'] = $oDocument->getInpDocTitle(); + $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=ATTACH"; + break; + case 'EXTERNAL': + $stepTitle = 'unknown ' . $caseStep->getStepUidObj(); + $oPluginRegistry = PMPluginRegistry::getSingleton(); + $externalStep = $externalSteps[$caseStep->getStepUidObj()]; + $stepItem['id'] = $externalStep->sStepId; + $stepItem['title'] = $externalStep->sStepTitle; + $stepItem['url'] = "cases/cases_Step?UID={$externalStep->sStepId}&TYPE=EXTERNAL&POSITION=$stepPosition&ACTION=EDIT"; + break; + } + + $steps[] = $stepItem; + } + + //last, assign task + $stepItem = array (); + $stepItem['id'] = '-1'; + $stepItem['type'] = ''; + $stepItem['title'] = G::LoadTranslation( 'ID_ASSIGN_TASK' ); + $stepItem['url'] = "cases/cases_Step?TYPE=ASSIGN_TASK&UID=-1&POSITION=10000&ACTION=ASSIGN"; + + $steps[] = $stepItem; + + return $steps; + } +} + diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index f0d210101..fa2d39bfd 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -80,186 +80,187 @@ class processMap { * @return string */ - function load($sProcessUID, $bView = false, $sApplicationUID = '', $iDelegation = 0, $sTask = '', $bCT = false) { - try { - $oProcess = new Process ( ); + public function load($sProcessUID, $bView = false, $sApplicationUID = '', $iDelegation = 0, $sTask = '', $bCT = false) + { + try { + $oProcess = new Process ( ); - $aRow = $oProcess->load($sProcessUID); - $oPM->title->label = strip_tags($aRow ['PRO_TITLE']); - $oPM->title->position->x = $aRow ['PRO_TITLE_X']; - $oPM->title->position->y = $aRow ['PRO_TITLE_Y']; - $oPM->task = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TaskPeer::PRO_UID); - $oCriteria->addSelectColumn(TaskPeer::TAS_UID); - $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); - $oCriteria->addSelectColumn(TaskPeer::TAS_START); - $oCriteria->addSelectColumn(TaskPeer::TAS_POSX); - $oCriteria->addSelectColumn(TaskPeer::TAS_POSY); - $oCriteria->addSelectColumn(TaskPeer::TAS_COLOR); - $oCriteria->addSelectColumn(TaskPeer::TAS_TYPE); - $aConditions = array(); - $aConditions [] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); - $aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'TAS_TITLE' . DBAdapter::getStringDelimiter ()); - $aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); - $oDataset = TaskPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow1 = $oDataset->getRow()) { - $oTask = null; - $oTask->uid = $aRow1 ['TAS_UID']; - $oTask->task_type = $aRow1 ['TAS_TYPE']; - if ($aRow1 ['TAS_TYPE'] == 'NORMAL') { - if (($aRow1 ['CON_VALUE'] == "")) { //There is no Label in Current SYS_LANG language so try to find in English - by default - $oTask1 = new Task ( ); - $aFields1 = $oTask1->load($oTask->uid); - $aRow1 ['CON_VALUE'] = $oTask1->getTasTitle(); - } - $oTask->label = strip_tags($aRow1 ['CON_VALUE']); - } else { - $oCriteria = new Criteria('workflow'); - $del = DBAdapter::getStringDelimiter (); - $oCriteria->add(SubProcessPeer::PRO_PARENT, $aRow1 ['PRO_UID']); - $oCriteria->add(SubProcessPeer::TAS_PARENT, $aRow1 ['TAS_UID']); - - $oCriteria->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAlias("C1", 'CONTENT'); - $tasTitleConds = array(); - $tasTitleConds [] = array(SubProcessPeer::TAS_PARENT, 'C1.CON_ID'); - $tasTitleConds [] = array('C1.CON_CATEGORY', $del . 'TAS_TITLE' . $del); - $tasTitleConds [] = array('C1.CON_LANG', $del . SYS_LANG . $del); - $oCriteria->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN); - - $oDatasetX = SubProcessPeer::doSelectRS($oCriteria); - $oDatasetX->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDatasetX->next(); - $aRowx = $oDatasetX->getRow(); - if ($oProcess->exists($aRowx ['PRO_UID'])) { - //$aRowy = $oProcess->load($aRowx['PRO_UID']); - //$oTask->label = $aRowy['PRO_TITLE']; - $oTask->label = $aRowx ['TAS_TITLE']; - } else { - $oTask->label = strip_tags($aRow1 ['CON_VALUE']); - } - } - $oTask->taskINI = (strtolower($aRow1 ['TAS_START']) == 'true' ? true : false); - $oTask->position->x = (int) $aRow1 ['TAS_POSX']; - $oTask->position->y = (int) $aRow1 ['TAS_POSY']; - $oTask->derivation = null; - $oTask->derivation->to = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $aRow1 ['TAS_UID']); - $oDataset2 = RoutePeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - while ($aRow2 = $oDataset2->getRow()) { - switch ($aRow2 ['ROU_TYPE']) { - case 'SEQUENTIAL' : - $aRow2 ['ROU_TYPE'] = 0; - break; - case 'SELECT' : - $aRow2 ['ROU_TYPE'] = 1; - break; - case 'EVALUATE' : - $aRow2 ['ROU_TYPE'] = 2; - break; - case 'PARALLEL' : - $aRow2 ['ROU_TYPE'] = 3; - break; - case 'PARALLEL-BY-EVALUATION' : - $aRow2 ['ROU_TYPE'] = 4; - break; - case 'SEC-JOIN' : - $aRow2 ['ROU_TYPE'] = 5; - break; - case 'DISCRIMINATOR' : - $aRow2 ['ROU_TYPE'] = 8; - break; - } - $oTo = null; - $oTo->task = $aRow2 ['ROU_NEXT_TASK']; - $oTo->condition = $aRow2 ['ROU_CONDITION']; - $oTo->executant = $aRow2 ['ROU_TO_LAST_USER']; - $oTo->optional = $aRow2 ['ROU_OPTIONAL']; - $oTask->derivation->type = $aRow2 ['ROU_TYPE']; - $oTask->derivation->to [] = $oTo; - $oDataset2->next(); - } - if ($bCT) { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS CANT'); - $oCriteria->addSelectColumn('MIN(DEL_FINISH_DATE) AS FINISH'); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); - $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('DEL_FINISH_DATE'); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); - $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null); - $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow3 = $oDataset2->getRow(); - if ($aRow3) { - $aRow2 ['FINISH'] = ''; - } - if (($aRow2 ['FINISH'] == null) && ($aRow1 ['TAS_UID'] == $sTask)) { - $oTask->color = '#FF0000'; - } else { - if ($aRow2 ['CANT'] != 0) { - if ($aRow2 ['FINISH'] == null) { - //$oTask->color = '#FF9900'; - $oTask->color = '#FF0000'; - } else { - $oTask->color = '#006633'; - } - } - else { - $oTask->color = "#939598"; - } - } - } else { - if ($bView && ($sApplicationUID != '') && ($iDelegation > 0) && ($sTask != '')) { + $aRow = $oProcess->load($sProcessUID); + $oPM->title->label = strip_tags($aRow ['PRO_TITLE']); + $oPM->title->position->x = $aRow ['PRO_TITLE_X']; + $oPM->title->position->y = $aRow ['PRO_TITLE_Y']; + $oPM->task = array(); $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS CANT'); - $oCriteria->addSelectColumn('MIN(DEL_FINISH_DATE) AS FINISH'); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); - $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('DEL_FINISH_DATE'); - $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); - $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); - $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null); - $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow3 = $oDataset2->getRow(); - if ($aRow3) { - $aRow2 ['FINISH'] = ''; - } - if (($aRow2 ['FINISH'] == null) && ($aRow1 ['TAS_UID'] == $sTask)) { - $oTask->color = '#FF0000'; - } else { - if ($aRow2 ['CANT'] != 0) { - if ($aRow2 ['FINISH'] == null) { - $oTask->color = '#FF9900'; + $oCriteria->addSelectColumn(TaskPeer::PRO_UID); + $oCriteria->addSelectColumn(TaskPeer::TAS_UID); + $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); + $oCriteria->addSelectColumn(TaskPeer::TAS_START); + $oCriteria->addSelectColumn(TaskPeer::TAS_POSX); + $oCriteria->addSelectColumn(TaskPeer::TAS_POSY); + $oCriteria->addSelectColumn(TaskPeer::TAS_COLOR); + $oCriteria->addSelectColumn(TaskPeer::TAS_TYPE); + $aConditions = array(); + $aConditions [] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); + $aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'TAS_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow1 = $oDataset->getRow()) { + $oTask = null; + $oTask->uid = $aRow1 ['TAS_UID']; + $oTask->task_type = $aRow1 ['TAS_TYPE']; + if ($aRow1 ['TAS_TYPE'] == 'NORMAL') { + if (($aRow1 ['CON_VALUE'] == "")) { //There is no Label in Current SYS_LANG language so try to find in English - by default + $oTask1 = new Task ( ); + $aFields1 = $oTask1->load($oTask->uid); + $aRow1 ['CON_VALUE'] = $oTask1->getTasTitle(); + } + $oTask->label = strip_tags($aRow1 ['CON_VALUE']); } else { - $oTask->color = '#006633'; + $oCriteria = new Criteria('workflow'); + $del = DBAdapter::getStringDelimiter (); + $oCriteria->add(SubProcessPeer::PRO_PARENT, $aRow1 ['PRO_UID']); + $oCriteria->add(SubProcessPeer::TAS_PARENT, $aRow1 ['TAS_UID']); + + $oCriteria->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAlias("C1", 'CONTENT'); + $tasTitleConds = array(); + $tasTitleConds [] = array(SubProcessPeer::TAS_PARENT, 'C1.CON_ID'); + $tasTitleConds [] = array('C1.CON_CATEGORY', $del . 'TAS_TITLE' . $del); + $tasTitleConds [] = array('C1.CON_LANG', $del . SYS_LANG . $del); + $oCriteria->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN); + + $oDatasetX = SubProcessPeer::doSelectRS($oCriteria); + $oDatasetX->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDatasetX->next(); + $aRowx = $oDatasetX->getRow(); + if ($oProcess->exists($aRowx ['PRO_UID'])) { + //$aRowy = $oProcess->load($aRowx['PRO_UID']); + //$oTask->label = $aRowy['PRO_TITLE']; + $oTask->label = $aRowx ['TAS_TITLE']; + } else { + $oTask->label = strip_tags($aRow1 ['CON_VALUE']); + } + } + $oTask->taskINI = (strtolower($aRow1 ['TAS_START']) == 'true' ? true : false); + $oTask->position->x = (int) $aRow1 ['TAS_POSX']; + $oTask->position->y = (int) $aRow1 ['TAS_POSY']; + $oTask->derivation = null; + $oTask->derivation->to = array(); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $aRow1 ['TAS_UID']); + $oDataset2 = RoutePeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + while ($aRow2 = $oDataset2->getRow()) { + switch ($aRow2 ['ROU_TYPE']) { + case 'SEQUENTIAL' : + $aRow2 ['ROU_TYPE'] = 0; + break; + case 'SELECT' : + $aRow2 ['ROU_TYPE'] = 1; + break; + case 'EVALUATE' : + $aRow2 ['ROU_TYPE'] = 2; + break; + case 'PARALLEL' : + $aRow2 ['ROU_TYPE'] = 3; + break; + case 'PARALLEL-BY-EVALUATION' : + $aRow2 ['ROU_TYPE'] = 4; + break; + case 'SEC-JOIN' : + $aRow2 ['ROU_TYPE'] = 5; + break; + case 'DISCRIMINATOR' : + $aRow2 ['ROU_TYPE'] = 8; + break; + } + $oTo = null; + $oTo->task = $aRow2 ['ROU_NEXT_TASK']; + $oTo->condition = $aRow2 ['ROU_CONDITION']; + $oTo->executant = $aRow2 ['ROU_TO_LAST_USER']; + $oTo->optional = $aRow2 ['ROU_OPTIONAL']; + $oTask->derivation->type = $aRow2 ['ROU_TYPE']; + $oTask->derivation->to [] = $oTo; + $oDataset2->next(); + } + if ($bCT) { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS CANT'); + $oCriteria->addSelectColumn('MIN(DEL_FINISH_DATE) AS FINISH'); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); + $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('DEL_FINISH_DATE'); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); + $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null); + $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow3 = $oDataset2->getRow(); + if ($aRow3) { + $aRow2 ['FINISH'] = ''; + } + if (($aRow2 ['FINISH'] == null) && ($aRow1 ['TAS_UID'] == $sTask)) { + $oTask->color = '#FF0000'; + } else { + if ($aRow2 ['CANT'] != 0) { + if ($aRow2 ['FINISH'] == null) { + //$oTask->color = '#FF9900'; + $oTask->color = '#FF0000'; + } else { + $oTask->color = '#006633'; + } + } + else { + $oTask->color = "#939598"; + } + } + } else { + if ($bView && ($sApplicationUID != '') && ($iDelegation > 0) && ($sTask != '')) { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS CANT'); + $oCriteria->addSelectColumn('MIN(DEL_FINISH_DATE) AS FINISH'); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); + $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('DEL_FINISH_DATE'); + $oCriteria->add(AppDelegationPeer::APP_UID, $sApplicationUID); + $oCriteria->add(AppDelegationPeer::TAS_UID, $aRow1 ['TAS_UID']); + $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null); + $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow3 = $oDataset2->getRow(); + if ($aRow3) { + $aRow2 ['FINISH'] = ''; + } + if (($aRow2 ['FINISH'] == null) && ($aRow1 ['TAS_UID'] == $sTask)) { + $oTask->color = '#FF0000'; + } else { + if ($aRow2 ['CANT'] != 0) { + if ($aRow2 ['FINISH'] == null) { + $oTask->color = '#FF9900'; + } else { + $oTask->color = '#006633'; + } + } else { + $oTask->color = '#939598'; } - } else { - $oTask->color = '#939598'; - } } } } @@ -363,12 +364,12 @@ class processMap { //Load extended task properties from plugin. By JHL Jan 18, 2011 $oPluginRegistry =& PMPluginRegistry::getSingleton(); - $activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties(); + $activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties(); $oPM->taskOptions = array(); foreach($activePluginsForTaskProperties as $key => $taskPropertiesInfo){ - $taskOption['title']=$taskPropertiesInfo->sName; - $taskOption['id']=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName; - $oPM->taskOptions[]=$taskOption; + $taskOption['title']=$taskPropertiesInfo->sName; + $taskOption['id']=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName; + $oPM->taskOptions[]=$taskOption; } $oJSON = new Services_JSON(); @@ -378,79 +379,79 @@ class processMap { } } - /* - * Create a Process - * @param array $aData - * @return boolean - */ - - function createProcess($aData) { - try { - $oProcess = new Process ( ); - return $oProcess->create($aData); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Update a Process - * @param array $aData - * @return boolean - */ - - function updateProcess($aData) { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($aData ['PRO_UID']); - return $oProcess->update($aData); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Edit the Process Map information - * @param string $sProcessUID - * @return boolean - */ - - function editProcess($sProcessUID) { - try { - $oProcess = new Process (); - - if (!is_null($oProcess)) { - G::loadClass('processes'); - $calendar = new Calendar(); - $files = Processes::getProcessFiles($sProcessUID, 'mail'); - - $templates = array(); - $templates[] = 'dummy'; - - foreach ($files as $file) { - $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); + /* + * Create a Process + * @param array $aData + * @return boolean + */ + public function createProcess($aData) + { + try { + $oProcess = new Process ( ); + return $oProcess->create($aData); + } catch (Exception $oError) { + throw ($oError); } + } - $calendarObj = $calendar->getCalendarList(true, true); + /* + * Update a Process + * @param array $aData + * @return boolean + */ + public function updateProcess($aData) + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($aData ['PRO_UID']); + return $oProcess->update($aData); + } catch (Exception $oError) { + throw ($oError); + } + } - global $_DBArray; - $_DBArray['_TEMPLATES1'] = $templates; - $_DBArray['availableCalendars'] = $calendarObj['array']; - $_SESSION ['_DBArray'] = $_DBArray; + /* + * Edit the Process Map information + * @param string $sProcessUID + * @return boolean + */ + public function editProcess($sProcessUID) + { + try { + $oProcess = new Process (); - $aFields = $oProcess->load($sProcessUID); - $aFields['PRO_SUMMARY_DYNAFORM'] = (isset($aFields['PRO_DYNAFORMS']['PROCESS']) ? $aFields['PRO_DYNAFORMS']['PROCESS'] : ''); - $aFields['THETYPE'] = 'UPDATE'; - $calendarInfo = $calendar->getCalendarFor($sProcessUID, $sProcessUID, $sProcessUID); + if (!is_null($oProcess)) { + G::loadClass('processes'); + $calendar = new Calendar(); + $files = Processes::getProcessFiles($sProcessUID, 'mail'); - //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar - $aFields['PRO_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; - $aFields['SYS_LANG'] = SYS_LANG; + $templates = array(); + $templates[] = 'dummy'; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_Edit', '', $aFields, 'processes_Save'); - G::RenderPage('publish', 'raw'); + foreach ($files as $file) { + $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); + } + + $calendarObj = $calendar->getCalendarList(true, true); + + global $_DBArray; + $_DBArray['_TEMPLATES1'] = $templates; + $_DBArray['availableCalendars'] = $calendarObj['array']; + $_SESSION ['_DBArray'] = $_DBArray; + + $aFields = $oProcess->load($sProcessUID); + $aFields['PRO_SUMMARY_DYNAFORM'] = (isset($aFields['PRO_DYNAFORMS']['PROCESS']) ? $aFields['PRO_DYNAFORMS']['PROCESS'] : ''); + $aFields['THETYPE'] = 'UPDATE'; + $calendarInfo = $calendar->getCalendarFor($sProcessUID, $sProcessUID, $sProcessUID); + + //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar + $aFields['PRO_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; + $aFields['SYS_LANG'] = SYS_LANG; + + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_Edit', '', $aFields, 'processes_Save'); + G::RenderPage('publish', 'raw'); return true; } @@ -458,281 +459,280 @@ class processMap { throw (new Exception('This row doesn\'t exist!')); } } - catch (Exception $oError) { + catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete a Process + * @param string $sProcessUID + * @return boolean + */ + public function deleteProcess($sProcessUID) + { + try { + G::LoadClass('case'); + G::LoadClass('reportTables'); + //Instance all classes necesaries + $oProcess = new Process ( ); + $oDynaform = new Dynaform ( ); + $oInputDocument = new InputDocument ( ); + $oOutputDocument = new OutputDocument ( ); + $oTrigger = new Triggers ( ); + $oRoute = new Route ( ); + $oGateway = new Gateway ( ); + $oEvent = new Event ( ); + $oSwimlaneElement = new SwimlanesElements ( ); + $oConfiguration = new Configuration ( ); + $oDbSource = new DbSource ( ); + $oReportTable = new ReportTables ( ); + $oCaseTracker = new CaseTracker ( ); + $oCaseTrackerObject = new CaseTrackerObject ( ); + //Delete the applications of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUID); + $oDataset = ApplicationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $oCase = new Cases ( ); + while ($aRow = $oDataset->getRow()) { + $oCase->removeCase($aRow ['APP_UID']); + $oDataset->next(); + } + //Delete the tasks of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $this->deleteTask($aRow ['TAS_UID']); + $oDataset->next(); + } + //Delete the dynaforms of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oDynaform->remove($aRow ['DYN_UID']); + $oDataset->next(); + } + //Delete the input documents of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); + $oDataset = InputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oInputDocument->remove($aRow ['INP_DOC_UID']); + $oDataset->next(); + } + //Delete the output documents of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); + $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oOutputDocument->remove($aRow ['OUT_DOC_UID']); + $oDataset->next(); + } + + //Delete the triggers of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $oDataset = TriggersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oTrigger->remove($aRow ['TRI_UID']); + $oDataset->next(); + } + + //Delete the routes of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oRoute->remove($aRow ['ROU_UID']); + $oDataset->next(); + } + + //Delete the gateways of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(GatewayPeer::PRO_UID, $sProcessUID); + $oDataset = GatewayPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oGateway->remove($aRow ['GAT_UID']); + $oDataset->next(); + } + + //Delete the Event of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(EventPeer::PRO_UID, $sProcessUID); + $oDataset = EventPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oEvent->remove($aRow ['EVN_UID']); + $oDataset->next(); + } + + //Delete the swimlanes elements of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); + $oDataset = SwimlanesElementsPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oSwimlaneElement->remove($aRow ['SWI_UID']); + $oDataset->next(); + } + //Delete the configurations of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ConfigurationPeer::PRO_UID, $sProcessUID); + $oDataset = ConfigurationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oConfiguration->remove($aRow ['CFG_UID'], $aRow ['OBJ_UID'], $aRow ['PRO_UID'], $aRow ['USR_UID'], $aRow ['APP_UID']); + $oDataset->next(); + } + //Delete the DB sources of process + $oCriteria = new Criteria('workflow'); + $oCriteria->add(DbSourcePeer::PRO_UID, $sProcessUID); + $oDataset = DbSourcePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + /** + * note added by gustavo cruz gustavo-at-colosa-dot-com 27-01-2010 + * in order to solve the bug 0004389, we use the validation function Exists + * inside the remove function in order to verify if the DbSource record + * exists in the Database, however there is a strange behavior within the + * propel engine, when the first record is erased somehow the "_deleted" + * attribute of the next row is set to true, so when propel tries to erase + * it, obviously it can't and trows an error. With the "Exist" function + * we ensure that if there is the record in the database, the _delete attribute must be false. + * + * note added by gustavo cruz gustavo-at-colosa-dot-com 28-01-2010 + * I have just identified the source of the issue, when is created a $oDbSource DbSource object + * it's used whenever a record is erased or removed in the db, however the problem + * it's that the same object is used every time, and the delete method invoked + * sets the _deleted attribute to true when its called, of course as we use + * the same object, the first time works fine but trowns an error with the + * next record, cos it's the same object and the delete method checks if the _deleted + * attribute it's true or false, the attrib _deleted is setted to true the + * first time and later is never changed, the issue seems to be part of + * every remove function in the model classes, not only DbSource + * i recommend that a more general solution must be achieved to resolve + * this issue in every model class, to prevent future problems. + * */ + $oDbSource->remove($aRow ['DBS_UID'], $sProcessUID); + $oDataset->next(); + } + //Delete the supervisors + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + ProcessUserPeer::doDelete($oCriteria); + //Delete the object permissions + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); + ObjectPermissionPeer::doDelete($oCriteria); + //Delete the step supervisors + $oCriteria = new Criteria('workflow'); + $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); + StepSupervisorPeer::doDelete($oCriteria); + //Delete the report tables + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); + $oDataset = ReportTablePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $oReportTable->deleteReportTable($aRow ['REP_TAB_UID']); + $oDataset->next(); + } + //Delete case tracker configuration + $oCaseTracker->remove($sProcessUID); + //Delete case tracker objects + $oCriteria = new Criteria('workflow'); + $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); + ProcessUserPeer::doDelete($oCriteria); + //Delete the process + try { + $oProcess->remove($sProcessUID); + } catch (Exception $oError) { //nada + } + return true; + } catch (Exception $oError) { throw ($oError); } } - /* - * Delete a Process - * @param string $sProcessUID - * @return boolean - */ - - function deleteProcess($sProcessUID) { - try { - G::LoadClass('case'); - G::LoadClass('reportTables'); - //Instance all classes necesaries - $oProcess = new Process ( ); - $oDynaform = new Dynaform ( ); - $oInputDocument = new InputDocument ( ); - $oOutputDocument = new OutputDocument ( ); - $oTrigger = new Triggers ( ); - $oRoute = new Route ( ); - $oGateway = new Gateway ( ); - $oEvent = new Event ( ); - $oSwimlaneElement = new SwimlanesElements ( ); - $oConfiguration = new Configuration ( ); - $oDbSource = new DbSource ( ); - $oReportTable = new ReportTables ( ); - $oCaseTracker = new CaseTracker ( ); - $oCaseTrackerObject = new CaseTrackerObject ( ); - //Delete the applications of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUID); - $oDataset = ApplicationPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $oCase = new Cases ( ); - while ($aRow = $oDataset->getRow()) { - $oCase->removeCase($aRow ['APP_UID']); - $oDataset->next(); - } - //Delete the tasks of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); - $oDataset = TaskPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $this->deleteTask($aRow ['TAS_UID']); - $oDataset->next(); - } - //Delete the dynaforms of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oDynaform->remove($aRow ['DYN_UID']); - $oDataset->next(); - } - //Delete the input documents of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - $oDataset = InputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oInputDocument->remove($aRow ['INP_DOC_UID']); - $oDataset->next(); - } - //Delete the output documents of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); - $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oOutputDocument->remove($aRow ['OUT_DOC_UID']); - $oDataset->next(); - } - - //Delete the triggers of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $oDataset = TriggersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oTrigger->remove($aRow ['TRI_UID']); - $oDataset->next(); - } - - //Delete the routes of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oRoute->remove($aRow ['ROU_UID']); - $oDataset->next(); - } - - //Delete the gateways of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(GatewayPeer::PRO_UID, $sProcessUID); - $oDataset = GatewayPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oGateway->remove($aRow ['GAT_UID']); - $oDataset->next(); - } - - //Delete the Event of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(EventPeer::PRO_UID, $sProcessUID); - $oDataset = EventPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oEvent->remove($aRow ['EVN_UID']); - $oDataset->next(); - } - - //Delete the swimlanes elements of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); - $oDataset = SwimlanesElementsPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oSwimlaneElement->remove($aRow ['SWI_UID']); - $oDataset->next(); - } - //Delete the configurations of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ConfigurationPeer::PRO_UID, $sProcessUID); - $oDataset = ConfigurationPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oConfiguration->remove($aRow ['CFG_UID'], $aRow ['OBJ_UID'], $aRow ['PRO_UID'], $aRow ['USR_UID'], $aRow ['APP_UID']); - $oDataset->next(); - } - //Delete the DB sources of process - $oCriteria = new Criteria('workflow'); - $oCriteria->add(DbSourcePeer::PRO_UID, $sProcessUID); - $oDataset = DbSourcePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - - /** - * note added by gustavo cruz gustavo-at-colosa-dot-com 27-01-2010 - * in order to solve the bug 0004389, we use the validation function Exists - * inside the remove function in order to verify if the DbSource record - * exists in the Database, however there is a strange behavior within the - * propel engine, when the first record is erased somehow the "_deleted" - * attribute of the next row is set to true, so when propel tries to erase - * it, obviously it can't and trows an error. With the "Exist" function - * we ensure that if there is the record in the database, the _delete attribute must be false. - * - * note added by gustavo cruz gustavo-at-colosa-dot-com 28-01-2010 - * I have just identified the source of the issue, when is created a $oDbSource DbSource object - * it's used whenever a record is erased or removed in the db, however the problem - * it's that the same object is used every time, and the delete method invoked - * sets the _deleted attribute to true when its called, of course as we use - * the same object, the first time works fine but trowns an error with the - * next record, cos it's the same object and the delete method checks if the _deleted - * attribute it's true or false, the attrib _deleted is setted to true the - * first time and later is never changed, the issue seems to be part of - * every remove function in the model classes, not only DbSource - * i recommend that a more general solution must be achieved to resolve - * this issue in every model class, to prevent future problems. - * */ - $oDbSource->remove($aRow ['DBS_UID'], $sProcessUID); - $oDataset->next(); - } - //Delete the supervisors - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - ProcessUserPeer::doDelete($oCriteria); - //Delete the object permissions - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); - ObjectPermissionPeer::doDelete($oCriteria); - //Delete the step supervisors - $oCriteria = new Criteria('workflow'); - $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); - StepSupervisorPeer::doDelete($oCriteria); - //Delete the report tables - $oCriteria = new Criteria('workflow'); - $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); - $oDataset = ReportTablePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $oReportTable->deleteReportTable($aRow ['REP_TAB_UID']); - $oDataset->next(); - } - //Delete case tracker configuration - $oCaseTracker->remove($sProcessUID); - //Delete case tracker objects - $oCriteria = new Criteria('workflow'); - $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); - ProcessUserPeer::doDelete($oCriteria); - //Delete the process - try { - $oProcess->remove($sProcessUID); - } catch (Exception $oError) { //nada - } - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Save the process title position + * @param string sProcessUID + * @param integer $iX + * @param integer $iY + * @return boolean + */ + public function saveTitlePosition($sProcessUID = '', $iX = 0, $iY = 0) + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $aFields ['PRO_UID'] = $sProcessUID; + $aFields ['PRO_TITLE_X'] = $iX; + $aFields ['PRO_TITLE_Y'] = $iY; + $oProcess->update($aFields); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Save the process title position - * @param string sProcessUID - * @param integer $iX - * @param integer $iY - * @return boolean - */ - - function saveTitlePosition($sProcessUID = '', $iX = 0, $iY = 0) { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $aFields ['PRO_UID'] = $sProcessUID; - $aFields ['PRO_TITLE_X'] = $iX; - $aFields ['PRO_TITLE_Y'] = $iY; - $oProcess->update($aFields); - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Steps of Tasks + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function steps($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $aFields = array(); + $aFields ['PROCESS'] = $sProcessUID; + $aFields ['TASK'] = $sTaskUID; + $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DELETE_STEP'); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/steps_List', $this->getStepsCriteria($sTaskUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Steps of Tasks - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function steps($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $aFields = array(); - $aFields ['PROCESS'] = $sProcessUID; - $aFields ['TASK'] = $sTaskUID; - $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DELETE_STEP'); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/steps_List', $this->getStepsCriteria($sTaskUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the steps list criteria object - * @param string $sTaskUID - * @return array - */ - - function getStepsCriteria($sTaskUID = '') { + /* + * Return the steps list criteria object + * @param string $sTaskUID + * @return array + */ + public function getStepsCriteria($sTaskUID = '') + { try { //call plugin $oPluginRegistry = &PMPluginRegistry::getSingleton (); @@ -764,7 +764,7 @@ class processMap { case 'INPUT_DOCUMENT' : $oInputDocument = new InputDocument ( ); $aFields = $oInputDocument->getByUid($aRow ['STEP_UID_OBJ']); - if( $aFields === false ) + if ( $aFields === false ) continue; $sTitle = $aFields ['INP_DOC_TITLE']; break; @@ -772,7 +772,7 @@ class processMap { $oOutputDocument = new OutputDocument ( ); $aFields = $oOutputDocument->getByUid($aRow ['STEP_UID_OBJ']); - if( $aFields === false ) + if ( $aFields === false ) continue; $sTitle = $aFields ['OUT_DOC_TITLE']; break; @@ -810,631 +810,195 @@ class processMap { } } - /* - * Return the step triggers list criteria object - * @param string $sStepUID - * @param string $sTaskUID - * @param string $sType - * @return object - */ - - function getStepTriggersCriteria($sStepUID = '', $sTaskUID = '', $sType = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('C.CON_VALUE'); - $oCriteria->addSelectColumn('STEP_UID'); - $oCriteria->addSelectColumn('TRI_UID'); - $oCriteria->addSelectColumn('ST_TYPE'); - $oCriteria->addSelectColumn(StepTriggerPeer::ST_POSITION); - $oCriteria->addAsColumn('TRI_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepTriggerPeer::TRI_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(StepTriggerPeer::STEP_UID, $sStepUID); - $oCriteria->add(StepTriggerPeer::TAS_UID, $sTaskUID); - $oCriteria->add(StepTriggerPeer::ST_TYPE, $sType); - $oCriteria->addAscendingOrderByColumn(StepTriggerPeer::ST_POSITION); - return $oCriteria; - } - - /* - * Return the available building blocks list criteria object - * @param string $sProcessUID - * @param string $sTaskUID - * @return object - */ - - function getAvailableBBCriteria($sProcessUID = '', $sTaskUID = '') { - try { - $oTasks = new Tasks ( ); - $aSteps = $oTasks->getStepsOfTask($sTaskUID); - $sUIDs = array(); - foreach ($aSteps as $aStep) { - $sUIDs [] = $aStep ['STEP_UID_OBJ']; - } - $aBB = array(); - $aBB [] = array('STEP_UID' => 'char', 'STEP_TITLE' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_MODE' => 'char'); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - $oCriteria->add(DynaformPeer::DYN_UID, $sUIDs, Criteria::NOT_IN); - $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $i = 0; - while ($aRow = $oDataset->getRow()) { - $i++; - if (($aRow ['DYN_TITLE'] == NULL) || ($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE", "", $aRow ['DYN_UID'], SYS_LANG); - } - $aBB [] = array('STEP_UID' => $aRow ['DYN_UID'], 'STEP_TITLE' => $aRow ['DYN_TITLE'], 'STEP_TYPE_OBJ' => 'DYNAFORM', 'STEP_MODE' => ''); - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $sUIDs, Criteria::NOT_IN); - $oDataset = InputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - - if (($aRow ['INP_DOC_TITLE'] == NULL) || ($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['INP_DOC_TITLE'] = Content::Load("INP_DOC_TITLE", "", $aRow ['INP_DOC_UID'], SYS_LANG); - } - $aBB [] = array('STEP_UID' => $aRow ['INP_DOC_UID'], 'STEP_TITLE' => $aRow ['INP_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'INPUT_DOCUMENT', 'STEP_MODE' => ''); - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_UID); - $oCriteria->addAsColumn('OUT_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); - $oCriteria->add(OutputDocumentPeer::OUT_DOC_UID, $sUIDs, Criteria::NOT_IN); - $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - - if (($aRow ['OUT_DOC_TITLE'] == NULL) || ($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['OUT_DOC_TITLE'] = Content::Load("OUT_DOC_TITLE", "", $aRow ['OUT_DOC_UID'], SYS_LANG); - } - $aBB [] = array('STEP_UID' => $aRow ['OUT_DOC_UID'], 'STEP_TITLE' => $aRow ['OUT_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'OUTPUT_DOCUMENT', 'STEP_MODE' => ''); - $oDataset->next(); - } - - //call plugin - $oPluginRegistry = &PMPluginRegistry::getSingleton (); - $externalSteps = $oPluginRegistry->getSteps(); - if (is_array($externalSteps) && count($externalSteps) > 0) { - foreach ($externalSteps as $key => $stepVar) { - $aBB [] = array('STEP_UID' => $stepVar->sStepId, 'STEP_TITLE' => $stepVar->sStepTitle, 'STEP_TYPE_OBJ' => 'EXTERNAL', 'STEP_MODE' => ''); - } - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['availableBB'] = $aBB; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('availableBB'); - $oCriteria->addAscendingOrderByColumn('STEP_TYPE_OBJ'); - $oCriteria->addAscendingOrderByColumn('STEP_TITLE'); - return $oCriteria; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Users assigned to Tasks - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function users($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $_SESSION ['iType'] = 1; - - $aFields ['TASK'] = $sTaskUID; - $aFields ['TYPE'] = $_SESSION ['iType']; - $aFields ['OF_TO_ASSIGN'] = G::LoadTranslation('ID_DE_ASSIGN'); - $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DEASIGN_USER_GROUP_MESSAGE'); - $aFields ['UIDS'] = "'0'"; - - $oTasks = new Tasks ( ); - $oGroups = new Groups ( ); - $aAux1 = $oTasks->getGroupsOfTask($sTaskUID, $_SESSION ['iType']); - foreach ($aAux1 as $aGroup) { - $aAux2 = $oGroups->getUsersOfGroup($aGroup ['GRP_UID']); - foreach ($aAux2 as $aUser) { - $aFields ['UIDS'] .= ",'" . $aUser ['USR_UID'] . "'"; - } - } - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $oTask = new Task ( ); - $aTask = $oTask->load($sTaskUID); - - if ($aFields ['TAS_TYPE'] == 'TRUE') { - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortList', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); - } else { - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortList2', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); - } - - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Users Adhoc assigned to Tasks - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function users_adhoc($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $_SESSION ['iType'] = 2; - - $aFields ['TASK'] = $sTaskUID; - $aFields ['TYPE'] = $_SESSION ['iType']; - $aFields ['OF_TO_ASSIGN'] = G::LoadTranslation('ID_DE_ASSIGN'); - $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DEASIGN_USER_GROUP_MESSAGE'); - $aFields ['UIDS'] = "'0'"; - - $oTasks = new Tasks ( ); - $oGroups = new Groups ( ); - $aAux1 = $oTasks->getGroupsOfTask($sTaskUID, $_SESSION ['iType']); - foreach ($aAux1 as $aGroup) { - $aAux2 = $oGroups->getUsersOfGroup($aGroup ['GRP_UID']); - foreach ($aAux2 as $aUser) { - $aFields ['UIDS'] .= ",'" . $aUser ['USR_UID'] . "'"; - } - } - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $oTask = new Task ( ); - $aTask = $oTask->load($sTaskUID); - - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortListAdhoc', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); - - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the tasks users list criteria object - * @param string $sTaskUID - * @param integer $iType - * @return array - */ - - function getTaskUsersCriteria($sTaskUID = '', $iType = 1) { - try { - $aUsers = array(); - $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); - $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); - $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); - $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); - $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(TaskUserPeer::USR_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); - $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); - $oCriteria->add(TaskUserPeer::TU_RELATION, 2); - $oDataset = TaskUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $c = 0; - while ($aRow = $oDataset->getRow()) { - $c++; - $oGroup = new Groupwf ( ); - $aFields = $oGroup->load($aRow ['USR_UID']); - if ($aFields ['GRP_STATUS'] == 'ACTIVE') { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(GroupUserPeer::GRP_UID, $aRow ['USR_UID']); - $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - } else { - $aRow2 ['GROUP_INACTIVE'] = '(' . G::LoadTranslation('ID_GROUP_INACTIVE') . ')'; - } - $aUsers [] = array('LABEL' => (!isset($aRow2 ['GROUP_INACTIVE']) ? $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
' : $aRow ['GRP_TITLE'] . ' ' . $aRow2 ['GROUP_INACTIVE']), 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); - $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); - $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); - $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); - $oCriteria->addJoin(TaskUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); - $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); - $oCriteria->add(TaskUserPeer::TU_RELATION, 1); - $oDataset = TaskUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['taskUsers'] = $aUsers; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('taskUsers'); - $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); - $oCriteria->addAscendingOrderByColumn('LABEL'); - return $oCriteria; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the available users and users groups list criteria object - * @param string $sTaskUID - * @param integer $iType - * @return object - */ - - function getAvailableUsersCriteria($sTaskUID = '', $iType = 1) { - try { - $oTasks = new Tasks ( ); - $aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType); - $aUIDS1 = array(); - $aUIDS2 = array(); - foreach ($aAux as $aGroup) { - $aUIDS1 [] = $aGroup ['GRP_UID']; - } - $aAux = $oTasks->getUsersOfTask($sTaskUID, $iType); - foreach ($aAux as $aUser) { - $aUIDS2 [] = $aUser ['USR_UID']; - } - $aUsers = array(); - $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); - $sDelimiter = DBAdapter::getStringDelimiter (); - $groups = new Groupwf(); - $start = ''; - $limit = ''; - $filter = ''; - $result = $groups->getAllGroup($start,$limit,$filter); - $c = 0; - foreach ($result['rows'] as $results) { - $c++; + /* + * Return the step triggers list criteria object + * @param string $sStepUID + * @param string $sTaskUID + * @param string $sType + * @return object + */ + public function getStepTriggersCriteria($sStepUID = '', $sTaskUID = '', $sType = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(GroupUserPeer::GRP_UID, $results ['GRP_UID']); - $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - $aUsers [] = array ('LABEL' => $results ['GRP_TITLE'] .' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $results ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS2, Criteria::NOT_IN); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 1); - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['availableUsers'] = $aUsers; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('availableUsers'); - $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); - $oCriteria->addAscendingOrderByColumn('LABEL'); - return $oCriteria; - } catch (Exception $oError) { - throw ($oError); + $oCriteria->addSelectColumn('C.CON_VALUE'); + $oCriteria->addSelectColumn('STEP_UID'); + $oCriteria->addSelectColumn('TRI_UID'); + $oCriteria->addSelectColumn('ST_TYPE'); + $oCriteria->addSelectColumn(StepTriggerPeer::ST_POSITION); + $oCriteria->addAsColumn('TRI_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepTriggerPeer::TRI_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(StepTriggerPeer::STEP_UID, $sStepUID); + $oCriteria->add(StepTriggerPeer::TAS_UID, $sTaskUID); + $oCriteria->add(StepTriggerPeer::ST_TYPE, $sType); + $oCriteria->addAscendingOrderByColumn(StepTriggerPeer::ST_POSITION); + return $oCriteria; } - } - /* - * Conditions of the steps - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function stepsConditions($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $aFields ['PROCESS'] = $sProcessUID; - $aFields ['TASK'] = $sTaskUID; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/conditions_List', $this->getStepsCriteria($sTaskUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Triggers of the steps - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ - - function stepsTriggers($sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $_SESSION ['PROCESS'] = $sProcessUID; - $_SESSION ['TASK'] = $sTaskUID; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('view', 'steps/triggers_Tree'); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Add a new task - * @param string $sProcessUID - * @param integer $iX - * @param integer $iY - * @return string - */ - - function addTask($sProcessUID = '', $iX = 0, $iY = 0, $iWidth = 165, $iHeight = 40) { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('TAS_UID'); - $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); - $oDataset = TaskPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $aTasks = array(); - $iTaskNumber = 0; - - while ($oDataset->next()) { - $aRow = $oDataset->getRow(); - - $aTasks[] = $aRow ["TAS_UID"]; - $iTaskNumber = $iTaskNumber + 1; - } - - if ($iTaskNumber > 0) { - $criteria = new Criteria("workflow"); - - $criteria->addSelectColumn(ContentPeer::CON_LANG); - $criteria->addSelectColumn(ContentPeer::CON_VALUE); - $criteria->add(ContentPeer::CON_ID, $aTasks, Criteria::IN); - $criteria->add(ContentPeer::CON_CATEGORY, "TAS_TITLE"); - - $rsSQLCON = ContentPeer::doSelectRS($criteria); - $rsSQLCON->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $numMaxLang = 0; - $numMax = 0; - - while ($rsSQLCON->next()) { - $row = $rsSQLCON->getRow(); - - $conLang = $row["CON_LANG"]; - $conValue = $row["CON_VALUE"]; - - if (preg_match("/^\S+\s(\d+)$/", $conValue, $matches)) { - $n = intval($matches[1]); - - if ($conLang == SYS_LANG) { - if ($n > $numMaxLang) { - $numMaxLang = $n; - } + /* + * Return the available building blocks list criteria object + * @param string $sProcessUID + * @param string $sTaskUID + * @return object + */ + public function getAvailableBBCriteria($sProcessUID = '', $sTaskUID = '') + { + try { + $oTasks = new Tasks ( ); + $aSteps = $oTasks->getStepsOfTask($sTaskUID); + $sUIDs = array(); + foreach ($aSteps as $aStep) { + $sUIDs [] = $aStep ['STEP_UID_OBJ']; } - else { - if ($n > $numMax) { - $numMax = $n; - } + $aBB = array(); + $aBB [] = array('STEP_UID' => 'char', 'STEP_TITLE' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_MODE' => 'char'); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); + $oCriteria->add(DynaformPeer::DYN_UID, $sUIDs, Criteria::NOT_IN); + $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $i = 0; + while ($aRow = $oDataset->getRow()) { + $i++; + if (($aRow ['DYN_TITLE'] == NULL) || ($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE", "", $aRow ['DYN_UID'], SYS_LANG); + } + $aBB [] = array('STEP_UID' => $aRow ['DYN_UID'], 'STEP_TITLE' => $aRow ['DYN_TITLE'], 'STEP_TYPE_OBJ' => 'DYNAFORM', 'STEP_MODE' => ''); + $oDataset->next(); } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); + $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $sUIDs, Criteria::NOT_IN); + $oDataset = InputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['INP_DOC_TITLE'] == NULL) || ($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['INP_DOC_TITLE'] = Content::Load("INP_DOC_TITLE", "", $aRow ['INP_DOC_UID'], SYS_LANG); + } + $aBB [] = array('STEP_UID' => $aRow ['INP_DOC_UID'], 'STEP_TITLE' => $aRow ['INP_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'INPUT_DOCUMENT', 'STEP_MODE' => ''); + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_UID); + $oCriteria->addAsColumn('OUT_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); + $oCriteria->add(OutputDocumentPeer::OUT_DOC_UID, $sUIDs, Criteria::NOT_IN); + $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['OUT_DOC_TITLE'] == NULL) || ($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['OUT_DOC_TITLE'] = Content::Load("OUT_DOC_TITLE", "", $aRow ['OUT_DOC_UID'], SYS_LANG); + } + $aBB [] = array('STEP_UID' => $aRow ['OUT_DOC_UID'], 'STEP_TITLE' => $aRow ['OUT_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'OUTPUT_DOCUMENT', 'STEP_MODE' => ''); + $oDataset->next(); + } + + //call plugin + $oPluginRegistry = &PMPluginRegistry::getSingleton (); + $externalSteps = $oPluginRegistry->getSteps(); + if (is_array($externalSteps) && count($externalSteps) > 0) { + foreach ($externalSteps as $key => $stepVar) { + $aBB [] = array('STEP_UID' => $stepVar->sStepId, 'STEP_TITLE' => $stepVar->sStepTitle, 'STEP_TYPE_OBJ' => 'EXTERNAL', 'STEP_MODE' => ''); + } + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['availableBB'] = $aBB; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('availableBB'); + $oCriteria->addAscendingOrderByColumn('STEP_TYPE_OBJ'); + $oCriteria->addAscendingOrderByColumn('STEP_TITLE'); + return $oCriteria; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Users assigned to Tasks + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function users($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $_SESSION ['iType'] = 1; + + $aFields ['TASK'] = $sTaskUID; + $aFields ['TYPE'] = $_SESSION ['iType']; + $aFields ['OF_TO_ASSIGN'] = G::LoadTranslation('ID_DE_ASSIGN'); + $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DEASIGN_USER_GROUP_MESSAGE'); + $aFields ['UIDS'] = "'0'"; + + $oTasks = new Tasks ( ); + $oGroups = new Groups ( ); + $aAux1 = $oTasks->getGroupsOfTask($sTaskUID, $_SESSION ['iType']); + foreach ($aAux1 as $aGroup) { + $aAux2 = $oGroups->getUsersOfGroup($aGroup ['GRP_UID']); + foreach ($aAux2 as $aUser) { + $aFields ['UIDS'] .= ",'" . $aUser ['USR_UID'] . "'"; } } + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $oTask = new Task ( ); + $aTask = $oTask->load($sTaskUID); - if ($numMaxLang > 0) { - $numMax = $numMaxLang; + if ($aFields ['TAS_TYPE'] == 'TRUE') { + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortList', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); + } else { + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortList2', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); } - if ($numMax > 0 && $numMax > $iTaskNumber) { - $iTaskNumber = $numMax + 1; - } - else { - $iTaskNumber = $iTaskNumber + 1; - } - } - else { - $iTaskNumber = 1; - } - - $oTask = new Task(); - $oNewTask->label = G::LoadTranslation('ID_TASK') . ' ' . $iTaskNumber; - $oNewTask->uid = $oTask->create(array('PRO_UID' => $sProcessUID, 'TAS_TITLE' => $oNewTask->label, 'TAS_POSX' => $iX, 'TAS_POSY' => $iY, 'TAS_WIDTH' => $iWidth, 'TAS_HEIGHT' => $iHeight)); - $oNewTask->statusIcons = array(); - $oNewTask->statusIcons[] = array('label' => '', 'icon' => '/images/alert.gif', 'message' => '', 'url' => ''); - $oJSON = new Services_JSON(); - - return $oJSON->encode($oNewTask); - } - catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Edit the task properties - * @param string $sTaskUID - * @return boolean - */ - - function editTaskProperties($sTaskUID = '', $iForm = 1, $iIndex = 0) { - $sw_template=false; - try { - switch ($iForm) { - case 1 : - $sFilename = 'tasks/tasks_Definition.xml'; - break; - case 2 : - $sFilename = 'tasks/tasks_AssignmentRules.xml'; - break; - case 3 : - $sFilename = 'tasks/tasks_TimingControl.xml'; - break; - case 4 : - $sFilename = 'tasks/tasks_Owner.xml'; - break; - case 5 : - $sFilename = 'tasks/tasks_Permissions.xml'; - break; - case 6 : - $sFilename = 'tasks/tasks_Labels.xml'; - break; - case 7 : - $sFilename = 'tasks/tasks_Notifications.xml'; - break; - default: - //if the $iForm is not one of the defaults then search under Plugins for an extended property. By JHL Jan 18, 2011 - $oPluginRegistry =& PMPluginRegistry::getSingleton(); - $activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties(); - $oPM->taskOptions = array(); - foreach($activePluginsForTaskProperties as $key => $taskPropertiesInfo){ - $id=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName; - if($id==$iForm){ - $sFilename=$taskPropertiesInfo->sPage; - $sw_template=true; - } - } - - //$sFilename = 'tasks/tasks_Owner.xml'; - break; - } - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $aFields ['INDEX'] = $iIndex; - $aFields ['IFORM'] = $iForm; - $aFields ['LANG'] = SYS_LANG; - - /** Task Notifications **/ - if($iForm == 7 || $iForm == 1 ) { - G::loadClass('processes'); - $files = Processes::getProcessFiles($aFields['PRO_UID'], 'mail'); - - $templates = array(); - $templates[] = 'dummy'; - - foreach ($files as $file) { - $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); - } - - global $_DBArray; - $_DBArray['_TEMPLATES1'] = $templates; - $_SESSION['_DBArray'] = $_DBArray; - - if ($iForm == 7) { - // Additional configuration - G::loadClass('configuration'); - $oConf = new Configurations; - $oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aFields['TAS_UID'], '', ''); - $conf = $oConf->aConfig; - if( isset($conf['TAS_DEF_MESSAGE_TYPE']) && isset($conf['TAS_DEF_MESSAGE_TYPE'])) { - $aFields['TAS_DEF_MESSAGE_TYPE'] = $conf['TAS_DEF_MESSAGE_TYPE']; - $aFields['TAS_DEF_MESSAGE_TEMPLATE'] = $conf['TAS_DEF_MESSAGE_TEMPLATE']; - } - } - } - - if ($iForm == 3) { //Load Calendar Information - $calendar = new Calendar ( ); - $calendarObj = $calendar->getCalendarList(true, true); - - global $_DBArray; - - $_DBArray ['availableCalendars'] = $calendarObj ['array']; - - $_SESSION ['_DBArray'] = $_DBArray; - - $calendarInfo = $calendar->getCalendarFor($sTaskUID, $sTaskUID, $sTaskUID); - +<<<<<<< HEAD + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); +======= //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar $aFields ['TAS_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; } @@ -1452,927 +1016,1251 @@ class processMap { $G_PUBLISH->AddContent('view', $sFilename); }else{ $G_PUBLISH->AddContent('xmlform', 'xmlform', $sFilename, '', $aFields); +>>>>>>> upstream/master } - - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); } - } - /* - * Save the tasks positions - * @param string $sTaskUID - * @param integer $iX - * @param integer $iY - * @return integer - */ + /* + * Users Adhoc assigned to Tasks + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function users_adhoc($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); - function saveTaskPosition($sTaskUID = '', $iX = 0, $iY = 0) { - try { - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); + $_SESSION ['iType'] = 2; - $aFields ['TAS_UID'] = $sTaskUID; - $aFields ['TAS_POSX'] = $iX; - $aFields ['TAS_POSY'] = $iY; - return $oTask->update($aFields); - } catch (Exception $oError) { - throw ($oError); - } - } + $aFields ['TASK'] = $sTaskUID; + $aFields ['TYPE'] = $_SESSION ['iType']; + $aFields ['OF_TO_ASSIGN'] = G::LoadTranslation('ID_DE_ASSIGN'); + $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DEASIGN_USER_GROUP_MESSAGE'); + $aFields ['UIDS'] = "'0'"; - /* - * Delete a task - * @param string $sTaskUID - * @return boolean - */ - - function deleteTask($sTaskUID = '') { - try { - $oTasks = new Tasks ( ); - $oTasks->deleteTask($sTaskUID); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete a gateway - * @param string $sProcessUID - * @param string $sGatewayUID - * @return boolean - */ - - function deleteGateway($sProcessUID = '', $sGatewayUID = '') { - try { - //First get all routes information related to $sGatewayUID - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('ROU_UID'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::GAT_UID, $sGatewayUID); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while($aRow = $oDataset->getRow()){ - $aRoutes [] = $aRow ['ROU_UID']; - $oDataset->next(); - } - - $oGateway = new Gateway ( ); - if($oGateway->gatewayExists($sGatewayUID)) - { $oTasks = new Tasks ( ); - $res = $oGateway->remove($sGatewayUID); - if($res){ - $oRoute = new Route( ); - foreach($aRoutes as $sRouteId){ - $oRoute->remove($sRouteId); - } + $oGroups = new Groups ( ); + $aAux1 = $oTasks->getGroupsOfTask($sTaskUID, $_SESSION ['iType']); + foreach ($aAux1 as $aGroup) { + $aAux2 = $oGroups->getUsersOfGroup($aGroup ['GRP_UID']); + foreach ($aAux2 as $aUser) { + $aFields ['UIDS'] .= ",'" . $aUser ['USR_UID'] . "'"; + } } - } - return; - } catch (Exception $oError) { - throw ($oError); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $oTask = new Task ( ); + $aTask = $oTask->load($sTaskUID); + + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'users/users_ShortListAdhoc', $this->getTaskUsersCriteria($sTaskUID, $_SESSION ['iType']), $aFields); + + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Add a gateway - * @param string $sProcessUID - * @param string $sGatewayUID - * @return boolean - */ + /* + * Return the tasks users list criteria object + * @param string $sTaskUID + * @param integer $iType + * @return array + */ + public function getTaskUsersCriteria($sTaskUID = '', $iType = 1) + { + try { + $aUsers = array(); + $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); + $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); + $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); + $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); + $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(TaskUserPeer::USR_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); + $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); + $oCriteria->add(TaskUserPeer::TU_RELATION, 2); + $oDataset = TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $c = 0; + while ($aRow = $oDataset->getRow()) { + $c++; + $oGroup = new Groupwf ( ); + $aFields = $oGroup->load($aRow ['USR_UID']); + if ($aFields ['GRP_STATUS'] == 'ACTIVE') { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); + $oCriteria->add(GroupUserPeer::GRP_UID, $aRow ['USR_UID']); + $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + } else { + $aRow2 ['GROUP_INACTIVE'] = '(' . G::LoadTranslation('ID_GROUP_INACTIVE') . ')'; + } + $aUsers [] = array('LABEL' => (!isset($aRow2 ['GROUP_INACTIVE']) ? $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
' : $aRow ['GRP_TITLE'] . ' ' . $aRow2 ['GROUP_INACTIVE']), 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); + $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); + $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); + $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addJoin(TaskUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); + $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); + $oCriteria->add(TaskUserPeer::TU_RELATION, 1); + $oDataset = TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['taskUsers'] = $aUsers; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('taskUsers'); + $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addAscendingOrderByColumn('LABEL'); + return $oCriteria; + } catch (Exception $oError) { + throw ($oError); + } + } - function addGateway($oData) { - try { - $oGateway = new Gateway ( ); - $aData = array(); - $aData['PRO_UID'] = $oData->pro_uid; - $aData['GAT_X'] = $oData->position->x; - $aData['GAT_Y'] = $oData->position->y; - $aData['GAT_TYPE'] = $oData->gat_type; - $sGat_uid = $oData->gat_uid; - $oGatewayData = GatewayPeer::retrieveByPK($sGat_uid); - if (is_null($oGatewayData)) { - $sGat_uid = $oGateway->create($aData); - }else{ - $aData['GAT_UID'] = $sGat_uid; - if (isset($oData->tas_from)) - $aData['TAS_UID'] = $oData->tas_from; - if (isset($oData->tas_to)) - $aData['GAT_NEXT_TASK'] = $oData->tas_to; - $oGateway->update($aData); - } - $oEncode->uid = $sGat_uid; + /* + * Return the available users and users groups list criteria object + * @param string $sTaskUID + * @param integer $iType + * @return object + */ + public function getAvailableUsersCriteria($sTaskUID = '', $iType = 1) + { + try { + $oTasks = new Tasks ( ); + $aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType); + $aUIDS1 = array(); + $aUIDS2 = array(); + foreach ($aAux as $aGroup) { + $aUIDS1 [] = $aGroup ['GRP_UID']; + } + $aAux = $oTasks->getUsersOfTask($sTaskUID, $iType); + foreach ($aAux as $aUser) { + $aUIDS2 [] = $aUser ['USR_UID']; + } + $aUsers = array(); + $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); + $sDelimiter = DBAdapter::getStringDelimiter (); + $groups = new Groupwf(); + $start = ''; + $limit = ''; + $filter = ''; + $result = $groups->getAllGroup($start,$limit,$filter); + $c = 0; + foreach ($result['rows'] as $results) { + $c++; + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); + $oCriteria->add(GroupUserPeer::GRP_UID, $results ['GRP_UID']); + $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + $aUsers [] = array ('LABEL' => $results ['GRP_TITLE'] .' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $results ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS2, Criteria::NOT_IN); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 1); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['availableUsers'] = $aUsers; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('availableUsers'); + $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addAscendingOrderByColumn('LABEL'); + return $oCriteria; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Conditions of the steps + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + + public function stepsConditions($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $aFields ['PROCESS'] = $sProcessUID; + $aFields ['TASK'] = $sTaskUID; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/conditions_List', $this->getStepsCriteria($sTaskUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Triggers of the steps + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function stepsTriggers($sProcessUID = '', $sTaskUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $_SESSION ['PROCESS'] = $sProcessUID; + $_SESSION ['TASK'] = $sTaskUID; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('view', 'steps/triggers_Tree'); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Add a new task + * @param string $sProcessUID + * @param integer $iX + * @param integer $iY + * @return string + */ + public function addTask($sProcessUID = '', $iX = 0, $iY = 0, $iWidth = 165, $iHeight = 40) + { + try { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('TAS_UID'); + $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $aTasks = array(); + $iTaskNumber = 0; + + while ($oDataset->next()) { + $aRow = $oDataset->getRow(); + $aTasks[] = $aRow ["TAS_UID"]; + $iTaskNumber = $iTaskNumber + 1; + } + + if ($iTaskNumber > 0) { + $criteria = new Criteria("workflow"); + $criteria->addSelectColumn(ContentPeer::CON_LANG); + $criteria->addSelectColumn(ContentPeer::CON_VALUE); + $criteria->add(ContentPeer::CON_ID, $aTasks, Criteria::IN); + $criteria->add(ContentPeer::CON_CATEGORY, "TAS_TITLE"); + + $rsSQLCON = ContentPeer::doSelectRS($criteria); + $rsSQLCON->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $numMaxLang = 0; + $numMax = 0; + + while ($rsSQLCON->next()) { + $row = $rsSQLCON->getRow(); + + $conLang = $row["CON_LANG"]; + $conValue = $row["CON_VALUE"]; + + if (preg_match("/^\S+\s(\d+)$/", $conValue, $matches)) { + $n = intval($matches[1]); + + if ($conLang == SYS_LANG) { + if ($n > $numMaxLang) { + $numMaxLang = $n; + } + } else { + if ($n > $numMax) { + $numMax = $n; + } + } + } + } + + if ($numMaxLang > 0) { + $numMax = $numMaxLang; + } + + if ($numMax > 0 && $numMax > $iTaskNumber) { + $iTaskNumber = $numMax + 1; + } else { + $iTaskNumber = $iTaskNumber + 1; + } + } else { + $iTaskNumber = 1; + } + + $oTask = new Task(); + $oNewTask->label = G::LoadTranslation('ID_TASK') . ' ' . $iTaskNumber; + $oNewTask->uid = $oTask->create(array('PRO_UID' => $sProcessUID, 'TAS_TITLE' => $oNewTask->label, 'TAS_POSX' => $iX, 'TAS_POSY' => $iY, 'TAS_WIDTH' => $iWidth, 'TAS_HEIGHT' => $iHeight)); + $oNewTask->statusIcons = array(); + $oNewTask->statusIcons[] = array('label' => '', 'icon' => '/images/alert.gif', 'message' => '', 'url' => ''); + $oJSON = new Services_JSON(); + + return $oJSON->encode($oNewTask); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Edit the task properties + * @param string $sTaskUID + * @return boolean + */ + public function editTaskProperties($sTaskUID = '', $iForm = 1, $iIndex = 0) + { + $sw_template=false; + try { + switch ($iForm) { + case 1 : + $sFilename = 'tasks/tasks_Definition.xml'; + break; + case 2 : + $sFilename = 'tasks/tasks_AssignmentRules.xml'; + break; + case 3 : + $sFilename = 'tasks/tasks_TimingControl.xml'; + break; + case 4 : + $sFilename = 'tasks/tasks_Owner.xml'; + break; + case 5 : + $sFilename = 'tasks/tasks_Permissions.xml'; + break; + case 6 : + $sFilename = 'tasks/tasks_Labels.xml'; + break; + case 7 : + $sFilename = 'tasks/tasks_Notifications.xml'; + break; + default: + //if the $iForm is not one of the defaults then search under Plugins for an extended property. By JHL Jan 18, 2011 + $oPluginRegistry =& PMPluginRegistry::getSingleton(); + $activePluginsForTaskProperties=$oPluginRegistry->getTaskExtendedProperties(); + $oPM->taskOptions = array(); + foreach($activePluginsForTaskProperties as $key => $taskPropertiesInfo){ + $id=$taskPropertiesInfo->sNamespace."--".$taskPropertiesInfo->sName; + if ($id==$iForm){ + $sFilename=$taskPropertiesInfo->sPage; + $sw_template=true; + } + } + + //$sFilename = 'tasks/tasks_Owner.xml'; + break; + } + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $aFields ['INDEX'] = $iIndex; + $aFields ['IFORM'] = $iForm; + $aFields ['LANG'] = SYS_LANG; + + /** Task Notifications **/ + if ($iForm == 7 || $iForm == 1 ) { + G::loadClass('processes'); + $files = Processes::getProcessFiles($aFields['PRO_UID'], 'mail'); + + $templates = array(); + $templates[] = 'dummy'; + + foreach ($files as $file) { + $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); + } + + global $_DBArray; + $_DBArray['_TEMPLATES1'] = $templates; + $_SESSION['_DBArray'] = $_DBArray; + + if ($iForm == 7) { + // Additional configuration + G::loadClass('configuration'); + $oConf = new Configurations; + $oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aFields['TAS_UID'], '', ''); + $conf = $oConf->aConfig; + if ( isset($conf['TAS_DEF_MESSAGE_TYPE']) && isset($conf['TAS_DEF_MESSAGE_TYPE'])) { + $aFields['TAS_DEF_MESSAGE_TYPE'] = $conf['TAS_DEF_MESSAGE_TYPE']; + $aFields['TAS_DEF_MESSAGE_TEMPLATE'] = $conf['TAS_DEF_MESSAGE_TEMPLATE']; + } + } + } + + if ($iForm == 3) { //Load Calendar Information + $calendar = new Calendar ( ); + $calendarObj = $calendar->getCalendarList(true, true); + + global $_DBArray; + + $_DBArray ['availableCalendars'] = $calendarObj ['array']; + + $_SESSION ['_DBArray'] = $_DBArray; + + $calendarInfo = $calendar->getCalendarFor($sTaskUID, $sTaskUID, $sTaskUID); + + //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar + $aFields ['TAS_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; + } + global $G_PUBLISH; + G::LoadClass('xmlfield_InputPM'); + $G_PUBLISH = new Publisher ( ); + if ($sw_template){ + $G_PUBLISH->AddContent('view', $sFilename); + } else { + $G_PUBLISH->AddContent('xmlform', 'xmlform', $sFilename, '', $aFields); + } + + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Save the tasks positions + * @param string $sTaskUID + * @param integer $iX + * @param integer $iY + * @return integer + */ + public function saveTaskPosition($sTaskUID = '', $iX = 0, $iY = 0) + { + try { + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $aFields ['TAS_UID'] = $sTaskUID; + $aFields ['TAS_POSX'] = $iX; + $aFields ['TAS_POSY'] = $iY; + return $oTask->update($aFields); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete a task + * @param string $sTaskUID + * @return boolean + */ + public function deleteTask($sTaskUID = '') + { + try { + $oTasks = new Tasks ( ); + $oTasks->deleteTask($sTaskUID); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete a gateway + * @param string $sProcessUID + * @param string $sGatewayUID + * @return boolean + */ + public function deleteGateway($sProcessUID = '', $sGatewayUID = '') + { + try { + //First get all routes information related to $sGatewayUID + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('ROU_UID'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::GAT_UID, $sGatewayUID); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while($aRow = $oDataset->getRow()){ + $aRoutes [] = $aRow ['ROU_UID']; + $oDataset->next(); + } + + $oGateway = new Gateway ( ); + if ($oGateway->gatewayExists($sGatewayUID)) + { + $oTasks = new Tasks ( ); + $res = $oGateway->remove($sGatewayUID); + if ($res){ + $oRoute = new Route( ); + foreach($aRoutes as $sRouteId){ + $oRoute->remove($sRouteId); + } + } + } + return; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Add a gateway + * @param string $sProcessUID + * @param string $sGatewayUID + * @return boolean + */ + public function addGateway($oData) + { + try { + $oGateway = new Gateway ( ); + $aData = array(); + $aData['PRO_UID'] = $oData->pro_uid; + $aData['GAT_X'] = $oData->position->x; + $aData['GAT_Y'] = $oData->position->y; + $aData['GAT_TYPE'] = $oData->gat_type; + $sGat_uid = $oData->gat_uid; + $oGatewayData = GatewayPeer::retrieveByPK($sGat_uid); + if (is_null($oGatewayData)) { + $sGat_uid = $oGateway->create($aData); + } else { + $aData['GAT_UID'] = $sGat_uid; + if (isset($oData->tas_from)) { + $aData['TAS_UID'] = $oData->tas_from; + } + if (isset($oData->tas_to)) { + $aData['GAT_NEXT_TASK'] = $oData->tas_to; + } + $oGateway->update($aData); + } + $oEncode->uid = $sGat_uid; + $oJSON = new Services_JSON ( ); + return $oJSON->encode($oEncode); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Add a new guide + * @param string $sProcessUID + * @param integer $iPosition + * @param string $sDirection + * @return string + */ + public function addGuide($sProcessUID = '', $iPosition = 0, $sDirection = 'vertical') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oSL = new SwimlanesElements ( ); + switch ($sDirection) { + case 'vertical' : + $oNewGuide->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'LINE', 'SWI_X' => $iPosition, 'SWI_Y' => 0)); + break; + case 'horizontal' : + $oNewGuide->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'LINE', 'SWI_X' => 0, 'SWI_Y' => $iPosition)); + break; + } + $oJSON = new Services_JSON ( ); + return $oJSON->encode($oNewGuide); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Save the guide position + * @param string $sSEUID + * @param integer $iPosition + * @param string $sDirection + * @return integer + */ + public function saveGuidePosition($sSEUID = '', $iPosition = 0, $sDirection = 'vertical') + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + switch ($sDirection) { + case 'vertical' : + return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_X' => $iPosition)); + break; + case 'horizontal' : + return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_Y' => $iPosition)); + break; + } + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete a guide + * @param string $sUID + * @return boolean + */ + public function deleteGuide($sSEUID = '') + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + $oSL->remove($sSEUID); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Delete all guides + * @param string $sProcessUID + * @return boolean + */ + public function deleteGuides($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); + $oCriteria->add(SwimlanesElementsPeer::SWI_TYPE, 'LINE'); + SwimlanesElementsPeer::doDelete($oCriteria); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Add a new text + * @param string $sProcessUID + * @param string $sLabel + * @param integer $iX + * @param integer $iY + * @return string + */ + public function addText($sProcessUID = '', $sLabel = '', $iX = 0, $iY = 0 , $sNext_uid = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oSL = new SwimlanesElements ( ); + $oNewText->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'TEXT', 'SWI_TEXT' => $sLabel, 'SWI_X' => $iX, 'SWI_Y' => $iY,'SWI_NEXT_UID' => $sNext_uid)); $oJSON = new Services_JSON ( ); - return $oJSON->encode($oEncode); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Add a new guide - * @param string $sProcessUID - * @param integer $iPosition - * @param string $sDirection - * @return string - */ - - function addGuide($sProcessUID = '', $iPosition = 0, $sDirection = 'vertical') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oSL = new SwimlanesElements ( ); - switch ($sDirection) { - case 'vertical' : - $oNewGuide->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'LINE', 'SWI_X' => $iPosition, 'SWI_Y' => 0)); - break; - case 'horizontal' : - $oNewGuide->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'LINE', 'SWI_X' => 0, 'SWI_Y' => $iPosition)); - break; - } - $oJSON = new Services_JSON ( ); - return $oJSON->encode($oNewGuide); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Save the guide position - * @param string $sSEUID - * @param integer $iPosition - * @param string $sDirection - * @return integer - */ - - function saveGuidePosition($sSEUID = '', $iPosition = 0, $sDirection = 'vertical') { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - switch ($sDirection) { - case 'vertical' : - return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_X' => $iPosition)); - break; - case 'horizontal' : - return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_Y' => $iPosition)); - break; - } - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete a guide - * @param string $sUID - * @return boolean - */ - - function deleteGuide($sSEUID = '') { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - $oSL->remove($sSEUID); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete all guides - * @param string $sProcessUID - * @return boolean - */ - - function deleteGuides($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); - $oCriteria->add(SwimlanesElementsPeer::SWI_TYPE, 'LINE'); - SwimlanesElementsPeer::doDelete($oCriteria); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Add a new text - * @param string $sProcessUID - * @param string $sLabel - * @param integer $iX - * @param integer $iY - * @return string - */ - - function addText($sProcessUID = '', $sLabel = '', $iX = 0, $iY = 0 , $sNext_uid = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oSL = new SwimlanesElements ( ); - $oNewText->uid = $oSL->create(array('PRO_UID' => $sProcessUID, 'SWI_TYPE' => 'TEXT', 'SWI_TEXT' => $sLabel, 'SWI_X' => $iX, 'SWI_Y' => $iY,'SWI_NEXT_UID' => $sNext_uid)); - $oJSON = new Services_JSON ( ); - return $oJSON->encode($oNewText); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Update a text - * @param string $sSEUID - * @param string $sLabel - * @return integer - */ - - function updateText($sSEUID = '', $sLabel = '' , $sNext_uid = '') { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_TEXT' => $sLabel,'SWI_NEXT_UID' => $sNext_uid)); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Save the text position - * @param string $sSEUID - * @param integer $iX - * @param integer $iY - * @return integer - */ - - function saveTextPosition($sSEUID = '', $iX = 0, $iY = 0) { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_X' => $iX, 'SWI_Y' => $iY)); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Delete a text - * @param string $sSEUID - * @return boolean - */ - - function deleteText($sSEUID = '') { - try { - $oSL = new SwimlanesElements ( ); - $aFields = $oSL->load($sSEUID); - $oSL->remove($sSEUID); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Save the gateways positions - * @param string $sGatewayUID - * @param integer $iX - * @param integer $iY - * @return integer - */ - - function saveGatewayPosition($sGatewayUID = '', $iX = 0, $iY = 0) { - try { - $oGateway = new Gateway ( ); - $aFields = $oGateway->load($sGatewayUID); - - $aFields ['GAT_UID'] = $sGatewayUID; - $aFields ['GAT_X'] = $iX; - $aFields ['GAT_Y'] = $iY; - return $oGateway->update($aFields); - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Presents a small list of dynaforms of the process - * @param string $sProcessUID - * @return boolean - */ - - function dynaformsList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_ShortList', $this->getDynaformsCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the dynaforms list criteria object - * @param string $sProcessUID - * @return object - */ - - function getDynaformsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addSelectColumn(DynaformPeer::PRO_UID); - $oCriteria->addSelectColumn(DynaformPeer::DYN_TYPE); - $oCriteria->addAsColumn('DYN_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('DYN_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'DYN_DESCRIPTION' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $dynaformArray = array(); - $dynaformArray [] = array('d' => 'char'); - while ($aRow = $oDataset->getRow()) { - if (($aRow ['DYN_TITLE'] == NULL) || ($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE", "", $aRow ['DYN_UID'], SYS_LANG); - } - if (($aRow ['DYN_DESCRIPTION'] == NULL) || ($aRow ['DYN_DESCRIPTION'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['DYN_DESCRIPTION'] = Content::Load("DYN_DESCRIPTION", "", $aRow ['DYN_UID'], SYS_LANG); - } - $dynaformArray [] = $aRow; - $oDataset->next(); + return $oJSON->encode($oNewText); + } catch (Exception $oError) { + throw ($oError); + } } - - return $oCriteria; + /* + * Update a text + * @param string $sSEUID + * @param string $sLabel + * @return integer + */ + public function updateText($sSEUID = '', $sLabel = '' , $sNext_uid = '') + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_TEXT' => $sLabel,'SWI_NEXT_UID' => $sNext_uid)); + } catch (Exception $oError) { + throw ($oError); + } } - /** - * getDynaformsList - * - * @param string $sProcessUID - * @return array $dynaformArray - */ - function getDynaformsList($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addSelectColumn(DynaformPeer::PRO_UID); - $oCriteria->addSelectColumn(DynaformPeer::DYN_TYPE); - $oCriteria->addAsColumn('DYN_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('DYN_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'DYN_DESCRIPTION' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $dynaformArray = array(); - while ($aRow = $oDataset->getRow()) { - if (($aRow ['DYN_TITLE'] == NULL) || ($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE", "", $aRow ['DYN_UID'], SYS_LANG); - } - if (($aRow ['DYN_DESCRIPTION'] == NULL) || ($aRow ['DYN_DESCRIPTION'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['DYN_DESCRIPTION'] = Content::Load("DYN_DESCRIPTION", "", $aRow ['DYN_UID'], SYS_LANG); - } - $dynaformArray [] = $aRow; - $oDataset->next(); + /* + * Save the text position + * @param string $sSEUID + * @param integer $iX + * @param integer $iY + * @return integer + */ + public function saveTextPosition($sSEUID = '', $iX = 0, $iY = 0) + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + return $oSL->update(array('SWI_UID' => $sSEUID, 'SWI_X' => $iX, 'SWI_Y' => $iY)); + } catch (Exception $oError) { + throw ($oError); + } } - return $dynaformArray; - } - - /* - * Presents a small list of output documents of the process - * @param string $sProcessUID - * @return boolean - */ - - function outputdocsList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'outputdocs/outputdocs_ShortList', $this->getOutputDocumentsCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the output documents list criteria object - * @param string $sProcessUID - * @return object - */ - - function getOutputDocumentsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_UID); - $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_TYPE); - $oCriteria->addSelectColumn(OutputDocumentPeer::PRO_UID); - $oCriteria->addAsColumn('OUT_DOC_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('OUT_DOC_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'OUT_DOC_DESCRIPTION' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); - - $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $outputDocArray = array(); - $outputDocArray [] = array('d' => 'char'); - while ($aRow = $oDataset->getRow()) { - if (($aRow ['OUT_DOC_TITLE'] == NULL) || ($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $outputDocument = new OutputDocument ( ); - $outputDocumentObj = $outputDocument->load($aRow ['OUT_DOC_UID']); - $aRow ['OUT_DOC_TITLE'] = $outputDocumentObj ['OUT_DOC_TITLE']; - $aRow ['OUT_DOC_DESCRIPTION'] = $outputDocumentObj ['OUT_DOC_DESCRIPTION']; - } - $outputDocArray [] = $aRow; - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['outputDocArray'] = $outputDocArray; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('outputDocArray'); - - return $oCriteria; - } - - /* - * Presents a small list of input documents of the process - * @param string $sProcessUID Process UID - * @return void - */ - - function inputdocsList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_ShortList', $this->getInputDocumentsCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the input documents list criteria object - * @param string $sProcessUID - * @return object - */ - - function getInputDocumentsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('INP_DOC_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - - $oDataset = InputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $inputDocArray = ""; - $inputDocArray [] = array('INP_DOC_UID' => 'char', 'PRO_UID' => 'char', 'INP_DOC_TITLE' => 'char', 'INP_DOC_DESCRIPTION' => 'char'); - while ($aRow = $oDataset->getRow()) { - if (($aRow ['INP_DOC_TITLE'] == NULL) || ($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $inputDocument = new InputDocument ( ); - $inputDocumentObj = $inputDocument->load($aRow ['INP_DOC_UID']); - $aRow ['INP_DOC_TITLE'] = $inputDocumentObj ['INP_DOC_TITLE']; - $aRow ['INP_DOC_DESCRIPTION'] = $inputDocumentObj ['INP_DOC_DESCRIPTION']; - } - $inputDocArray [] = $aRow; - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - - $_DBArray ['inputDocArrayMain'] = $inputDocArray; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('inputDocArrayMain'); - - return $oCriteria; - } - - /* - * Presents a small list of triggers of the process - * @param string $sProcessUID - * @return void - */ - - function triggersList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'triggers/triggers_ShortList', $this->getTriggersCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); - } - } - - /* - * Return the triggers list criteria object - * @param string $sProcessUID - * @return object - */ - - function getTriggersCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TriggersPeer::TRI_UID); - $oCriteria->addSelectColumn(TriggersPeer::PRO_UID); - $oCriteria->addAsColumn('TRI_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('TRI_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(TriggersPeer::TRI_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(TriggersPeer::TRI_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn('TRI_TITLE'); - - - $oDataset = TriggersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $triggersArray = ""; - $triggersArray [] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char'); - while ($aRow = $oDataset->getRow()) { - - if (($aRow ['TRI_TITLE'] == NULL) || ($aRow ['TRI_TITLE'] == "")) { // There is no transaltion for this Trigger name, try to get/regenerate the label - $triggerO = new Triggers ( ); - $triggerObj = $triggerO->load($aRow ['TRI_UID']); - $aRow ['TRI_TITLE'] = $triggerObj ['TRI_TITLE']; - $aRow ['TRI_DESCRIPTION'] = $triggerObj ['TRI_DESCRIPTION']; - } - $triggersArray [] = $aRow; - $oDataset->next(); + /* + * Delete a text + * @param string $sSEUID + * @return boolean + */ + public function deleteText($sSEUID = '') + { + try { + $oSL = new SwimlanesElements ( ); + $aFields = $oSL->load($sSEUID); + $oSL->remove($sSEUID); + return true; + } catch (Exception $oError) { + throw ($oError); + } } + /* + * Save the gateways positions + * @param string $sGatewayUID + * @param integer $iX + * @param integer $iY + * @return integer + */ + public function saveGatewayPosition($sGatewayUID = '', $iX = 0, $iY = 0) + { + try { + $oGateway = new Gateway ( ); + $aFields = $oGateway->load($sGatewayUID); - return $oCriteria; - } + $aFields ['GAT_UID'] = $sGatewayUID; + $aFields ['GAT_X'] = $iX; + $aFields ['GAT_Y'] = $iY; + return $oGateway->update($aFields); + } catch (Exception $oError) { + throw ($oError); + } + } - /* - * Return the triggers list in a array - * @param string $sProcessUID - * @return array - */ + /* + * Presents a small list of dynaforms of the process + * @param string $sProcessUID + * @return boolean + */ + public function dynaformsList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_ShortList', $this->getDynaformsCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } - function getTriggers($sProcessUID = '') { - $aTriggers = Array(); - $oCriteria = $this->getTriggersCriteria($sProcessUID); + /* + * Return the dynaforms list criteria object + * @param string $sProcessUID + * @return object + */ + public function getDynaformsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addSelectColumn(DynaformPeer::PRO_UID); + $oCriteria->addSelectColumn(DynaformPeer::DYN_TYPE); + $oCriteria->addAsColumn('DYN_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('DYN_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'DYN_DESCRIPTION' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $dynaformArray = array(); + $dynaformArray [] = array('d' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['DYN_TITLE'] == NULL) || ($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE", "", $aRow ['DYN_UID'], SYS_LANG); + } + if (($aRow ['DYN_DESCRIPTION'] == NULL) || ($aRow ['DYN_DESCRIPTION'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['DYN_DESCRIPTION'] = Content::Load("DYN_DESCRIPTION", "", $aRow ['DYN_UID'], SYS_LANG); + } + $dynaformArray [] = $aRow; + $oDataset->next(); + } + return $oCriteria; + } - while ($oDataset->next()) - array_push($aTriggers, $oDataset->getRow()); + /** + * getDynaformsList + * + * @param string $sProcessUID + * @return array $dynaformArray + */ + public function getDynaformsList($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addSelectColumn(DynaformPeer::PRO_UID); + $oCriteria->addSelectColumn(DynaformPeer::DYN_TYPE); + $oCriteria->addAsColumn('DYN_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('DYN_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'DYN_DESCRIPTION' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - return $aTriggers; - } + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $dynaformArray = array(); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['DYN_TITLE'] == NULL) || ($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE", "", $aRow ['DYN_UID'], SYS_LANG); + } + if (($aRow ['DYN_DESCRIPTION'] == NULL) || ($aRow ['DYN_DESCRIPTION'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['DYN_DESCRIPTION'] = Content::Load("DYN_DESCRIPTION", "", $aRow ['DYN_UID'], SYS_LANG); + } + $dynaformArray [] = $aRow; + $oDataset->next(); + } + return $dynaformArray; + } - /* - * Presents a small list of Scheduled Tasks of the process - * @param string $sProcessUID - * @return void - */ + /* + * Presents a small list of output documents of the process + * @param string $sProcessUID + * @return boolean + */ + public function outputdocsList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'outputdocs/outputdocs_ShortList', $this->getOutputDocumentsCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } - function caseSchedulerList($sProcessUID = '') { - try { - /* $oCaseScheduler = new CaseScheduler(); - $aRows = $oCaseScheduler->getAll(); - - //$oCaseScheduler->caseSchedulerCron(); - // g::pr($aRows); die; - - $fieldNames = Array( - 'SCH_UID' => 'char', - 'SCH_NAME' => 'char', - 'PRO_UID' => 'char', - 'TAS_UID' => 'char', - 'SCH_TIME_NEXT_RUN' => 'char', - 'SCH_LAST_RUN_TIME' => 'char', - 'SCH_STATE' => 'char', - 'SCH_LAST_STATE' => 'char', - 'USR_UID' => 'char', - 'SCH_OPTION' => 'char', - 'SCH_START_TIME' => 'char', - 'SCH_START_DATE' => 'char', - 'SCH_DAYS_PERFORM_TASK' => 'char', - 'SCH_EVERY_DAYS' => 'char', - 'SCH_WEEK_DAYS' => 'char', - 'SCH_START_DAY' => 'char', - 'SCH_MONTHS' => 'char', - 'SCH_END_DATE' => 'char', - 'SCH_REPEAT_EVERY' => 'char', - 'SCH_REPEAT_UNTIL' => 'char', - 'SCH_REPEAT_STOP_IF_RUNNING' => 'char', - 'PRO_PARENT' => 'char', - 'PRO_TIME' => 'char', - 'PRO_TIMEUNIT' => 'char', - 'PRO_STATUS' => 'char', - 'PRO_TYPE_DAY' => 'char', - 'PRO_TYPE' => 'char', - 'PRO_ASSIGNMENT' => 'char', - 'PRO_SHOW_MAP' => 'char', - 'PRO_SHOW_MESSAGE' => 'char', - 'PRO_SHOW_DELEGATE' => 'char', - 'PRO_SHOW_DYNAFORM' => 'char', - 'PRO_CATEGORY' => 'char', - 'PRO_SUB_CATEGORY' => 'char', - 'PRO_INDUSTRY' => 'char', - 'PRO_UPDATE_DATE' => 'char', - 'PRO_CREATE_DATE' => 'char', - 'PRO_CREATE_USER' => 'char', - 'PRO_HEIGHT' => 'char', - 'PRO_WIDTH' => 'char', - 'PRO_TITLE_X' => 'char', - 'PRO_TITLE_Y' => 'char', - 'PRO_DEBUG' => 'char', - 'PRO_TITLE' => 'char', - 'PRO_DESCRIPTION' => 'char', - 'TAS_TYPE' => 'char', - 'TAS_DURATION' => 'char', - 'TAS_DELAY_TYPE' => 'char', - 'TAS_TEMPORIZER' => 'char', - 'TAS_TYPE_DAY' => 'char', - 'TAS_TIMEUNIT' => 'char', - 'TAS_ALERT' => 'char', - 'TAS_PRIORITY_VARIABLE' => 'char', - 'TAS_ASSIGN_TYPE' => 'char', - 'TAS_ASSIGN_VARIABLE' => 'char', - 'TAS_ASSIGN_LOCATION' => 'char', - 'TAS_ASSIGN_LOCATION_ADHOC' => 'char', - 'TAS_TRANSFER_FLY' => 'char', - 'TAS_LAST_ASSIGNED' => 'char', - 'TAS_USER' => 'char', - 'TAS_CAN_UPLOAD' => 'char', - 'TAS_VIEW_UPLOAD' => 'char', - 'TAS_VIEW_ADDITIONAL_DOCUMENTATION' => 'char', - 'TAS_CAN_CANCEL' => 'char', - 'TAS_OWNER_APP' => 'char', - 'STG_UID' => 'char', - 'TAS_CAN_PAUSE' => 'char', - 'TAS_CAN_SEND_MESSAGE' => 'char', - 'TAS_CAN_DELETE_DOCS' => 'char', - 'TAS_SELF_SERVICE' => 'char', - 'TAS_START' => 'char', - 'TAS_TO_LAST_USER' => 'char', - 'TAS_SEND_LAST_EMAIL' => 'char', - 'TAS_DERIVATION' => 'char', - 'TAS_POSX' => 'char', - 'TAS_POSY' => 'char', - 'TAS_COLOR' => 'char', - 'TAS_TITLE' => 'char', - 'TAS_DESCRIPTION' => 'char', - 'TAS_DEF_TITLE' => 'char', - 'TAS_DEF_DESCRIPTION' => 'char', - 'TAS_DEF_PROC_CODE' => 'char', - 'TAS_DEF_MESSAGE' => 'char' - ); - - - $aRows = array_merge(Array($fieldNames), $aRows); - - // g::pr($aRows); die; + /* + * Return the output documents list criteria object + * @param string $sProcessUID + * @return object + */ + public function getOutputDocumentsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_UID); + $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_TYPE); + $oCriteria->addSelectColumn(OutputDocumentPeer::PRO_UID); + $oCriteria->addAsColumn('OUT_DOC_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('OUT_DOC_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'OUT_DOC_DESCRIPTION' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); + $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $outputDocArray = array(); + $outputDocArray [] = array('d' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['OUT_DOC_TITLE'] == NULL) || ($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $outputDocument = new OutputDocument ( ); + $outputDocumentObj = $outputDocument->load($aRow ['OUT_DOC_UID']); + $aRow ['OUT_DOC_TITLE'] = $outputDocumentObj ['OUT_DOC_TITLE']; + $aRow ['OUT_DOC_DESCRIPTION'] = $outputDocumentObj ['OUT_DOC_DESCRIPTION']; + } + $outputDocArray [] = $aRow; + $oDataset->next(); + } global $_DBArray; - $_DBArray['cases_scheduler'] = $aRows; - $_SESSION['_DBArray'] = $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['outputDocArray'] = $outputDocArray; + $_SESSION ['_DBArray'] = $_DBArray; G::LoadClass('ArrayPeer'); $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('cases_scheduler'); - $G_PUBLISH = new Publisher; + $oCriteria->setDBArrayTable('outputDocArray'); - $G_PUBLISH->AddContent('propeltable', 'paged-table', '/cases/cases_Scheduler_List', $oCriteria, array('CONFIRM' => G::LoadTranslation('ID_MSG_CONFIRM_DELETE_CASE_SCHEDULER'))); - G::RenderPage('publish'); - //return true; */ - $schedulerPath = SYS_URI . "cases/cases_Scheduler_List"; - $html = ""; - echo $html; - } catch (Exception $oError) { - throw ($oError); + return $oCriteria; } - } - /* - * Presents a small list of Scheduled Task Logs of the process - * @param string $sProcessUID - * @return void - */ - - function logCaseSchedulerList($sProcessUID = '') { - try { - $oLogCaseScheduler = new LogCasesScheduler(); - $aRows = $oLogCaseScheduler->getAll(); - - $fieldNames = Array( - 'PRO_UID' => 'char', - 'TAS_UID' => 'char', - 'USR_NAME' => 'char', - 'EXEC_DATE' => 'char', - 'EXEC_HOUR' => 'char', - 'RESULT' => 'char', - 'SCH_UID' => 'char', - 'WS_CREATE_CASE_STATUS' => 'char', - 'WS_ROUTE_CASE_STATUS' => 'char', - ); - - $aRows = array_merge(Array($fieldNames), $aRows); - - $_DBArray['log_cases_scheduler'] = $aRows; - $_SESSION['_DBArray'] = $_DBArray; - - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('log_cases_scheduler'); - - $G_PUBLISH = new Publisher; - $G_PUBLISH->ROWS_PER_PAGE = 10; - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_Scheduler_Log', $oCriteria); - $G_PUBLISH->oPropelTable->rowsPerPage = 10; - G::RenderPage('publish', 'blank'); - } catch (Exception $oError) { - throw ($oError); + /* + * Presents a small list of input documents of the process + * @param string $sProcessUID Process UID + * @return void + */ + public function inputdocsList($sProcessUID = '') + { + try { + return true; + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_ShortList', $this->getInputDocumentsCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Presents a small list of messages of the process - * @param string $sProcessUID - * @return void - */ + /* + * Return the input documents list criteria object + * @param string $sProcessUID + * @return object + */ + public function getInputDocumentsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('INP_DOC_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - function messagesList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $aFields ['PRO_UID'] = $sProcessUID; - $aFields ['SYS_LANG'] = SYS_LANG; - $G_PUBLISH = new Publisher ( ); - //$G_PUBLISH->AddContent('pagedtable', 'paged-table', 'messages/messages_ShortList', $this->getMessagesCriteria($sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + $oDataset = InputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $inputDocArray = ""; + $inputDocArray [] = array('INP_DOC_UID' => 'char', 'PRO_UID' => 'char', 'INP_DOC_TITLE' => 'char', 'INP_DOC_DESCRIPTION' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['INP_DOC_TITLE'] == NULL) || ($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $inputDocument = new InputDocument ( ); + $inputDocumentObj = $inputDocument->load($aRow ['INP_DOC_UID']); + $aRow ['INP_DOC_TITLE'] = $inputDocumentObj ['INP_DOC_TITLE']; + $aRow ['INP_DOC_DESCRIPTION'] = $inputDocumentObj ['INP_DOC_DESCRIPTION']; + } + $inputDocArray [] = $aRow; + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + + $_DBArray ['inputDocArrayMain'] = $inputDocArray; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('inputDocArrayMain'); + + return $oCriteria; } - } - /* - * Presents a small list of report tables of the process - * @param string $sProcessUID - * @return void - */ - - function reportTablesList($sProcessUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'reportTables/reportTables_ShortList', $this->getReportTablesCriteria($sProcessUID), $aFields); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Presents a small list of triggers of the process + * @param string $sProcessUID + * @return void + */ + public function triggersList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'triggers/triggers_ShortList', $this->getTriggersCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Return the report tables list criteria object - * @param string $sProcessUID - * @return object - */ + /* + * Return the triggers list criteria object + * @param string $sProcessUID + * @return object + */ + public function getTriggersCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(TriggersPeer::TRI_UID); + $oCriteria->addSelectColumn(TriggersPeer::PRO_UID); + $oCriteria->addAsColumn('TRI_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('TRI_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(TriggersPeer::TRI_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(TriggersPeer::TRI_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn('TRI_TITLE'); - function getReportTablesCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID); - $oCriteria->addSelectColumn(ReportTablePeer::PRO_UID); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_NAME); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_TYPE); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_CONNECTION); - // $oCriteria->addAsColumn ( 'REP_TAB_TITLE', 'C.CON_VALUE' ); - $oCriteria->addAsColumn('REP_TAB_TITLE', "CASE WHEN C.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE A.CON_ID = REPORT_TABLE.REP_TAB_UID ) ELSE C.CON_VALUE END "); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(ReportTablePeer::REP_TAB_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'REP_TAB_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); - return $oCriteria; - } + $oDataset = TriggersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $triggersArray = ""; + $triggersArray [] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['TRI_TITLE'] == NULL) || ($aRow ['TRI_TITLE'] == "")) { // There is no transaltion for this Trigger name, try to get/regenerate the label + $triggerO = new Triggers ( ); + $triggerObj = $triggerO->load($aRow ['TRI_UID']); + $aRow ['TRI_TITLE'] = $triggerObj ['TRI_TITLE']; + $aRow ['TRI_DESCRIPTION'] = $triggerObj ['TRI_DESCRIPTION']; + } + $triggersArray [] = $aRow; + $oDataset->next(); + } + return $oCriteria; + } - /* - * Show the current pattern - * @param string $sProcessUID - * @param string $sTaskUID - * @return boolean - */ + /* + * Return the triggers list in a array + * @param string $sProcessUID + * @return array + */ + public function getTriggers($sProcessUID = '') + { + $aTriggers = Array(); + $oCriteria = $this->getTriggersCriteria($sProcessUID); - function currentPattern($sProcessUID, $sTaskUID) { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $aFields = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - $oCriteria->addAscendingOrderByColumn(RoutePeer::ROU_CASE); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - $params = array(); -// $sql = BasePeer::createSelectSql($oCriteria, $params); -// echo $sProcessUID."-".$sTaskUID."-"; -// echo $sql; -// var_dump($aRow); -// die(); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + while ($oDataset->next()) { + array_push($aTriggers, $oDataset->getRow()); + } + return $aTriggers; + } + + /* + * Presents a small list of Scheduled Tasks of the process + * @param string $sProcessUID + * @return void + */ + public function caseSchedulerList($sProcessUID = '') + { + try { + $schedulerPath = SYS_URI . "cases/cases_Scheduler_List"; + $html = ""; + echo $html; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Presents a small list of Scheduled Task Logs of the process + * @param string $sProcessUID + * @return void + */ + public function logCaseSchedulerList($sProcessUID = '') + { + try { + $oLogCaseScheduler = new LogCasesScheduler(); + $aRows = $oLogCaseScheduler->getAll(); + + $fieldNames = Array( + 'PRO_UID' => 'char', + 'TAS_UID' => 'char', + 'USR_NAME' => 'char', + 'EXEC_DATE' => 'char', + 'EXEC_HOUR' => 'char', + 'RESULT' => 'char', + 'SCH_UID' => 'char', + 'WS_CREATE_CASE_STATUS' => 'char', + 'WS_ROUTE_CASE_STATUS' => 'char', + ); + + $aRows = array_merge(Array($fieldNames), $aRows); + + $_DBArray['log_cases_scheduler'] = $aRows; + $_SESSION['_DBArray'] = $_DBArray; + + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('log_cases_scheduler'); + + $G_PUBLISH = new Publisher; + $G_PUBLISH->ROWS_PER_PAGE = 10; + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'cases/cases_Scheduler_Log', $oCriteria); + $G_PUBLISH->oPropelTable->rowsPerPage = 10; + G::RenderPage('publish', 'blank'); + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Presents a small list of messages of the process + * @param string $sProcessUID + * @return void + */ + public function messagesList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $aFields ['PRO_UID'] = $sProcessUID; + $aFields ['SYS_LANG'] = SYS_LANG; + $G_PUBLISH = new Publisher ( ); + //$G_PUBLISH->AddContent('pagedtable', 'paged-table', 'messages/messages_ShortList', $this->getMessagesCriteria($sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Presents a small list of report tables of the process + * @param string $sProcessUID + * @return void + */ + public function reportTablesList($sProcessUID = '') + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'reportTables/reportTables_ShortList', $this->getReportTablesCriteria($sProcessUID), $aFields); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } + + /* + * Return the report tables list criteria object + * @param string $sProcessUID + * @return object + */ + public function getReportTablesCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID); + $oCriteria->addSelectColumn(ReportTablePeer::PRO_UID); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_NAME); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_TYPE); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_CONNECTION); + // $oCriteria->addAsColumn ( 'REP_TAB_TITLE', 'C.CON_VALUE' ); + $oCriteria->addAsColumn('REP_TAB_TITLE', "CASE WHEN C.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE A.CON_ID = REPORT_TABLE.REP_TAB_UID ) ELSE C.CON_VALUE END "); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(ReportTablePeer::REP_TAB_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'REP_TAB_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); + return $oCriteria; + } + + /* + * Show the current pattern + * @param string $sProcessUID + * @param string $sTaskUID + * @return boolean + */ + public function currentPattern($sProcessUID, $sTaskUID) + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $aFields = array(); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + $oCriteria->addAscendingOrderByColumn(RoutePeer::ROU_CASE); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + $params = array(); if (is_array($aRow)) { $aFields ['ROU_TYPE'] = $aRow ['ROU_TYPE']; @@ -2460,695 +2348,713 @@ class processMap { } } - $aFields ['action'] = 'savePattern'; - $aFields ['LANG'] = SYS_LANG; - $aFields ['PROCESS'] = $sProcessUID; - $aFields ['TASK'] = $sTaskUID; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'patterns/' . $sXmlform, '', $aFields, '../patterns/patterns_Ajax'); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - global $G_PUBLISH; - $G_PUBLISH = new Publisher(); - $aMessage = array(); - $aMessage['MESSAGE'] = $oError->getMessage(); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); - G::RenderPage( 'publish','blank'); - die; - } - } - - /* - * Show the new pattern form - * @param string $sProcessUID - * @param string $sTaskUID - * @param string $sNextTask - * @param string $sType - * @return boolean - */ - - function newPattern($sProcessUID, $sTaskUID, $sNextTask, $sType) { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $aFields = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - $oCriteria->addAscendingOrderByColumn(RoutePeer::ROU_CASE); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - if (is_array($aRow)) { - $aFields ['ROU_TYPE_OLD'] = $aRow ['ROU_TYPE']; - if ($sType == $aFields ['ROU_TYPE_OLD']) { - switch ($sType) { - case 'SELECT' : - $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; - while ($aRow = $oDataset->getRow()) { - $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; - $oDataset->next(); - } - break; - case 'EVALUATE' : - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; - while ($aRow = $oDataset->getRow()) { - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; - $oDataset->next(); - } - break; - case 'PARALLEL' : - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - while ($aRow = $oDataset->getRow()) { - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $oDataset->next(); - } - break; - case 'PARALLEL-BY-EVALUATION' : - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - while ($aRow = $oDataset->getRow()) { - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $oDataset->next(); - } - break; - case 'DISCRIMINATOR' : - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL']; - while ( $aRow = $oDataset->getRow () ) { - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL']; - $oDataset->next (); - } - break; - } - } else { - + $aFields ['action'] = 'savePattern'; + $aFields ['LANG'] = SYS_LANG; + $aFields ['PROCESS'] = $sProcessUID; + $aFields ['TASK'] = $sTaskUID; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'patterns/' . $sXmlform, '', $aFields, '../patterns/patterns_Ajax'); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + global $G_PUBLISH; + $G_PUBLISH = new Publisher(); + $aMessage = array(); + $aMessage['MESSAGE'] = $oError->getMessage(); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); + G::RenderPage( 'publish','blank'); + die; } - } - switch ($sType) { - case 'SEQUENTIAL' : - case 'SEC-JOIN' : - $aFields ['ROU_NEXT_TASK'] = $sNextTask; - break; - case 'SELECT' : - $iRow = (isset($aFields ['GRID_SELECT_TYPE']) ? count($aFields ['GRID_SELECT_TYPE'] ['ROU_UID']) + 1 : 0); - $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - case 'EVALUATE' : - $iRow = (isset($aFields ['GRID_PARALLEL_EVALUATION_TYPE']) ? count($aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID']) + 1 : 0); - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - case 'PARALLEL' : - $iRow = (isset($aFields ['GRID_PARALLEL_TYPE']) ? count($aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID']) + 1 : 0); - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_PARALLEL_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - case 'PARALLEL-BY-EVALUATION' : - $iRow = (isset($aFields ['GRID_PARALLEL_EVALUATION_TYPE']) ? count($aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID']) + 1 : 0); - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - case 'DISCRIMINATOR' : - $iRow = (isset ( $aFields ['GRID_DISCRIMINATOR_TYPE'] ) ? count ( $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] ) + 1 : 0); - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$iRow] = ''; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; - $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; - break; - } - $aFields ['action'] = 'savePattern'; - $aFields ['LANG'] = SYS_LANG; - $aFields ['PROCESS'] = $sProcessUID; - $aFields ['TASK'] = $sTaskUID; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'patterns/patterns_Current', '', $aFields, '../patterns/patterns_Ajax'); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); } - } - /** - * getNumberOfRoutes - * - * @param string $sProcessUID Default value empty - * @param string $sTaskUID Default value empty - * @param string $sNextTask Default value empty - * @param string $sType Default value empty - * @return intenger ( int ) $aRow ['ROUTE_NUMBER'] - */ - function getNumberOfRoutes($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - $oCriteria->add(RoutePeer::ROU_NEXT_TASK, $sNextTask); - $oCriteria->add(RoutePeer::ROU_TYPE, $sType); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - return (int) $aRow ['ROUTE_NUMBER']; - } catch (Exception $oError) { - throw ($oError); + /* + * Show the new pattern form + * @param string $sProcessUID + * @param string $sTaskUID + * @param string $sNextTask + * @param string $sType + * @return boolean + */ + public function newPattern($sProcessUID, $sTaskUID, $sNextTask, $sType) + { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $aFields = array(); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + $oCriteria->addAscendingOrderByColumn(RoutePeer::ROU_CASE); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + if (is_array($aRow)) { + $aFields ['ROU_TYPE_OLD'] = $aRow ['ROU_TYPE']; + if ($sType == $aFields ['ROU_TYPE_OLD']) { + switch ($sType) { + case 'SELECT' : + $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; + while ($aRow = $oDataset->getRow()) { + $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; + $oDataset->next(); + } + break; + case 'EVALUATE' : + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; + while ($aRow = $oDataset->getRow()) { + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$aRow ['ROU_CASE']] = $aRow ['ROU_TO_LAST_USER']; + $oDataset->next(); + } + break; + case 'PARALLEL' : + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + while ($aRow = $oDataset->getRow()) { + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $oDataset->next(); + } + break; + case 'PARALLEL-BY-EVALUATION' : + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + while ($aRow = $oDataset->getRow()) { + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $oDataset->next(); + } + break; + case 'DISCRIMINATOR' : + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL']; + while ( $aRow = $oDataset->getRow () ) { + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$aRow ['ROU_CASE']] = $aRow ['ROU_UID']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$aRow ['ROU_CASE']] = $aRow ['ROU_NEXT_TASK']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$aRow ['ROU_CASE']] = $aRow ['ROU_CONDITION']; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_OPTIONAL'] [$aRow ['ROU_CASE']] = $aRow ['ROU_OPTIONAL']; + $oDataset->next (); + } + break; + } + } else { + + } + } + switch ($sType) { + case 'SEQUENTIAL' : + case 'SEC-JOIN' : + $aFields ['ROU_NEXT_TASK'] = $sNextTask; + break; + case 'SELECT' : + $iRow = (isset($aFields ['GRID_SELECT_TYPE']) ? count($aFields ['GRID_SELECT_TYPE'] ['ROU_UID']) + 1 : 0); + $aFields ['GRID_SELECT_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_SELECT_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_SELECT_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_SELECT_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + case 'EVALUATE' : + $iRow = (isset($aFields ['GRID_PARALLEL_EVALUATION_TYPE']) ? count($aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID']) + 1 : 0); + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_EVALUATE_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + case 'PARALLEL' : + $iRow = (isset($aFields ['GRID_PARALLEL_TYPE']) ? count($aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID']) + 1 : 0); + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_PARALLEL_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + case 'PARALLEL-BY-EVALUATION' : + $iRow = (isset($aFields ['GRID_PARALLEL_EVALUATION_TYPE']) ? count($aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID']) + 1 : 0); + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_PARALLEL_EVALUATION_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + case 'DISCRIMINATOR' : + $iRow = (isset ( $aFields ['GRID_DISCRIMINATOR_TYPE'] ) ? count ( $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] ) + 1 : 0); + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_UID'] [$iRow] = ''; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_NEXT_TASK'] [$iRow] = $sNextTask; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_CONDITION'] [$iRow] = ''; + $aFields ['GRID_DISCRIMINATOR_TYPE'] ['ROU_TO_LAST_USER'] [$iRow] = ''; + break; + } + $aFields ['action'] = 'savePattern'; + $aFields ['LANG'] = SYS_LANG; + $aFields ['PROCESS'] = $sProcessUID; + $aFields ['TASK'] = $sTaskUID; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'patterns/patterns_Current', '', $aFields, '../patterns/patterns_Ajax'); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /** - * saveNewPattern - * - * @param string $sProcessUID Default value empty - * @param string $sTaskUID Default value empty - * @param string $sNextTask Default value empty - * @param string $sType Default value empty - * @param boolean $sDelete - * @return array void - */ - function saveNewPattern($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '', $sDelete='') { - try { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER'); - $oCriteria->addSelectColumn('GAT_UID AS GATEWAY_UID'); - $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - $oCriteria->add(RoutePeer::ROU_TYPE, $sType); - $oDataset = RoutePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - $aFields ['PRO_UID'] = $sProcessUID; - $aFields ['TAS_UID'] = $sTaskUID; - $aFields ['ROU_NEXT_TASK'] = $sNextTask; - $aFields ['ROU_TYPE'] = $sType; - $aFields ['ROU_CASE'] = (int) $aRow ['ROUTE_NUMBER'] + 1; - - $sGatewayUID = $aRow['GATEWAY_UID']; - - if($sDelete && $sGatewayUID != ''){ - $oGateway = new Gateway ( ); - $oGateway->remove($sGatewayUID); - } - //Getting Gateway UID after saving gateway - //if($sType != 'SEQUENTIAL' && $sGatewayUID == '' && $sDelete == '1') - if($sType != 'SEQUENTIAL') - { - $oProcessMap = new processMap(); - $sGatewayUID = $oProcessMap->saveNewGateway($sProcessUID, $sTaskUID, $sNextTask); - } - - $aFields ['GAT_UID'] = (isset($sGatewayUID))?$sGatewayUID:''; - $oRoute = new Route ( ); - $oRoute->create($aFields); - } catch (Exception $oError) { - throw ($oError); + /** + * getNumberOfRoutes + * + * @param string $sProcessUID Default value empty + * @param string $sTaskUID Default value empty + * @param string $sNextTask Default value empty + * @param string $sType Default value empty + * @return intenger ( int ) $aRow ['ROUTE_NUMBER'] + */ + public function getNumberOfRoutes($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') + { + try { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + $oCriteria->add(RoutePeer::ROU_NEXT_TASK, $sNextTask); + $oCriteria->add(RoutePeer::ROU_TYPE, $sType); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + return (int) $aRow ['ROUTE_NUMBER']; + } catch (Exception $oError) { + throw ($oError); + } } - } - /** - * saveNewGateway - * - * @param string $sProcessUID Default value empty - * @param string $sTaskUID Default value empty - * @param string $sNextTask Default value empty - * @param string $sType Default value empty (Route Type) - * @return string $sGatewayUID - */ - function saveNewGateway($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') { - try { - $oTask = new Task(); - $aTaskDetails = $oTask->load($sTaskUID); - $aFields ['PRO_UID'] = $sProcessUID; - $aFields ['TAS_UID'] = $sTaskUID; - $aFields ['GAT_NEXT_TASK'] = $sNextTask; - $aFields ['GAT_X'] = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2; - $aFields ['GAT_Y'] = $aTaskDetails['TAS_POSY'] + $aTaskDetails['TAS_HEIGHT'] + 10; + /** + * saveNewPattern + * + * @param string $sProcessUID Default value empty + * @param string $sTaskUID Default value empty + * @param string $sNextTask Default value empty + * @param string $sType Default value empty + * @param boolean $sDelete + * @return array void + */ + public function saveNewPattern($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '', $sDelete='') + { + try { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER'); + $oCriteria->addSelectColumn('GAT_UID AS GATEWAY_UID'); + $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + $oCriteria->add(RoutePeer::ROU_TYPE, $sType); + $oDataset = RoutePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + $aFields ['PRO_UID'] = $sProcessUID; + $aFields ['TAS_UID'] = $sTaskUID; + $aFields ['ROU_NEXT_TASK'] = $sNextTask; + $aFields ['ROU_TYPE'] = $sType; + $aFields ['ROU_CASE'] = (int) $aRow ['ROUTE_NUMBER'] + 1; - switch($sType) - { - case 'PARALLEL': - $aFields ['GAT_TYPE'] = 'bpmnGatewayParallel'; - break; - case 'SEC-JOIN': - $aFields ['GAT_TYPE'] = 'bpmnGatewayParallel'; - break; - case 'EVALUATE': - $aFields ['GAT_TYPE'] = 'bpmnGatewayExclusiveData'; - break; - case 'PARALLEL-BY-EVALUATION': - $aFields ['GAT_TYPE'] = 'bpmnGatewayInclusive'; - break; - case 'SELECT': - $aFields ['GAT_TYPE'] = 'bpmnGatewayExclusiveData'; - break; - case 'DISCRIMINATOR': - $aFields ['GAT_TYPE'] = 'bpmnGatewayComplex'; - break; - } + $sGatewayUID = $aRow['GATEWAY_UID']; - $oGateway = new Gateway ( ); + if ($sDelete && $sGatewayUID != ''){ + $oGateway = new Gateway ( ); + $oGateway->remove($sGatewayUID); + } + //Getting Gateway UID after saving gateway + //if ($sType != 'SEQUENTIAL' && $sGatewayUID == '' && $sDelete == '1') + if ($sType != 'SEQUENTIAL') { + $oProcessMap = new processMap(); + $sGatewayUID = $oProcessMap->saveNewGateway($sProcessUID, $sTaskUID, $sNextTask); + } - $sGatewayUID = $oGateway->create($aFields); - - return $sGatewayUID; - - } catch (Exception $oError) { - throw ($oError); + $aFields ['GAT_UID'] = (isset($sGatewayUID))?$sGatewayUID:''; + $oRoute = new Route ( ); + $oRoute->create($aFields); + } catch (Exception $oError) { + throw ($oError); + } } - } - /* - * Delete a derivation rule - * @param string $sTaskUID - * @return boolean - */ + /** + * saveNewGateway + * + * @param string $sProcessUID Default value empty + * @param string $sTaskUID Default value empty + * @param string $sNextTask Default value empty + * @param string $sType Default value empty (Route Type) + * @return string $sGatewayUID + */ + public function saveNewGateway($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') + { + try { + $oTask = new Task(); + $aTaskDetails = $oTask->load($sTaskUID); + $aFields ['PRO_UID'] = $sProcessUID; + $aFields ['TAS_UID'] = $sTaskUID; + $aFields ['GAT_NEXT_TASK'] = $sNextTask; + $aFields ['GAT_X'] = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2; + $aFields ['GAT_Y'] = $aTaskDetails['TAS_POSY'] + $aTaskDetails['TAS_HEIGHT'] + 10; - function deleteDerivation($sTaskUID = '') { - try { - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); - RoutePeer::doDelete($oCriteria); - return true; - return true; - } catch (Exception $oError) { - throw ($oError); + switch($sType) + { + case 'PARALLEL': + $aFields ['GAT_TYPE'] = 'bpmnGatewayParallel'; + break; + case 'SEC-JOIN': + $aFields ['GAT_TYPE'] = 'bpmnGatewayParallel'; + break; + case 'EVALUATE': + $aFields ['GAT_TYPE'] = 'bpmnGatewayExclusiveData'; + break; + case 'PARALLEL-BY-EVALUATION': + $aFields ['GAT_TYPE'] = 'bpmnGatewayInclusive'; + break; + case 'SELECT': + $aFields ['GAT_TYPE'] = 'bpmnGatewayExclusiveData'; + break; + case 'DISCRIMINATOR': + $aFields ['GAT_TYPE'] = 'bpmnGatewayComplex'; + break; + } + + $oGateway = new Gateway ( ); + $sGatewayUID = $oGateway->create($aFields); + return $sGatewayUID; + + } catch (Exception $oError) { + throw ($oError); + } } - } - /** - * getConditionProcessList - * - * @return object $oCriteria - */ - function getConditionProcessList() { - $aProcesses = array(); - $aProcesses [] = array('PRO_UID' => 'char', 'PRO_TITLE' => 'char', 'PRO_DESCRIPTION' => 'char', 'PRO_STATUS' => 'char', 'PRO_CATEGORY' => 'char', 'PRO_CATEGORY_LABEL' => '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('PRO_UID' => $aProcess ['PRO_UID'], 'PRO_TITLE' => $aProcess ['PRO_TITLE'], 'PRO_DESCRIPTION' => $aProcess ['PRO_DESCRIPTION'], 'PRO_STATUS' => ($aProcess ['PRO_STATUS'] == 'ACTIVE' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE')), 'PRO_CATEGORY' => $aProcess ['PRO_CATEGORY'], 'PRO_CATEGORY_LABEL' => $aProcess ['PRO_CATEGORY_LABEL']); - $oDataset->next(); + /* + * Delete a derivation rule + * @param string $sTaskUID + * @return boolean + */ + public function deleteDerivation($sTaskUID = '') + { + try { + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(RoutePeer::TAS_UID, $sTaskUID); + RoutePeer::doDelete($oCriteria); + return true; + return true; + } catch (Exception $oError) { + throw ($oError); + } } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['processes'] = $aProcesses; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('processes'); - return $oCriteria; - } - /* - * Show the dynaforms for the supervisors - * @param string $sProcessUID - * @return boolean - */ + /** + * getConditionProcessList + * + * @return object $oCriteria + */ + public function getConditionProcessList() + { + $aProcesses = array(); + $aProcesses [] = array('PRO_UID' => 'char', 'PRO_TITLE' => 'char', 'PRO_DESCRIPTION' => 'char', 'PRO_STATUS' => 'char', 'PRO_CATEGORY' => 'char', 'PRO_CATEGORY_LABEL' => '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); - function supervisorDynaforms($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_Supervisor', $this->getSupervisorDynaformsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + $oDataset->next(); + $oProcess = new Process ( ); + while ($aRow = $oDataset->getRow()) { + $aProcess = $oProcess->load($aRow ['PRO_UID']); + $aProcesses [] = array('PRO_UID' => $aProcess ['PRO_UID'], 'PRO_TITLE' => $aProcess ['PRO_TITLE'], 'PRO_DESCRIPTION' => $aProcess ['PRO_DESCRIPTION'], 'PRO_STATUS' => ($aProcess ['PRO_STATUS'] == 'ACTIVE' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE')), 'PRO_CATEGORY' => $aProcess ['PRO_CATEGORY'], 'PRO_CATEGORY_LABEL' => $aProcess ['PRO_CATEGORY_LABEL']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['processes'] = $aProcesses; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('processes'); + return $oCriteria; } - } - /** - * supervisorInputs - * - * @param string $sProcessUID - * @return boolean true - * throw Exception $oError - */ - function supervisorInputs($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_Supervisor', $this->getSupervisorInputsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Show the dynaforms for the supervisors + * @param string $sProcessUID + * @return boolean + */ + public function supervisorDynaforms($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_Supervisor', $this->getSupervisorDynaformsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } - /** - * webEntry - * - * @param string $sProcessUID - * @return boolean true - * throw Exception $oError - */ - function webEntry($sProcessUID) { - try { - global $G_PUBLISH; - global $G_FORM; - $G_PUBLISH = new Publisher ( ); + /** + * supervisorInputs + * + * @param string $sProcessUID + * @return boolean true + * throw Exception $oError + */ + public function supervisorInputs($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_Supervisor', $this->getSupervisorInputsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } + } - if (G::is_https ()) - $http = 'https://'; - else - $http = 'http://'; + /** + * webEntry + * + * @param string $sProcessUID + * @return boolean true + * throw Exception $oError + */ + public function webEntry($sProcessUID) + { + try { + global $G_PUBLISH; + global $G_FORM; + $G_PUBLISH = new Publisher ( ); - $link = $http . $_SERVER ['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/' . $sProcessUID . '/'; + if (G::is_https ()) + $http = 'https://'; + else + $http = 'http://'; - $row = array(); - $c = 0; + $link = $http . $_SERVER ['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/' . $sProcessUID . '/'; - /* - $oTask = new Task ( ); - $TaskFields = $oTask->kgetassigType ( $sProcessUID , $tas=''); - */ - $TaskFields ['TAS_ASSIGN_TYPE'] = ''; - $row [] = array('W_TITLE' => '', 'W_DELETE' => '', 'TAS_ASSIGN_TYPE' => $TaskFields ['TAS_ASSIGN_TYPE']); + $row = array(); + $c = 0; - if (is_dir(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $sProcessUID)) { - $dir = opendir(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $sProcessUID); - while ($archivo = readdir($dir)) { //print $archivo." ****
"; - if ($archivo != '.') { - if ($archivo != '..') { - $one = 0; - $two = 0; + /* + $oTask = new Task ( ); + $TaskFields = $oTask->kgetassigType ( $sProcessUID , $tas=''); + */ + $TaskFields ['TAS_ASSIGN_TYPE'] = ''; + $row [] = array('W_TITLE' => '', 'W_DELETE' => '', 'TAS_ASSIGN_TYPE' => $TaskFields ['TAS_ASSIGN_TYPE']); - $alink = $link . $archivo; + if (is_dir(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $sProcessUID)) { + $dir = opendir(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $sProcessUID); + while ($archivo = readdir($dir)) { //print $archivo." ****
"; + if ($archivo != '.') { + if ($archivo != '..') { + $one = 0; + $two = 0; - $one = count(explode('wsClient.php', $archivo)); - $two = count(explode('Post.php', $archivo)); + $alink = $link . $archivo; - if ($one == 1 && $two == 1) { - $arlink = "" . $alink . ""; - $linkdelete = sprintf("delete", $alink, $archivo, $sProcessUID); - $row [] = array('W_LINK' => $arlink, 'W_FILENAME' => $archivo, 'W_PRO_UID' => $sProcessUID); + $one = count(explode('wsClient.php', $archivo)); + $two = count(explode('Post.php', $archivo)); + + if ($one == 1 && $two == 1) { + $arlink = "" . $alink . ""; + $linkdelete = sprintf("delete", $alink, $archivo, $sProcessUID); + $row [] = array('W_LINK' => $arlink, 'W_FILENAME' => $archivo, 'W_PRO_UID' => $sProcessUID); + } + } } } } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['reports'] = $row; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('reports'); + //if ($TaskFields['TAS_ASSIGN_TYPE'] == 'BALANCED') { + //$G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_WebEntry', '', array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_WebEntryList', $oCriteria, array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); + /* }else{ + $aMessage['MESSAGE'] = G::loadTranslation( 'WEBEN_ONLY_BALANCED' ); + $G_PUBLISH->AddContent ( 'xmlform', 'xmlform', 'login/showMessage', '',$aMessage ); + + } */ + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); } - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['reports'] = $row; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('reports'); - //if ($TaskFields['TAS_ASSIGN_TYPE'] == 'BALANCED') { - //$G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_WebEntry', '', array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_WebEntryList', $oCriteria, array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); - /* }else{ - $aMessage['MESSAGE'] = G::loadTranslation( 'WEBEN_ONLY_BALANCED' ); - $G_PUBLISH->AddContent ( 'xmlform', 'xmlform', 'login/showMessage', '',$aMessage ); - - } */ - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); } - } - /** - * webEntry_new - * - * @param string $sProcessUID - * @return boolean true - * throw Exception $oError - */ - function webEntry_new($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_WebEntry', '', array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + /** + * webEntry_new + * + * @param string $sProcessUID + * @return boolean true + * throw Exception $oError + */ + public function webEntry_new($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_WebEntry', '', array('PRO_UID' => $sProcessUID, 'LANG' => SYS_LANG)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - } -/** - * webEntryByTask - * - * @param string $sProcessUID - * @return boolean true - * throw Exception $oError - */ -// function webEntryByTask($sProcessUID, $sEventUID) { -// $event = new Event(); -// $event->load($sEventUID); -// $task_uid = $event->getEvnTasUidTo(); -// $tasks = new Tasks(); -// $tasks->get -// $link = $sProcessUID.'/'.str_replace ( ' ', '_', str_replace ( '/', '_',$task_uid)); -// -// return $link; -// } - - /* - * Return the supervisors dynaforms list criteria object - * @param string $sProcessUID - * @return object - */ - - function getSupervisorDynaformsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); - $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); - $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM'); - $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); - return $oCriteria; - } - - /* - * Return the supervisors dynaforms list criteria object - * @param string $sProcessUID - * @return object - */ - - function getSupervisorInputsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); - $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); - $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); - $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); - return $oCriteria; - } - - /* - * Show the available dynaforms for the supervisors - * @param string $sProcessUID - * @return boolean - */ - - function availableSupervisorDynaforms($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_AvailableSupervisorDynaforms', $this->getAvailableSupervisorDynaformsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Return the supervisors dynaforms list criteria object + * @param string $sProcessUID + * @return object + */ + public function getSupervisorDynaformsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); + $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); + $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); + $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM'); + $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); + return $oCriteria; } - } - /* - * Show the available input documents for the supervisors - * @param string $sProcessUID - * @return boolean - */ - - function availableSupervisorInputs($sProcessUID) { - try { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_AvailableSupervisorInputs', $this->getAvailableSupervisorInputsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } catch (Exception $oError) { - throw ($oError); + /* + * Return the supervisors dynaforms list criteria object + * @param string $sProcessUID + * @return object + */ + public function getSupervisorInputsCriteria($sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); + $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); + $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); + $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); + return $oCriteria; } - } - /* - * Return the available supervisors dynaforms list criteria object - * @param string $sProcessUID - * @return object - */ - - function getAvailableSupervisorDynaformsCriteria($sProcessUID = '') { - $oCriteria = $this->getSupervisorDynaformsCriteria($sProcessUID); - $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['STEP_UID_OBJ']; - $oDataset->next(); + /* + * Show the available dynaforms for the supervisors + * @param string $sProcessUID + * @return boolean + */ + public function availableSupervisorDynaforms($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'dynaforms/dynaforms_AvailableSupervisorDynaforms', $this->getAvailableSupervisorDynaformsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addSelectColumn(DynaformPeer::PRO_UID); - $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); - $oCriteria->add(DynaformPeer::DYN_UID, $aUIDS, Criteria::NOT_IN); - return $oCriteria; - } - /* - * Return the available supervisors input documents list criteria object - * @param string $sProcessUID - * @return object - */ - - function getAvailableSupervisorInputsCriteria($sProcessUID = '') { - $oCriteria = $this->getSupervisorInputsCriteria($sProcessUID); - $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['STEP_UID_OBJ']; - $oDataset->next(); + /* + * Show the available input documents for the supervisors + * @param string $sProcessUID + * @return boolean + */ + public function availableSupervisorInputs($sProcessUID) + { + try { + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'inputdocs/inputdocs_AvailableSupervisorInputs', $this->getAvailableSupervisorInputsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } catch (Exception $oError) { + throw ($oError); + } } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $aUIDS, Criteria::NOT_IN); - return $oCriteria; - } - /** - * assignSupervisorStep - * - * @param string $sProcessUID - * @param string $sObjType - * @param string $sObjUID - * @return void - */ - function assignSupervisorStep($sProcessUID, $sObjType, $sObjUID) { - $oStepSupervisor = new StepSupervisor ( ); - $oStepSupervisor->create(array('PRO_UID' => $sProcessUID, 'STEP_TYPE_OBJ' => $sObjType, 'STEP_UID_OBJ' => $sObjUID, 'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, $sObjType))); - } + /* + * Return the available supervisors dynaforms list criteria object + * @param string $sProcessUID + * @return object + */ + public function getAvailableSupervisorDynaformsCriteria($sProcessUID = '') + { + $oCriteria = $this->getSupervisorDynaformsCriteria($sProcessUID); + $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['STEP_UID_OBJ']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addSelectColumn(DynaformPeer::PRO_UID); + $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); + $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); + $oCriteria->add(DynaformPeer::DYN_UID, $aUIDS, Criteria::NOT_IN); + return $oCriteria; + } - /** - * removeSupervisorStep - * - * @param string $sStepUID - * @param string $sProcessUID - * @param string $sObjType - * @param string $sObjUID - * @param integer $iPosition - * @return void - */ - function removeSupervisorStep($sStepUID, $sProcessUID, $sObjType, $sObjUID, $iPosition) { - $oStepSupervisor = new StepSupervisor ( ); - $oStepSupervisor->remove($sStepUID); - $oStepSupervisor->reorderPositions($sProcessUID, $iPosition, $sObjType); - } + /* + * Return the available supervisors input documents list criteria object + * @param string $sProcessUID + * @return object + */ + public function getAvailableSupervisorInputsCriteria($sProcessUID = '') + { + $oCriteria = $this->getSupervisorInputsCriteria($sProcessUID); + $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['STEP_UID_OBJ']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); + $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $aUIDS, Criteria::NOT_IN); + return $oCriteria; + } + /** + * assignSupervisorStep + * @param string $sProcessUID + * @param string $sObjType + * @param string $sObjUID + * @return void + */ + public function assignSupervisorStep($sProcessUID, $sObjType, $sObjUID) + { + $oStepSupervisor = new StepSupervisor ( ); + $oStepSupervisor->create(array('PRO_UID' => $sProcessUID, 'STEP_TYPE_OBJ' => $sObjType, 'STEP_UID_OBJ' => $sObjUID, 'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, $sObjType))); + } + + /** + * removeSupervisorStep + * + * @param string $sStepUID + * @param string $sProcessUID + * @param string $sObjType + * @param string $sObjUID + * @param integer $iPosition + * @return void + */ + public function removeSupervisorStep($sStepUID, $sProcessUID, $sObjType, $sObjUID, $iPosition) { + $oStepSupervisor = new StepSupervisor ( ); + $oStepSupervisor->remove($sStepUID); + $oStepSupervisor->reorderPositions($sProcessUID, $iPosition, $sObjType); + } + + /** + * listProcessesUser + * + * @param string $sProcessUID + * @return object(Criteria) $oCriteria + */ + public function listProcessesUser($sProcessUID) + { + $aResp = array( + array( + 'LA_PU_UID' => 'char', + 'LA_PRO_UID' => 'char', + 'LA_USR_UID' => 'char', + 'LA_PU_NAME' => 'char', + 'LA_PU_TYPE_NAME' => 'char') + ); + + // Groups + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); + + $aConditions [] = array(ProcessUserPeer::USR_UID, ContentPeer::CON_ID); + $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + +<<<<<<< HEAD + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE); +======= /** * listProcessesUser * @@ -3184,81 +3090,106 @@ class processMap { $oDataset = ProcessUserPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); +>>>>>>> upstream/master - while ($aRow = $oDataset->getRow()) { - $aResp[] = array( - 'LA_PU_UID' => $aRow['PU_UID'], - 'LA_PRO_UID' => $aRow['PRO_UID'], - 'LA_USR_UID' => $aRow['USR_UID'], - 'LA_PU_NAME' => $aRow['GRP_TITLE'], - 'LA_PU_TYPE_NAME' => 'Group'); - $oDataset->next(); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $aResp[] = array( + 'LA_PU_UID' => $aRow['PU_UID'], + 'LA_PRO_UID' => $aRow['PRO_UID'], + 'LA_USR_UID' => $aRow['USR_UID'], + 'LA_PU_NAME' => $aRow['GRP_TITLE'], + 'LA_PU_TYPE_NAME' => 'Group'); + $oDataset->next(); + } + + // Users + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); + $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $aResp[] = array( + 'LA_PU_UID' => $aRow['PU_UID'], + 'LA_PRO_UID' => $aRow['PRO_UID'], + 'LA_USR_UID' => $aRow['USR_UID'], + 'LA_PU_NAME' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'], + 'LA_PU_TYPE_NAME' => 'User'); + $oDataset->next(); + } + + global $_DBArray; + $_DBArray['data'] = $aResp; + $_SESSION['_DBArray'] = $_DBArray; + $LiCriteria = new Criteria('dbarray'); + $LiCriteria->setDBArrayTable('data'); + + return $LiCriteria; } - // Users - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); - $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); + /** + * listNoProcessesUser + * + * @param string $sProcessUID + * @return object(Criteria) $oCriteria + */ + public function listNoProcessesUser($sProcessUID) + { + G::LoadSystem('rbac'); + $memcache = & PMmemcached::getSingleton(SYS_SYS); - while ($aRow = $oDataset->getRow()) { - $aResp[] = array( - 'LA_PU_UID' => $aRow['PU_UID'], - 'LA_PRO_UID' => $aRow['PRO_UID'], - 'LA_USR_UID' => $aRow['USR_UID'], - 'LA_PU_NAME' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'], - 'LA_PU_TYPE_NAME' => 'User'); - $oDataset->next(); - } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_TYPE); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $oCriteria->add(ProcessUserPeer::PU_TYPE, '%SUPERVISOR%', Criteria::LIKE); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + $aGRUS = array(); + while ($aRow = $oDataset->getRow()) { + if ($aRow['PU_TYPE'] == 'SUPERVISOR') { + $aUIDS [] = $aRow ['USR_UID']; + } else { + $aGRUS [] = $aRow ['USR_UID']; + } + $oDataset->next(); + } - global $_DBArray; - $_DBArray['data'] = $aResp; - $_SESSION['_DBArray'] = $_DBArray; - $LiCriteria = new Criteria('dbarray'); - $LiCriteria->setDBArrayTable('data'); + $aRespLi = array( + array( + 'UID' => 'char', + 'USER_GROUP' => 'char', + 'TYPE_UID' => 'char', + 'PRO_UID' => 'char') + ); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); + $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); - return $LiCriteria; - } - - /** - * listNoProcessesUser - * - * @param string $sProcessUID - * @return object(Criteria) $oCriteria - */ - function listNoProcessesUser($sProcessUID) { - G::LoadSystem('rbac'); - $memcache = & PMmemcached::getSingleton(SYS_SYS); - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_TYPE); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->add(ProcessUserPeer::PU_TYPE, '%SUPERVISOR%', Criteria::LIKE); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - $aGRUS = array(); - while ($aRow = $oDataset->getRow()) { - if ($aRow['PU_TYPE'] == 'SUPERVISOR') { - $aUIDS [] = $aRow ['USR_UID']; - } else { - $aGRUS [] = $aRow ['USR_UID']; - } - $oDataset->next(); - } + $aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); + $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); +<<<<<<< HEAD + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(GroupwfPeer::GRP_UID, $aGRUS, Criteria::NOT_IN); +======= $aRespLi = array( array( 'UID' => 'char', @@ -3281,95 +3212,103 @@ class processMap { $oDataset = GroupwfPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); +>>>>>>> upstream/master - while ($aRow = $oDataset->getRow()) { - $aRespLi[] = array( 'UID' => $aRow['GRP_UID'], - 'USER_GROUP' => $aRow['GRP_TITLE'], - 'TYPE_UID' => 'Group', - 'PRO_UID' => $sProcessUID); - $oDataset->next(); - } + $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE); + $oDataset = GroupwfPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::NOT_IN); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - $oRBAC = RBAC::getSingleton (); - while ($aRow = $oDataset->getRow()) { - $memKey = 'rbacSession' . session_id(); - if ( ($oRBAC->aUserInfo = $memcache->get($memKey)) === false ) { - $oRBAC->loadUserRolePermission($oRBAC->sSystem, $aRow ['USR_UID']); - $memcache->set( $memKey, $oRBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); - } - $aPermissions = $oRBAC->aUserInfo [$oRBAC->sSystem] ['PERMISSIONS']; - $bInclude = false; - foreach ($aPermissions as $aPermission) { - if ($aPermission ['PER_CODE'] == 'PM_SUPERVISOR') { - $bInclude = true; + while ($aRow = $oDataset->getRow()) { + $aRespLi[] = array( 'UID' => $aRow['GRP_UID'], + 'USER_GROUP' => $aRow['GRP_TITLE'], + 'TYPE_UID' => 'Group', + 'PRO_UID' => $sProcessUID); + $oDataset->next(); } - } - if ($bInclude) { - $aUIDS [] = $aRow ['USR_UID']; - } - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::IN); - $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aRespLi[] = array('UID' => $aRow['USR_UID'], - 'USER_GROUP' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'], - 'TYPE_UID' => 'User', - 'PRO_UID' => $sProcessUID); - $oDataset->next(); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::NOT_IN); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + $oRBAC = RBAC::getSingleton (); + while ($aRow = $oDataset->getRow()) { + $memKey = 'rbacSession' . session_id(); + if ( ($oRBAC->aUserInfo = $memcache->get($memKey)) === false ) { + $oRBAC->loadUserRolePermission($oRBAC->sSystem, $aRow ['USR_UID']); + $memcache->set( $memKey, $oRBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); + } + $aPermissions = $oRBAC->aUserInfo [$oRBAC->sSystem] ['PERMISSIONS']; + $bInclude = false; + foreach ($aPermissions as $aPermission) { + if ($aPermission ['PER_CODE'] == 'PM_SUPERVISOR') { + $bInclude = true; + } + } + if ($bInclude) { + $aUIDS [] = $aRow ['USR_UID']; + } + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::IN); + $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $aRespLi[] = array('UID' => $aRow['USR_UID'], + 'USER_GROUP' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'], + 'TYPE_UID' => 'User', + 'PRO_UID' => $sProcessUID); + $oDataset->next(); + } + + global $_DBArray; + $_DBArray['data'] = $aRespLi; + $_SESSION['_DBArray'] = $_DBArray; + $LsCriteria = new Criteria('dbarray'); + $LsCriteria->setDBArrayTable('data'); + + return $LsCriteria; } - global $_DBArray; - $_DBArray['data'] = $aRespLi; - $_SESSION['_DBArray'] = $_DBArray; - $LsCriteria = new Criteria('dbarray'); - $LsCriteria->setDBArrayTable('data'); - - return $LsCriteria; - } - - /** - * assignProcessUser - * - * @param string $sProcessUID - * @param string $sUsrUID - * @return void - */ - function assignProcessUser($sProcessUID, $sUsrUID, $sTypeUID) { - $oProcessUser = new ProcessUser ( ); - $puType = 'SUPERVISOR'; - if ($sTypeUID == 'Group') { - $puType = 'GROUP_SUPERVISOR'; + /** + * assignProcessUser + * + * @param string $sProcessUID + * @param string $sUsrUID + * @return void + */ + public function assignProcessUser($sProcessUID, $sUsrUID, $sTypeUID) + { + $oProcessUser = new ProcessUser ( ); + $puType = 'SUPERVISOR'; + if ($sTypeUID == 'Group') { + $puType = 'GROUP_SUPERVISOR'; + } + $oProcessUser->create(array('PU_UID' => G::generateUniqueID (), 'PRO_UID' => $sProcessUID, 'USR_UID' => $sUsrUID, 'PU_TYPE' => $puType)); } - $oProcessUser->create(array('PU_UID' => G::generateUniqueID (), 'PRO_UID' => $sProcessUID, 'USR_UID' => $sUsrUID, 'PU_TYPE' => $puType)); - } - /** - * removeProcessUser - * - * @param string $sPUUID - * @return void - */ - function removeProcessUser($sPUUID) { - $oProcessUser = new ProcessUser ( ); - $oProcessUser->remove($sPUUID); - } + /** + * removeProcessUser + * + * @param string $sPUUID + * @return void + */ + public function removeProcessUser($sPUUID) + { + $oProcessUser = new ProcessUser ( ); + $oProcessUser->remove($sPUUID); + } /** * getObjectsPermissionsCriteria @@ -3523,59 +3462,62 @@ class processMap { return $oCriteria; } - //new functions - function getAllObjectPermissionCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = ObjectPermissionPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); + //new functions + public function getAllObjectPermissionCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = ObjectPermissionPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - function getExtObjectsPermissions($start, $limit,$sProcessUID) { - G::LoadClass('case'); - Cases::verifyTable (); - $aObjectsPermissions = array(); - //$aObjectsPermissions [] = array('OP_UID' => 'char', 'TASK_TARGET' => 'char', 'GROUP_USER' => 'char', 'TASK_SOURCE' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT' => 'char', 'PARTICIPATED' => 'char', 'ACTION' => 'char', 'OP_CASE_STATUS' => 'char'); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_UID); - $oCriteria->addSelectColumn(ObjectPermissionPeer::TAS_UID); - $oCriteria->addSelectColumn(ObjectPermissionPeer::USR_UID); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_USER_RELATION); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_TASK_SOURCE); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_PARTICIPATE); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_TYPE); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_UID); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_ACTION); - $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_CASE_STATUS); - $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - //Obtain task target - if (($aRow ['TAS_UID'] != '') && ($aRow ['TAS_UID'] != '0')) { - try { - $oTask = new Task ( ); - $aFields = $oTask->load($aRow ['TAS_UID']); - $sTaskTarget = $aFields ['TAS_TITLE']; - } catch (Exception $oError) { - $sTaskTarget = 'All Tasks'; + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; } - } else { + } + + public function getExtObjectsPermissions($start, $limit,$sProcessUID) + { + G::LoadClass('case'); + Cases::verifyTable (); + $aObjectsPermissions = array(); + //$aObjectsPermissions [] = array('OP_UID' => 'char', 'TASK_TARGET' => 'char', 'GROUP_USER' => 'char', 'TASK_SOURCE' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT' => 'char', 'PARTICIPATED' => 'char', 'ACTION' => 'char', 'OP_CASE_STATUS' => 'char'); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_UID); + $oCriteria->addSelectColumn(ObjectPermissionPeer::TAS_UID); + $oCriteria->addSelectColumn(ObjectPermissionPeer::USR_UID); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_USER_RELATION); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_TASK_SOURCE); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_PARTICIPATE); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_TYPE); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_UID); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_ACTION); + $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_CASE_STATUS); + $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + + $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + //Obtain task target + if (($aRow ['TAS_UID'] != '') && ($aRow ['TAS_UID'] != '0')) { + try { + $oTask = new Task ( ); + $aFields = $oTask->load($aRow ['TAS_UID']); + $sTaskTarget = $aFields ['TAS_TITLE']; + } catch (Exception $oError) { + $sTaskTarget = 'All Tasks'; + } + } else { $sTaskTarget = G::LoadTranslation('ID_ANY_TASK'); } //Obtain user or group @@ -3645,3408 +3587,3413 @@ class processMap { } break; } - //Participated - if ($aRow ['OP_PARTICIPATE'] == 0) { - $sParticipated = G::LoadTranslation('ID_NO'); - } else { - $sParticipated = G::LoadTranslation('ID_YES'); - } - //Obtain action (permission) - $sAction = G::LoadTranslation('ID_' . $aRow ['OP_ACTION']); - //Add to array - $aObjectsPermissions [] = array('OP_UID' => $aRow ['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow ['OP_CASE_STATUS']); - $oDataset->next(); - } - return $aObjectsPermissions; - } - - /** - * objectsPermissionsList - * - * @param string $sProcessUID - * @return boolean true - */ - function objectsPermissionsList($sProcessUID) { - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'processes/processes_ObjectsPermissionsList', $this->getObjectsPermissionsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); - G::RenderPage('publish', 'raw'); - return true; - } - - /** - * newObjectPermission - * - * @param string $sProcessUID - * @return boolean true - */ - function newObjectPermission($sProcessUID) { - $usersGroups = ''; - $aAllObjects = array(); - $aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllDynaforms = array(); - $aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllInputs = array(); - $aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllOutputs = array(); - $aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char'); - $oCriteria = $this->getDynaformsCriteria($sProcessUID); - $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : ''; - $aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'], - 'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); - $aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'], - 'LABEL' => $aRow ['DYN_TITLE']); - $oDataset->next(); - } - G::LoadClass('ArrayPeer'); - $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'], - 'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); - $aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'], - 'LABEL' => $aRow ['INP_DOC_TITLE']); - $oDataset->next(); - } - G::LoadClass('ArrayPeer'); - $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); - $aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']); - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['allObjects'] = $aAllObjects; - $_DBArray ['allDynaforms'] = $aAllDynaforms; - $_DBArray ['allInputs'] = $aAllInputs; - $_DBArray ['allOutputs'] = $aAllOutputs; - $_SESSION ['_DBArray'] = $_DBArray; - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_NewObjectPermission', '', array('GROUP_USER' => $usersGroups, 'LANG' => SYS_LANG, 'PRO_UID' => $sProcessUID, 'ID_DELETE' => G::LoadTranslation('ID_DELETE')), 'processes_SaveObjectPermission'); - G::RenderPage('publish', 'raw'); - return true; - } - - /** - * editObjectPermission - * - * @param string $sOP_UID - * @param string $sProcessUID - * @return void - */ - function editObjectPermission($sOP_UID, $sProcessUID) { - - $oCriteria = new Criteria ( ); - $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID); - $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRows = $oDataset->getRow(); - - $oCriteria = new Criteria ( ); - $oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']); - if (GroupwfPeer::doCount($oCriteria) == 1) - $user = '2|' . $aRows ['USR_UID']; - - $oCriteria = new Criteria ( ); - $oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']); - if (UsersPeer::doCount($oCriteria) == 1) - $user = '1|' . $aRows ['USR_UID']; - - $aFields ['LANG'] = SYS_LANG; - $aFields ['OP_UID'] = $aRows ['OP_UID']; - $aFields ['PRO_UID'] = $aRows ['PRO_UID']; - $aFields ['OP_CASE_STATUS'] = $aRows ['OP_CASE_STATUS']; - $aFields ['TAS_UID'] = $aRows ['TAS_UID']; - $aFields ['OP_TASK_SOURCE'] = $aRows ['OP_TASK_SOURCE']; - $aFields ['OP_PARTICIPATE'] = $aRows ['OP_PARTICIPATE']; - $aFields ['OP_OBJ_TYPE'] = $aRows ['OP_OBJ_TYPE']; - $aFields ['OP_ACTION'] = $aRows ['OP_ACTION']; - - switch ($aRows ['OP_OBJ_TYPE']) { - /* case 'ANY': - $aFields['OP_OBJ_TYPE'] = ''; - break; */ - case 'DYNAFORM' : - $aFields ['DYNAFORMS'] = $aRows ['OP_OBJ_UID']; - break; - case 'INPUT' : - $aFields ['INPUTS'] = $aRows ['OP_OBJ_UID']; - break; - case 'OUTPUT' : - $aFields ['OUTPUTS'] = $aRows ['OP_OBJ_UID']; - break; - } - - $usersGroups = ' - - - ' );*/ - $aBB [] = array ('STEP_UID' => $aRow ['DYN_UID'], 'STEP_TITLE' => $aRow ['DYN_TITLE'], 'STEP_TYPE_OBJ' => 'DYNAFORM', 'STEP_MODE' => 'EDIT', 'STEP_UID_OBJ' => $aRow ['DYN_UID']); - $oDataset->next (); - } - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_UID ); - $oCriteria->addAsColumn ( 'INP_DOC_TITLE', 'C.CON_VALUE' ); - $oCriteria->addAlias ( 'C', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C.CON_ID' ); - $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter ); - $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add ( InputDocumentPeer::PRO_UID, $sProcessUID ); - $oCriteria->add ( InputDocumentPeer::INP_DOC_UID, $sUIDs, Criteria::NOT_IN ); - $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - while ( $aRow = $oDataset->getRow () ) { - $aBB [] = array ('STEP_UID' => $aRow ['INP_DOC_UID'], 'STEP_UID_OBJ' => $aRow ['INP_DOC_UID'], 'STEP_TITLE' => $aRow ['INP_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'INPUT_DOCUMENT', 'STEP_MODE' => '' ); - $oDataset->next (); - } - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_UID ); - $oCriteria->addAsColumn ( 'OUT_DOC_TITLE', 'C.CON_VALUE' ); - $oCriteria->addAlias ( 'C', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C.CON_ID' ); - $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter ); - $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add ( OutputDocumentPeer::PRO_UID, $sProcessUID ); - $oCriteria->add ( OutputDocumentPeer::OUT_DOC_UID, $sUIDs, Criteria::NOT_IN ); - $oDataset = OutputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - while ( $aRow = $oDataset->getRow () ) { - $aBB [] = array ('STEP_UID' => $aRow ['OUT_DOC_UID'],'STEP_UID_OBJ' => $aRow ['OUT_DOC_UID'], 'STEP_TITLE' => $aRow ['OUT_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'OUTPUT_DOCUMENT', 'STEP_MODE' => '' ); - $oDataset->next (); - } - - //call plugin - $oPluginRegistry = &PMPluginRegistry::getSingleton (); - $externalSteps = $oPluginRegistry->getSteps (); - if (is_array ( $externalSteps ) && count ( $externalSteps ) > 0) { - foreach ( $externalSteps as $key => $stepVar ) { - $aBB [] = array ('STEP_UID' => $stepVar->sStepId, 'STEP_TITLE' => $stepVar->sStepTitle, 'STEP_TYPE_OBJ' => 'EXTERNAL', 'STEP_MODE' => '' ); - } - } - - global $_DBArray; - $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['availableBB'] = $aBB; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass ( 'ArrayPeer' ); - $oCriteria = new Criteria ( 'dbarray' ); - $oCriteria->setDBArrayTable ( 'availableBB' ); - $oCriteria->addAscendingOrderByColumn ( 'STEP_TYPE_OBJ' ); - $oCriteria->addAscendingOrderByColumn ( 'STEP_TITLE' ); - //return $oCriteria; - return $_SESSION ['_DBArray']['availableBB']; - } catch ( Exception $oError ) { - throw ($oError); - } - } - - //new functions - function getAllStepCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = StepPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the steps list criteria object - * @param string $sTaskUID - * @return array - */ - function getExtStepsCriteria($start, $limit, $sTaskUID = '') - { - try { - //call plugin - $oPluginRegistry = &PMPluginRegistry::getSingleton (); - $externalSteps = $oPluginRegistry->getSteps (); - - $aSteps = array (); - $aSteps [] = array ('STEP_TITLE' => 'char', 'STEP_UID' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_CONDITION' => 'char', 'STEP_POSITION' => 'integer','STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' ); - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->add ( StepPeer::TAS_UID, $sTaskUID ); - $oCriteria->addAscendingOrderByColumn ( StepPeer::STEP_POSITION ); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = StepPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - while ( $aRow = $oDataset->getRow () ) { - $urlEdit = ''; - $linkEditValue = ''; - - switch ($aRow ['STEP_TYPE_OBJ']) { - case 'DYNAFORM' : - $oDynaform = new Dynaform ( ); - $aFields = $oDynaform->load ( $aRow ['STEP_UID_OBJ'] ); - $sTitle = $aFields ['DYN_TITLE']; - /** @@@init2 PROCCESS FOR DIRECT EDIT LINK @by erik@colosa.com ON DATE 02/06/2008 18:48:13*/ - $DYN_UID = $aFields ['DYN_UID']; - $urlEdit = "dynaformEdit('" . $DYN_UID . "', '" . $aRow ['PRO_UID'] . "');"; - $linkEditValue = 'Edit'; - /** @@@end2*/ - break; - case 'INPUT_DOCUMENT' : - $oInputDocument = new InputDocument ( ); - $aFields = $oInputDocument->load ( $aRow ['STEP_UID_OBJ'] ); - $sTitle = $aFields ['INP_DOC_TITLE']; - break; - case 'OUTPUT_DOCUMENT' : - $oOutputDocument = new OutputDocument ( ); - $aFields = $oOutputDocument->load ( $aRow ['STEP_UID_OBJ'] ); - $sTitle = $aFields ['OUT_DOC_TITLE']; - break; - case 'EXTERNAL' : - $sTitle = 'unknown ' . $aRow ['STEP_UID']; - foreach ( $externalSteps as $key => $val ) { - if ($val->sStepId == $aRow ['STEP_UID_OBJ']) { - $sTitle = $val->sStepTitle; - if (trim ( $val->sSetupStepPage ) != '') { - $urlEdit = "externalStepEdit('" . $aRow ['STEP_UID'] . "', '" . $val->sSetupStepPage . "');"; - $linkEditValue = 'Edit'; - } else { - $urlEdit = ""; - $linkEditValue = ''; - } - } + //Participated + if ($aRow ['OP_PARTICIPATE'] == 0) { + $sParticipated = G::LoadTranslation('ID_NO'); + } else { + $sParticipated = G::LoadTranslation('ID_YES'); } - break; + //Obtain action (permission) + $sAction = G::LoadTranslation('ID_' . $aRow ['OP_ACTION']); + //Add to array + $aObjectsPermissions [] = array('OP_UID' => $aRow ['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow ['OP_CASE_STATUS']); + $oDataset->next(); } - $aSteps [] = array ('STEP_TITLE' => $sTitle, 'STEP_UID' => $aRow ['STEP_UID'], 'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'], 'STEP_CONDITION' => $aRow ['STEP_CONDITION'], 'STEP_POSITION' => $aRow ['STEP_POSITION'], 'urlEdit' => $urlEdit, 'linkEditValue' => $linkEditValue, 'PRO_UID' => $aRow ['PRO_UID'],'STEP_MODE' => $aRow['STEP_MODE'],'STEP_UID_OBJ' => $aRow['STEP_UID_OBJ'] ); - $oDataset->next (); - } - - global $_DBArray; - $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['steps'] = $aSteps; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass ( 'ArrayPeer' ); - $oCriteria = new Criteria ( 'dbarray' ); - $oCriteria->setDBArrayTable ( 'steps' ); - $oCriteria->addAscendingOrderByColumn ( 'STEP_POSITION' ); - //return $oCriteria; - return $_SESSION ['_DBArray']['steps']; - } catch ( Exception $oError ) { - throw ($oError); - } - } - - //new functions - function getAllStepTriggerCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = StepTriggerPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the steps trigger criteria array - * @param string $sTaskUID - * @return array - */ - function getExtStepTriggersCriteria($start, $limit, $sStepUID = '', $sTaskUID = '', $sType = '') - { - //$_SESSION['TASK'] = $sTaskUID; - $aBB = array (); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( 'C.CON_VALUE' ); - $oCriteria->addSelectColumn ( 'STEP_UID' ); - $oCriteria->addSelectColumn ( 'TRI_UID' ); - $oCriteria->addSelectColumn ( 'ST_TYPE' ); - $oCriteria->addSelectColumn ( 'ST_CONDITION' ); - $oCriteria->addSelectColumn ( StepTriggerPeer::ST_POSITION ); - $oCriteria->addAsColumn ( 'TRI_TITLE', 'C.CON_VALUE' ); - $oCriteria->addAlias ( 'C', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array (StepTriggerPeer::TRI_UID, 'C.CON_ID' ); - $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter ); - $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add ( StepTriggerPeer::STEP_UID, $sStepUID ); - $oCriteria->add ( StepTriggerPeer::TAS_UID, $sTaskUID ); - $oCriteria->add ( StepTriggerPeer::ST_TYPE, $sType ); - $oCriteria->addAscendingOrderByColumn ( StepTriggerPeer::ST_POSITION ); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - while ( $aRow = $oDataset->getRow () ) { - $aBB [] = array ('CON_VALUE' => $aRow ['CON_VALUE'],'STEP_UID' => $aRow ['STEP_UID'], 'ST_TYPE' => $aRow ['ST_TYPE'],'ST_POSITION' => $aRow ['ST_POSITION'],'ST_CONDITION' => $aRow ['ST_CONDITION'], 'TRI_UID' => $aRow ['TRI_UID'],'TRI_TITLE' => $aRow ['TRI_TITLE'] ); - $oDataset->next (); - } - return $aBB; - } - - /* - * Return the available step triggers list object - * @param string $sStepUID - * @param string $sTaskUID - * @param string $sType - * @return object - */ - function getExtAvailableStepTriggersCriteria($sProcessUID = '',$sStepUID = '', $sTaskUID = '', $sType = '') - { - try - { - $_SESSION['TASK'] = $sTaskUID; - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('TRI_UID'); - $oCriteria->add(StepTriggerPeer::TAS_UID , $sTaskUID); - $oCriteria->add(StepTriggerPeer::STEP_UID, $sStepUID); - $oCriteria->add(StepTriggerPeer::ST_TYPE , $sType); - $oDataset = StepTriggerPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $sUIDs = "'0'"; - $aUIDs = array(); - while ($aRow = $oDataset->getRow()) { - $sUIDs .= ",'" . $aRow['TRI_UID'] . "'"; - $aUIDs[] = $aRow['TRI_UID']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - //$oCriteria->addSelectColumn ( ContentPeer::CON_ID ); - $oCriteria->addSelectColumn('TRI_UID'); - $oCriteria->addSelectColumn('C.CON_VALUE'); - $oCriteria->addAsColumn ( 'TRI_TITLE', 'C.CON_VALUE' ); - $oCriteria->addAlias ( 'C', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array ('TRI_UID', 'C.CON_ID' ); - $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter ); - $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add(TriggersPeer::TRI_UID, $aUIDs, Criteria::NOT_IN); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $oDataset = TriggersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ( $aRow = $oDataset->getRow () ) { - $aBB [] = array ('CON_VALUE' => $aRow ['CON_VALUE'],'STEP_UID' => $sStepUID, 'ST_TYPE' => $sType,'TRI_UID' => $aRow ['TRI_UID'],'TRI_TITLE' => $aRow ['TRI_TITLE'] ); - $oDataset->next (); - } - return $aBB; - } - catch ( Exception $e ) { - throw ($e); - } - } - - //new functions - //deprecated - function getAllDynaformCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = DynaformPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the dynaforms list array - * @param string $sProcessUID - * @return object - */ - function getExtDynaformsList($start, $limit, $sProcessUID = '') - { - //select the main fields for dynaform and the title and description from CONTENT Table - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( DynaformPeer::DYN_UID ); - //$oCriteria->addSelectColumn ( DynaformPeer::PRO_UID ); - $oCriteria->addSelectColumn ( DynaformPeer::DYN_TYPE ); - $oCriteria->addAsColumn ( 'DYN_TITLE', 'C1.CON_VALUE' ); - $oCriteria->addAsColumn ( 'DYN_DESCRIPTION', 'C2.CON_VALUE' ); - $oCriteria->addAlias ( 'C1', 'CONTENT' ); - $oCriteria->addAlias ( 'C2', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array (DynaformPeer::DYN_UID, 'C1.CON_ID' ); - $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter ); - $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $aConditions = array (); - $aConditions [] = array (DynaformPeer::DYN_UID, 'C2.CON_ID' ); - $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'DYN_DESCRIPTION' . $sDelimiter ); - $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID ); - - //if we have pagination, we use it and limit the query - if($start != '') - $oCriteria->setOffset($start); - - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = DynaformPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $dynaformArray = array (); - $gridLabel = G::LoadTranslation( 'ID_GRID' ); - $normalLabel = G::LoadTranslation( 'ID_NORMAL' ); - - while ( $aRow = $oDataset->getRow () ) { - //this is a trick to copy the description and title from other language when the current language does not exist for this content row. - if (($aRow ['DYN_TITLE'] == NULL)||($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE","",$aRow ['DYN_UID'],SYS_LANG); - } - if (($aRow ['DYN_DESCRIPTION'] == NULL)||($aRow ['DYN_DESCRIPTION'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow ['DYN_DESCRIPTION'] = Content::Load("DYN_DESCRIPTION","",$aRow ['DYN_UID'],SYS_LANG); - } - - if ( $aRow['DYN_TYPE'] == 'grid' ) $aRow['DYN_TYPE'] = $gridLabel; - if ( $aRow['DYN_TYPE'] == 'xmlform' ) $aRow['DYN_TYPE'] = $normalLabel; - $aRow['TAS_EDIT'] = 0; - $aRow['TAS_VIEW'] = 0; - $dynaformArray [] = $aRow; - $oDataset->next (); - } - $result = array(); - - //Now count how many times the dynaform was used in different tasks in VIEW mode, - $groupbyCriteria = new Criteria ( 'workflow' ); - $groupbyCriteria->clearSelectColumns(); - $groupbyCriteria->addSelectColumn ( StepPeer::STEP_UID_OBJ ); - $groupbyCriteria->addSelectColumn('COUNT(TAS_UID)'); - $groupbyCriteria->add(StepPeer::PRO_UID, $sProcessUID ); - $groupbyCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); - $groupbyCriteria->add(StepPeer::STEP_MODE, 'VIEW'); - $groupbyCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); - $oDataset = DynaformPeer::doSelectRS ( $groupbyCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - while ( $aRow = $oDataset->getRow () ) { - foreach ( $dynaformArray as $key => $val ) { - if ($val['DYN_UID'] == $aRow['STEP_UID_OBJ'] ) $dynaformArray[$key]['TAS_VIEW'] = $aRow['COUNT(TAS_UID)'] ; - } - $oDataset->next (); + return $aObjectsPermissions; } - //Now count how many times the dynaform was used in different tasks in EDIT mode, - $groupbyCriteria = new Criteria ( 'workflow' ); - $groupbyCriteria->clearSelectColumns(); - $groupbyCriteria->addSelectColumn ( StepPeer::STEP_UID_OBJ ); - $groupbyCriteria->addSelectColumn('COUNT(TAS_UID)'); - $groupbyCriteria->add(StepPeer::PRO_UID, $sProcessUID ); - $groupbyCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); - $groupbyCriteria->add(StepPeer::STEP_MODE, 'EDIT'); - $groupbyCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); - $oDataset = DynaformPeer::doSelectRS ( $groupbyCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - while ( $aRow = $oDataset->getRow () ) { - foreach ( $dynaformArray as $key => $val ) { - if ($val['DYN_UID'] == $aRow['STEP_UID_OBJ'] ) $dynaformArray[$key]['TAS_EDIT'] = $aRow['COUNT(TAS_UID)'] ; - } - $oDataset->next (); - } - - //now query to get total dynaform for this process, - //$counCriteria is used to count how many dynaforms there are in this process - $countCriteria = new Criteria ( 'workflow' ); - $countCriteria->clearSelectColumns(); - $countCriteria->addSelectColumn('COUNT(*)'); - $countCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID ); - $oDataset = DynaformPeer::doSelectRS($countCriteria); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - $result['totalCount'] = $aRow[0]; - else - $result['totalCount'] = 0; - $result['data'] = $dynaformArray; - - return $result; - } - - - //new functions - function getAllInputDocumentCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = InputDocumentPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the Input Documents list array - * @param string $sProcessUID - * @return object - */ - function getExtInputDocumentsCriteria($start, $limit,$sProcessUID = '') - { - $aTasks = $this->getAllInputDocsByTask($sProcessUID); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_UID ); - $oCriteria->addSelectColumn ( InputDocumentPeer::PRO_UID ); - $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_VERSIONING ); - $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_DESTINATION_PATH ); - $oCriteria->addAsColumn ( 'INP_DOC_TITLE', 'C1.CON_VALUE' ); - $oCriteria->addAsColumn ( 'INP_DOC_DESCRIPTION', 'C2.CON_VALUE' ); - $oCriteria->addAlias ( 'C1', 'CONTENT' ); - $oCriteria->addAlias ( 'C2', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID' ); - $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter ); - $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $aConditions = array (); - $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID' ); - $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter ); - $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add ( InputDocumentPeer::PRO_UID, $sProcessUID ); - - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $inputDocArray = ""; - $inputDocArray [] = array ('INP_DOC_UID' => 'char', 'PRO_UID' => 'char', 'INP_DOC_TITLE' => 'char', 'INP_DOC_DESCRIPTION' => 'char' ); - while ( $aRow = $oDataset->getRow () ) { - if (($aRow ['INP_DOC_TITLE'] == NULL)||($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $inputDocument = new InputDocument ( ); - $inputDocumentObj = $inputDocument->load ( $aRow ['INP_DOC_UID'] ); - $aRow ['INP_DOC_TITLE'] = $inputDocumentObj ['INP_DOC_TITLE']; - $aRow ['INP_DOC_DESCRIPTION'] = $inputDocumentObj ['INP_DOC_DESCRIPTION']; - } - $aRow['INP_DOC_TASKS'] = isset($aTasks[$aRow ['INP_DOC_UID']]) ? $aTasks[$aRow ['INP_DOC_UID']] :0; - $inputDocArray [] = $aRow; - $oDataset->next (); - } - /*global $_DBArray; - $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['inputDocArrayMain'] = $inputDocArray; - //$_SESSION ['_DBArray']['inputDocArrayMain'] = $_DBArray;*/ - - - return $inputDocArray; - } - - //new functions - function getAllOutputDocumentCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = OutputDocumentPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the Output Documents list array - * @param string $sProcessUID - * @return object - */ - function getExtOutputDocumentsCriteria($start, $limit,$sProcessUID = '') - { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria ( 'workflow' ); - $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_UID ); - $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_TYPE ); - $oCriteria->addSelectColumn ( OutputDocumentPeer::PRO_UID ); - $oCriteria->addAsColumn ( 'OUT_DOC_TITLE', 'C1.CON_VALUE' ); - $oCriteria->addAsColumn ( 'OUT_DOC_DESCRIPTION', 'C2.CON_VALUE' ); - $oCriteria->addAlias ( 'C1', 'CONTENT' ); - $oCriteria->addAlias ( 'C2', 'CONTENT' ); - $aConditions = array (); - $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C1.CON_ID' ); - $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter ); - $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $aConditions = array (); - $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C2.CON_ID' ); - $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'OUT_DOC_DESCRIPTION' . $sDelimiter ); - $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); - $oCriteria->add ( OutputDocumentPeer::PRO_UID, $sProcessUID ); - - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = OutputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $outputDocArray = array (); - $outputDocArray [] = array ('d' => 'char' ); - while ( $aRow = $oDataset->getRow () ) { - if (($aRow ['OUT_DOC_TITLE'] == NULL)||($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $outputDocument = new OutputDocument ( ); - $outputDocumentObj = $outputDocument->load ( $aRow ['OUT_DOC_UID'] ); - $aRow ['OUT_DOC_TITLE'] = $outputDocumentObj ['OUT_DOC_TITLE']; - $aRow ['OUT_DOC_DESCRIPTION'] = $outputDocumentObj ['OUT_DOC_DESCRIPTION']; - } - $outputDocArray [] = $aRow; - $oDataset->next (); - } - global $_DBArray; - $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['outputDocArray'] = $outputDocArray; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass ( 'ArrayPeer' ); - $oCriteria = new Criteria ( 'dbarray' ); - $oCriteria->setDBArrayTable ( 'outputDocArray' ); - - return $outputDocArray; - } - - /** - * subProcess_Properties New Processmap - * - * @param string $sProcessUID - * @param string $sTaskUID - * @param string $sIndex - * @param string $sType (0=>'Asynchronous' , 1=>'Synchronous') - * @return void - * throw Exception $oError - */ - function subProcessExtProperties($sProcessUID = '', $sTaskUID = '', $sIndex = '',$sType = '') - { - try { //echo "$sProcessUID = '', $sTaskUID = '', $sIndex = ''"; - $SP_VARIABLES_OUT = array (); - $SP_VARIABLES_IN = array (); - - /* Prepare page before to show */ - global $_DBArray; - $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['NewCase'] = $this->subProcess_TaskIni ( $sProcessUID ); - unset ( $_DBArray ['TheProcesses'] ); - $_DBArray ['TheProcesses'] [] = array ('pro_uid' => 'char', 'value' => 'char' ); - $i = 0; - foreach ( $_DBArray ['NewCase'] as $aRow ) { - if ($i > 0) { - $_DBArray ['TheProcesses'] [] = array ('pro_uid' => $aRow ['pro_uid'] . '_' . $i, 'value' => $aRow ['value'] ); - } - $i ++; - } - //print'
';print_r($_DBArray['NewCase']);print'
'; - $oCriteria = new Criteria ( 'workflow' ); - $del = DBAdapter::getStringDelimiter (); - $oCriteria->add ( SubProcessPeer::PRO_PARENT, $sProcessUID ); - $oCriteria->add ( SubProcessPeer::TAS_PARENT, $sTaskUID ); - - $oCriteria->addAsColumn ( 'CON_VALUE', 'C1.CON_VALUE', 'CON_TITLE' ); - $oCriteria->addAlias ( "C1", 'CONTENT' ); - $tasTitleConds = array (); - $tasTitleConds [] = array (SubProcessPeer::TAS_PARENT, 'C1.CON_ID' ); - $tasTitleConds [] = array ('C1.CON_CATEGORY', $del . 'TAS_TITLE' . $del ); - $tasTitleConds [] = array ('C1.CON_LANG', $del . SYS_LANG . $del ); - $oCriteria->addJoinMC ( $tasTitleConds, Criteria::LEFT_JOIN ); - - $oDataset = SubProcessPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aRow = $oDataset->getRow (); - /*while($aRow = $oDataset->getRow ()) { - - $aSubProcess [] = array ('CON_VALUE' => $aRow ['CON_VALUE'], 'TAS_UID' => $sTaskUID, 'TASKS' => $sTaskUID,'TAS_TITLE' => $aRow ['CON_VALUE'], - 'SPROCESS_NAME' => $aRow ['CON_VALUE'] - ); - $oDataset->next (); - }*/ - - $aRow ['TASKS'] = $aRow ['TAS_UID']; - //print "
".$aRow['TASKS']."
"; - //$aRow['SPROCESS_NAME'] = $aRow['TAS_TITLE']; - $aRow ['TAS_TITLE'] = $aRow ['CON_VALUE']; - $aRow ['SPROCESS_NAME'] = $aRow ['CON_VALUE']; - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $aRow ['PRO_TITLE'] = Content::load ( 'PRO_TITLE', '', $aRow ['PRO_UID'] , $lang ); - - if($sType == 0) - { - $SP_VARIABLES_OUT = unserialize ( $aRow ['SP_VARIABLES_OUT'] ); - if (is_array ( $SP_VARIABLES_OUT )) { - $i = 0; - //$aRow1 = array(); - foreach ( $SP_VARIABLES_OUT as $indice => $valor ) { - //$aRow1 [$i] = $aRow; - $aRow [$i]['VAR_OUT1'] = $indice; - $aRow [$i]['VAR_OUT2'] = $valor; - //$aRow1 [$i]['PROCESSES'] = $_DBArray ['TheProcesses']; - $i ++; - } - } - } - - if($sType == 1) - { - $SP_VARIABLES_IN = unserialize ( $aRow ['SP_VARIABLES_IN'] ); - if (is_array ( $SP_VARIABLES_IN )) { - $j = 0; - foreach ( $SP_VARIABLES_IN as $indice => $valor ) { - $aRow1 [$j] = $aRow; - $aRow1 [$j] ['VAR_IN1'] = $indice; - $aRow1 [$j] ['VAR_IN2'] = $valor; - //$aRow1 [$i]['PROCESSES'] = $_DBArray ['TheProcesses']; - $j ++; - } - } - } - $aRow ['INDEX'] = $sIndex; - //print '
';print_r($aRow); - return $aRow; - //return $aSubProcess; - - } catch ( Exception $oError ) { - throw ($oError); - } - } - - //new functions - function getAllProcessSupervisorsCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = ProcessUserPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /** - * listProcessesUser for Extjs - * - * @param string $sProcessUID - * @return array(aProcessUser) $aProcessUser - */ - function listExtProcessesSupervisors($start, $limit,$sProcessUID) { - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_TYPE); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); - $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - $oDataset = ProcessUserPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aProcessUser = ''; - while ( $aRow = $oDataset->getRow () ) { - $aProcessUser [] = array ('PU_UID' => $aRow ['PU_UID'],'USR_UID' => $aRow ['USR_UID'],'PU_TYPE' => $aRow ['PU_TYPE'],'USR_FIRSTNAME' => $aRow ['USR_FIRSTNAME'],'USR_LASTNAME' => $aRow ['USR_LASTNAME'],'USR_EMAIL' => $aRow ['USR_EMAIL']); - $oDataset->next (); - } - return $aProcessUser; - } - - /** - * listExtNoProcessesUser for Extjs - * - * @param string $sProcessUID - * @return array(aAvailableUser) $aAvailableUser - */ - function listExtNoProcessesUser($sProcessUID) { - G::LoadSystem('rbac'); - $memcache = & PMmemcached::getSingleton(SYS_SYS); - - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['USR_UID']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::NOT_IN); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - $oRBAC = RBAC::getSingleton (); - while ($aRow = $oDataset->getRow()) { - $memKey = 'rbacSession' . session_id(); - if ( ($oRBAC->aUserInfo = $memcache->get($memKey)) === false ) { - $oRBAC->loadUserRolePermission($oRBAC->sSystem, $aRow ['USR_UID']); - $memcache->set( $memKey, $oRBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); - } - $aPermissions = $oRBAC->aUserInfo [$oRBAC->sSystem] ['PERMISSIONS']; - $bInclude = false; - foreach ($aPermissions as $aPermission) { - if ($aPermission ['PER_CODE'] == 'PM_SUPERVISOR') { - $bInclude = true; - } - } - if ($bInclude) { - $aUIDS [] = $aRow ['USR_UID']; - } - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::IN); - - $oDataset = UsersPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aAvailableUser = ''; - while ( $aRow = $oDataset->getRow () ) { - $aAvailableUser [] = array ('USR_UID' => $aRow ['USR_UID'],'USR_FIRSTNAME' => $aRow ['USR_FIRSTNAME'],'USR_LASTNAME' => $aRow ['USR_LASTNAME']); - $oDataset->next (); - } - return $aAvailableUser; - } - - //new functions - function getAllSupervisorDynaformsCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = StepSupervisorPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the supervisors dynaforms list array - * @param string $sProcessUID - * @return array - */ - - function getExtSupervisorDynaformsList($start, $limit,$sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); - $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); - $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM'); - $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aProcessDynaform = ''; - while ( $aRow = $oDataset->getRow () ) { - $aProcessDynaform [] = array ('DYN_TITLE' => $aRow ['DYN_TITLE'],'DYN_UID' => $aRow ['DYN_UID'],'STEP_UID' => $aRow ['STEP_UID'],'STEP_UID_OBJ' => $aRow ['STEP_UID_OBJ'],'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'],'STEP_POSITION' => $aRow ['STEP_POSITION']); - $oDataset->next (); - } - return $aProcessDynaform; - } - - /* - * Return the available supervisors dynaforms list array - * @param string $sProcessUID - * @return array - */ - - function getExtAvailableSupervisorDynaformsList($sProcessUID = '') { - $oCriteria = $this->getSupervisorDynaformsCriteria($sProcessUID); - $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['STEP_UID_OBJ']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addSelectColumn(DynaformPeer::PRO_UID); - $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); - $oCriteria->add(DynaformPeer::DYN_UID, $aUIDS, Criteria::NOT_IN); - - $oDataset = DynaformPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aAvailableProcessDynaform = ''; - while ( $aRow = $oDataset->getRow () ) { - $aAvailableProcessDynaform [] = array ('DYN_TITLE' => $aRow ['DYN_TITLE'],'DYN_UID' => $aRow ['DYN_UID']); - $oDataset->next (); - } - return $aAvailableProcessDynaform; - } - - //new functions - function getAllSupervisorInputsCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = StepSupervisorPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /* - * Return the supervisors input document list array - * @param string $sProcessUID - * @return array - */ - - function getExtSupervisorInputsList($start, $limit,$sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); - $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); - $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); - $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - $oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aProcessInputDoc = ''; - while ( $aRow = $oDataset->getRow () ) { - $aProcessInputDoc [] = array ('INP_DOC_TITLE' => $aRow ['INP_DOC_TITLE'],'INP_DOC_UID' => $aRow ['INP_DOC_UID'],'STEP_UID' => $aRow ['STEP_UID'],'STEP_UID_OBJ' => $aRow ['STEP_UID_OBJ'],'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'],'STEP_POSITION' => $aRow ['STEP_POSITION']); - $oDataset->next (); - } - return $aProcessInputDoc; - } - - /* - * Return the available supervisors input documents list array - * @param string $sProcessUID - * @return array - */ - - function getExtAvailableSupervisorInputsList($sProcessUID = '') { - $oCriteria = $this->getSupervisorInputsCriteria($sProcessUID); - $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aUIDS = array(); - while ($aRow = $oDataset->getRow()) { - $aUIDS [] = $aRow ['STEP_UID_OBJ']; - $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $aUIDS, Criteria::NOT_IN); - $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); - $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next (); - $aAvailableProcessIODoc = ''; - while ( $aRow = $oDataset->getRow () ) { - $aAvailableProcessIODoc [] = array ('INP_DOC_TITLE' => $aRow ['INP_DOC_TITLE'],'INP_DOC_UID' => $aRow ['INP_DOC_UID']); - $oDataset->next (); - } - return $aAvailableProcessIODoc; - } - - //new functions - function getAllDbSourceCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = DbSourcePeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - - /** - * listDBSConnection - * - * @param string $sProcessUID - * @return array(aDBList) $aDBList - */ - function getExtCriteriaDBSList($start, $limit,$sProcessUID) + /** + * objectsPermissionsList + * + * @param string $sProcessUID + * @return boolean true + */ + public function objectsPermissionsList($sProcessUID) { - try - { - $aDBList = array (); - //$aDBList [] = array ('STEP_TITLE' => 'char', 'STEP_UID' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_CONDITION' => 'char', 'STEP_POSITION' => 'integer','STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' ); - $sDelimiter = DBAdapter::getStringDelimiter(); + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'processes/processes_ObjectsPermissionsList', $this->getObjectsPermissionsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID)); + G::RenderPage('publish', 'raw'); + return true; + } + + /** + * newObjectPermission + * + * @param string $sProcessUID + * @return boolean true + */ + public function newObjectPermission($sProcessUID) + { + $usersGroups = ''; + $aAllObjects = array(); + $aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllDynaforms = array(); + $aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllInputs = array(); + $aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllOutputs = array(); + $aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char'); + $oCriteria = $this->getDynaformsCriteria($sProcessUID); + $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : ''; + $aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'], + 'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); + $aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'], + 'LABEL' => $aRow ['DYN_TITLE']); + $oDataset->next(); + } + G::LoadClass('ArrayPeer'); + $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'], + 'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); + $aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'], + 'LABEL' => $aRow ['INP_DOC_TITLE']); + $oDataset->next(); + } + G::LoadClass('ArrayPeer'); + $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); + $aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['allObjects'] = $aAllObjects; + $_DBArray ['allDynaforms'] = $aAllDynaforms; + $_DBArray ['allInputs'] = $aAllInputs; + $_DBArray ['allOutputs'] = $aAllOutputs; + $_SESSION ['_DBArray'] = $_DBArray; + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_NewObjectPermission', '', array('GROUP_USER' => $usersGroups, 'LANG' => SYS_LANG, 'PRO_UID' => $sProcessUID, 'ID_DELETE' => G::LoadTranslation('ID_DELETE')), 'processes_SaveObjectPermission'); + G::RenderPage('publish', 'raw'); + return true; + } + + /** + * editObjectPermission + * + * @param string $sOP_UID + * @param string $sProcessUID + * @return void + */ + public function editObjectPermission($sOP_UID, $sProcessUID) + { + $oCriteria = new Criteria ( ); + $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID); + $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRows = $oDataset->getRow(); + + $oCriteria = new Criteria ( ); + $oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']); + if (GroupwfPeer::doCount($oCriteria) == 1) + $user = '2|' . $aRows ['USR_UID']; + + $oCriteria = new Criteria ( ); + $oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']); + if (UsersPeer::doCount($oCriteria) == 1) + $user = '1|' . $aRows ['USR_UID']; + + $aFields ['LANG'] = SYS_LANG; + $aFields ['OP_UID'] = $aRows ['OP_UID']; + $aFields ['PRO_UID'] = $aRows ['PRO_UID']; + $aFields ['OP_CASE_STATUS'] = $aRows ['OP_CASE_STATUS']; + $aFields ['TAS_UID'] = $aRows ['TAS_UID']; + $aFields ['OP_TASK_SOURCE'] = $aRows ['OP_TASK_SOURCE']; + $aFields ['OP_PARTICIPATE'] = $aRows ['OP_PARTICIPATE']; + $aFields ['OP_OBJ_TYPE'] = $aRows ['OP_OBJ_TYPE']; + $aFields ['OP_ACTION'] = $aRows ['OP_ACTION']; + + switch ($aRows ['OP_OBJ_TYPE']) { + /* case 'ANY': + $aFields['OP_OBJ_TYPE'] = ''; + break; */ + case 'DYNAFORM' : + $aFields ['DYNAFORMS'] = $aRows ['OP_OBJ_UID']; + break; + case 'INPUT' : + $aFields ['INPUTS'] = $aRows ['OP_OBJ_UID']; + break; + case 'OUTPUT' : + $aFields ['OUTPUTS'] = $aRows ['OP_OBJ_UID']; + break; + } + + $usersGroups = '' ); + $oDataset->next (); + } + $oCriteria = new Criteria ( 'workflow' ); + $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_UID ); + $oCriteria->addAsColumn ( 'OUT_DOC_TITLE', 'C.CON_VALUE' ); + $oCriteria->addAlias ( 'C', 'CONTENT' ); + $aConditions = array (); + $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C.CON_ID' ); + $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter ); + $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $oCriteria->add ( OutputDocumentPeer::PRO_UID, $sProcessUID ); + $oCriteria->add ( OutputDocumentPeer::OUT_DOC_UID, $sUIDs, Criteria::NOT_IN ); + $oDataset = OutputDocumentPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + $aBB [] = array ('STEP_UID' => $aRow ['OUT_DOC_UID'],'STEP_UID_OBJ' => $aRow ['OUT_DOC_UID'], 'STEP_TITLE' => $aRow ['OUT_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'OUTPUT_DOCUMENT', 'STEP_MODE' => '' ); + $oDataset->next (); + } + + //call plugin + $oPluginRegistry = &PMPluginRegistry::getSingleton (); + $externalSteps = $oPluginRegistry->getSteps (); + if (is_array ( $externalSteps ) && count ( $externalSteps ) > 0) { + foreach ( $externalSteps as $key => $stepVar ) { + $aBB [] = array ('STEP_UID' => $stepVar->sStepId, 'STEP_TITLE' => $stepVar->sStepTitle, 'STEP_TYPE_OBJ' => 'EXTERNAL', 'STEP_MODE' => '' ); + } + } + + global $_DBArray; + $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['availableBB'] = $aBB; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass ( 'ArrayPeer' ); + $oCriteria = new Criteria ( 'dbarray' ); + $oCriteria->setDBArrayTable ( 'availableBB' ); + $oCriteria->addAscendingOrderByColumn ( 'STEP_TYPE_OBJ' ); + $oCriteria->addAscendingOrderByColumn ( 'STEP_TITLE' ); + //return $oCriteria; + return $_SESSION ['_DBArray']['availableBB']; + } catch ( Exception $oError ) { + throw ($oError); + } + } + + //new functions + public function getAllStepCount(){ + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = StepPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; + } + } + + /* + * Return the steps list criteria object + * @param string $sTaskUID + * @return array + */ + public function getExtStepsCriteria($start, $limit, $sTaskUID = '') + { + try { + //call plugin + $oPluginRegistry = &PMPluginRegistry::getSingleton (); + $externalSteps = $oPluginRegistry->getSteps (); + + $aSteps = array (); + $aSteps [] = array ('STEP_TITLE' => 'char', 'STEP_UID' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_CONDITION' => 'char', 'STEP_POSITION' => 'integer','STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' ); + $oCriteria = new Criteria ( 'workflow' ); + $oCriteria->add ( StepPeer::TAS_UID, $sTaskUID ); + $oCriteria->addAscendingOrderByColumn ( StepPeer::STEP_POSITION ); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + $oDataset = StepPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + $urlEdit = ''; + $linkEditValue = ''; + + switch ($aRow ['STEP_TYPE_OBJ']) { + case 'DYNAFORM' : + $oDynaform = new Dynaform ( ); + $aFields = $oDynaform->load ( $aRow ['STEP_UID_OBJ'] ); + $sTitle = $aFields ['DYN_TITLE']; + /** @@@init2 PROCCESS FOR DIRECT EDIT LINK @by erik@colosa.com ON DATE 02/06/2008 18:48:13*/ + $DYN_UID = $aFields ['DYN_UID']; + $urlEdit = "dynaformEdit('" . $DYN_UID . "', '" . $aRow ['PRO_UID'] . "');"; + $linkEditValue = 'Edit'; + /** @@@end2*/ + break; + case 'INPUT_DOCUMENT' : + $oInputDocument = new InputDocument ( ); + $aFields = $oInputDocument->load ( $aRow ['STEP_UID_OBJ'] ); + $sTitle = $aFields ['INP_DOC_TITLE']; + break; + case 'OUTPUT_DOCUMENT' : + $oOutputDocument = new OutputDocument ( ); + $aFields = $oOutputDocument->load ( $aRow ['STEP_UID_OBJ'] ); + $sTitle = $aFields ['OUT_DOC_TITLE']; + break; + case 'EXTERNAL' : + $sTitle = 'unknown ' . $aRow ['STEP_UID']; + foreach ( $externalSteps as $key => $val ) { + if ($val->sStepId == $aRow ['STEP_UID_OBJ']) { + $sTitle = $val->sStepTitle; + if (trim ( $val->sSetupStepPage ) != '') { + $urlEdit = "externalStepEdit('" . $aRow ['STEP_UID'] . "', '" . $val->sSetupStepPage . "');"; + $linkEditValue = 'Edit'; + } else { + $urlEdit = ""; + $linkEditValue = ''; + } + } + } + break; + } + $aSteps [] = array ('STEP_TITLE' => $sTitle, 'STEP_UID' => $aRow ['STEP_UID'], 'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'], 'STEP_CONDITION' => $aRow ['STEP_CONDITION'], 'STEP_POSITION' => $aRow ['STEP_POSITION'], 'urlEdit' => $urlEdit, 'linkEditValue' => $linkEditValue, 'PRO_UID' => $aRow ['PRO_UID'],'STEP_MODE' => $aRow['STEP_MODE'],'STEP_UID_OBJ' => $aRow['STEP_UID_OBJ'] ); + $oDataset->next (); + } + + global $_DBArray; + $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['steps'] = $aSteps; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass ( 'ArrayPeer' ); + $oCriteria = new Criteria ( 'dbarray' ); + $oCriteria->setDBArrayTable ( 'steps' ); + $oCriteria->addAscendingOrderByColumn ( 'STEP_POSITION' ); + //return $oCriteria; + return $_SESSION ['_DBArray']['steps']; + } catch ( Exception $oError ) { + throw ($oError); + } + } + + //new functions + public function getAllStepTriggerCount() { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = StepTriggerPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; + } + } + + /* + * Return the steps trigger criteria array + * @param string $sTaskUID + * @return array + */ + function getExtStepTriggersCriteria($start, $limit, $sStepUID = '', $sTaskUID = '', $sType = '') + { + //$_SESSION['TASK'] = $sTaskUID; + $aBB = array (); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria ( 'workflow' ); + $oCriteria->addSelectColumn ( 'C.CON_VALUE' ); + $oCriteria->addSelectColumn ( 'STEP_UID' ); + $oCriteria->addSelectColumn ( 'TRI_UID' ); + $oCriteria->addSelectColumn ( 'ST_TYPE' ); + $oCriteria->addSelectColumn ( 'ST_CONDITION' ); + $oCriteria->addSelectColumn ( StepTriggerPeer::ST_POSITION ); + $oCriteria->addAsColumn ( 'TRI_TITLE', 'C.CON_VALUE' ); + $oCriteria->addAlias ( 'C', 'CONTENT' ); + $aConditions = array (); + $aConditions [] = array (StepTriggerPeer::TRI_UID, 'C.CON_ID' ); + $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter ); + $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $oCriteria->add ( StepTriggerPeer::STEP_UID, $sStepUID ); + $oCriteria->add ( StepTriggerPeer::TAS_UID, $sTaskUID ); + $oCriteria->add ( StepTriggerPeer::ST_TYPE, $sType ); + $oCriteria->addAscendingOrderByColumn ( StepTriggerPeer::ST_POSITION ); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + $aBB [] = array ('CON_VALUE' => $aRow ['CON_VALUE'],'STEP_UID' => $aRow ['STEP_UID'], 'ST_TYPE' => $aRow ['ST_TYPE'],'ST_POSITION' => $aRow ['ST_POSITION'],'ST_CONDITION' => $aRow ['ST_CONDITION'], 'TRI_UID' => $aRow ['TRI_UID'],'TRI_TITLE' => $aRow ['TRI_TITLE'] ); + $oDataset->next (); + } + return $aBB; + } + + /* + * Return the available step triggers list object + * @param string $sStepUID + * @param string $sTaskUID + * @param string $sType + * @return object + */ + public function getExtAvailableStepTriggersCriteria($sProcessUID = '',$sStepUID = '', $sTaskUID = '', $sType = '') + { + try { + $_SESSION['TASK'] = $sTaskUID; + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('TRI_UID'); + $oCriteria->add(StepTriggerPeer::TAS_UID , $sTaskUID); + $oCriteria->add(StepTriggerPeer::STEP_UID, $sStepUID); + $oCriteria->add(StepTriggerPeer::ST_TYPE , $sType); + $oDataset = StepTriggerPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $sUIDs = "'0'"; + $aUIDs = array(); + while ($aRow = $oDataset->getRow()) { + $sUIDs .= ",'" . $aRow['TRI_UID'] . "'"; + $aUIDs[] = $aRow['TRI_UID']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + //$oCriteria->addSelectColumn ( ContentPeer::CON_ID ); + $oCriteria->addSelectColumn('TRI_UID'); + $oCriteria->addSelectColumn('C.CON_VALUE'); + $oCriteria->addAsColumn ( 'TRI_TITLE', 'C.CON_VALUE' ); + $oCriteria->addAlias ( 'C', 'CONTENT' ); + $aConditions = array (); + $aConditions [] = array ('TRI_UID', 'C.CON_ID' ); + $aConditions [] = array ('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter ); + $aConditions [] = array ('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $oCriteria->add(TriggersPeer::TRI_UID, $aUIDs, Criteria::NOT_IN); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $oDataset = TriggersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ( $aRow = $oDataset->getRow () ) { + $aBB [] = array ('CON_VALUE' => $aRow ['CON_VALUE'],'STEP_UID' => $sStepUID, 'ST_TYPE' => $sType,'TRI_UID' => $aRow ['TRI_UID'],'TRI_TITLE' => $aRow ['TRI_TITLE'] ); + $oDataset->next (); + } + return $aBB; + } catch ( Exception $e ) { + throw ($e); + } + } + + //new functions + //deprecated + public function getAllDynaformCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = DynaformPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if (is_array($aRow)) { + return $aRow[0]; + } else { + return 0; + } + } + + /* + * Return the dynaforms list array + * @param string $sProcessUID + * @return object + */ + public function getExtDynaformsList($start, $limit, $sProcessUID = '') + { + //select the main fields for dynaform and the title and description from CONTENT Table + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria ( 'workflow' ); + $oCriteria->addSelectColumn ( DynaformPeer::DYN_UID ); + //$oCriteria->addSelectColumn ( DynaformPeer::PRO_UID ); + $oCriteria->addSelectColumn ( DynaformPeer::DYN_TYPE ); + $oCriteria->addAsColumn ( 'DYN_TITLE', 'C1.CON_VALUE' ); + $oCriteria->addAsColumn ( 'DYN_DESCRIPTION', 'C2.CON_VALUE' ); + $oCriteria->addAlias ( 'C1', 'CONTENT' ); + $oCriteria->addAlias ( 'C2', 'CONTENT' ); + $aConditions = array (); + $aConditions [] = array (DynaformPeer::DYN_UID, 'C1.CON_ID' ); + $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter ); + $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $aConditions = array (); + $aConditions [] = array (DynaformPeer::DYN_UID, 'C2.CON_ID' ); + $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'DYN_DESCRIPTION' . $sDelimiter ); + $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $oCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID ); + + //if we have pagination, we use it and limit the query + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + $oDataset = DynaformPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $dynaformArray = array (); + $gridLabel = G::LoadTranslation( 'ID_GRID' ); + $normalLabel = G::LoadTranslation( 'ID_NORMAL' ); + + while ( $aRow = $oDataset->getRow () ) { + //this is a trick to copy the description and title from other language when the current language does not exist for this content row. + if (($aRow ['DYN_TITLE'] == NULL)||($aRow ['DYN_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['DYN_TITLE'] = Content::Load("DYN_TITLE","",$aRow ['DYN_UID'],SYS_LANG); + } + if (($aRow ['DYN_DESCRIPTION'] == NULL)||($aRow ['DYN_DESCRIPTION'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $aRow ['DYN_DESCRIPTION'] = Content::Load("DYN_DESCRIPTION","",$aRow ['DYN_UID'],SYS_LANG); + } + + if ( $aRow['DYN_TYPE'] == 'grid' ) $aRow['DYN_TYPE'] = $gridLabel; + if ( $aRow['DYN_TYPE'] == 'xmlform' ) $aRow['DYN_TYPE'] = $normalLabel; + $aRow['TAS_EDIT'] = 0; + $aRow['TAS_VIEW'] = 0; + $dynaformArray [] = $aRow; + $oDataset->next (); + } + $result = array(); + + //Now count how many times the dynaform was used in different tasks in VIEW mode, + $groupbyCriteria = new Criteria ( 'workflow' ); + $groupbyCriteria->clearSelectColumns(); + $groupbyCriteria->addSelectColumn ( StepPeer::STEP_UID_OBJ ); + $groupbyCriteria->addSelectColumn('COUNT(TAS_UID)'); + $groupbyCriteria->add(StepPeer::PRO_UID, $sProcessUID ); + $groupbyCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); + $groupbyCriteria->add(StepPeer::STEP_MODE, 'VIEW'); + $groupbyCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); + $oDataset = DynaformPeer::doSelectRS ( $groupbyCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + foreach ( $dynaformArray as $key => $val ) { + if ($val['DYN_UID'] == $aRow['STEP_UID_OBJ'] ) $dynaformArray[$key]['TAS_VIEW'] = $aRow['COUNT(TAS_UID)'] ; + } + $oDataset->next (); + } + + //Now count how many times the dynaform was used in different tasks in EDIT mode, + $groupbyCriteria = new Criteria ( 'workflow' ); + $groupbyCriteria->clearSelectColumns(); + $groupbyCriteria->addSelectColumn ( StepPeer::STEP_UID_OBJ ); + $groupbyCriteria->addSelectColumn('COUNT(TAS_UID)'); + $groupbyCriteria->add(StepPeer::PRO_UID, $sProcessUID ); + $groupbyCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); + $groupbyCriteria->add(StepPeer::STEP_MODE, 'EDIT'); + $groupbyCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); + $oDataset = DynaformPeer::doSelectRS ( $groupbyCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + foreach ( $dynaformArray as $key => $val ) { + if ($val['DYN_UID'] == $aRow['STEP_UID_OBJ'] ) $dynaformArray[$key]['TAS_EDIT'] = $aRow['COUNT(TAS_UID)'] ; + } + $oDataset->next (); + } + + //now query to get total dynaform for this process, + //$counCriteria is used to count how many dynaforms there are in this process + $countCriteria = new Criteria ( 'workflow' ); + $countCriteria->clearSelectColumns(); + $countCriteria->addSelectColumn('COUNT(*)'); + $countCriteria->add ( DynaformPeer::PRO_UID, $sProcessUID ); + $oDataset = DynaformPeer::doSelectRS($countCriteria); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + $result['totalCount'] = $aRow[0]; + else + $result['totalCount'] = 0; + $result['data'] = $dynaformArray; + + return $result; + } + + + //new functions + public function getAllInputDocumentCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = InputDocumentPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the Input Documents list array + * @param string $sProcessUID + * @return object + */ + public function getExtInputDocumentsCriteria($start, $limit,$sProcessUID = '') + { + $aTasks = $this->getAllInputDocsByTask($sProcessUID); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria ( 'workflow' ); + $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_UID ); + $oCriteria->addSelectColumn ( InputDocumentPeer::PRO_UID ); + $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_VERSIONING ); + $oCriteria->addSelectColumn ( InputDocumentPeer::INP_DOC_DESTINATION_PATH ); + $oCriteria->addAsColumn ( 'INP_DOC_TITLE', 'C1.CON_VALUE' ); + $oCriteria->addAsColumn ( 'INP_DOC_DESCRIPTION', 'C2.CON_VALUE' ); + $oCriteria->addAlias ( 'C1', 'CONTENT' ); + $oCriteria->addAlias ( 'C2', 'CONTENT' ); + $aConditions = array (); + $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID' ); + $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter ); + $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $aConditions = array (); + $aConditions [] = array (InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID' ); + $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter ); + $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $oCriteria->add ( InputDocumentPeer::PRO_UID, $sProcessUID ); + + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + + $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $inputDocArray = ""; + $inputDocArray [] = array ('INP_DOC_UID' => 'char', 'PRO_UID' => 'char', 'INP_DOC_TITLE' => 'char', 'INP_DOC_DESCRIPTION' => 'char' ); + while ( $aRow = $oDataset->getRow () ) { + if (($aRow ['INP_DOC_TITLE'] == NULL)||($aRow ['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $inputDocument = new InputDocument ( ); + $inputDocumentObj = $inputDocument->load ( $aRow ['INP_DOC_UID'] ); + $aRow ['INP_DOC_TITLE'] = $inputDocumentObj ['INP_DOC_TITLE']; + $aRow ['INP_DOC_DESCRIPTION'] = $inputDocumentObj ['INP_DOC_DESCRIPTION']; + } + $aRow['INP_DOC_TASKS'] = isset($aTasks[$aRow ['INP_DOC_UID']]) ? $aTasks[$aRow ['INP_DOC_UID']] :0; + $inputDocArray [] = $aRow; + $oDataset->next (); + } + /*global $_DBArray; + $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['inputDocArrayMain'] = $inputDocArray; + //$_SESSION ['_DBArray']['inputDocArrayMain'] = $_DBArray;*/ + + + return $inputDocArray; + } + + //new functions + public function getAllOutputDocumentCount(){ + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = OutputDocumentPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the Output Documents list array + * @param string $sProcessUID + * @return object + */ + public function getExtOutputDocumentsCriteria($start, $limit,$sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria ( 'workflow' ); + $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_UID ); + $oCriteria->addSelectColumn ( OutputDocumentPeer::OUT_DOC_TYPE ); + $oCriteria->addSelectColumn ( OutputDocumentPeer::PRO_UID ); + $oCriteria->addAsColumn ( 'OUT_DOC_TITLE', 'C1.CON_VALUE' ); + $oCriteria->addAsColumn ( 'OUT_DOC_DESCRIPTION', 'C2.CON_VALUE' ); + $oCriteria->addAlias ( 'C1', 'CONTENT' ); + $oCriteria->addAlias ( 'C2', 'CONTENT' ); + $aConditions = array (); + $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C1.CON_ID' ); + $aConditions [] = array ('C1.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter ); + $aConditions [] = array ('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $aConditions = array (); + $aConditions [] = array (OutputDocumentPeer::OUT_DOC_UID, 'C2.CON_ID' ); + $aConditions [] = array ('C2.CON_CATEGORY', $sDelimiter . 'OUT_DOC_DESCRIPTION' . $sDelimiter ); + $aConditions [] = array ('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); + $oCriteria->addJoinMC ( $aConditions, Criteria::LEFT_JOIN ); + $oCriteria->add ( OutputDocumentPeer::PRO_UID, $sProcessUID ); + + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + + $oDataset = OutputDocumentPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $outputDocArray = array (); + $outputDocArray [] = array ('d' => 'char' ); + while ( $aRow = $oDataset->getRow () ) { + if (($aRow ['OUT_DOC_TITLE'] == NULL)||($aRow ['OUT_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label + $outputDocument = new OutputDocument ( ); + $outputDocumentObj = $outputDocument->load ( $aRow ['OUT_DOC_UID'] ); + $aRow ['OUT_DOC_TITLE'] = $outputDocumentObj ['OUT_DOC_TITLE']; + $aRow ['OUT_DOC_DESCRIPTION'] = $outputDocumentObj ['OUT_DOC_DESCRIPTION']; + } + $outputDocArray [] = $aRow; + $oDataset->next (); + } + global $_DBArray; + $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['outputDocArray'] = $outputDocArray; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass ( 'ArrayPeer' ); + $oCriteria = new Criteria ( 'dbarray' ); + $oCriteria->setDBArrayTable ( 'outputDocArray' ); + + return $outputDocArray; + } + + /** + * subProcess_Properties New Processmap + * + * @param string $sProcessUID + * @param string $sTaskUID + * @param string $sIndex + * @param string $sType (0=>'Asynchronous' , 1=>'Synchronous') + * @return void + * throw Exception $oError + */ + public function subProcessExtProperties($sProcessUID = '', $sTaskUID = '', $sIndex = '',$sType = '') + { + try { //echo "$sProcessUID = '', $sTaskUID = '', $sIndex = ''"; + $SP_VARIABLES_OUT = array (); + $SP_VARIABLES_IN = array (); + + /* Prepare page before to show */ + global $_DBArray; + $_DBArray = (isset ( $_SESSION ['_DBArray'] ) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['NewCase'] = $this->subProcess_TaskIni ( $sProcessUID ); + unset ( $_DBArray ['TheProcesses'] ); + $_DBArray ['TheProcesses'] [] = array ('pro_uid' => 'char', 'value' => 'char' ); + $i = 0; + foreach ( $_DBArray ['NewCase'] as $aRow ) { + if ($i > 0) { + $_DBArray ['TheProcesses'] [] = array ('pro_uid' => $aRow ['pro_uid'] . '_' . $i, 'value' => $aRow ['value'] ); + } + $i ++; + } + //print'
';print_r($_DBArray['NewCase']);print'
'; + $oCriteria = new Criteria ( 'workflow' ); + $del = DBAdapter::getStringDelimiter (); + $oCriteria->add ( SubProcessPeer::PRO_PARENT, $sProcessUID ); + $oCriteria->add ( SubProcessPeer::TAS_PARENT, $sTaskUID ); + + $oCriteria->addAsColumn ( 'CON_VALUE', 'C1.CON_VALUE', 'CON_TITLE' ); + $oCriteria->addAlias ( "C1", 'CONTENT' ); + $tasTitleConds = array (); + $tasTitleConds [] = array (SubProcessPeer::TAS_PARENT, 'C1.CON_ID' ); + $tasTitleConds [] = array ('C1.CON_CATEGORY', $del . 'TAS_TITLE' . $del ); + $tasTitleConds [] = array ('C1.CON_LANG', $del . SYS_LANG . $del ); + $oCriteria->addJoinMC ( $tasTitleConds, Criteria::LEFT_JOIN ); + + $oDataset = SubProcessPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aRow = $oDataset->getRow (); + /*while($aRow = $oDataset->getRow ()) { + + $aSubProcess [] = array ('CON_VALUE' => $aRow ['CON_VALUE'], 'TAS_UID' => $sTaskUID, 'TASKS' => $sTaskUID,'TAS_TITLE' => $aRow ['CON_VALUE'], + 'SPROCESS_NAME' => $aRow ['CON_VALUE'] + ); + $oDataset->next (); + }*/ + + $aRow ['TASKS'] = $aRow ['TAS_UID']; + //print "
".$aRow['TASKS']."
"; + //$aRow['SPROCESS_NAME'] = $aRow['TAS_TITLE']; + $aRow ['TAS_TITLE'] = $aRow ['CON_VALUE']; + $aRow ['SPROCESS_NAME'] = $aRow ['CON_VALUE']; + $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; + $aRow ['PRO_TITLE'] = Content::load ( 'PRO_TITLE', '', $aRow ['PRO_UID'] , $lang ); + + if ($sType == 0) + { + $SP_VARIABLES_OUT = unserialize ( $aRow ['SP_VARIABLES_OUT'] ); + if (is_array ( $SP_VARIABLES_OUT )) { + $i = 0; + //$aRow1 = array(); + foreach ( $SP_VARIABLES_OUT as $indice => $valor ) { + //$aRow1 [$i] = $aRow; + $aRow [$i]['VAR_OUT1'] = $indice; + $aRow [$i]['VAR_OUT2'] = $valor; + //$aRow1 [$i]['PROCESSES'] = $_DBArray ['TheProcesses']; + $i ++; + } + } + } + + if ($sType == 1) + { + $SP_VARIABLES_IN = unserialize ( $aRow ['SP_VARIABLES_IN'] ); + if (is_array ( $SP_VARIABLES_IN )) { + $j = 0; + foreach ( $SP_VARIABLES_IN as $indice => $valor ) { + $aRow1 [$j] = $aRow; + $aRow1 [$j] ['VAR_IN1'] = $indice; + $aRow1 [$j] ['VAR_IN2'] = $valor; + //$aRow1 [$i]['PROCESSES'] = $_DBArray ['TheProcesses']; + $j ++; + } + } + } + $aRow ['INDEX'] = $sIndex; + //print '
';print_r($aRow); + return $aRow; + //return $aSubProcess; + + } catch ( Exception $oError ) { + throw ($oError); + } + } + + //new functions + public function getAllProcessSupervisorsCount(){ + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = ProcessUserPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /** + * listProcessesUser for Extjs + * + * @param string $sProcessUID + * @return array(aProcessUser) $aProcessUser + */ + public function listExtProcessesSupervisors($start, $limit,$sProcessUID) { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_TYPE); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); + $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + $oDataset = ProcessUserPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aProcessUser = ''; + while ( $aRow = $oDataset->getRow () ) { + $aProcessUser [] = array ('PU_UID' => $aRow ['PU_UID'],'USR_UID' => $aRow ['USR_UID'],'PU_TYPE' => $aRow ['PU_TYPE'],'USR_FIRSTNAME' => $aRow ['USR_FIRSTNAME'],'USR_LASTNAME' => $aRow ['USR_LASTNAME'],'USR_EMAIL' => $aRow ['USR_EMAIL']); + $oDataset->next (); + } + return $aProcessUser; + } + + /** + * listExtNoProcessesUser for Extjs + * + * @param string $sProcessUID + * @return array(aAvailableUser) $aAvailableUser + */ + public function listExtNoProcessesUser($sProcessUID) { + G::LoadSystem('rbac'); + $memcache = & PMmemcached::getSingleton(SYS_SYS); + + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['USR_UID']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::NOT_IN); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + $oRBAC = RBAC::getSingleton (); + while ($aRow = $oDataset->getRow()) { + $memKey = 'rbacSession' . session_id(); + if ( ($oRBAC->aUserInfo = $memcache->get($memKey)) === false ) { + $oRBAC->loadUserRolePermission($oRBAC->sSystem, $aRow ['USR_UID']); + $memcache->set( $memKey, $oRBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); + } + $aPermissions = $oRBAC->aUserInfo [$oRBAC->sSystem] ['PERMISSIONS']; + $bInclude = false; + foreach ($aPermissions as $aPermission) { + if ($aPermission ['PER_CODE'] == 'PM_SUPERVISOR') { + $bInclude = true; + } + } + if ($bInclude) { + $aUIDS [] = $aRow ['USR_UID']; + } + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS, Criteria::IN); + + $oDataset = UsersPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aAvailableUser = ''; + while ( $aRow = $oDataset->getRow () ) { + $aAvailableUser [] = array ('USR_UID' => $aRow ['USR_UID'],'USR_FIRSTNAME' => $aRow ['USR_FIRSTNAME'],'USR_LASTNAME' => $aRow ['USR_LASTNAME']); + $oDataset->next (); + } + return $aAvailableUser; + } + + //new functions + public function getAllSupervisorDynaformsCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = StepSupervisorPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the supervisors dynaforms list array + * @param string $sProcessUID + * @return array + */ + public function getExtSupervisorDynaformsList($start, $limit,$sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID); + $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); + $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM'); + $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + + $oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aProcessDynaform = ''; + while ( $aRow = $oDataset->getRow () ) { + $aProcessDynaform [] = array ('DYN_TITLE' => $aRow ['DYN_TITLE'],'DYN_UID' => $aRow ['DYN_UID'],'STEP_UID' => $aRow ['STEP_UID'],'STEP_UID_OBJ' => $aRow ['STEP_UID_OBJ'],'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'],'STEP_POSITION' => $aRow ['STEP_POSITION']); + $oDataset->next (); + } + return $aProcessDynaform; + } + + /* + * Return the available supervisors dynaforms list array + * @param string $sProcessUID + * @return array + */ + public function getExtAvailableSupervisorDynaformsList($sProcessUID = '') + { + $oCriteria = $this->getSupervisorDynaformsCriteria($sProcessUID); + $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['STEP_UID_OBJ']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addSelectColumn(DynaformPeer::PRO_UID); + $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); + $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); + $oCriteria->add(DynaformPeer::DYN_UID, $aUIDS, Criteria::NOT_IN); + + $oDataset = DynaformPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aAvailableProcessDynaform = ''; + while ( $aRow = $oDataset->getRow () ) { + $aAvailableProcessDynaform [] = array ('DYN_TITLE' => $aRow ['DYN_TITLE'],'DYN_UID' => $aRow ['DYN_UID']); + $oDataset->next (); + } + return $aAvailableProcessDynaform; + } + + //new functions + public function getAllSupervisorInputsCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = StepSupervisorPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the supervisors input document list array + * @param string $sProcessUID + * @return array + */ + public function getExtSupervisorInputsList($start, $limit,$sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::PRO_UID); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); + $aConditions [] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); + $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); + $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + $oDataset = StepSupervisorPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aProcessInputDoc = ''; + while ( $aRow = $oDataset->getRow () ) { + $aProcessInputDoc [] = array ('INP_DOC_TITLE' => $aRow ['INP_DOC_TITLE'],'INP_DOC_UID' => $aRow ['INP_DOC_UID'],'STEP_UID' => $aRow ['STEP_UID'],'STEP_UID_OBJ' => $aRow ['STEP_UID_OBJ'],'STEP_TYPE_OBJ' => $aRow ['STEP_TYPE_OBJ'],'STEP_POSITION' => $aRow ['STEP_POSITION']); + $oDataset->next (); + } + return $aProcessInputDoc; + } + + /* + * Return the available supervisors input documents list array + * @param string $sProcessUID + * @return array + */ + public function getExtAvailableSupervisorInputsList($sProcessUID = '') + { + $oCriteria = $this->getSupervisorInputsCriteria($sProcessUID); + $oDataset = StepSupervisorPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aUIDS = array(); + while ($aRow = $oDataset->getRow()) { + $aUIDS [] = $aRow ['STEP_UID_OBJ']; + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); + $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $aUIDS, Criteria::NOT_IN); + $oDataset = InputDocumentPeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + $aAvailableProcessIODoc = ''; + while ( $aRow = $oDataset->getRow () ) { + $aAvailableProcessIODoc [] = array ('INP_DOC_TITLE' => $aRow ['INP_DOC_TITLE'],'INP_DOC_UID' => $aRow ['INP_DOC_UID']); + $oDataset->next (); + } + return $aAvailableProcessIODoc; + } + + //new functions + public function getAllDbSourceCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = DbSourcePeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; + } + } + + /** + * listDBSConnection + * + * @param string $sProcessUID + * @return array(aDBList) $aDBList + */ + public function getExtCriteriaDBSList($start, $limit,$sProcessUID) + { + try { + $aDBList = array (); + //$aDBList [] = array ('STEP_TITLE' => 'char', 'STEP_UID' => 'char', 'STEP_TYPE_OBJ' => 'char', 'STEP_CONDITION' => 'char', 'STEP_POSITION' => 'integer','STEP_MODE' => 'char','STEP_UID_OBJ' => 'char' ); + $sDelimiter = DBAdapter::getStringDelimiter(); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_UID); + $oCriteria->addSelectColumn(DbSourcePeer::PRO_UID); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_TYPE); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_SERVER); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_DATABASE_NAME); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_USERNAME); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_PASSWORD); + $oCriteria->addSelectColumn(DbSourcePeer::DBS_PORT); + $oCriteria->addAsColumn('DBS_DESCRIPTION', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions[] = array(DbSourcePeer::DBS_UID, 'C.CON_ID'); + $aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'DBS_DESCRIPTION' . $sDelimiter); + $aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(DbSourcePeer::PRO_UID, $sProcessUID); + + $this->tmpCriteria = clone $oCriteria; + + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + + $oDataset = DbSourcePeer::doSelectRS ( $oCriteria ); + $oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next (); + while ( $aRow = $oDataset->getRow () ) { + $aDBList [] = array ('DBS_UID' => $aRow ['DBS_UID'],'DBS_TYPE' => $aRow ['DBS_TYPE'],'DBS_SERVER' => $aRow ['DBS_SERVER'],'DBS_DATABASE_NAME' => $aRow ['DBS_DATABASE_NAME'],'DBS_USERNAME' => $aRow ['DBS_USERNAME'],'DBS_PASSWORD' => $aRow ['DBS_PASSWORD'],'DBS_DESCRIPTION' => $aRow ['DBS_DESCRIPTION'],'DBS_PORT' => $aRow ['DBS_PORT']); + $oDataset->next (); + } + return $aDBList; + } catch ( Exception $e ) { throw ($e); } } /** - * newExtObjectPermission - * - * @param string $sProcessUID - * @param string $sAction - * @return array depending on action - */ - function newExtObjectPermission($sProcessUID,$sAction) + * newExtObjectPermission + * + * @param string $sProcessUID + * @param string $sAction + * @return array depending on action + */ + public function newExtObjectPermission($sProcessUID,$sAction) { - $aAllTasks = array(); - $aAllTasks [] = array('UID' => 'char', 'LABEL' => 'char'); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TaskPeer::PRO_UID); - $oCriteria->addSelectColumn(TaskPeer::TAS_UID); - $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); - $aConditions = array(); - $aConditions [] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); - $aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'TAS_TITLE' . DBAdapter::getStringDelimiter ()); - $aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); - $oDataset = TaskPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllTasks [] = array('UID' => $aRow ['TAS_UID'], 'LABEL' => $aRow ['CON_VALUE']); - $oDataset->next(); - } - $aUsersGroups = array(); - $aUsersGroups [] = array('UID' => 'char', 'LABEL' => 'char'); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); - $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); - $aConditions = array(); - $aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); - $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); - $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); - $oDataset = GroupwfPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aUsersGroups [] = array('UID' => '2|' . $aRow ['GRP_UID'], 'LABEL' => $aRow ['GRP_TITLE'] . ' (' . G::LoadTranslation('ID_GROUP') . ')'); - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aUsersGroups [] = array('UID' => '1|' . $aRow ['USR_UID'], 'LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'] . ' (' . $aRow ['USR_USERNAME'] . ')'); - $oDataset->next(); - } - $aAllObjects = array(); - $aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllDynaforms = array(); - $aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllInputs = array(); - $aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char'); - $aAllOutputs = array(); - $aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char'); - $oCriteria = $this->getDynaformsCriteria($sProcessUID); - $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : ''; - $aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'], - 'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); - $aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'], - 'LABEL' => $aRow ['DYN_TITLE']); - $oDataset->next(); - } - G::LoadClass('ArrayPeer'); - $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'], - 'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); - $aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'], - 'LABEL' => $aRow ['INP_DOC_TITLE']); - $oDataset->next(); - } - G::LoadClass('ArrayPeer'); - $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); - $aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']); - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - - switch($sAction){ - case 'tasks': - return $aAllTasks; - break; - case 'users': - return $aUsersGroups; - break; - case 'dynaform': - return $aAllDynaforms; - break; - case 'input': - return $aAllInputs; - break; - case 'output': - return $aAllOutputs; - break; - } - } - - function ExtcaseTracker($sProcessUID) { - $oCriteria = new Criteria ( ); - $oCriteria->add(CaseTrackerPeer::PRO_UID, $sProcessUID); - $oCaseTracker = new CaseTracker ( ); - if (CaseTrackerPeer::doCount($oCriteria) === 0) { - $aCaseTracker = array('PRO_UID' => $sProcessUID, 'CT_MAP_TYPE' => 'PROCESSMAP', 'CT_DERIVATION_HISTORY' => 1, 'CT_MESSAGE_HISTORY' => 1); - $oCaseTracker->create($aCaseTracker); - } else { - $aCaseTracker = $oCaseTracker->load($sProcessUID); - } - return $aCaseTracker; - /*global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'tracker/tracker_Configuration', '', $aCaseTracker, '../tracker/tracker_Save'); - G::RenderPage('publish', 'raw'); - return true;*/ - } - - //new functions - function getAllCaseTrackerObjectCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = CaseTrackerObjectPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - /** - * getCaseTrackerObjectsCriteria - * - * @param string $sProcessUID - * @return object(Criteria) $oCriteria - */ - function getExtCaseTrackerObjectsCriteria($start, $limit,$sProcessUID) { - $aObjects = array(); - $aObjects [] = array('CTO_TITLE' => 'char', 'CTO_UID' => 'char', 'CTO_TYPE_OBJ' => 'char', 'CTO_UID_OBJ' => 'char', 'CTO_CONDITION' => 'char', 'CTO_POSITION' => 'integer'); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn(CaseTrackerObjectPeer::CTO_POSITION); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - try { - switch ($aRow ['CTO_TYPE_OBJ']) { - case 'DYNAFORM' : - $oDynaform = new Dynaform ( ); - $aFields = $oDynaform->load($aRow ['CTO_UID_OBJ']); - $sTitle = $aFields ['DYN_TITLE']; - break; - case 'INPUT_DOCUMENT' : - $oInputDocument = new InputDocument ( ); - $aFields = $oInputDocument->load($aRow ['CTO_UID_OBJ']); - $sTitle = $aFields ['INP_DOC_TITLE']; - break; - case 'OUTPUT_DOCUMENT' : - $oOutputDocument = new OutputDocument ( ); - $aFields = $oOutputDocument->load($aRow ['CTO_UID_OBJ']); - $sTitle = $aFields ['OUT_DOC_TITLE']; - break; + $aAllTasks = array(); + $aAllTasks [] = array('UID' => 'char', 'LABEL' => 'char'); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(TaskPeer::PRO_UID); + $oCriteria->addSelectColumn(TaskPeer::TAS_UID); + $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); + $aConditions = array(); + $aConditions [] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); + $aConditions [] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter () . 'TAS_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllTasks [] = array('UID' => $aRow ['TAS_UID'], 'LABEL' => $aRow ['CON_VALUE']); + $oDataset->next(); } - $aObjects [] = array('CTO_TITLE' => $sTitle, 'CTO_UID' => $aRow ['CTO_UID'], 'CTO_TYPE_OBJ' => $aRow ['CTO_TYPE_OBJ'], 'CTO_UID_OBJ' => $aRow ['CTO_UID_OBJ'], 'CTO_CONDITION' => $aRow ['CTO_CONDITION'], 'CTO_POSITION' => $aRow ['CTO_POSITION']); - } + $aUsersGroups = array(); + $aUsersGroups [] = array('UID' => 'char', 'LABEL' => 'char'); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); + $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); + $aConditions = array(); + $aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); + $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter () . 'GRP_TITLE' . DBAdapter::getStringDelimiter ()); + $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter () . SYS_LANG . DBAdapter::getStringDelimiter ()); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); + $oDataset = GroupwfPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsersGroups [] = array('UID' => '2|' . $aRow ['GRP_UID'], 'LABEL' => $aRow ['GRP_TITLE'] . ' (' . G::LoadTranslation('ID_GROUP') . ')'); + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsersGroups [] = array('UID' => '1|' . $aRow ['USR_UID'], 'LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'] . ' (' . $aRow ['USR_USERNAME'] . ')'); + $oDataset->next(); + } + $aAllObjects = array(); + $aAllObjects [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllDynaforms = array(); + $aAllDynaforms [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllInputs = array(); + $aAllInputs [] = array('UID' => 'char', 'LABEL' => 'char'); + $aAllOutputs = array(); + $aAllOutputs [] = array('UID' => 'char', 'LABEL' => 'char'); + $oCriteria = $this->getDynaformsCriteria($sProcessUID); + $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aRow ['DYN_TITLE'] = (isset($aRow ['DYN_TITLE'])) ? $aRow ['DYN_TITLE'] : ''; + $aAllObjects [] = array('UID' => 'DYNAFORM|' . $aRow ['DYN_UID'], + 'LABEL' => $aRow ['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); + $aAllDynaforms [] = array('UID' => $aRow ['DYN_UID'], + 'LABEL' => $aRow ['DYN_TITLE']); + $oDataset->next(); + } + G::LoadClass('ArrayPeer'); + $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllObjects [] = array('UID' => 'INPUT_DOCUMENT|' . $aRow ['INP_DOC_UID'], + 'LABEL' => $aRow ['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); + $aAllInputs [] = array('UID' => $aRow ['INP_DOC_UID'], + 'LABEL' => $aRow ['INP_DOC_TITLE']); + $oDataset->next(); + } + G::LoadClass('ArrayPeer'); + $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAllObjects [] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); + $aAllOutputs [] = array('UID' => $aRow ['OUT_DOC_UID'], 'LABEL' => $aRow ['OUT_DOC_TITLE']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - catch (Exception $oError) { //Nothing - } - $oDataset->next(); + switch($sAction){ + case 'tasks': + return $aAllTasks; + break; + case 'users': + return $aUsersGroups; + break; + case 'dynaform': + return $aAllDynaforms; + break; + case 'input': + return $aAllInputs; + break; + case 'output': + return $aAllOutputs; + break; + } } - // return $aObjects; - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['objects'] = $aObjects; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('objects'); - $oCriteria->addAscendingOrderByColumn('CTO_POSITION'); - return $aObjects; - } - - /** - * getAvailableCaseTrackerObjectsCriteria - * - * @param string $sProcessUID Default value empty - * @return object(Criteria) $oCriteria - */ - function getAvailableExtCaseTrackerObjects($sProcessUID = '') { - $oCriteria = $this->getCaseTrackerObjectsCriteria($sProcessUID); - $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aDynaformsUIDS = array(); - $aInputsUIDS = array(); - $aOutputsUIDS = array(); - while ($aRow = $oDataset->getRow()) { - switch ($aRow ['CTO_TYPE_OBJ']) { - case 'DYNAFORM' : - $aDynaformsUIDS [] = $aRow ['CTO_UID_OBJ']; - break; - case 'INPUT_DOCUMENT' : - $aInputsUIDS [] = $aRow ['CTO_UID_OBJ']; - break; - case 'OUTPUT_DOCUMENT' : - $aOutputsUIDS [] = $aRow ['CTO_UID_OBJ']; - break; - } - $oDataset->next(); + public function ExtcaseTracker($sProcessUID) + { + $oCriteria = new Criteria ( ); + $oCriteria->add(CaseTrackerPeer::PRO_UID, $sProcessUID); + $oCaseTracker = new CaseTracker ( ); + if (CaseTrackerPeer::doCount($oCriteria) === 0) { + $aCaseTracker = array('PRO_UID' => $sProcessUID, 'CT_MAP_TYPE' => 'PROCESSMAP', 'CT_DERIVATION_HISTORY' => 1, 'CT_MESSAGE_HISTORY' => 1); + $oCaseTracker->create($aCaseTracker); + } else { + $aCaseTracker = $oCaseTracker->load($sProcessUID); + } + return $aCaseTracker; } - $aAvailableObjects = array(); - $aAvailableObjects [] = array('OBJECT_UID' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT_TITLE' => 'char'); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); - $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); - $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); - $oCriteria->add(DynaformPeer::DYN_UID, $aDynaformsUIDS, Criteria::NOT_IN); - $oDataset = DynaformPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['DYN_UID'], 'OBJECT_TYPE' => 'DYNAFORM', 'OBJECT_TITLE' => $aRow ['DYN_TITLE']); - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); - $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $aInputsUIDS, Criteria::NOT_IN); - $oDataset = InputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['INP_DOC_UID'], 'OBJECT_TYPE' => 'INPUT_DOCUMENT', 'OBJECT_TITLE' => $aRow ['INP_DOC_TITLE']); - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_UID); - $oCriteria->addAsColumn('OUT_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); - $oCriteria->add(OutputDocumentPeer::OUT_DOC_UID, $aOutputsUIDS, Criteria::NOT_IN); - - $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['OUT_DOC_UID'], 'OBJECT_TYPE' => 'OUTPUT_DOCUMENT', 'OBJECT_TITLE' => $aRow ['OUT_DOC_TITLE']); - $oDataset->next(); - } - return $aAvailableObjects; - /*global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['availableObjects'] = $aAvailableObjects; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('availableObjects'); - return $oCriteria;*/ - } //new functions - function getAllReportTableCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = ReportTablePeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } - - function getExtReportTables($start, $limit,$sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID); - $oCriteria->addSelectColumn(ReportTablePeer::PRO_UID); - // $oCriteria->addAsColumn ( 'REP_TAB_TITLE', 'C.CON_VALUE' ); - $oCriteria->addAsColumn('REP_TAB_TITLE', "CASE WHEN C.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE A.CON_ID = REPORT_TABLE.REP_TAB_UID ) ELSE C.CON_VALUE END "); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(ReportTablePeer::REP_TAB_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'REP_TAB_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); - - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - - $oDataset = ReportTablePeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aReportTable[] = array('REP_TAB_UID' => $aRow ['REP_TAB_UID'], 'REP_TAB_TITLE' => $aRow['REP_TAB_TITLE']); - $oDataset->next(); - } - return $aReportTable; - } - - - function getExtAvailableUsersList($sTaskUID = '', $iType = 2) { - try { - $oTasks = new Tasks ( ); - $aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType); - $aUIDS1 = array(); - $aUIDS2 = array(); - foreach ($aAux as $aGroup) { - $aUIDS1 [] = $aGroup ['GRP_UID']; - } - $aAux = $oTasks->getUsersOfTask($sTaskUID, $iType); - foreach ($aAux as $aUser) { - $aUIDS2 [] = $aUser ['USR_UID']; - } - $aUsers = array(); - $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); - $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(GroupwfPeer::GRP_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); - $oCriteria->add(GroupwfPeer::GRP_UID, $aUIDS1, Criteria::NOT_IN); - //$oCriteria->add(GroupwfPeer::GRP_UID, '', Criteria::NOT_EQUAL); - $oDataset = GroupwfPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $c = 0; - while ($aRow = $oDataset->getRow()) { - $c++; - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(GroupUserPeer::GRP_UID, $aRow ['GRP_UID']); - $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - $aUsers [] = array('LABEL' => $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2); + public function getAllCaseTrackerObjectCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = CaseTrackerObjectPeer::doSelectRS($c); $oDataset->next(); - } - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); - $oCriteria->add(UsersPeer::USR_UID, $aUIDS2, Criteria::NOT_IN); - $oDataset = UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 1); - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['availableUsers'] = $aUsers; - $_SESSION ['_DBArray'] = $_DBArray; - return $_SESSION ['_DBArray']['availableUsers']; - } catch (Exception $oError) { - throw ($oError); - } - } + $aRow = $oDataset->getRow(); - -function getExtTaskUsersAdHocCriteria($start, $limit,$sTaskUID = '', $iType = 1) { - try { - $aUsers = array(); - $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); - $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); - $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); - $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); - $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(TaskUserPeer::USR_UID, 'C.CON_ID'); - $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter); - $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); - $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); - $oCriteria->add(TaskUserPeer::TU_RELATION, 2); - $this->tmpCriteria = clone $oCriteria; - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') - $oCriteria->setLimit($limit); - $oDataset = TaskUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $c = 0; - while ($aRow = $oDataset->getRow()) { - $c++; - $oGroup = new Groupwf ( ); - $aFields = $oGroup->load($aRow ['USR_UID']); - if ($aFields ['GRP_STATUS'] == 'ACTIVE') { - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(GroupUserPeer::GRP_UID, $aRow ['USR_UID']); - $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); + if ( is_array($aRow) ) { + return $aRow[0]; } else { - $aRow2 ['GROUP_INACTIVE'] = '(' . G::LoadTranslation('ID_GROUP_INACTIVE') . ')'; + return 0; } - $aUsers [] = array('LABEL' => (!isset($aRow2 ['GROUP_INACTIVE']) ? $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
' : $aRow ['GRP_TITLE'] . ' ' . $aRow2 ['GROUP_INACTIVE']), 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); - $oDataset->next(); - } - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); - $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); - $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); - $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); - $oCriteria->addJoin(TaskUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); - $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); - $oCriteria->add(TaskUserPeer::TU_RELATION, 1); - $oDataset = TaskUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); - $oDataset->next(); - } - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['taskUsers'] = $aUsers; - $_SESSION ['_DBArray'] = $_DBArray; - G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('taskUsers'); - $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); - $oCriteria->addAscendingOrderByColumn('LABEL'); - return $oCriteria; - } catch (Exception $oError) { - throw ($oError); - } - } - - - /** - * editObjectPermission - * - * @param string $sOP_UID - * @param string $sProcessUID - * @return void - */ - function editExtObjectPermission($sProcessUID , $sOP_UID ) { - - $oCriteria = new Criteria ( ); - $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID); - $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRows = $oDataset->getRow(); - - $oCriteria = new Criteria ( ); - $oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']); - if (GroupwfPeer::doCount($oCriteria) == 1) - $user = '2|' . $aRows ['USR_UID']; - - $oCriteria = new Criteria ( ); - $oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']); - if (UsersPeer::doCount($oCriteria) == 1) - $user = '1|' . $aRows ['USR_UID']; - - - $aFields ['LANG'] = SYS_LANG; - $aFields ['OP_UID'] = $aRows ['OP_UID']; - $aFields ['PRO_UID'] = $aRows ['PRO_UID']; - $aFields ['OP_CASE_STATUS'] = $aRows ['OP_CASE_STATUS']; - $aFields ['TAS_UID'] = $aRows ['TAS_UID']; - $aFields ['OP_GROUP_USER'] = $user; - $aFields ['OP_TASK_SOURCE'] = $aRows ['OP_TASK_SOURCE']; - $aFields ['OP_PARTICIPATE'] = $aRows ['OP_PARTICIPATE']; - $aFields ['OP_OBJ_TYPE'] = $aRows ['OP_OBJ_TYPE']; - $aFields ['OP_ACTION'] = $aRows ['OP_ACTION']; - - - - $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; - $aFields['TASK_TARGET_NAME'] = Content::load ( 'TAS_TITLE', '', $aRows ['TAS_UID'] , $lang ); - $aFields['TASK_SOURCE_NAME'] = Content::load ( 'TAS_TITLE', '', $aRows ['OP_TASK_SOURCE'] , $lang ); - $oUser = UsersPeer::retrieveByPK( $aRows ['USR_UID'] ); - if (!is_null($oUser)) - $aFields ['USR_FULLNAME'] = $oUser->getUsrFirstname() . ' ' . $oUser->getUsrLastname() ; - else - throw(new Exception( "The row '" . $aRows ['USR_UID'] . "' in table USER doesn't exist!" )); - - - switch ($aRows ['OP_OBJ_TYPE']) { - /* case 'ANY': - $aFields['OP_OBJ_TYPE'] = ''; - break; */ - case 'DYNAFORM' : - $aFields ['DYNAFORM'] = $aRows ['OP_OBJ_UID']; - $aFields ['DYNAFORM_NAME'] = Content::load ( 'DYN_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); - break; - case 'INPUT' : - $aFields ['INPUT'] = $aRows ['OP_OBJ_UID']; - $aFields ['INPUT_NAME'] = Content::load ( 'INP_DOC_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); - break; - case 'OUTPUT' : - $aFields ['OUTPUT'] = $aRows ['OP_OBJ_UID']; - $aFields ['OUTPUT_NAME'] = Content::load ( 'OUT_DOC_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); - break; } - return $aFields; - } + /** + * getCaseTrackerObjectsCriteria + * + * @param string $sProcessUID + * @return object(Criteria) $oCriteria + */ + public function getExtCaseTrackerObjectsCriteria($start, $limit,$sProcessUID) + { + $aObjects = array(); + $aObjects [] = array('CTO_TITLE' => 'char', 'CTO_UID' => 'char', 'CTO_TYPE_OBJ' => 'char', 'CTO_UID_OBJ' => 'char', 'CTO_CONDITION' => 'char', 'CTO_POSITION' => 'integer'); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn(CaseTrackerObjectPeer::CTO_POSITION); + $this->tmpCriteria = clone $oCriteria; - - function getExtusersadhoc($start, $limit,$sProcessUID = '', $sTaskUID = '') { - try { - $oProcess = new Process ( ); - $aFields = $oProcess->load($sProcessUID); - $oTask = new Task ( ); - $aFields = $oTask->load($sTaskUID); - - $_SESSION ['iType'] = 2; - - $aFields ['TASK'] = $sTaskUID; - $aFields ['TYPE'] = $_SESSION ['iType']; - $aFields ['OF_TO_ASSIGN'] = G::LoadTranslation('ID_DE_ASSIGN'); - $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DEASIGN_USER_GROUP_MESSAGE'); - $aFields ['UIDS'] = "'0'"; - - $oTasks = new Tasks ( ); - $oGroups = new Groups ( ); - $aAux1 = $oTasks->getGroupsOfTask($sTaskUID, $_SESSION ['iType']); - foreach ($aAux1 as $aGroup) { - $aAux2 = $oGroups->getUsersOfGroup($aGroup ['GRP_UID']); - foreach ($aAux2 as $aUser) { - $aFields ['UIDS'] .= ",'" . $aUser ['USR_UID'] . "'"; + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') + $oCriteria->setLimit($limit); + $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + try { + switch ($aRow ['CTO_TYPE_OBJ']) { + case 'DYNAFORM' : + $oDynaform = new Dynaform ( ); + $aFields = $oDynaform->load($aRow ['CTO_UID_OBJ']); + $sTitle = $aFields ['DYN_TITLE']; + break; + case 'INPUT_DOCUMENT' : + $oInputDocument = new InputDocument ( ); + $aFields = $oInputDocument->load($aRow ['CTO_UID_OBJ']); + $sTitle = $aFields ['INP_DOC_TITLE']; + break; + case 'OUTPUT_DOCUMENT' : + $oOutputDocument = new OutputDocument ( ); + $aFields = $oOutputDocument->load($aRow ['CTO_UID_OBJ']); + $sTitle = $aFields ['OUT_DOC_TITLE']; + break; + } + $aObjects [] = array('CTO_TITLE' => $sTitle, 'CTO_UID' => $aRow ['CTO_UID'], 'CTO_TYPE_OBJ' => $aRow ['CTO_TYPE_OBJ'], 'CTO_UID_OBJ' => $aRow ['CTO_UID_OBJ'], 'CTO_CONDITION' => $aRow ['CTO_CONDITION'], 'CTO_POSITION' => $aRow ['CTO_POSITION']); + } catch (Exception $oError) { //Nothing } - } - global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); - $oTask = new Task ( ); - $aTask = $oTask->load($sTaskUID); - //$assignedUsers = getExtTaskUsersCriteria($sTaskUID, $_SESSION ['iType']); - $this->getExtTaskUsersAdHocCriteria ($start, $limit, $sTaskUID, $_SESSION ['iType'] ); - return $_SESSION ['_DBArray']['taskUsers']; - - } catch ( Exception $oError ) { - throw ($oError); + $oDataset->next(); + } + // return $aObjects; + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['objects'] = $aObjects; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('objects'); + $oCriteria->addAscendingOrderByColumn('CTO_POSITION'); + return $aObjects; } - } -function saveExtddEvents($oData) -{ - $oTask = new Task(); - $oEvent = new Event(); - $sEvn_uid = ''; - $aData = array(); - $aData['PRO_UID'] = $oData->uid; - $aData['EVN_TYPE'] = $oData->evn_type; - $aData['EVN_POSX'] = $oData->position->x; - $aData['EVN_POSY'] = $oData->position->y; + /** + * getAvailableCaseTrackerObjectsCriteria + * + * @param string $sProcessUID Default value empty + * @return object(Criteria) $oCriteria + */ + public function getAvailableExtCaseTrackerObjects($sProcessUID = '') + { + $oCriteria = $this->getCaseTrackerObjectsCriteria($sProcessUID); + $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aDynaformsUIDS = array(); + $aInputsUIDS = array(); + $aOutputsUIDS = array(); + while ($aRow = $oDataset->getRow()) { + switch ($aRow ['CTO_TYPE_OBJ']) { + case 'DYNAFORM' : + $aDynaformsUIDS [] = $aRow ['CTO_UID_OBJ']; + break; + case 'INPUT_DOCUMENT' : + $aInputsUIDS [] = $aRow ['CTO_UID_OBJ']; + break; + case 'OUTPUT_DOCUMENT' : + $aOutputsUIDS [] = $aRow ['CTO_UID_OBJ']; + break; + } + $oDataset->next(); + } + $aAvailableObjects = array(); + $aAvailableObjects [] = array('OBJECT_UID' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT_TITLE' => 'char'); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(DynaformPeer::DYN_UID); + $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(DynaformPeer::DYN_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); + $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); + $oCriteria->add(DynaformPeer::DYN_UID, $aDynaformsUIDS, Criteria::NOT_IN); + $oDataset = DynaformPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['DYN_UID'], 'OBJECT_TYPE' => 'DYNAFORM', 'OBJECT_TITLE' => $aRow ['DYN_TITLE']); + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); + $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $aInputsUIDS, Criteria::NOT_IN); + $oDataset = InputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['INP_DOC_UID'], 'OBJECT_TYPE' => 'INPUT_DOCUMENT', 'OBJECT_TITLE' => $aRow ['INP_DOC_TITLE']); + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(OutputDocumentPeer::OUT_DOC_UID); + $oCriteria->addAsColumn('OUT_DOC_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(OutputDocumentPeer::OUT_DOC_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'OUT_DOC_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); + $oCriteria->add(OutputDocumentPeer::OUT_DOC_UID, $aOutputsUIDS, Criteria::NOT_IN); - $aData['EVN_STATUS'] = 'ACTIVE'; - $aData['EVN_WHEN'] = '1'; - $aData['EVN_ACTION'] = ''; - - if(preg_match("/Inter/", $aData['EVN_TYPE'])){ - $aData['EVN_RELATED_TO'] = 'MULTIPLE'; - } - if(preg_match("/Start/", $aData['EVN_TYPE'])){ - $aData['EVN_RELATED_TO'] = 'MULTIPLE'; - } - $sEvn_uid = $oData->evn_uid; - $oEventData = EventPeer::retrieveByPK($sEvn_uid); - if (is_null($oEventData)) { - $sEvn_uid = $oEvent->create($aData); - }else{ - $aData['EVN_UID'] = $sEvn_uid; - $oEvent->update($aData); - } - $oEncode->uid = $sEvn_uid; - $oJSON = new Services_JSON ( ); - return $oJSON->encode($oEncode); - } - - -function saveExtEvents($oData) -{ - $oTask = new Task(); - $oEvent = new Event(); - $sEvn_uid = ''; - $sEvn_type = $oData->evn_type; - $output = 0; - $aDataEvent = array(); - $aDataTask = array(); - $aDataEvent['EVN_UID'] = $oData->evn_uid; - $aDataEvent['EVN_RELATED_TO'] = 'MULTIPLE'; - $aDataEvent['EVN_TYPE'] = $oData->evn_type; - - if(preg_match("/Start/", $sEvn_type)){ - if(isset($oData->tas_uid) && $oData->tas_uid != '') { - $aDataTask['TAS_UID'] = $oData->tas_uid; - $aDataTask['TAS_START'] = $oData->tas_start; - $aDataTask['EVN_TYPE'] = $oData->evn_type; - $aDataTask['TAS_EVN_UID'] = $oData->evn_uid; - $oTask->update($aDataTask); - - $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_uid; - $output = $oEvent->update($aDataEvent); + $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aAvailableObjects [] = array('OBJECT_UID' => $aRow ['OUT_DOC_UID'], 'OBJECT_TYPE' => 'OUTPUT_DOCUMENT', 'OBJECT_TITLE' => $aRow ['OUT_DOC_TITLE']); + $oDataset->next(); + } + return $aAvailableObjects; } - } - else if(preg_match("/Inter/", $sEvn_type)){ - $aDataEvent['EVN_TAS_UID_FROM'] = $oData->tas_from; - $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_to; - $output = $oEvent->update($aDataEvent); - } - return $output; -} + //new functions + public function getAllReportTableCount() + { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = ReportTablePeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); - //new functions - function getAllTriggersCount(){ - $c = $this->tmpCriteria; - $c->clearSelectColumns(); - $c->addSelectColumn('COUNT(*)'); - $oDataset = TriggersPeer::doSelectRS($c); - $oDataset->next(); - $aRow = $oDataset->getRow(); + if ( is_array($aRow) ) { + return $aRow[0]; + } else { + return 0; + } + } - if( is_array($aRow) ) - return $aRow[0]; - else - return 0; - } + public function getExtReportTables($start, $limit,$sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID); + $oCriteria->addSelectColumn(ReportTablePeer::PRO_UID); + // $oCriteria->addAsColumn ( 'REP_TAB_TITLE', 'C.CON_VALUE' ); + $oCriteria->addAsColumn('REP_TAB_TITLE', "CASE WHEN C.CON_VALUE IS NULL THEN (SELECT DISTINCT MAX(A.CON_VALUE) FROM CONTENT A WHERE A.CON_ID = REPORT_TABLE.REP_TAB_UID ) ELSE C.CON_VALUE END "); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(ReportTablePeer::REP_TAB_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'REP_TAB_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); - /* - * Return the triggers list criteria object - * @param string $sProcessUID - * @return object - */ + $this->tmpCriteria = clone $oCriteria; - function getExtTriggersList($start, $limit, $sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter (); - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(TriggersPeer::TRI_UID); - $oCriteria->addSelectColumn(TriggersPeer::PRO_UID); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $this->tmpCriteria = clone $oCriteria; - - $oCriteria->addAsColumn('TRI_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('TRI_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions [] = array(TriggersPeer::TRI_UID, 'C1.CON_ID'); - $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions [] = array(TriggersPeer::TRI_UID, 'C2.CON_ID'); - $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); - $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn('TRI_TITLE'); - - if($start != '') - $oCriteria->setOffset($start); - if($limit != '') + if ($start != '') + $oCriteria->setOffset($start); + if ($limit != '') $oCriteria->setLimit($limit); - $oDataset = TriggersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $triggersArray = ""; - $triggersArray [] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char'); - while ($aRow = $oDataset->getRow()) { - - if (($aRow ['TRI_TITLE'] == NULL) || ($aRow ['TRI_TITLE'] == "")) { // There is no transaltion for this Trigger name, try to get/regenerate the label - $triggerO = new Triggers ( ); - $triggerObj = $triggerO->load($aRow ['TRI_UID']); - $aRow ['TRI_TITLE'] = $triggerObj ['TRI_TITLE']; - $aRow ['TRI_DESCRIPTION'] = $triggerObj ['TRI_DESCRIPTION']; - } - $triggersArray [] = $aRow; - $oDataset->next(); + $oDataset = ReportTablePeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aReportTable[] = array('REP_TAB_UID' => $aRow ['REP_TAB_UID'], 'REP_TAB_TITLE' => $aRow['REP_TAB_TITLE']); + $oDataset->next(); + } + return $aReportTable; } - return $triggersArray; - } - function getAllInputDocsByTask($sPRO_UID){ - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(StepPeer::STEP_UID_OBJ); - $oCriteria->addSelectColumn('COUNT(*) AS CNT'); - $oCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); - $oCriteria->add(StepPeer::STEP_TYPE_OBJ,'INPUT_DOCUMENT'); - $oCriteria->add(StepPeer::PRO_UID, $sPRO_UID); - $oDataset = StepPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $aIDocs = array(); - while ($oDataset->next()){ - $row = $oDataset->getRow(); - $aIDocs[$row['STEP_UID_OBJ']] = $row['CNT']; + public function getExtAvailableUsersList($sTaskUID = '', $iType = 2) { + try { + $oTasks = new Tasks ( ); + $aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType); + $aUIDS1 = array(); + $aUIDS2 = array(); + foreach ($aAux as $aGroup) { + $aUIDS1 [] = $aGroup ['GRP_UID']; + } + $aAux = $oTasks->getUsersOfTask($sTaskUID, $iType); + foreach ($aAux as $aUser) { + $aUIDS2 [] = $aUser ['USR_UID']; + } + $aUsers = array(); + $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); + $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(GroupwfPeer::GRP_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); + $oCriteria->add(GroupwfPeer::GRP_UID, $aUIDS1, Criteria::NOT_IN); + //$oCriteria->add(GroupwfPeer::GRP_UID, '', Criteria::NOT_EQUAL); + $oDataset = GroupwfPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $c = 0; + while ($aRow = $oDataset->getRow()) { + $c++; + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); + $oCriteria->add(GroupUserPeer::GRP_UID, $aRow ['GRP_UID']); + $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + $aUsers [] = array('LABEL' => $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
', 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['GRP_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 2); + $oDataset->next(); + } + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); + $oCriteria->add(UsersPeer::USR_UID, $aUIDS2, Criteria::NOT_IN); + $oDataset = UsersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $sTaskUID, 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $iType, 'TU_RELATION' => 1); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['availableUsers'] = $aUsers; + $_SESSION ['_DBArray'] = $_DBArray; + return $_SESSION ['_DBArray']['availableUsers']; + } catch (Exception $oError) { + throw ($oError); + } } - return $aIDocs; - } - function getMaximunTaskX($processUid) { - $criteria = new Criteria('workflow'); - $criteria->addSelectColumn('MAX(TAS_POSX) AS MAX_X'); - $criteria->add(TaskPeer::PRO_UID, $processUid); - $dataset = TaskPeer::doSelectRS($criteria); - $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $dataset->next(); + public function getExtTaskUsersAdHocCriteria($start, $limit,$sTaskUID = '', $iType = 1) + { + try { + $aUsers = array(); + $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); + $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); + $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); + $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); + $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(TaskUserPeer::USR_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); + $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); + $oCriteria->add(TaskUserPeer::TU_RELATION, 2); + $this->tmpCriteria = clone $oCriteria; - $row = $dataset->getRow(); + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + $oDataset = TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $c = 0; + while ($aRow = $oDataset->getRow()) { + $c++; + $oGroup = new Groupwf ( ); + $aFields = $oGroup->load($aRow ['USR_UID']); + if ($aFields ['GRP_STATUS'] == 'ACTIVE') { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); + $oCriteria->add(GroupUserPeer::GRP_UID, $aRow ['USR_UID']); + $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + } else { + $aRow2 ['GROUP_INACTIVE'] = '(' . G::LoadTranslation('ID_GROUP_INACTIVE') . ')'; + } + $aUsers [] = array('LABEL' => (!isset($aRow2 ['GROUP_INACTIVE']) ? $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
' : $aRow ['GRP_TITLE'] . ' ' . $aRow2 ['GROUP_INACTIVE']), 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); + $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); + $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); + $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addJoin(TaskUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); + $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); + $oCriteria->add(TaskUserPeer::TU_RELATION, 1); + $oDataset = TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['taskUsers'] = $aUsers; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('taskUsers'); + $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addAscendingOrderByColumn('LABEL'); + return $oCriteria; + } catch (Exception $oError) { + throw ($oError); + } + } - return (int)$row['MAX_X']; - } + /** + * editObjectPermission + * + * @param string $sOP_UID + * @param string $sProcessUID + * @return void + */ + public function editExtObjectPermission($sProcessUID , $sOP_UID ) + { + $oCriteria = new Criteria ( ); + $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID); + $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRows = $oDataset->getRow(); + + $oCriteria = new Criteria ( ); + $oCriteria->add(GroupwfPeer::GRP_UID, $aRows ['USR_UID']); + if (GroupwfPeer::doCount($oCriteria) == 1) { + $user = '2|' . $aRows ['USR_UID']; + } + + $oCriteria = new Criteria ( ); + $oCriteria->add(UsersPeer::USR_UID, $aRows ['USR_UID']); + if (UsersPeer::doCount($oCriteria) == 1) { + $user = '1|' . $aRows ['USR_UID']; + } + + $aFields ['LANG'] = SYS_LANG; + $aFields ['OP_UID'] = $aRows ['OP_UID']; + $aFields ['PRO_UID'] = $aRows ['PRO_UID']; + $aFields ['OP_CASE_STATUS'] = $aRows ['OP_CASE_STATUS']; + $aFields ['TAS_UID'] = $aRows ['TAS_UID']; + $aFields ['OP_GROUP_USER'] = $user; + $aFields ['OP_TASK_SOURCE'] = $aRows ['OP_TASK_SOURCE']; + $aFields ['OP_PARTICIPATE'] = $aRows ['OP_PARTICIPATE']; + $aFields ['OP_OBJ_TYPE'] = $aRows ['OP_OBJ_TYPE']; + $aFields ['OP_ACTION'] = $aRows ['OP_ACTION']; + + $lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en'; + $aFields['TASK_TARGET_NAME'] = Content::load ( 'TAS_TITLE', '', $aRows ['TAS_UID'] , $lang ); + $aFields['TASK_SOURCE_NAME'] = Content::load ( 'TAS_TITLE', '', $aRows ['OP_TASK_SOURCE'] , $lang ); + $oUser = UsersPeer::retrieveByPK( $aRows ['USR_UID'] ); + if (!is_null($oUser)) + $aFields ['USR_FULLNAME'] = $oUser->getUsrFirstname() . ' ' . $oUser->getUsrLastname() ; + else + throw(new Exception( "The row '" . $aRows ['USR_UID'] . "' in table USER doesn't exist!" )); + + + switch ($aRows ['OP_OBJ_TYPE']) { + /* case 'ANY': + $aFields['OP_OBJ_TYPE'] = ''; + break; */ + case 'DYNAFORM' : + $aFields ['DYNAFORM'] = $aRows ['OP_OBJ_UID']; + $aFields ['DYNAFORM_NAME'] = Content::load ( 'DYN_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); + break; + case 'INPUT' : + $aFields ['INPUT'] = $aRows ['OP_OBJ_UID']; + $aFields ['INPUT_NAME'] = Content::load ( 'INP_DOC_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); + break; + case 'OUTPUT' : + $aFields ['OUTPUT'] = $aRows ['OP_OBJ_UID']; + $aFields ['OUTPUT_NAME'] = Content::load ( 'OUT_DOC_TITLE', '', $aRows ['OP_OBJ_UID'] , $lang ); + break; + } + return $aFields; + } + + public function getExtusersadhoc($start, $limit,$sProcessUID = '', $sTaskUID = '') { + try { + $oProcess = new Process ( ); + $aFields = $oProcess->load($sProcessUID); + $oTask = new Task ( ); + $aFields = $oTask->load($sTaskUID); + + $_SESSION ['iType'] = 2; + + $aFields ['TASK'] = $sTaskUID; + $aFields ['TYPE'] = $_SESSION ['iType']; + $aFields ['OF_TO_ASSIGN'] = G::LoadTranslation('ID_DE_ASSIGN'); + $aFields ['CONFIRM'] = G::LoadTranslation('ID_MSG_CONFIRM_DEASIGN_USER_GROUP_MESSAGE'); + $aFields ['UIDS'] = "'0'"; + + $oTasks = new Tasks ( ); + $oGroups = new Groups ( ); + $aAux1 = $oTasks->getGroupsOfTask($sTaskUID, $_SESSION ['iType']); + foreach ($aAux1 as $aGroup) { + $aAux2 = $oGroups->getUsersOfGroup($aGroup ['GRP_UID']); + foreach ($aAux2 as $aUser) { + $aFields ['UIDS'] .= ",'" . $aUser ['USR_UID'] . "'"; + } + } + global $G_PUBLISH; + $G_PUBLISH = new Publisher ( ); + $oTask = new Task ( ); + $aTask = $oTask->load($sTaskUID); + //$assignedUsers = getExtTaskUsersCriteria($sTaskUID, $_SESSION ['iType']); + $this->getExtTaskUsersAdHocCriteria ($start, $limit, $sTaskUID, $_SESSION ['iType'] ); + return $_SESSION ['_DBArray']['taskUsers']; + + } catch ( Exception $oError ) { + throw ($oError); + } + } + + public function saveExtddEvents($oData) + { + $oTask = new Task(); + $oEvent = new Event(); + $sEvn_uid = ''; + $aData = array(); + $aData['PRO_UID'] = $oData->uid; + $aData['EVN_TYPE'] = $oData->evn_type; + $aData['EVN_POSX'] = $oData->position->x; + $aData['EVN_POSY'] = $oData->position->y; + + $aData['EVN_STATUS'] = 'ACTIVE'; + $aData['EVN_WHEN'] = '1'; + $aData['EVN_ACTION'] = ''; + + if (preg_match("/Inter/", $aData['EVN_TYPE'])) { + $aData['EVN_RELATED_TO'] = 'MULTIPLE'; + } + if (preg_match("/Start/", $aData['EVN_TYPE'])) { + $aData['EVN_RELATED_TO'] = 'MULTIPLE'; + } + $sEvn_uid = $oData->evn_uid; + $oEventData = EventPeer::retrieveByPK($sEvn_uid); + if (is_null($oEventData)) { + $sEvn_uid = $oEvent->create($aData); + } else { + $aData['EVN_UID'] = $sEvn_uid; + $oEvent->update($aData); + } + $oEncode->uid = $sEvn_uid; + $oJSON = new Services_JSON ( ); + return $oJSON->encode($oEncode); + } + + public function saveExtEvents($oData) + { + $oTask = new Task(); + $oEvent = new Event(); + $sEvn_uid = ''; + $sEvn_type = $oData->evn_type; + $output = 0; + $aDataEvent = array(); + $aDataTask = array(); + $aDataEvent['EVN_UID'] = $oData->evn_uid; + $aDataEvent['EVN_RELATED_TO'] = 'MULTIPLE'; + $aDataEvent['EVN_TYPE'] = $oData->evn_type; + + if (preg_match("/Start/", $sEvn_type)) { + if (isset($oData->tas_uid) && $oData->tas_uid != '') { + $aDataTask['TAS_UID'] = $oData->tas_uid; + $aDataTask['TAS_START'] = $oData->tas_start; + $aDataTask['EVN_TYPE'] = $oData->evn_type; + $aDataTask['TAS_EVN_UID'] = $oData->evn_uid; + $oTask->update($aDataTask); + + $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_uid; + $output = $oEvent->update($aDataEvent); + } + } + else if (preg_match("/Inter/", $sEvn_type)) { + $aDataEvent['EVN_TAS_UID_FROM'] = $oData->tas_from; + $aDataEvent['EVN_TAS_UID_TO'] = $oData->tas_to; + $output = $oEvent->update($aDataEvent); + } + return $output; + } + + + //new functions + public function getAllTriggersCount() { + $c = $this->tmpCriteria; + $c->clearSelectColumns(); + $c->addSelectColumn('COUNT(*)'); + $oDataset = TriggersPeer::doSelectRS($c); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + if ( is_array($aRow) ) + return $aRow[0]; + else + return 0; + } + + /* + * Return the triggers list criteria object + * @param string $sProcessUID + * @return object + */ + public function getExtTriggersList($start, $limit, $sProcessUID = '') + { + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(TriggersPeer::TRI_UID); + $oCriteria->addSelectColumn(TriggersPeer::PRO_UID); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $this->tmpCriteria = clone $oCriteria; + + $oCriteria->addAsColumn('TRI_TITLE', 'C1.CON_VALUE'); + $oCriteria->addAsColumn('TRI_DESCRIPTION', 'C2.CON_VALUE'); + $oCriteria->addAlias('C1', 'CONTENT'); + $oCriteria->addAlias('C2', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(TriggersPeer::TRI_UID, 'C1.CON_ID'); + $aConditions [] = array('C1.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $aConditions = array(); + $aConditions [] = array(TriggersPeer::TRI_UID, 'C2.CON_ID'); + $aConditions [] = array('C2.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter); + $aConditions [] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn('TRI_TITLE'); + + if ($start != '') { + $oCriteria->setOffset($start); + } + if ($limit != '') { + $oCriteria->setLimit($limit); + } + + $oDataset = TriggersPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $triggersArray = ""; + $triggersArray [] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char'); + while ($aRow = $oDataset->getRow()) { + if (($aRow ['TRI_TITLE'] == NULL) || ($aRow ['TRI_TITLE'] == "")) { // There is no transaltion for this Trigger name, try to get/regenerate the label + $triggerO = new Triggers ( ); + $triggerObj = $triggerO->load($aRow ['TRI_UID']); + $aRow ['TRI_TITLE'] = $triggerObj ['TRI_TITLE']; + $aRow ['TRI_DESCRIPTION'] = $triggerObj ['TRI_DESCRIPTION']; + } + $triggersArray [] = $aRow; + $oDataset->next(); + } + return $triggersArray; + } + + public function getAllInputDocsByTask($sPRO_UID) + { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(StepPeer::STEP_UID_OBJ); + $oCriteria->addSelectColumn('COUNT(*) AS CNT'); + $oCriteria->addGroupByColumn(StepPeer::STEP_UID_OBJ); + $oCriteria->add(StepPeer::STEP_TYPE_OBJ,'INPUT_DOCUMENT'); + $oCriteria->add(StepPeer::PRO_UID, $sPRO_UID); + $oDataset = StepPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $aIDocs = array(); + while ($oDataset->next()){ + $row = $oDataset->getRow(); + $aIDocs[$row['STEP_UID_OBJ']] = $row['CNT']; + } + return $aIDocs; + } + + public function getMaximunTaskX ($processUid) + { + $criteria = new Criteria('workflow'); + $criteria->addSelectColumn('MAX(TAS_POSX) AS MAX_X'); + $criteria->add(TaskPeer::PRO_UID, $processUid); + + $dataset = TaskPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $dataset->next(); + + $row = $dataset->getRow(); + + return (int)$row['MAX_X']; + } } +