Files
luos/workflow/engine/methods/processes/processes_Ajax.php

484 lines
16 KiB
PHP

<?php
/**
* processes_Ajax.php
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2008 Colosa Inc.23
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
try {
/*global $RBAC;
switch ($RBAC->userCanAccess('PM_FACTORY'))
{
case -2:
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels');
G::header('location: ../login/login');
die;
break;
case -1:
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
G::header('location: ../login/login');
die;
break;
}*/
$oJSON = new Services_JSON();
if ( isset ($_POST['data']) ) {
$oData = $oJSON->decode(stripslashes($_POST['data']));
$sOutput = '';
}
G::LoadClass('processMap');
$oProcessMap = new processMap(new DBConnection);
switch($_POST['action'])
{
case 'load':
if ($oData->ct) {
$sOutput = $oProcessMap->load($oData->uid, true, $_SESSION['APPLICATION'], -1, $_SESSION['TASK'], $oData->ct);
}
else {
if ($oData->mode) {
$sOutput = $oProcessMap->load($oData->uid);
}
else {
$sOutput = $oProcessMap->load($oData->uid, true, $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['TASK']);
}
}
break;
case 'process_Edit':
$oProcessMap->editProcess($oData->pro_uid);
break;
case 'process_Export':
include(PATH_METHODS . 'processes/processes_Export.php');
break;
case 'process_User':
include(PATH_METHODS . 'processes/processes_User.php');
break;
case 'availableProcessesUser':
include(PATH_METHODS . 'processes/processes_availableProcessesUser.php');
break;
case 'webEntry_generate':
include(PATH_METHODS . 'processes/processes_webEntryGenerate.php');
break;
// add this event to validate de data to create a Web Entry
case 'webEntry_validate':
include(PATH_METHODS . 'processes/processes_webEntryValidate.php');
break;
case 'webEntry_delete':
$form=$_POST;
unlink(PATH_DATA ."sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP. $form['PRO_UID']. PATH_SEP.$form['FILENAME']);
unlink(PATH_DATA ."sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP. $form['PRO_UID']. PATH_SEP .str_replace(".php","Post",$form['FILENAME']).".php");
$oProcessMap->webEntry($_POST['PRO_UID']);
break;
case 'webEntry_new':
$oProcessMap->webEntry_new($oData->PRO_UID);
break;
case 'assignProcessUser':
$oProcessMap->assignProcessUser($oData->PRO_UID, $oData->USR_UID);
break;
case 'removeProcessUser':
$oProcessMap->removeProcessUser($oData->PU_UID);
break;
case 'supervisorDynaforms':
$oProcessMap->supervisorDynaforms($oData->pro_uid);
break;
case 'supervisorInputs':
$oProcessMap->supervisorInputs($oData->pro_uid);
break;
case 'webEntry':
$oProcessMap->webEntry($oData->pro_uid);
break;
case 'webEntry_Val_Assig':
include(PATH_METHODS . 'processes/webEntry_Val_Assig.php');
break;
case 'saveTitlePosition':
$sOutput = $oProcessMap->saveTitlePosition($oData->pro_uid, $oData->position->x, $oData->position->y);
break;
case 'steps':
switch ($oData->option)
{
case 1:
$oProcessMap->steps($oData->proUid, $oData->tasUid);
break;
case 2:
$oProcessMap->stepsConditions($oData->proUid, $oData->tasUid);
break;
case 3:
$oProcessMap->stepsTriggers($oData->proUid, $oData->tasUid);
break;
}
break;
case 'users':
$oProcessMap->users($oData->pro_uid, $oData->tas_uid);
break;
case 'users_adhoc':
$oProcessMap->users_adhoc($oData->pro_uid, $oData->tas_uid);
break;
case 'addTask':
$sOutput = $oProcessMap->addTask($oData->uid, $oData->position->x, $oData->position->y);
break;
case 'addSubProcess':
$sOutput = $oProcessMap->addSubProcess($oData->uid, $oData->position->x, $oData->position->y);
break;
case 'taskColor':
$oTask->taskColor($oData->pro_uid, $oData->tas_uid);
break;
case 'addTaskHidden':
$sOutput = $oProcessMap->addTaskHidden($oData->uid, $oData->position->x, $oData->position->y);
break;
case 'editTaskProperties':
$oProcessMap->editTaskProperties($oData->uid, (isset($oData->iForm) ? $oData->iForm : 1), $oData->index);
break;
case 'saveTaskPosition':
$sOutput = $oProcessMap->saveTaskPosition($oData->uid, $oData->position->x, $oData->position->y);
break;
case 'deleteTask':
$sOutput = $oProcessMap->deleteTask($oData->tas_uid);
break;
case 'addGuide':
$sOutput = $oProcessMap->addGuide($oData->uid, $oData->position, $oData->direction);
break;
case 'saveGuidePosition':
$sOutput = $oProcessMap->saveGuidePosition($oData->uid, $oData->position, $oData->direction);
break;
case 'deleteGuide':
$sOutput = $oProcessMap->deleteGuide($oData->uid);
break;
case 'deleteGuides':
$sOutput = $oProcessMap->deleteGuides($oData->pro_uid);
break;
case 'addText':
$sOutput = $oProcessMap->addText($oData->uid, $oData->label, $oData->position->x, $oData->position->y);
break;
case 'updateText':
$sOutput = $oProcessMap->updateText($oData->uid, $oData->label);
break;
case 'saveTextPosition':
$sOutput = $oProcessMap->saveTextPosition($oData->uid, $oData->position->x, $oData->position->y);
break;
case 'deleteText':
$sOutput = $oProcessMap->deleteText($oData->uid);
break;
case 'dynaforms':
$oProcessMap->dynaformsList($oData->pro_uid);
break;
case 'inputs':
$oProcessMap->inputdocsList($oData->pro_uid);
break;
case 'outputs':
$oProcessMap->outputdocsList($oData->pro_uid);
break;
case 'triggers':
$oProcessMap->triggersList($oData->pro_uid);
break;
case 'case_scheduler':
if(isset($_POST['PRO_UID'])){
$oProcessMap->caseSchedulerList($_POST['PRO_UID']);
}
break;
case 'log_case_scheduler':
if(isset($_POST['PRO_UID'])){
$oProcessMap->logCaseSchedulerList($_POST['PRO_UID']);
}
break;
case 'messages':
$oProcessMap->messagesList($oData->pro_uid);
break;
case 'reportTables':
$oProcessMap->reportTablesList($oData->pro_uid);
break;
case 'derivations':
if (!isset($oData->type)) {
$oProcessMap->currentPattern($oData->pro_uid, $oData->tas_uid);
}
else {
switch ($oData->type) {
case 0:
$oData->type = 'SEQUENTIAL';
break;
case 1:
$oData->type = 'SELECT';
break;
case 2:
$oData->type = 'EVALUATE';
break;
case 3:
$oData->type = 'PARALLEL';
break;
case 4:
$oData->type = 'PARALLEL-BY-EVALUATION';
break;
case 5:
$oData->type = 'SEC-JOIN';
break;
case 8:
$oData->type = 'DISCRIMINATOR';
break;
}
$oProcessMap->newPattern($oData->pro_uid, $oData->tas_uid, $oData->next_task, $oData->type);
}
break;
case 'saveNewPattern':
switch ($oData->type)
{
case 0:
$sType = 'SEQUENTIAL';
break;
case 1:
$sType = 'SELECT';
break;
case 2:
$sType = 'EVALUATE';
break;
case 3:
$sType = 'PARALLEL';
break;
case 4:
$sType = 'PARALLEL-BY-EVALUATION';
break;
case 5:
$sType = 'SEC-JOIN';
break;
case 8:
$sType = 'DISCRIMINATOR';
break;
}
if (($oData->type != 0) && ($oData->type != 5) && ($oData->type != 8)) {
if ($oProcessMap->getNumberOfRoutes($oData->pro_uid, $oData->tas_uid, $oData->next_task, $sType) > 0) {
die;
}
unset($aRow);
}
if (($oData->delete) || ($oData->type == 0) || ($oData->type == 5) || ($oData->type == 8)) {
G::LoadClass('tasks');
$oTasks = new Tasks();
$oTasks->deleteAllRoutesOfTask($oData->pro_uid, $oData->tas_uid);
}
$oProcessMap->saveNewPattern($oData->pro_uid, $oData->tas_uid, $oData->next_task, $sType, $oData->delete);
break;
case 'deleteAllRoutes':
G::LoadClass('tasks');
$oTasks = new Tasks();
$oTasks->deleteAllRoutesOfTask($oData->pro_uid, $oData->tas_uid);
break;
case 'objectPermissions':
$oProcessMap->objectsPermissionsList($oData->pro_uid);
break;
case 'newObjectPermission':
$oProcessMap->newObjectPermission($oData->pro_uid);
break;
case 'editObjectPermission':
// we also need the process uid variable for the function.
$oProcessMap->editObjectPermission($oData->op_uid,$oData->pro_uid);
break;
case 'caseTracker':
$oProcessMap->caseTracker($oData->pro_uid);
break;
case 'caseTrackerObjects':
$oProcessMap->caseTrackerObjects($oData->pro_uid);
break;
case 'processFilesManager':
$oProcessMap->processFilesManager($oData->pro_uid);
break;
case 'exploreDirectory':
$oProcessMap->exploreDirectory($oData->pro_uid, $oData->main_directory, $oData->directory);
break;
case 'deleteFile':
$oProcessMap->deleteFile($oData->pro_uid, $oData->main_directory, $oData->directory, $oData->file);
break;
case 'deleteDirectory':
$oProcessMap->deleteDirectory($oData->pro_uid, $oData->main_directory, $oData->directory, $oData->dir_to_delete);
break;
case 'downloadFile':
$oProcessMap->downloadFile($oData->pro_uid, $oData->main_directory, $oData->directory, $oData->file);
break;
case 'deleteSubProcess':
$sOutput = $oProcessMap->deleteSubProcess($oData->pro_uid, $oData->tas_uid);
break;
case 'subProcess_Properties':
$oProcessMap->subProcess_Properties($oData->pro_uid, $oData->tas_uid, $oData->index);
break;
case 'showDetailsPMDWL':
G::LoadClass('processes');
$oProcesses = new Processes();
$oProcesses->ws_open_public();
$aFields = get_object_vars($oProcesses->ws_processGetData($oData->pro_uid));
$aFields['description'] = nl2br ($aFields['description']);
$aFields['installSteps'] = nl2br ($aFields['installSteps']);
switch ($aFields['privacy']) {
case 'FREE':
$aFields['link_label'] = G::LoadTranslation('ID_DOWNLOAD');
$aFields['link_href'] = '../processes/downloadPML?id=' . $oData->pro_uid;
break;
case 'PUBLIC':
require_once 'classes/model/Configuration.php';
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(ConfigurationPeer::CFG_VALUE);
$oCriteria->add(ConfigurationPeer::CFG_UID, 'REGISTER_INFORMATION');
$oCriteria->add(ConfigurationPeer::USR_UID, $_SESSION['USER_LOGGED']);
if (ConfigurationPeer::doCount($oCriteria) > 0) {
$oDataset = ConfigurationPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
$aRI = unserialize($aRow['CFG_VALUE']);
try {
if ($oProcesses->ws_open($aRI['u'], $aRI['p']) == 1) {
$bExists = true;
}
else {
$bExists = false;
}
}
catch (Exception $oException) {
$bExists = false;
}
if ($bExists) {
$aFields['link_label'] = G::LoadTranslation('ID_DOWNLOAD');
$aFields['link_href'] = '../processes/downloadPML?id=' . $oData->pro_uid . '&s=' . $sessionId;
}
else {
$aFields['link_label'] = G::LoadTranslation('ID_NEED_REGISTER');
$aFields['link_href'] = "javascript:registerPML('" . $oData->pro_uid . "');";
}
}
else {
$aFields['link_label'] = G::LoadTranslation('ID_NEED_REGISTER');
$aFields['link_href'] = "javascript:registerPML('" . $oData->pro_uid . "');";
}
break;
}
$G_PUBLISH = new Publisher;
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/objectpmView', '', $aFields, '');
G::RenderPage('publish', 'raw');
break;
case 'registerPML':
$aFields = array();
$aFields['pro_uid'] = $oData->pro_uid;
$aFields['link_create_account'] = PML_SERVER;
$G_PUBLISH = new Publisher;
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/registerPML', '', $aFields, '');
G::RenderPage('publish', 'raw');
break;
case 'loginPML':
G::LoadClass('processes');
G::LoadThirdParty('pear/json','class.json');
$oProcesses = new Processes();
try {
if ($oProcesses->ws_open($oData->u, $oData->p) == 1) {
$bExists = true;
}
else {
$bExists = false;
}
}
catch (Exception $oException) {
$bExists = false;
}
$oResponse = new stdclass();
if ($bExists) {
require_once 'classes/model/Configuration.php';
$oConfiguration = new Configuration();
$oConfiguration->create(array('CFG_UID' => 'REGISTER_INFORMATION',
'OBJ_UID' => '',
'CFG_VALUE' => serialize(array('u' => $oData->u, 'p' => $oData->p)),
'PRO_UID' => '',
'USR_UID' => $_SESSION['USER_LOGGED'],
'APP_UID' => ''));
$oResponse->sLabel = G::LoadTranslation('ID_DOWNLOAD');
$oResponse->sLink = '../processes/downloadPML?id=' . $oData->pro_uid . '&s=' . $sessionId;
}
$oResponse->bExists = $bExists;
$oJSON = new Services_JSON();
echo $oJSON->encode($oResponse);
break;
case 'editFile':
//echo $_POST['filename'];
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
$sDirectory = PATH_DATA_MAILTEMPLATES . $_POST['pro_uid'] . PATH_SEP . $_POST['filename'];
$fcontent = file_get_contents($sDirectory);
$extion=explode(".",$_POST['filename']);
//if($extion[count($extion)-1]=='html' || $extion[count($extion)-1]=='txt'){
$aData = Array(
'pro_uid'=>$_POST['pro_uid'],
'fcontent'=>$fcontent,
'filename'=>$_POST['filename'],
);
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_FileEdit', '', $aData);
G::RenderPage('publish', 'raw');
/*}else{ echo 'krlos';
$aMessage['MESSAGE'] = G::loadTranslation( 'HTML_FILES' );
$G_PUBLISH->AddContent ( 'xmlform', 'xmlform', 'login/showMessage', '',$aMessage );
}*/
break;
case 'saveFile':
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
$sDirectory = PATH_DATA_MAILTEMPLATES . $_POST['pro_uid'] . PATH_SEP . $_POST['filename'];
$fp = fopen($sDirectory, 'w');
$content = stripslashes($_POST['fcontent']);
$content = str_replace("@amp@", "&", $content);
fwrite($fp, $content);
fclose($fp);
echo 'saved: '. $sDirectory;
break;
case 'events':
$oProcessMap->eventsList($oData->pro_uid, $oData->type);
break;
case 'saveFile':
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
$sDirectory = PATH_DATA_MAILTEMPLATES . $_POST['pro_uid'] . PATH_SEP . $_POST['filename'];
$fp = fopen($sDirectory, 'w');
$content = stripslashes($_POST['fcontent']);
$content = str_replace("@amp@", "&", $content);
fwrite($fp, $content);
fclose($fp);
echo 'saved: '. $sDirectory;
break;
case 'emptyFileOptions':
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_FileEditCreateEmpty', '');
G::RenderPage('publish', 'raw');
break;
}
if( isset($sOutput) )
die($sOutput);
}
catch (Exception $oException) {
die($oException->getMessage() . "\n" . $oException->getTraceAsString());
}
?>