getCategoriesList(); $defaultOption[] = Array ('CATEGORY_UID' => '','CATEGORY_NAME' => G::LoadTranslation( 'ID_ALL' )); return array_merge( $defaultOption, $data ); } /** * Get Process categories list with defailt value (empty option) * * @return array */ public function getCategoriesList () { require_once "classes/model/ProcessCategory.php"; $processCategory = new ProcessCategory(); $defaultOption = Array (); $defaultOption[] = Array ('CATEGORY_UID' => '','CATEGORY_NAME' => G::LoadTranslation( 'ID_PROCESS_NO_CATEGORY' )); return array_merge( $defaultOption, $processCategory->getAll( 'array' ) ); } /** * Save new process * * @param object $httpData */ public function saveProcess ($httpData) { $projectType = empty($_GET['type']) ? 'classicProject' : $_GET['type']; try { $data = (array) $httpData; $data['PRO_CREATE_USER'] = $_SESSION['USER_LOGGED']; if ($projectType == "classicProject") { $project = new ProcessMaker\Project\Workflow($data); } else { $project = new ProcessMaker\Project\Adapter\WorkflowBpmn($data); } $sProUid = $project->getUid(); // require_once 'classes/model/Task.php'; // G::LoadClass( 'processMap' ); // $oProcessMap = new ProcessMap(); // // $httpData->PRO_TITLE = trim( $httpData->PRO_TITLE ); // // try { // if (! isset( $httpData->PRO_UID )) { // if (Process::existsByProTitle( $httpData->PRO_TITLE )) { // $result = array ('success' => false,'msg' => G::LoadTranslation( 'ID_SAVE_PROCESS_ERROR' ),'errors' => array ('PRO_TITLE' => G::LoadTranslation( 'ID_PROCESSTITLE_ALREADY_EXISTS', SYS_LANG, Array ('PRO_TITLE' => $httpData->PRO_TITLE // ) ) // ) // ); // print G::json_encode( $result ); // exit( 0 ); // } // // $processData['USR_UID'] = $_SESSION['USER_LOGGED']; // $processData['PRO_TITLE'] = $httpData->PRO_TITLE; // $processData['PRO_DESCRIPTION'] = $httpData->PRO_DESCRIPTION; // $processData['PRO_CATEGORY'] = $httpData->PRO_CATEGORY; // // $sProUid = $oProcessMap->createProcess( $processData ); // // //call pluginsx // $oData['PRO_UID'] = $sProUid; // $oData['PRO_TEMPLATE'] = isset( $httpData->PRO_TEMPLATE ) && $httpData->PRO_TEMPLATE != '' ? $httpData->PRO_TEMPLATE : ''; // $oData['PROCESSMAP'] = $oProcessMap; // // $oPluginRegistry = & PMPluginRegistry::getSingleton(); // $oPluginRegistry->executeTriggers( PM_NEW_PROCESS_SAVE, $oData ); // // } else { // //$oProcessMap->updateProcess($_POST['form']); // $sProUid = $httpData->PRO_UID; // } // // //Save Calendar ID for this process // if (isset( $httpData->PRO_CALENDAR )) { // G::LoadClass( "calendar" ); // $calendarObj = new Calendar(); // $calendarObj->assignCalendarTo( $sProUid, $httpData->PRO_CALENDAR, 'PROCESS' ); // } // $this->success = true; $this->PRO_UID = $sProUid; $this->msg = G::LoadTranslation( 'ID_CREATE_PROCESS_SUCCESS' ); } catch (Exception $e) { $this->success = false; $this->msg = $e->getMessage(); $this->trace = $e->getTraceAsString(); } } /** * Change process status */ public function changeStatus () { $ids = explode( ',', $_REQUEST['UIDS'] ); G::LoadClass( 'processes' ); $oProcess = new Processes(); if (count( $ids ) > 0) { foreach ($ids as $id) { $oProcess->changeStatus( $id ); } } } /** * Change process debug mode */ public function changeDebugMode () { $ids = explode( ',', $_REQUEST['UIDS'] ); G::LoadClass( 'processes' ); $oProcess = new Processes(); if (count( $ids ) > 0) { foreach ($ids as $id) { $oProcess->changeDebugMode( $id ); } } } /** * Get users list * * @param $params httpdata object */ public function getUsers ($params) { require_once 'classes/model/Users.php'; $search = isset( $params->search ) ? $params->search : null; return Users::getAll( $params->start, $params->limit, $search ); } /** * Get groups list * * @param $params httpdata object */ public function getGroups ($params) { require_once 'classes/model/Groupwf.php'; $search = isset( $params->search ) ? $params->search : null; return Groupwf::getAll( $params->start, $params->limit, $search ); } /** * Assign actors to task * * @param unknown_type $param */ public function assignActorsTask ($param) { require_once 'classes/model/TaskUser.php'; require_once 'classes/model/Task.php'; $oTaskUser = new TaskUser(); $UIDS = explode( ',', $param->UIDS ); $TU_TYPE = $param->TU_TYPE; $TAS_UID = $param->TAS_UID; foreach ($UIDS as $UID) { if ($param->TU_RELATION == '1') { $res[] = $oTaskUser->create( array ('TAS_UID' => $TAS_UID,'USR_UID' => $UID,'TU_TYPE' => $TU_TYPE,'TU_RELATION' => 1) ); } else { $res[] = $oTaskUser->create( array ('TAS_UID' => $TAS_UID,'USR_UID' => $UID,'TU_TYPE' => $TU_TYPE,'TU_RELATION' => 2) ); } } $task = TaskPeer::retrieveByPk( $TAS_UID ); $this->success = true; if (! in_array( '-1', $res )) { if (count( $UIDS ) == 1) { $this->msg = __( 'ID_ACTOR_ASSIGNED_SUCESSFULLY', SYS_LANG, Array ('tas_title' => $task->getTasTitle()) ); } else { $this->msg = __( 'ID_ACTORS_ASSIGNED_SUCESSFULLY', SYS_LANG, Array (count( $UIDS ),$task->getTasTitle()) ); } } else { if (count( $UIDS ) == 1) { $this->msg = __( 'ID_ACTOR_ALREADY_ASSIGNED', SYS_LANG, Array ($task->getTasTitle()) ); } else { $this->msg = __( 'ID_SOME_ACTORS_ALREADY_ASSIGNED', SYS_LANG, Array ($task->getTasTitle()) ); } } } /** * Remove Actors from Task * * @param $param */ public function removeActorsTask ($param) { require_once 'classes/model/TaskUser.php'; $oTaskUser = new TaskUser(); $USR_UIDS = explode( ',', $param->USR_UID ); $TU_RELATIONS = explode( ',', $param->TU_RELATION ); $TU_TYPE = $param->TU_TYPE; foreach ($USR_UIDS as $i => $USR_UID) { if ($TU_RELATIONS[$i] == 1) { $oTaskUser->remove( $param->TAS_UID, $USR_UID, $TU_TYPE, 1 ); } else { $oTaskUser->remove( $param->TAS_UID, $USR_UID, $TU_TYPE, 2 ); } } $this->success = true; $this->msg = ''; } /** * Get actors asssigned to task * * @param object $httpData{tas_uid, tu_type}, */ public function getActorsTask ($httpData) { require_once 'classes/model/TaskUser.php'; $usersTaskList = Array (); $task = new TaskUser(); $usersTask = $task->getUsersTask( $httpData->tas_uid, $httpData->tu_type ); foreach ($usersTask->data as $userTask) { $usersTaskListItem['TAS_UID'] = $userTask['TAS_UID']; if ($userTask['TU_RELATION'] == 1) { $usersTaskListItem['USR_USERNAME'] = $userTask['USR_USERNAME']; $usersTaskListItem['USR_FIRSTNAME'] = $userTask['USR_FIRSTNAME']; $usersTaskListItem['USR_LASTNAME'] = $userTask['USR_LASTNAME']; } else { $usersTaskListItem['NAME'] = $userTask['GRP_TITLE']; } $usersTaskListItem['TU_RELATION'] = $userTask['TU_RELATION']; $usersTaskListItem['USR_UID'] = $userTask['USR_UID']; $usersTaskList[] = $usersTaskListItem; } $this->data = $usersTaskList; $this->totalCount = $usersTask->totalCount; } /** * Get Process details * * @param object $httpData{PRO_UID} * @return array */ public function getProcessDetail ($httpData) { require_once 'classes/model/Process.php'; G::loadClass( 'tasks' ); $tasks = new Tasks(); $PRO_UID = $httpData->PRO_UID; $process = ProcessPeer::retrieveByPk( $PRO_UID ); $tasksList = $tasks->getAllTasks( $PRO_UID ); $rootNode->id = $process->getProUid(); $rootNode->type = 'process'; $rootNode->typeLabel = G::LoadTranslation( 'ID_PROCESS' ); $rootNode->text = $process->getProTitle(); $rootNode->leaf = count( $tasksList ) > 0 ? false : true; $rootNode->iconCls = 'ss_sprite ss_application'; $rootNode->expanded = true; foreach ($tasksList as $task) { $node = new stdClass(); $node->id = $task['TAS_UID']; $node->type = 'task'; $node->typeLabel = G::LoadTranslation( 'ID_TASK' ); $node->text = $task['TAS_TITLE']; $node->iconCls = 'ss_sprite ss_layout'; $node->leaf = true; $rootNode->children[] = $node; } $treeDetail[] = $rootNode; return $treeDetail; } /** * Get process and task properties * * @param object $httpData{type, UID} */ public function getProperties ($httpData) { switch ($httpData->type) { case 'process': require_once 'classes/model/ProcessCategory.php'; require_once 'classes/model/CalendarDefinition.php'; G::LoadClass( 'processMap' ); $oProcessMap = new processMap( new DBConnection() ); $process = $oProcessMap->editProcessNew( $httpData->UID ); $category = ProcessCategoryPeer::retrieveByPk( $process['PRO_CATEGORY'] ); $categoryName = is_object( $category ) ? $category->getCategoryName() : ''; $calendar = CalendarDefinitionPeer::retrieveByPk( $process['PRO_CALENDAR'] ); $calendarName = is_object( $calendar ) ? $calendar->getCalendarName() : ''; $properties['Title'] = $process['PRO_TITLE']; $properties['Description'] = $process['PRO_DESCRIPTION']; $properties['Calendar'] = $calendarName; $properties['Category'] = $categoryName; $properties['Debug'] = $process['PRO_DEBUG'] == '1' ? true : false; $this->sucess = true; $this->prop = $properties; break; case 'task': require_once 'classes/model/Task.php'; $task = new Task(); $taskData = $task->load( $httpData->UID ); $properties['Title'] = $taskData['TAS_TITLE']; $properties['Description'] = $taskData['TAS_DESCRIPTION']; $properties['Variable for case priority'] = $taskData['TAS_PRIORITY_VARIABLE']; $properties['Starting Task'] = $taskData['TAS_START'] == 'TRUE' ? true : false; $this->sucess = true; $this->prop = $properties; break; } } /** * Save process and task propeties * * @param object $httpData{UID, type, property, value} */ public function saveProperties ($httpData) { switch ($httpData->type) { case 'process': require_once 'classes/model/ProcessCategory.php'; require_once 'classes/model/CalendarDefinition.php'; G::LoadClass( 'processMap' ); $oProcessMap = new ProcessMap(); $process['PRO_UID'] = $httpData->UID; switch ($httpData->property) { case 'Title': $fieldName = 'PRO_TITLE'; break; case 'Description': $fieldName = 'PRO_DESCRIPTION'; break; case 'Debug': $fieldName = 'PRO_DEBUG'; $httpData->value = $httpData->value == 'true' ? '1' : '0'; break; case 'Category': $fieldName = 'PRO_CATEGORY'; $category = ProcessCategory::loadByCategoryName( $httpData->value ); $httpData->value = $category['CATEGORY_UID']; break; case 'Calendar': $fieldName = 'PRO_CALENDAR'; $calendar = CalendarDefinition::loadByCalendarName( $httpData->value ); G::LoadClass( "calendar" ); $calendarObj = new Calendar(); $calendarObj->assignCalendarTo( $process['PRO_UID'], $calendar['CALENDAR_UID'], 'PROCESS' ); break; } if ($fieldName != 'PRO_CALENDAR') { $process[$fieldName] = $httpData->value; $oProcessMap->updateProcess( $process ); } break; case 'task': require_once 'classes/model/Task.php'; $oTask = new Task(); $task['TAS_UID'] = $httpData->UID; switch ($httpData->property) { case 'Title': $fieldName = 'TAS_TITLE'; break; case 'Description': $fieldName = 'TAS_DESCRIPTION'; break; case 'Variable for case priority': $fieldName = 'TAS_PRIORITY_VARIABLE'; break; case 'Starting Task': $fieldName = 'TAS_START'; $httpData->value = strtoupper( $httpData->value ); break; } $task[$fieldName] = $httpData->value; $oTask->update( $task ); break; } $this->sucess = true; } /** * get calendar list */ public function getCaledarList () { G::LoadClass( 'calendar' ); $calendar = new CalendarDefinition(); $calendarObj = $calendar->getCalendarList( true, true ); $calendarObj['array'][0] = Array ('CALENDAR_UID' => '','CALENDAR_NAME' => '' ); $this->rows = $calendarObj['array']; } /** * Get PM Variables * * @param $param{PRO_UID} */ public function getPMVariables ($param) { G::LoadClass( 'processMap' ); $oProcessMap = new processMap( new DBConnection() ); $rows = getDynaformsVars( $param->PRO_UID ); foreach ($rows as $i => $var) { $rows[$i]['sName'] = "@@{$var['sName']}"; } $this->rows = $rows; } /** * Generate BPMN (New record is generated) * * return void */ public function generateBpmn() { try { $processUid = $_POST["processUid"]; $workflowBpmn = new \ProcessMaker\Project\Adapter\WorkflowBpmn(); $projectUid = $workflowBpmn->generateBpmn($processUid, "processUid", $_SESSION["USER_LOGGED"]); $this->status = "OK"; $this->projectUid = $projectUid; } catch (Exception $e) { $this->status = "ERROR"; $this->message = $e->getMessage(); } } }