first commit from pmos9a
1.)methods/bpmn 2.)templates/bpmn
This commit is contained in:
301
workflow/engine/methods/bpmn/cases_Scheduler_Save.php
Executable file
301
workflow/engine/methods/bpmn/cases_Scheduler_Save.php
Executable file
@@ -0,0 +1,301 @@
|
||||
<?php
|
||||
/**
|
||||
* cases_Scheduler_Save.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2010 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;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
require_once 'classes/model/CaseScheduler.php';
|
||||
$oCaseScheduler = new CaseScheduler();
|
||||
|
||||
if (empty($_POST)) {
|
||||
die('The information sended is empty!');
|
||||
}
|
||||
|
||||
if(empty($_POST['SCH_UID']))
|
||||
$aData['SCH_UID'] = G::generateUniqueID();
|
||||
else
|
||||
$aData['SCH_UID'] = $_POST['SCH_UID'];
|
||||
|
||||
$aData['SCH_NAME'] = $_POST['SCH_NAME'];
|
||||
$aData['SCH_DEL_USER_NAME'] = $_POST['SCH_DEL_USER_NAME'];
|
||||
$aData['SCH_DEL_USER_PASS'] = md5($_POST['SCH_USER_PASSWORD']);
|
||||
$aData['SCH_DEL_USER_UID'] = $_POST['SCH_DEL_USER_UID'];
|
||||
$aData['PRO_UID'] = $_POST['PRO_UID'];
|
||||
$aData['TAS_UID'] = $_POST['TAS_UID'];
|
||||
|
||||
$aData['SCH_STATE'] = 'ACTIVE';
|
||||
$aData['SCH_LAST_STATE'] = 'CREATED'; // 'ACTIVE';
|
||||
$aData['USR_UID'] = $_SESSION['USER_LOGGED'];
|
||||
|
||||
$sOption = $_POST['SCH_OPTION'];
|
||||
if($sOption == 'Daily')
|
||||
{
|
||||
$aData['SCH_OPTION'] = '1';
|
||||
$sOption = '1';
|
||||
}
|
||||
else if($sOption == 'Weekly')
|
||||
{
|
||||
$aData['SCH_OPTION'] = '2';
|
||||
$sOption = '2';
|
||||
}
|
||||
else if($sOption == 'Monthly')
|
||||
{
|
||||
$aData['SCH_OPTION'] = '3';
|
||||
$sOption = '3';
|
||||
}
|
||||
else if($sOption == 'One time only')
|
||||
{
|
||||
$aData['SCH_OPTION'] = '4';
|
||||
$sOption = '4';
|
||||
}
|
||||
|
||||
if ($_POST['SCH_START_DATE']!=''){
|
||||
$sDateTmp = $_POST['SCH_START_DATE'];
|
||||
} else {
|
||||
$sDateTmp = date('Y-m-d');
|
||||
}
|
||||
$sTimeTmp = $_POST['SCH_START_TIME'];
|
||||
$aData['SCH_START_TIME'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp));
|
||||
$aData['SCH_START_DATE'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp));
|
||||
|
||||
$nActualTime = $_POST['SCH_START_TIME']; // time();
|
||||
// $nActualDate = date("Y-m-d H:i:s", $nActualTime);
|
||||
|
||||
$sValue = '';
|
||||
$sDaysPerformTask = '';
|
||||
$sWeeks = '';
|
||||
$sMonths = '';
|
||||
$sMonths = '';
|
||||
$sStartDay = '';
|
||||
$nSW = 0;
|
||||
|
||||
switch($sOption){
|
||||
case '1' : // Option 1
|
||||
$sValue = $_POST['SCH_DAYS_PERFORM_TASK'];
|
||||
switch($sValue){
|
||||
case '1' : $aData['SCH_DAYS_PERFORM_TASK'] = $_POST['SCH_DAYS_PERFORM_TASK'] . '|1';
|
||||
break;
|
||||
case '2' :
|
||||
$aData['SCH_OPTION'] = '2';
|
||||
$aData['SCH_EVERY_DAYS'] = '1';
|
||||
$aData['SCH_WEEK_DAYS'] = '1|2|3|4|5|';
|
||||
break;
|
||||
case '3' : // Every [n] Days
|
||||
$sDaysPerformTask = $_POST['SCH_DAYS_PERFORM_TASK_OPT_3'];
|
||||
$aData['SCH_DAYS_PERFORM_TASK'] = $_POST['SCH_DAYS_PERFORM_TASK'] . '|' . $_POST['SCH_DAYS_PERFORM_TASK_OPT_3'];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case '2' : // If the option is zero, set by default 1
|
||||
if(empty($_POST['SCH_EVERY_DAYS']))
|
||||
$nEveryDays = 1;
|
||||
else
|
||||
$nEveryDays = $_POST['SCH_EVERY_DAYS'];
|
||||
$aData['SCH_EVERY_DAYS'] = $nEveryDays;
|
||||
$sWeeks = '';
|
||||
if(!empty($_POST['SCH_WEEK_DAYS'])){
|
||||
$aWeekDays = explode(',',$_POST['SCH_WEEK_DAYS']);
|
||||
foreach($aWeekDays as $value) {
|
||||
$sWeeks = $sWeeks . $value . '|';
|
||||
}
|
||||
}
|
||||
/*if(!empty($_POST['SCH_WEEK_DAYS_2'])){
|
||||
$aWeekDays2 = $_POST['SCH_WEEK_DAYS_2'];
|
||||
foreach($aWeekDays2 as $value) {
|
||||
$sWeeks = $sWeeks . $value . '|';
|
||||
}
|
||||
}*/
|
||||
$sStartTime = $_POST['SCH_START_TIME'];
|
||||
$aData['SCH_WEEK_DAYS'] = $sWeeks;
|
||||
|
||||
break;
|
||||
case '3' :
|
||||
$nStartDay = $_POST['SCH_START_DAY'];
|
||||
if($nStartDay == 'Day of Month')
|
||||
$nStartDay = 1;
|
||||
else if($nStartDay == 'The Day')
|
||||
$nStartDay = 2;
|
||||
|
||||
$sStartDayOpt2Week = $_POST['SCH_START_DAY_OPT_2_WEEKS'];
|
||||
switch($sStartDayOpt2Week){
|
||||
case 'First':
|
||||
$sStartDayOpt2Week = 1;
|
||||
break;
|
||||
case 'Second':
|
||||
$sStartDayOpt2Week = 2;
|
||||
break;
|
||||
case 'Third':
|
||||
$sStartDayOpt2Week = 3;
|
||||
break;
|
||||
case 'Fourth':
|
||||
$sStartDayOpt2Week = 4;
|
||||
break;
|
||||
case 'Last':
|
||||
$sStartDayOpt2Week = 5;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
$sStartDayOpt2DayWeek = $_POST['SCH_START_DAY_OPT_2_DAYS_WEEK'];
|
||||
|
||||
switch($sStartDayOpt2DayWeek){
|
||||
case 'Monday':
|
||||
$sStartDayOpt2DayWeek = 1;
|
||||
break;
|
||||
case 'Tuesday':
|
||||
$sStartDayOpt2DayWeek = 2;
|
||||
break;
|
||||
case 'Wednesday':
|
||||
$sStartDayOpt2DayWeek = 3;
|
||||
break;
|
||||
case 'Thursday':
|
||||
$sStartDayOpt2DayWeek = 4;
|
||||
break;
|
||||
case 'Friday':
|
||||
$sStartDayOpt2DayWeek = 5;
|
||||
break;
|
||||
case 'Saturday':
|
||||
$sStartDayOpt2DayWeek = 6;
|
||||
break;
|
||||
case 'Sunday':
|
||||
$sStartDayOpt2DayWeek = 7;
|
||||
break;
|
||||
}
|
||||
|
||||
if($nStartDay == 1){
|
||||
$aData['SCH_START_DAY'] = $nStartDay . '|' . $_POST['SCH_START_DAY_OPT_1'];
|
||||
} else {
|
||||
$aData['SCH_START_DAY'] = $nStartDay . '|' . $sStartDayOpt2Week . '|' . $sStartDayOpt2DayWeek;
|
||||
}
|
||||
|
||||
$sMonths = '';
|
||||
if(!empty($_POST['SCH_MONTHS'])){
|
||||
//$aMonths = $_POST['SCH_MONTHS'];
|
||||
$aMonths = explode(',',$_POST['SCH_MONTHS']);
|
||||
foreach($aMonths as $value) {
|
||||
$sMonths = $sMonths . $value . '|' ;
|
||||
}
|
||||
}
|
||||
/*if(!empty($_POST['SCH_MONTHS_2'])){
|
||||
$aMonths2 = $_POST['SCH_MONTHS_2'];
|
||||
foreach($aMonths2 as $value) {
|
||||
$sMonths = $sMonths . $value . '|' ;
|
||||
}
|
||||
}
|
||||
if(!empty($_POST['SCH_MONTHS_3'])){
|
||||
$aMonths3 = $_POST['SCH_MONTHS_3'];
|
||||
foreach($aMonths3 as $value) {
|
||||
$sMonths = $sMonths . $value . '|' ;
|
||||
}
|
||||
} */
|
||||
$aData['SCH_MONTHS'] = $sMonths;
|
||||
$sStartDay = $aData['SCH_START_DAY'];
|
||||
$sValue = $nStartDay;
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
if(($sOption!='1') && ($sOption!='4')) {
|
||||
if ($sStartDay==''){
|
||||
$sStartDay = date('Y-m-d');
|
||||
}
|
||||
// echo $sOption."*". $sValue."*". $nActualTime."*". $sDaysPerformTask."*". $sWeeks."*". $sStartDay ."*". $sMonths."<br>";
|
||||
$dCurrentDay = date("d");
|
||||
$dCurrentMonth = date("m");
|
||||
$aStartDay = explode( "|" , $aData['SCH_START_DAY'] );
|
||||
if($sOption=='3'&&$aStartDay[0]=='1'){
|
||||
$monthsArray = explode("|",$sMonths);
|
||||
foreach ($monthsArray as $row){
|
||||
if ( $dCurrentMonth == $row && $dCurrentDay<$aStartDay[1] ){
|
||||
$startTime = $_POST['SCH_START_TIME'].":00";
|
||||
$aData['SCH_TIME_NEXT_RUN'] = date('Y') . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime;
|
||||
break;
|
||||
} else {
|
||||
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun($sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun($sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp);
|
||||
}
|
||||
// print_r ($aData['SCH_TIME_NEXT_RUN']);
|
||||
// die;
|
||||
} else {
|
||||
if ($sOption=='4'){
|
||||
$aData['SCH_END_DATE'] = $aData['SCH_START_TIME'];
|
||||
}
|
||||
$aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME'];
|
||||
}
|
||||
|
||||
if(trim($_POST['SCH_END_DATE'])!=''){
|
||||
$aData['SCH_END_DATE'] = $_POST['SCH_END_DATE'];
|
||||
}
|
||||
|
||||
if(!empty($_POST['SCH_REPEAT_TASK_CHK'])){
|
||||
$nOptEvery = $_POST['SCH_REPEAT_EVERY_OPT'];
|
||||
if($nOptEvery ==2)
|
||||
$aData['SCH_REPEAT_EVERY'] = $_POST['SCH_REPEAT_EVERY'] * 60;
|
||||
else
|
||||
$aData['SCH_REPEAT_EVERY'] = $_POST['SCH_REPEAT_EVERY'];
|
||||
|
||||
|
||||
}
|
||||
//$aData['SCH_END_DATE'] = "2020-12-30";
|
||||
if(empty($_POST['SCH_UID']))
|
||||
$oCaseScheduler->create($aData);
|
||||
else
|
||||
$oCaseScheduler->update($aData);
|
||||
|
||||
//Save Scheduler_uid in the Event Table for Start Timer.
|
||||
$oData['EVN_UID']= $_POST['EVN_UID'];
|
||||
$oData['EVN_ACTION']= $aData['SCH_UID'];
|
||||
require_once "classes/model/Event.php";
|
||||
$oEvent = new Event();
|
||||
$oEvent->update($oData);
|
||||
echo "{success: true}";
|
||||
//G::header('location: cases_Scheduler_List');
|
||||
|
||||
|
||||
}
|
||||
catch (Exception $oException) {
|
||||
die($oException->getMessage());
|
||||
}
|
||||
|
||||
?>
|
||||
249
workflow/engine/methods/bpmn/eventsEditAction.php
Executable file
249
workflow/engine/methods/bpmn/eventsEditAction.php
Executable file
@@ -0,0 +1,249 @@
|
||||
<?php
|
||||
/**
|
||||
* events_EditAction.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.
|
||||
*
|
||||
*/
|
||||
global $RBAC;
|
||||
global $_DBArray;
|
||||
|
||||
if ($RBAC->userCanAccess('PM_SETUP') != 1) {
|
||||
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
|
||||
G::header('location: ../login/login');
|
||||
die;
|
||||
}
|
||||
if ( isset ($_SESSION['EVN_UID']) ) {
|
||||
$evnUid = $_SESSION['EVN_UID'];
|
||||
unset ( $_SESSION['EVN_UID'] );
|
||||
}
|
||||
else
|
||||
$evnUid = $_GET['EVN_UID'];
|
||||
|
||||
require_once 'classes/model/Event.php';
|
||||
require_once 'classes/model/Triggers.php';
|
||||
$oEvent = new Event();
|
||||
$oTrigger = new Triggers();
|
||||
$aFields = $oEvent->load( $evnUid );
|
||||
$parameters = unserialize ( $oEvent->getEvnActionParameters() );
|
||||
//g::pr($parameters); die;
|
||||
$aTrigger = $oTrigger->load($aFields['TRI_UID']);
|
||||
|
||||
$hash = md5 ( $oTrigger->getTriWebbot() );
|
||||
//var_dump($hash,$parameters->hash);die;
|
||||
//if the hash is different, the script was edited , so we will show the trigger editor.
|
||||
if ( ( isset($parameters->hash) && $hash <> $parameters->hash ) || $aFields['EVN_ACTION'] == 'EXECUTE_TRIGGER' || $aFields['EVN_ACTION'] == 'EXECUTE_CONDITIONAL_TRIGGER' ) {
|
||||
$oTriggerParams = unserialize($aTrigger['TRI_PARAM']);
|
||||
// check again a hash, this time to check the trigger itself integrity
|
||||
if ($oTriggerParams['hash']!=$hash){
|
||||
// if has changed edit manually
|
||||
G::LoadClass('xmlfield_InputPM');
|
||||
$G_PUBLISH = new Publisher();
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'triggers/triggersNarrowEdit', '', $aTrigger, '../events/triggersSave');
|
||||
G::RenderPage('publish', 'raw');
|
||||
die;
|
||||
} else {
|
||||
// if not launch the wizard view.
|
||||
$triUid = $aFields['TRI_UID'];
|
||||
$_GET = $oTriggerParams['params'];
|
||||
$_GET['TRI_UID'] = $triUid;
|
||||
require_once(PATH_METHODS.'triggers/triggers_EditWizard.php');
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
$aFields['EVN_MESSAGE_SUBJECT'] = (isset($parameters->SUBJECT) ? $parameters->SUBJECT : '');
|
||||
|
||||
if(isset($parameters->TO)){
|
||||
$paramTO[] = Array('id'=>'char', 'name'=>'char');
|
||||
|
||||
//echo '<pre>';print_r($parameters->TO);
|
||||
foreach($parameters->TO as $item){
|
||||
$row = explode('|', $item);
|
||||
switch($row[0]){
|
||||
case 'usr':
|
||||
require_once('classes/model/Users.php');
|
||||
$user = new Users();
|
||||
|
||||
if($row[1] == '-1'){
|
||||
$value = '(Current Task User)';
|
||||
} else {
|
||||
$rec = $user->load($row[1]);
|
||||
$value = $rec['USR_FIRSTNAME'].' '.$rec['USR_LASTNAME'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 'grp':
|
||||
G::LoadClass('groups');
|
||||
$group = new Groups();
|
||||
$rec = $group->load($row[1]);
|
||||
|
||||
$value = strip_tags($rec->getGrpTitle());
|
||||
break;
|
||||
|
||||
case 'ext':
|
||||
$value = htmlentities($row[1]);
|
||||
break;
|
||||
|
||||
case 'dyn':
|
||||
$value = htmlentities('@#'.$row[1]);
|
||||
break;
|
||||
|
||||
default:
|
||||
echo '->'.$row[0];
|
||||
}
|
||||
$paramTO[] = Array('id'=>replaceQuotes($item), 'name'=>$value);
|
||||
}
|
||||
} else {
|
||||
$paramTO[] = Array('id'=>'char', 'name'=>'char');
|
||||
$paramTO[] = Array('id'=>'usr|-1', 'name'=>'(Current Task User)');
|
||||
}
|
||||
$_DBArray['eventomsgto'] = $paramTO;
|
||||
|
||||
if(isset($parameters->CC)){
|
||||
$paramCC[] = Array('id'=>'char', 'name'=>'char');
|
||||
foreach($parameters->CC as $item){
|
||||
$row = explode('|', $item);
|
||||
switch($row[0]){
|
||||
case 'usr':
|
||||
require_once('classes/model/Users.php');
|
||||
$user = new Users();
|
||||
|
||||
if($row[1] == '-1'){
|
||||
$value = '(Current Task User)';
|
||||
} else {
|
||||
$rec = $user->load($row[1]);
|
||||
$value = $rec['USR_FIRSTNAME'].' '.$rec['USR_LASTNAME'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 'grp':
|
||||
G::LoadClass('groups');
|
||||
$group = new Groups();
|
||||
$rec = $group->load($row[1]);
|
||||
|
||||
$value = strip_tags($rec->getGrpTitle());
|
||||
break;
|
||||
|
||||
case 'ext':
|
||||
$value = htmlentities($row[1]);
|
||||
break;
|
||||
|
||||
case 'dyn':
|
||||
$value = htmlentities('@#'.$row[1]);
|
||||
break;
|
||||
}
|
||||
$paramCC[] = Array('id'=>replaceQuotes($item), 'name'=>$value);
|
||||
}
|
||||
|
||||
$_DBArray['eventomsgcc'] = $paramCC;
|
||||
|
||||
} else {
|
||||
$_DBArray['eventomsgcc'] = Array();
|
||||
}
|
||||
|
||||
if(isset($parameters->BCC)){
|
||||
$paramBCC[] = Array('id'=>'char', 'name'=>'char');
|
||||
foreach($parameters->BCC as $item){
|
||||
$row = explode('|', $item);
|
||||
switch($row[0]){
|
||||
case 'usr':
|
||||
require_once('classes/model/Users.php');
|
||||
$user = new Users();
|
||||
|
||||
if($row[1] == '-1'){
|
||||
$value = '(Current Task User)';
|
||||
} else {
|
||||
$rec = $user->load($row[1]);
|
||||
$value = $rec['USR_FIRSTNAME'].' '.$rec['USR_LASTNAME'];
|
||||
}
|
||||
break;
|
||||
|
||||
case 'grp':
|
||||
G::LoadClass('groups');
|
||||
$group = new Groups();
|
||||
$rec = $group->load($row[1]);
|
||||
|
||||
$value = strip_tags($rec->getGrpTitle());
|
||||
break;
|
||||
|
||||
case 'ext':
|
||||
$value = htmlentities($row[1]);
|
||||
break;
|
||||
|
||||
case 'dyn':
|
||||
$value = htmlentities('@#'.$row[1]);
|
||||
break;
|
||||
}
|
||||
$paramBCC[] = Array('id'=>replaceQuotes($item), 'name'=>$value);
|
||||
}
|
||||
|
||||
$_DBArray['eventomsgbcc'] = $paramBCC;
|
||||
|
||||
} else {
|
||||
$_DBArray['eventomsgbcc'] = Array();
|
||||
}
|
||||
$aFields['EVN_MESSAGE_TO_TO'] = $paramTO;
|
||||
$aFields['EVN_MESSAGE_TO_CC'] = (isset($parameters->CC) ? $paramCC : '');
|
||||
$aFields['EVN_MESSAGE_TO_BCC'] = (isset($parameters->BCC) ? $paramBCC : '');
|
||||
$aFields['EVN_MESSAGE_TEMPLATE'] = (isset($parameters->TEMPLATE) ? $parameters->TEMPLATE : '');
|
||||
|
||||
|
||||
$aTemplates = array();
|
||||
$aTemplates[] = array('TEMPLATE1' => 'char',
|
||||
'TEMPLATE2' => 'char');
|
||||
$sDirectory = PATH_DATA_MAILTEMPLATES . $aFields['PRO_UID'] . PATH_SEP;
|
||||
G::verifyPath($sDirectory, true);
|
||||
if (!file_exists($sDirectory . 'alert_message.html')) {
|
||||
@copy(PATH_TPL . 'mails' . PATH_SEP . 'alert_message.html', $sDirectory . 'alert_message.html');
|
||||
}
|
||||
$oDirectory = dir($sDirectory);
|
||||
while ($sObject = $oDirectory->read()) {
|
||||
if (($sObject !== '.') && ($sObject !== '..') && ($sObject !== 'alert_message.html')) {
|
||||
$aTemplates[] = array('TEMPLATE1' => $sObject,
|
||||
'TEMPLATE2' => $sObject);
|
||||
}
|
||||
}
|
||||
$_DBArray['templates'] = $aTemplates;
|
||||
|
||||
$aTriggers[] = array('TRI_UID' => 'char',
|
||||
'TRI_TITLE' => 'char');
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new ProcessMap();
|
||||
$oDataset = TriggersPeer::doSelectRS($oProcessMap->getTriggersCriteria($aFields['PRO_UID']));
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$oDataset->next();
|
||||
while ($aRow = $oDataset->getRow()) {
|
||||
$aTriggers[] = array('TRI_UID' => $aRow['TRI_UID'],
|
||||
'TRI_TITLE' => $aRow['TRI_TITLE']);
|
||||
$oDataset->next();
|
||||
}
|
||||
$_DBArray['triggers'] = $aTriggers;
|
||||
|
||||
$_SESSION['_DBArray'] = $_DBArray;
|
||||
|
||||
$G_PUBLISH = new Publisher();
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'events/eventsEditAction', '', $aFields, '../events/eventsSave');
|
||||
//$G_PUBLISH->AddContent('xmlform', 'xmlform', 'events/eventsEditAction', '', $aFields, '../events/eventsSave');
|
||||
G::RenderPage('publish', 'raw');
|
||||
|
||||
function replaceQuotes($aData){
|
||||
return str_replace('"', '"e;', $aData);
|
||||
}
|
||||
56
workflow/engine/methods/bpmn/eventsSave.php
Executable file
56
workflow/engine/methods/bpmn/eventsSave.php
Executable file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* cases_Events_Save.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2010 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 {
|
||||
$oJSON = new Services_JSON();
|
||||
if ( isset ($_POST['sData']) ) {
|
||||
$oData = $oJSON->decode($_POST['sData']);
|
||||
}
|
||||
|
||||
//Convert Object into Array
|
||||
foreach($oData as $key=>$value)
|
||||
{
|
||||
$aData[$key] = $value;
|
||||
}
|
||||
|
||||
require_once 'classes/model/Event.php';
|
||||
|
||||
$oEvent = new Event();
|
||||
if (!isset($aData['EVN_UID']) && $aData['EVN_UID'] == '' ) {
|
||||
$sEventUid = $oEvent->create($aData);
|
||||
}
|
||||
else
|
||||
$sEventUid = $oEvent->update($aData);
|
||||
|
||||
|
||||
|
||||
$_SESSION['EVN_UID'] = $sEventUid;
|
||||
echo "{success: true,data:'.$sEventUid.'}";
|
||||
//G::header('location: cases_Scheduler_List');
|
||||
}
|
||||
catch (Exception $oException) {
|
||||
die($oException->getMessage());
|
||||
}
|
||||
|
||||
?>
|
||||
170
workflow/engine/methods/bpmn/get-tree.php
Executable file
170
workflow/engine/methods/bpmn/get-tree.php
Executable file
@@ -0,0 +1,170 @@
|
||||
<?php
|
||||
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['tid'] ) )
|
||||
{
|
||||
$rows = $oProcessMap->getExtStepsCriteria($_GET['tid']); //Getting all assigned steps on a task
|
||||
array_shift($rows);
|
||||
}
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
$steps = array();
|
||||
|
||||
//@@stepsChildren is an array that stores before and after triggers tree data for a step
|
||||
$stepsChildren = array();
|
||||
$assignChildren = array();
|
||||
|
||||
//@@assignTaskChildren is an array that stores Before Assignment,Before Derivation and After Derivation triggers tree data for assigned task
|
||||
$assignTaskChildren = array();
|
||||
|
||||
|
||||
|
||||
//Creating steps array for populating tree depending on count of assigned steps to a task
|
||||
for($i=0;$i<count($rows);$i++)
|
||||
{
|
||||
//Getting beforeTriggersCount for a step
|
||||
$beforeTriggers = $oProcessMap->getStepTriggersCriteria($rows[$i]['STEP_UID'], $_GET['tid'], 'BEFORE');
|
||||
$beforeTriggersCount = StepTriggerPeer::doCount($beforeTriggers);
|
||||
|
||||
//Getting afterTriggersCount for a step
|
||||
$afterTriggers = $oProcessMap->getStepTriggersCriteria($rows[$i]['STEP_UID'], $_GET['tid'], 'AFTER');
|
||||
$afterTriggersCount = StepTriggerPeer::doCount($afterTriggers);
|
||||
|
||||
$iTotal = $beforeTriggersCount + $afterTriggersCount;
|
||||
|
||||
//Tree level 3 nodes i.e. final nodes (Leaf Nodes)
|
||||
$beforeTriggerChildren[0] = array(
|
||||
'text' => 'Assign / Show Before Triggers',
|
||||
'id' => $rows[$i]['STEP_UID'].'|BEFORE',
|
||||
'leaf' => true,
|
||||
);
|
||||
$afterTriggerChildren[0] = array(
|
||||
'text' => 'Assign / Show After Triggers',
|
||||
'id' => $rows[$i]['STEP_UID'].'|AFTER',
|
||||
'leaf' => true,
|
||||
);
|
||||
|
||||
//Tree level 2 nodes i.e. Before and After Triggers for level 1 nodes
|
||||
$stepsChildren[0] = array(
|
||||
'text' => 'Before - Triggers ('.$beforeTriggersCount.')',
|
||||
//'id' => $rows[$i]['STEP_UID'].'-BEFORE',
|
||||
'children' => $beforeTriggerChildren
|
||||
);
|
||||
$stepsChildren[1] = array(
|
||||
'text' => 'After - Triggers ('.$afterTriggersCount.')',
|
||||
//'id' => $rows[$i]['STEP_UID'].'-AFTER',
|
||||
'children' => $afterTriggerChildren
|
||||
);
|
||||
|
||||
//Tree level 1 nodes (Main steps)
|
||||
$steps[] = array(
|
||||
'text' => $rows[$i]['STEP_TITLE'].' - Triggers ('.$iTotal.')',
|
||||
//'id' => 'ssaas',
|
||||
'children' => $stepsChildren
|
||||
);
|
||||
}
|
||||
|
||||
//Creating tree for Assign Task Step
|
||||
$beforeAssignmentChildren[] = array(
|
||||
'text' => 'Assign / Show Triggers',
|
||||
'id' => '-1|BEFORE',
|
||||
'leaf' => true,
|
||||
);
|
||||
$beforeDerivationChildren[] = array(
|
||||
'text' => 'Assign / Show Triggers',
|
||||
'id' => '-2|BEFORE',
|
||||
'leaf' => true,
|
||||
);
|
||||
$afterDerivationChildren[] = array(
|
||||
'text' => 'Assign / Show Triggers',
|
||||
'id' => '-2|AFTER',
|
||||
'leaf' => true,
|
||||
);
|
||||
|
||||
//Getting counts for Before Assignment,Before Derivation and After Derivation triggers for a step
|
||||
$beforeAssignmentTriggers = $oProcessMap->getStepTriggersCriteria('-1', $_GET['tid'], 'BEFORE');
|
||||
$beforeAssignmentTriggersCount = StepTriggerPeer::doCount($beforeAssignmentTriggers);
|
||||
|
||||
$beforeDerivationTriggers = $oProcessMap->getStepTriggersCriteria('-2', $_GET['tid'], 'BEFORE');
|
||||
$beforeDerivationTriggersCount = StepTriggerPeer::doCount($beforeDerivationTriggers);
|
||||
|
||||
$afterDerivationTriggers = $oProcessMap->getStepTriggersCriteria('-2', $_GET['tid'], 'AFTER');
|
||||
$afterDerivationTriggersCount = StepTriggerPeer::doCount($afterDerivationTriggers);
|
||||
|
||||
$iTotal = $beforeAssignmentTriggersCount + $beforeDerivationTriggersCount + $afterDerivationTriggersCount;
|
||||
$assignTaskChildren[] = array(
|
||||
'text' => 'Before Assignment - Triggers ('.$beforeAssignmentTriggersCount.')',
|
||||
'children' => $beforeAssignmentChildren
|
||||
);
|
||||
$assignTaskChildren[] = array(
|
||||
'text' => 'Before Derivation - Triggers ('.$beforeDerivationTriggersCount.')',
|
||||
'children' => $beforeDerivationChildren
|
||||
);
|
||||
$assignTaskChildren[] = array(
|
||||
'text' => 'After Derivation - Triggers ('.$afterDerivationTriggersCount.')',
|
||||
'children' => $afterDerivationChildren
|
||||
);
|
||||
|
||||
//Adding last value in an array for "Assign Task"
|
||||
$steps[] = array(
|
||||
'text' => '[ Assign Task ] - Triggers ('.$iTotal.')',
|
||||
//'id' => $rows[$i]['STEP_UID'],
|
||||
'children' => $assignTaskChildren
|
||||
);
|
||||
|
||||
/* $nodes = "[{
|
||||
text: 'Step 1 - Triggers (0)',
|
||||
cls: 'blank',
|
||||
iconCls: 'blank',
|
||||
children: [{
|
||||
text: 'Before - Triggers (0)',
|
||||
cls: 'blank',
|
||||
iconCls: 'blank',
|
||||
children: [{
|
||||
text: 'Assign Before Trigger',
|
||||
leaf: true,
|
||||
}]
|
||||
},{
|
||||
text: 'After - Triggers (0)',
|
||||
leaf: true,
|
||||
cls: 'blank',
|
||||
iconCls: 'blank',
|
||||
}]
|
||||
},{
|
||||
text: 'Step 2 - Triggers (0)',
|
||||
|
||||
children: [{
|
||||
text: 'Before - Triggers (0)',
|
||||
leaf: true,
|
||||
|
||||
},{
|
||||
text: 'After - Triggers (0)',
|
||||
leaf: true,
|
||||
|
||||
}]
|
||||
},{
|
||||
text: 'Assign Task - Triggers(0)',
|
||||
|
||||
children: [{
|
||||
text: 'Before Assigment - Triggers(0)',
|
||||
leaf: true,
|
||||
|
||||
},{
|
||||
text: 'Before Derivation - Triggers(0)',
|
||||
leaf: true,
|
||||
|
||||
},{
|
||||
text: 'After Derivation - Triggers(0)',
|
||||
leaf: true,
|
||||
|
||||
}]
|
||||
}]";*/
|
||||
//echo $nodes;
|
||||
echo json_encode($steps);
|
||||
108
workflow/engine/methods/bpmn/openProcess.php
Executable file
108
workflow/engine/methods/bpmn/openProcess.php
Executable file
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/**
|
||||
* openProcess.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.
|
||||
*
|
||||
*/
|
||||
|
||||
G::LoadClass('xpdl');
|
||||
$processUID = $_REQUEST['PRO_UID'];
|
||||
$oProcess = new Xpdl();
|
||||
$fields = $oProcess->serializeProcess($processUID);
|
||||
$oData = unserialize($fields);
|
||||
$arrayTasks = array();
|
||||
$countTasks = 0;
|
||||
$countSubProcess= 0;
|
||||
$arrayEvents = array();
|
||||
$arraySubProcess= array();
|
||||
$count = 0;
|
||||
$countRoutes = 0;
|
||||
$arrayRoutes = array();
|
||||
$process = array();
|
||||
$process = $oProcess->createProcessPM($oData->process);
|
||||
foreach($oData->tasks as $id => $value)
|
||||
{
|
||||
if($value['TAS_TYPE'] == 'SUBPROCESS')
|
||||
{
|
||||
$arraySubProcess[$countSubProcess]['0'] = $value['TAS_UID'];
|
||||
$arraySubProcess[$countSubProcess]['1'] = $value['TAS_TITLE'];
|
||||
$arraySubProcess[$countSubProcess]['2'] = $value['TAS_POSX'];
|
||||
$arraySubProcess[$countSubProcess]['3'] = $value['TAS_POSY'];
|
||||
$countSubProcess = $countSubProcess + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$arrayTasks[$countTasks]['0'] = $value['TAS_UID'];
|
||||
$arrayTasks[$countTasks]['1'] = $value['TAS_TITLE'];
|
||||
$arrayTasks[$countTasks]['2'] = $value['TAS_POSX'];
|
||||
$arrayTasks[$countTasks]['3'] = $value['TAS_POSY'];
|
||||
$arrayTasks[$countTasks]['4'] = $value['TAS_WIDTH'];
|
||||
$arrayTasks[$countTasks]['5'] = $value['TAS_HEIGHT'];
|
||||
$arrayTasks[$countTasks]['6'] = $value['TAS_BOUNDARY'];
|
||||
if($value['TAS_START'] == 'TRUE'){
|
||||
$arrayEvents[$count]['0'] = G::generateUniqueID();
|
||||
if($value['TAS_EVN_UID'] == '')
|
||||
{
|
||||
$arrayEvents[$count]['1'] = 'bpmnEventEmptyStart';
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($oData->event as $eventid => $val){
|
||||
if($val['EVN_UID'] == $value['TAS_EVN_UID'])
|
||||
{
|
||||
$arrayEvents[$count]['0'] = $val['EVN_UID'];
|
||||
$arrayEvents[$count]['1'] = $val['EVN_TYPE'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$arrayEvents[$count]['2'] = $value['TAS_POSX']+68;
|
||||
$arrayEvents[$count]['3'] = $value['TAS_POSY']-50;
|
||||
$arrayRoutes[$countRoutes]['0']= G::generateUniqueID();
|
||||
$arrayRoutes[$countRoutes]['1']= $arrayEvents[$count]['0'];
|
||||
$arrayRoutes[$countRoutes]['2']= $value['TAS_UID'];
|
||||
$arrayRoutes[$countRoutes]['3']= '1';
|
||||
$arrayRoutes[$countRoutes]['4']= '2';
|
||||
$count = $count+ 1;
|
||||
$countRoutes = $countRoutes+ 1;
|
||||
}
|
||||
$countTasks = $countTasks + 1;
|
||||
}
|
||||
}
|
||||
$lanes = $oProcess->createLanesNewPM($oData->lanes);
|
||||
$fields = $oProcess->createTransitionsPM($oData->tasks,$oData->routes,$arrayEvents,$count,$arrayRoutes,$countRoutes);
|
||||
//$subProcess = $oProcess->createSubProcessesPM($oData->subProcess);
|
||||
$arrayEvents = $fields['EVENTS'];
|
||||
$arrayGateways = $fields['GATEWAYS'];
|
||||
$arrayRoutes = $fields['TRANSITION'];
|
||||
$result['TASKS'] = $arrayTasks;
|
||||
$result['ROUTES'] = $arrayRoutes;
|
||||
$result['EVENTS'] = $arrayEvents;
|
||||
$result['GATEWAYS'] = $arrayGateways;
|
||||
$aTasks = json_encode($arrayTasks);
|
||||
$aSubProcess = json_encode($arraySubProcess);
|
||||
$aRoutes = json_encode($arrayRoutes);
|
||||
$aEvents = json_encode($arrayEvents);
|
||||
$aGateways = json_encode($arrayGateways);
|
||||
$aProcess = json_encode($process);
|
||||
$aLanes = json_encode($lanes);
|
||||
echo "tasks:$aTasks|gateways:$aGateways|events:$aEvents|annotations:$aLanes|process:$aProcess|subprocess:$aSubProcess|routes:$aRoutes";
|
||||
?>
|
||||
182
workflow/engine/methods/bpmn/patterns_Ajax.php
Executable file
182
workflow/engine/methods/bpmn/patterns_Ajax.php
Executable file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
/**
|
||||
* patterns_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.
|
||||
*
|
||||
*/
|
||||
G::LoadInclude('ajax');
|
||||
$oJSON = new Services_JSON();
|
||||
if(isset($_POST['mode']) && $_POST['mode'] != '')
|
||||
{
|
||||
$aData = $_POST;
|
||||
$aData['TASK'] = $oJSON->decode($_POST['TASK']);
|
||||
$aData['ROU_NEXT_TASK'] = $oJSON->decode($_POST['ROU_NEXT_TASK']);
|
||||
}
|
||||
|
||||
|
||||
G::LoadClass('tasks');
|
||||
$oTasks = new Tasks();
|
||||
$rou_id = 0;
|
||||
switch ($aData['action']) {
|
||||
case 'savePattern':
|
||||
//if ($aData['ROU_TYPE'] != $aData['ROU_TYPE_OLD'])
|
||||
//{
|
||||
foreach ($aData['TASK'] as $iKey => $aRow)
|
||||
{
|
||||
$oTasks->deleteAllRoutesOfTask($aData['PROCESS'], $aRow);
|
||||
}
|
||||
//}
|
||||
require_once 'classes/model/Route.php';
|
||||
$oRoute = new Route();
|
||||
switch ($aData['ROU_TYPE']) {
|
||||
case 'SEQUENTIAL':
|
||||
case 'SEC-JOIN':
|
||||
/*if ($aData['ROU_UID'] != '')
|
||||
{
|
||||
$aFields['ROU_UID'] = $aData['ROU_UID'];
|
||||
}*/
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'][0];
|
||||
$aFields['ROU_NEXT_TASK'] = $aData['ROU_NEXT_TASK'][0];
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['ROU_EVN_UID']))
|
||||
$aFields['ROU_EVN_UID'] = $aData['ROU_EVN_UID'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT'] = $aData['PORT_NUMBER_OP'];
|
||||
//$aFields['ROU_TO_LAST_USER'] = $aData['ROU_TO_LAST_USER'];
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
break;
|
||||
case 'SELECT':
|
||||
foreach ($aData['GRID_SELECT_TYPE'] as $iKey => $aRow)
|
||||
{
|
||||
/*if ($aRow['ROU_UID'] != '')
|
||||
{
|
||||
$aFields['ROU_UID'] = $aRow['ROU_UID'];
|
||||
}*/
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'];
|
||||
$aFields['ROU_NEXT_TASK'] = $aRow;
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT'] = $aData['PORT_NUMBER_OP'];
|
||||
// $aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
//$aFields['ROU_TO_LAST_USER'] = $aRow['ROU_TO_LAST_USER'];
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
case 'EVALUATE':
|
||||
foreach ($aData['ROU_NEXT_TASK'] as $iKey => $aRow)
|
||||
{
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'];
|
||||
$aFields['ROU_NEXT_TASK'] = $aRow;
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
$aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT'] = $aData['PORT_NUMBER_OP'];
|
||||
//$aFields['ROU_TO_LAST_USER'] = $aRow['ROU_TO_LAST_USER'];
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
case 'PARALLEL':
|
||||
foreach ($aData['ROU_NEXT_TASK'] as $iKey => $aRow)
|
||||
{
|
||||
/*if ($aRow['ROU_UID'] != '')
|
||||
{
|
||||
$aFields['ROU_UID'] = $aRow['ROU_UID'];
|
||||
}*/
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'][0];
|
||||
$aFields['ROU_NEXT_TASK'] = $aRow;
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT']= $aData['PORT_NUMBER_OP'];
|
||||
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
case 'PARALLEL-BY-EVALUATION':
|
||||
foreach ($aData['ROU_NEXT_TASK'] as $iKey => $aRow)
|
||||
{
|
||||
/*if ($aRow['ROU_UID'] != '')
|
||||
{
|
||||
$aFields['ROU_UID'] = $aRow['ROU_UID'];
|
||||
}*/
|
||||
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aData['TASK'][0];
|
||||
$aFields['ROU_NEXT_TASK'] = $aRow;
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT']= $aData['PORT_NUMBER_OP'];
|
||||
// $aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
// $aFields['ROU_OPTIONAL'] = $aRow['ROU_OPTIONAL'];
|
||||
$rou_id = $oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
case 'DISCRIMINATOR': //Girish ->Added to save changes, while editing the route
|
||||
foreach ($aData['TASK'] as $iKey => $aRow)
|
||||
{
|
||||
$aFields['PRO_UID'] = $aData['PROCESS'];
|
||||
$aFields['TAS_UID'] = $aRow;
|
||||
$aFields['ROU_NEXT_TASK'] = $aData['ROU_NEXT_TASK'][0];
|
||||
$aFields['ROU_CASE'] = $iKey;
|
||||
$aFields['ROU_TYPE'] = $aData['ROU_TYPE'];
|
||||
if(isset($aData['PORT_NUMBER_IP']))
|
||||
$aFields['ROU_TO_PORT'] = $aData['PORT_NUMBER_IP'];
|
||||
if(isset($aData['PORT_NUMBER_OP']))
|
||||
$aFields['ROU_FROM_PORT'] = $aData['PORT_NUMBER_OP'];
|
||||
// $aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
// $aFields['ROU_OPTIONAL'] = $aRow['ROU_OPTIONAL'];
|
||||
$routeData = $oTasks->getRouteByType($aData['PROCESS'], $aData['ROU_NEXT_TASK'][0], $aData['ROU_TYPE']);
|
||||
foreach($routeData as $route)
|
||||
{
|
||||
$sFields['ROU_UID'] = $route['ROU_UID'];
|
||||
// $sFields['ROU_CONDITION'] = $aRow['ROU_CONDITION'];
|
||||
// $sFields['ROU_OPTIONAL'] = $aRow['ROU_OPTIONAL'];
|
||||
$rou_id = $oRoute->update($sFields);
|
||||
}
|
||||
$rou_id =$oRoute->create($aFields);
|
||||
unset($aFields);
|
||||
}
|
||||
break;
|
||||
}
|
||||
echo $rou_id;
|
||||
}
|
||||
?>
|
||||
314
workflow/engine/methods/bpmn/processes_Ajax.php
Executable file
314
workflow/engine/methods/bpmn/processes_Ajax.php
Executable file
@@ -0,0 +1,314 @@
|
||||
<?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.
|
||||
*
|
||||
*/
|
||||
G::LoadInclude('ajax');
|
||||
$oJSON = new Services_JSON();
|
||||
if ( isset ($_REQUEST['data']) ) {
|
||||
$oData = $oJSON->decode(stripslashes($_REQUEST['data']));
|
||||
$sOutput = '';
|
||||
}
|
||||
else {
|
||||
if (!isset($_POST['form'])) {
|
||||
$aData = urldecode_values($_POST);
|
||||
}
|
||||
else {
|
||||
$aData = urldecode_values($_POST['form']);
|
||||
}
|
||||
}
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
require_once 'classes/model/Task.php';
|
||||
require_once 'classes/model/Event.php';
|
||||
$oEvent = new Event();
|
||||
$oTask = new Task();
|
||||
if ( isset ($_REQUEST['action']) ) {
|
||||
switch($_REQUEST['action'])
|
||||
{
|
||||
case 'load':
|
||||
$sOutput = $oProcessMap->load($oData->uid);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'addTask':
|
||||
$sOutput = $oProcessMap->addTask($oData->uid, $oData->position->x, $oData->position->y);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'saveTaskPosition':
|
||||
$sOutput = $oProcessMap->saveTaskPosition($oData->uid, $oData->position->x, $oData->position->y);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'saveTaskCordinates':
|
||||
$sOutput = $oProcessMap->saveTaskCordinates($oData->uid, $oData->position->x, $oData->position->y);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'saveAnnotationCordinates':
|
||||
$sOutput = $oProcessMap->saveAnnotationCordinates($oData->uid, $oData->position->x, $oData->position->y);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'deleteTask':
|
||||
$sOutput = $oProcessMap->deleteTask($oData->tas_uid);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'updateTaskName':
|
||||
$aTask['TAS_UID'] = $oData->uid;
|
||||
$aTask['TAS_TITLE'] = $oData->label;
|
||||
$oTask->update($aTask);
|
||||
break;
|
||||
case 'updateTask':
|
||||
$aTask['TAS_UID'] = $oData->uid;
|
||||
$aTask['TAS_BOUNDARY'] = $oData->boundary;
|
||||
$oTask->update($aTask);
|
||||
$sOutput = $oJSON->encode($oData);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'addSubProcess':
|
||||
$sOutput = $oProcessMap->addSubProcess($oData->uid, $oData->position->x, $oData->position->y);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'deleteSubProcess':
|
||||
$sOutput = $oProcessMap->deleteSubProcess($oData->pro_uid, $oData->tas_uid);
|
||||
break;
|
||||
case 'addText':
|
||||
$sOutput = $oProcessMap->addText($oData->uid, $oData->label, $oData->position->x, $oData->position->y);
|
||||
//echo $sOutput;
|
||||
break;
|
||||
case 'updateText':
|
||||
$sOutput = $oProcessMap->updateText($oData->uid, $oData->label);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'saveTextPosition':
|
||||
$sOutput = $oProcessMap->saveTextPosition($oData->uid, $oData->position->x, $oData->position->y);
|
||||
break;
|
||||
case 'deleteText':
|
||||
$sOutput = $oProcessMap->deleteText($oData->uid);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'getProcesses':
|
||||
$sOutput = $oProcessMap->getAllProcesses();
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'dynaforms':
|
||||
$sOutput = $oProcessMap->getDynaformList($oData->uid);
|
||||
$sOutput = $oJSON->encode($sOutput);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'webEntry_validate':
|
||||
include(PATH_METHODS . 'processes/processes_webEntryValidate.php');
|
||||
break;
|
||||
case 'webEntry_generate':
|
||||
include(PATH_METHODS . 'processes/processes_webEntryGenerate.php');
|
||||
break;
|
||||
case 'webEntry':
|
||||
$sOutput = $oProcessMap->listNewWebEntry($oData->uid,$oData->evn_uid);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'loadTask':
|
||||
$oOutput = $oTask->load($oData->uid);
|
||||
$sOutput = $oJSON->encode($oOutput);
|
||||
echo $sOutput;
|
||||
break;
|
||||
|
||||
case 'saveInterMessageEvent':
|
||||
$aData['TAS_UID'] = $oData->uid;
|
||||
$aData['TAS_SEND_LAST_EMAIL'] = strtoupper($oData->tas_send);
|
||||
$aData['TAS_DEF_MESSAGE'] = $oData->data;
|
||||
if(isset($aData['TAS_SEND_LAST_EMAIL']) && $aData['TAS_SEND_LAST_EMAIL'] == 'FALSE')
|
||||
{
|
||||
$aData['TAS_DEF_MESSAGE'] = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$aData['TAS_DEF_MESSAGE'] = str_replace('@amp@', '&', $aData['TAS_DEF_MESSAGE']);
|
||||
}
|
||||
$sOutput = $oTask->update($aData);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'triggersList':
|
||||
$sOutput = $oProcessMap->getTriggers($oData->pro_uid);
|
||||
$sOutput = $oJSON->encode($sOutput);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'process_Edit':
|
||||
$sOutput = $oProcessMap->editProcessNew($oData->pro_uid);
|
||||
$sOutput = $oJSON->encode($sOutput);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'loadCategory':
|
||||
$sOutput = $oProcessMap->loadProcessCategory();
|
||||
$sOutput = $oJSON->encode($sOutput);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'saveProcess':
|
||||
$aData['PRO_UID'] = $oData->PRO_UID;
|
||||
$aData['PRO_CALENDAR'] = $oData->PRO_CALENDAR;
|
||||
$aData['PRO_CATEGORY'] = $oData->PRO_CATEGORY;
|
||||
$aData['PRO_DEBUG'] = $oData->PRO_DEBUG;
|
||||
$aData['PRO_DESCRIPTION'] = $oData->PRO_DESCRIPTION;
|
||||
$aData['PRO_TITLE'] = $oData->PRO_TITLE;
|
||||
$sOutput = $oProcessMap->updateProcess($aData);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'saveStartEvent':
|
||||
$aData['TAS_UID'] = $oData->tas_uid;
|
||||
$aData['TAS_START'] = $oData->tas_start;
|
||||
$aData['TAS_EVN_UID'] = '';
|
||||
$oTask->update($aData);
|
||||
break;
|
||||
case 'updateEvent':
|
||||
$aData['EVN_UID'] = $oData->evn_uid;
|
||||
$aData['EVN_TYPE'] = $oData->evn_type;
|
||||
$oEvent = EventPeer::retrieveByPK($aData['EVN_UID']);
|
||||
if (!is_null($oEvent))
|
||||
$oEvent->update($aData);
|
||||
break;
|
||||
case 'addEvent':
|
||||
$aData['PRO_UID'] = $oData->uid;
|
||||
$aData['EVN_TYPE'] = $oData->tas_type;
|
||||
$aData['EVN_STATUS'] = 'ACTIVE';
|
||||
$aData['EVN_WHEN'] = '1';
|
||||
$aData['EVN_ACTION'] = '';
|
||||
|
||||
if(preg_match("/Inter/", $oData->tas_type))
|
||||
{
|
||||
$aData['EVN_RELATED_TO'] = 'MULTIPLE';
|
||||
$aData['EVN_TAS_UID_FROM'] = $oData->tas_from;
|
||||
$aData['EVN_TAS_UID_TO'] = $oData->tas_to;
|
||||
$sOutput = $oEvent->create($aData);
|
||||
echo $sOutput;
|
||||
}
|
||||
//Code for Start Events only
|
||||
if(preg_match("/Start/", $oData->tas_type))
|
||||
{
|
||||
$aData['EVN_RELATED_TO'] = 'SINGLE';
|
||||
$aTask['TAS_UID'] = $oData->tas_uid;
|
||||
$oTaskData = $oTask->load($aTask['TAS_UID']);
|
||||
if($oTaskData['TAS_EVN_UID'] == '')
|
||||
{
|
||||
$sOutput = $oEvent->create($aData);
|
||||
}
|
||||
else
|
||||
{
|
||||
$aData['EVN_UID'] = $oTaskData['TAS_EVN_UID'];
|
||||
$oEvn_uid = $aData['EVN_UID'];
|
||||
$oEvent->update($aData);
|
||||
}
|
||||
|
||||
$aTask['TAS_UID'] = $oData->tas_uid;
|
||||
$aTask['TAS_EVN_UID'] = $oEvn_uid;
|
||||
$aTask['TAS_START'] = 'TRUE';
|
||||
$oTask->update($aTask);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'deleteRoute':
|
||||
require_once 'classes/model/Route.php';
|
||||
$oRoute = new Route();
|
||||
$sOutput = $oRoute->remove($oData->uid);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'deleteEvent':
|
||||
|
||||
$sOutput = $oEvent->remove($oData->uid);
|
||||
echo $sOutput;
|
||||
break;
|
||||
case 'assign':
|
||||
G::LoadClass('tasks');
|
||||
$oTasks = new Tasks();
|
||||
switch ($oData->TU_RELATION) {
|
||||
case 1:
|
||||
echo $oTasks->assignUser($oData->TAS_UID, $oData->USR_UID, $oData->TU_TYPE);
|
||||
break;
|
||||
case 2:
|
||||
echo $oTasks->assignGroup($oData->TAS_UID, $oData->USR_UID, $oData->TU_TYPE);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'ofToAssign':
|
||||
G::LoadClass('tasks');
|
||||
$oTasks = new Tasks();
|
||||
switch ($oData->TU_RELATION) {
|
||||
case 1:
|
||||
echo $oTasks->ofToAssignUser($oData->TAS_UID, $oData->USR_UID, $oData->TU_TYPE);
|
||||
break;
|
||||
case 2:
|
||||
echo $oTasks->ofToAssignGroup($oData->TAS_UID, $oData->USR_UID, $oData->TU_TYPE);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'saveSubProcessDetails':
|
||||
//$aTask=$oTask->load($_POST['form']['TASKS']);
|
||||
//$aTask=$oTask->load($_POST['form']['PRO_UID']);
|
||||
if($_POST['VAR_OUT1'] != '')
|
||||
{
|
||||
$out = array();
|
||||
$out[$_POST['VAR_OUT1']] = $_POST['VAR_OUT2'];
|
||||
}
|
||||
|
||||
if($_POST['VAR_IN1'] != '')
|
||||
{
|
||||
$in = array();
|
||||
$in[$_POST['VAR_IN1']] = $_POST['VAR_IN2'];
|
||||
}
|
||||
|
||||
$aTask=($_POST['TASKS']!=0)?$oTask->load($_POST['TASKS']):0;
|
||||
//$aTask['PRO_UID']=0;
|
||||
|
||||
if ( isset ( $_POST['SP_SYNCHRONOUS']) && $_POST['SP_SYNCHRONOUS'] == '' ) {
|
||||
$_POST['SP_SYNCHRONOUS'] = '0';
|
||||
}
|
||||
|
||||
if ( !isset ( $_POST['form']['SP_SYNCHRONOUS']) ) {
|
||||
$_POST['SP_SYNCHRONOUS'] = '0';
|
||||
}
|
||||
|
||||
require_once 'classes/model/SubProcess.php';
|
||||
$oOP = new SubProcess();
|
||||
$aData = array('SP_UID' => $_POST['SP_UID'],//G::generateUniqueID(),
|
||||
'PRO_UID' => $aTask['PRO_UID'],
|
||||
'TAS_UID' => $_POST['TASKS'],
|
||||
'PRO_PARENT' => $_POST['PRO_PARENT'],
|
||||
'TAS_PARENT' => $_POST['TAS_PARENT'],
|
||||
'SP_TYPE' => 'SIMPLE',
|
||||
'SP_SYNCHRONOUS' => $_POST['SP_SYNCHRONOUS'],
|
||||
'SP_SYNCHRONOUS_TYPE' => 'ALL',
|
||||
'SP_SYNCHRONOUS_WAIT' => 0,
|
||||
'SP_VARIABLES_OUT' => serialize($out),
|
||||
'SP_VARIABLES_IN' => serialize($in),
|
||||
'SP_GRID_IN' => '');
|
||||
|
||||
|
||||
$oOP->update($aData);
|
||||
break;
|
||||
|
||||
case 'subprocessProperties':
|
||||
require_once 'classes/model/Content.php';
|
||||
$lang = defined ( 'SYS_LANG') ? SYS_LANG : 'en';
|
||||
//$cont = Content::addContent( 'SP_TITLE', '', $_POST['form']['SP_UID'], $lang, $_POST['form']['SPROCESS_NAME'] );
|
||||
$cont = Content::addContent( 'TAS_TITLE', '', $_POST['TAS_PARENT'], $lang, $_POST['SPROCESS_NAME'] );
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
179
workflow/engine/methods/bpmn/processes_doUpload.php
Executable file
179
workflow/engine/methods/bpmn/processes_doUpload.php
Executable file
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2010, Andrew Rymarczyk
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and minified, compiled or otherwise obfuscated
|
||||
form, with or without modification, are permitted provided that the following
|
||||
conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in minified, compiled or otherwise obfuscated form must
|
||||
reproduce the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//$save_path = PATH_DATA_MAILTEMPLATES . '4601910684c597eab4810e6037370402' . PATH_SEP ;
|
||||
$save_path = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
|
||||
$valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\]\',~`-'; // Characters allowed in the file name (in a Regular Expression format)
|
||||
//$extension_whitelist = array('csv', 'gif', 'png','tif'); // Allowed file extensions
|
||||
$MAX_FILENAME_LENGTH = 260;
|
||||
|
||||
$max_file_size_in_bytes = 2147483647; // 2GB in bytes
|
||||
$upload_name = 'Filedata';
|
||||
|
||||
/*
|
||||
This is an upload script for SWFUpload that attempts to properly handle uploaded files
|
||||
in a secure way.
|
||||
|
||||
Notes:
|
||||
|
||||
SWFUpload doesn't send a MIME-TYPE. In my opinion this is ok since MIME-TYPE is no better than
|
||||
file extension and is probably worse because it can vary from OS to OS and browser to browser (for the same file).
|
||||
The best thing to do is content sniff the file but this can be resource intensive, is difficult, and can still be fooled or inaccurate.
|
||||
Accepting uploads can never be 100% secure.
|
||||
|
||||
You can't guarantee that SWFUpload is really the source of the upload. A malicious user
|
||||
will probably be uploading from a tool that sends invalid or false metadata about the file.
|
||||
The script should properly handle this.
|
||||
|
||||
The script should not over-write existing files.
|
||||
|
||||
The script should strip away invalid characters from the file name or reject the file.
|
||||
|
||||
The script should not allow files to be saved that could then be executed on the webserver (such as .php files).
|
||||
To keep things simple we will use an extension whitelist for allowed file extensions. Which files should be allowed
|
||||
depends on your server configuration. The extension white-list is _not_ tied your SWFUpload file_types setting
|
||||
|
||||
For better security uploaded files should be stored outside the webserver's document root. Downloaded files
|
||||
should be accessed via a download script that proxies from the file system to the webserver. This prevents
|
||||
users from executing malicious uploaded files. It also gives the developer control over the outgoing mime-type,
|
||||
access restrictions, etc. This, however, is outside the scope of this script.
|
||||
|
||||
SWFUpload sends each file as a separate POST rather than several files in a single post. This is a better
|
||||
method in my opinions since it better handles file size limits, e.g., if post_max_size is 100 MB and I post two 60 MB files then
|
||||
the post would fail (2x60MB = 120MB). In SWFupload each 60 MB is posted as separate post and we stay within the limits. This
|
||||
also simplifies the upload script since we only have to handle a single file.
|
||||
|
||||
The script should properly handle situations where the post was too large or the posted file is larger than
|
||||
our defined max. These values are not tied to your SWFUpload file_size_limit setting.
|
||||
|
||||
*/
|
||||
|
||||
// Check post_max_size (http://us3.php.net/manual/en/features.file-upload.php#73762)
|
||||
$POST_MAX_SIZE = ini_get('post_max_size');
|
||||
$unit = strtoupper(substr($POST_MAX_SIZE, -1));
|
||||
$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
|
||||
|
||||
if ((int)$_SERVER['CONTENT_LENGTH'] > $multiplier*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
|
||||
//header("HTTP/1.1 500 Internal Server Error"); // This will trigger an uploadError event in SWFUpload
|
||||
//echo "POST exceeded maximum allowed size.";
|
||||
HandleError('POST exceeded maximum allowed size.');
|
||||
}
|
||||
|
||||
// Other variables
|
||||
$file_name = '';
|
||||
$file_extension = '';
|
||||
$uploadErrors = array(
|
||||
0=>'There is no error, the file uploaded with success',
|
||||
1=>'The uploaded file exceeds the upload_max_filesize directive in php.ini',
|
||||
2=>'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
|
||||
3=>'The uploaded file was only partially uploaded',
|
||||
4=>'No file was uploaded',
|
||||
6=>'Missing a temporary folder'
|
||||
);
|
||||
|
||||
// Validate the upload
|
||||
if (!isset($_FILES[$upload_name])) {
|
||||
HandleError('No upload found in \$_FILES for ' . $upload_name);
|
||||
} else if (isset($_FILES[$upload_name]["error"]) && $_FILES[$upload_name]["error"] != 0) {
|
||||
HandleError($uploadErrors[$_FILES[$upload_name]["error"]]);
|
||||
} else if (!isset($_FILES[$upload_name]["tmp_name"]) || !@is_uploaded_file($_FILES[$upload_name]["tmp_name"])) {
|
||||
HandleError('Upload failed is_uploaded_file test.');
|
||||
} else if (!isset($_FILES[$upload_name]['name'])) {
|
||||
HandleError('File has no name.');
|
||||
}
|
||||
|
||||
// Validate the file size (Warning: the largest files supported by this code is 2GB)
|
||||
$file_size = @filesize($_FILES[$upload_name]["tmp_name"]);
|
||||
if (!$file_size || $file_size > $max_file_size_in_bytes) {
|
||||
HandleError('File exceeds the maximum allowed size');
|
||||
}
|
||||
|
||||
if ($file_size <= 0) {
|
||||
HandleError('File size outside allowed lower bound');
|
||||
}
|
||||
|
||||
// Validate file name (for our purposes we'll just remove invalid characters)
|
||||
$file_name = preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "", basename($_FILES[$upload_name]['name']));
|
||||
if (strlen($file_name) == 0 || strlen($file_name) > $MAX_FILENAME_LENGTH) {
|
||||
HandleError('Invalid file name');
|
||||
}
|
||||
|
||||
// Validate that we won't over-write an existing file
|
||||
if (file_exists($save_path . $file_name)) {
|
||||
HandleError('A file with this name already exists');
|
||||
}
|
||||
|
||||
/*
|
||||
// Validate file extension
|
||||
$path_info = pathinfo($_FILES[$upload_name]['name']);
|
||||
$file_extension = $path_info["extension"];
|
||||
$is_valid_extension = false;
|
||||
foreach ($extension_whitelist as $extension) {
|
||||
if (strcasecmp($file_extension, $extension) == 0) {
|
||||
$is_valid_extension = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$is_valid_extension) {
|
||||
HandleError("Invalid file extension");
|
||||
exit(0);
|
||||
}
|
||||
*/
|
||||
// Validate file contents (extension and mime-type can't be trusted)
|
||||
/*
|
||||
Validating the file contents is OS and web server configuration dependant. Also, it may not be reliable.
|
||||
See the comments on this page: http://us2.php.net/fileinfo
|
||||
|
||||
Also see http://72.14.253.104/search?q=cache:3YGZfcnKDrYJ:www.scanit.be/uploads/php-file-upload.pdf+php+file+command&hl=en&ct=clnk&cd=8&gl=us&client=firefox-a
|
||||
which describes how a PHP script can be embedded within a GIF image file.
|
||||
|
||||
Therefore, no sample code will be provided here. Research the issue, decide how much security is
|
||||
needed, and implement a solution that meets the needs.
|
||||
*/
|
||||
|
||||
|
||||
// Process the file
|
||||
/*
|
||||
At this point we are ready to process the valid file. This sample code shows how to save the file. Other tasks
|
||||
could be done such as creating an entry in a database or generating a thumbnail.
|
||||
|
||||
Depending on your server OS and needs you may need to set the Security Permissions on the file after it has
|
||||
been saved.
|
||||
*/
|
||||
if (!@move_uploaded_file($_FILES[$upload_name]["tmp_name"], $save_path.$file_name)) {
|
||||
HandleError("File could not be saved.");
|
||||
}
|
||||
|
||||
die('{"success":true}');
|
||||
|
||||
/* Handles the error output. This error message will be sent to the uploadSuccess event handler. The event handler
|
||||
will have to check for any error messages and react as needed. */
|
||||
function HandleError($message) {
|
||||
die('{success:false,error:'.json_encode($message).'}');
|
||||
}
|
||||
?>
|
||||
67
workflow/engine/methods/bpmn/processmap.php
Executable file
67
workflow/engine/methods/bpmn/processmap.php
Executable file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
$oHeadPublisher =& headPublisher::getSingleton();
|
||||
//$oHeadPublisher->setExtSkin( 'xtheme-gray');
|
||||
$oHeadPublisher->usingExtJs('ux/RowEditor');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/bpmnZoom',true);
|
||||
$oHeadPublisher->addExtJsScript('bpmn/MyWorkflow',true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/pmosExt', true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/TaskContext', true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/ProcessMapContext', true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/processmap', true ); //adding a javascript file .js
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Annotation' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/FlowConnector');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GroupFigure');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/bpmnShapes', true); //
|
||||
$oHeadPublisher->addExtJsScript('bpmn/LoopingSubProcess'); //
|
||||
$oHeadPublisher->addExtJsScript('bpmn/LoopingTask'); //
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Dataobject'); //
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Pool',true);
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Lane');
|
||||
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventEmptyStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMessageStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventRuleStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventTimerStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventSignalStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMulStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventLinkStart');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventEmptyInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMessageRecInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMessageSendInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventTimerInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventBoundaryTimerInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventErrorInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventCompInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventRuleInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventCancelInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventInterSignal');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMultipleInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventLinkInter');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventEmptyEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMessageEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventErrorEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventCompEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventTerminateEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventEndSignal');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventMultipleEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventCancelEnd');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/EventLinkEnd');
|
||||
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayInclusive' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayExclusiveData' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayExclusiveEvent' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayParallel' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GatewayComplex' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/GridPanel');
|
||||
$oHeadPublisher->addExtJsScript('bpmn/SubProcess' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/AwesomeUploader' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Ext.ux.form.FileUploadField' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/Ext.ux.XHRUpload' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/swfupload' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/swfupload.swfobject' );
|
||||
$oHeadPublisher->addExtJsScript('bpmn/ProcessOptions',true);
|
||||
|
||||
$oHeadPublisher->addContent( 'bpmn/processmap'); //adding a html file .html.
|
||||
G::RenderPage('publish', 'extJs');
|
||||
|
||||
67
workflow/engine/methods/bpmn/proxyCaseSchLoad.php
Executable file
67
workflow/engine/methods/bpmn/proxyCaseSchLoad.php
Executable file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['eid'] ) )
|
||||
{
|
||||
//Getting available Steps Criteria that have been not selected for a particular task
|
||||
require_once "classes/model/Event.php";
|
||||
$oEvent = new Event();
|
||||
$oData = $oEvent->load($_GET['eid']);
|
||||
$sch_uid = $oData['EVN_ACTION'];
|
||||
|
||||
if($sch_uid != '')
|
||||
{
|
||||
$rows = $oProcessMap->caseNewSchedulerList($sch_uid);
|
||||
if($rows['SCH_OPTION'] == '3')
|
||||
{
|
||||
$sch_start_day = explode('|',$rows['SCH_START_DAY']);
|
||||
$count = count($sch_start_day);
|
||||
switch($count){
|
||||
case 1:
|
||||
$rows['SCH_START_DAY'] = $sch_start_day[0];
|
||||
break;
|
||||
case 2:
|
||||
$rows['SCH_START_DAY'] = $sch_start_day[0];
|
||||
$rows['SCH_START_DAY_OPT_2_WEEKS'] = $sch_start_day[1];
|
||||
break;
|
||||
case 3:
|
||||
$rows['SCH_START_DAY'] = $sch_start_day[0];
|
||||
$rows['SCH_START_DAY_OPT_2_WEEKS'] = $sch_start_day[1];
|
||||
$rows['SCH_START_DAY_OPT_2_DAYS_WEEK'] = $sch_start_day[2];
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($rows['SCH_START_DATE'] != '')
|
||||
{
|
||||
$sch_str_dt = explode(' ',$rows['SCH_START_DATE']);
|
||||
$rows['SCH_START_DATE'] = $sch_str_dt[0];
|
||||
}
|
||||
if($rows['SCH_END_DATE'] != '')
|
||||
{
|
||||
$sch_str_dt = explode(' ',$rows['SCH_END_DATE']);
|
||||
$rows['SCH_END_DATE'] = $sch_str_dt[0];
|
||||
}
|
||||
|
||||
|
||||
$result = json_encode( $rows ) ;
|
||||
$result = str_replace("\\/","/",'{success:true,data:'.$result.'}'); // unescape the slashes
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = '{failure:true}'; // unescape the slashes
|
||||
}
|
||||
echo $result;
|
||||
}
|
||||
|
||||
//print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
39
workflow/engine/methods/bpmn/proxyDynaform.php
Executable file
39
workflow/engine/methods/bpmn/proxyDynaform.php
Executable file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['pid'] ) )
|
||||
{
|
||||
//Getting Dynaform List
|
||||
$rows = $oProcessMap->getExtDynaformsList($_GET['pid']);
|
||||
array_shift($rows);
|
||||
}
|
||||
else if(isset($_GET['tabId'])){
|
||||
$oAdditionalTables = new AdditionalTables();
|
||||
$aData = $oAdditionalTables->load($_GET['tabId'], true);
|
||||
$addTabName = $aData['ADD_TAB_NAME'];
|
||||
|
||||
foreach ($aData['FIELDS'] as $iRow => $aRow) {
|
||||
if ($aRow['FLD_KEY'] == 1) {
|
||||
$rows[] = $aRow;
|
||||
}
|
||||
}
|
||||
//echo json_encode( $rows ) ;
|
||||
//die;
|
||||
}
|
||||
//Getting Additional PM tables list created by user for combobox
|
||||
else
|
||||
{
|
||||
//Getting Dynaform List
|
||||
$rows = $oProcessMap->getExtAdditionalTablesList();
|
||||
}
|
||||
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
27
workflow/engine/methods/bpmn/proxyEventsLoad.php
Executable file
27
workflow/engine/methods/bpmn/proxyEventsLoad.php
Executable file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['startInterId'] ) )
|
||||
{
|
||||
//Getting available Steps Criteria that have been not selected for a particular task
|
||||
require_once "classes/model/Event.php";
|
||||
$oEvent = new Event();
|
||||
$aRows = $oEvent->load($_GET['startInterId']);
|
||||
//$sch_uid = $oData['EVN_ACTION'];
|
||||
$result = json_encode( $aRows );
|
||||
$result = str_replace("\\/","/",'{success:true,data:'.$result.'}'); // unescape the slashes
|
||||
/*else
|
||||
{
|
||||
$result = '{failure:true}'; // unescape the slashes
|
||||
}*/
|
||||
echo $result;
|
||||
}
|
||||
//print json_encode( $result ) ;
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
64
workflow/engine/methods/bpmn/proxyProcesses_Export.php
Executable file
64
workflow/engine/methods/bpmn/proxyProcesses_Export.php
Executable file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* processes_Export.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.
|
||||
*
|
||||
*/
|
||||
|
||||
G::LoadThirdParty('pear/json','class.json');
|
||||
|
||||
try {
|
||||
|
||||
if ( isset($_GET['pro_uid']))
|
||||
$sProUid = $_GET['pro_uid'];
|
||||
else
|
||||
throw ( new Exception ( 'the process uid is not defined!.' ) );
|
||||
|
||||
/* Includes */
|
||||
G::LoadClass('processes');
|
||||
G::LoadClass('xpdl');
|
||||
$oProcess = new Processes();
|
||||
$oXpdl = new Xpdl();
|
||||
$proFields = $oProcess->serializeProcess( $sProUid );
|
||||
$Fields = $oProcess->saveSerializedProcess ( $proFields );
|
||||
$xpdlFields = $oXpdl->xmdlProcess($sProUid);
|
||||
$Fields['FILENAMEXPDL'] = $xpdlFields['FILENAMEXPDL'];
|
||||
$Fields['FILENAME_LINKXPDL'] = $xpdlFields['FILENAME_LINKXPDL'];
|
||||
|
||||
if (G::is_https ())
|
||||
$http = 'https://';
|
||||
else
|
||||
$http = 'http://';
|
||||
|
||||
$Fields['FILENAME_LINK'] = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/processes/' . $Fields['FILENAME_LINK'];
|
||||
$Fields['FILENAME_LINKXPDL'] = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/processes/' . $Fields['FILENAME_LINKXPDL'];
|
||||
|
||||
$result = json_encode( $Fields );
|
||||
$result = str_replace("\\/","/",'{success:true,data:'.$result.'}'); // unescape the slashes
|
||||
echo $result;
|
||||
|
||||
}
|
||||
catch ( Exception $e ){
|
||||
$G_PUBLISH = new Publisher;
|
||||
$aMessage['MESSAGE'] = $e->getMessage();
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage );
|
||||
G::RenderPage('publish', 'raw' );
|
||||
}
|
||||
40
workflow/engine/methods/bpmn/proxyStepTriggers.php
Executable file
40
workflow/engine/methods/bpmn/proxyStepTriggers.php
Executable file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
|
||||
//$_GET['sid'] gets STEP_UID and sTYPE(i.e BEFORE and AFTER) in format STEP_UID-sTYPE
|
||||
if(isset($_GET['stepid']))
|
||||
{
|
||||
$aStepTypeId = explode('|',$_GET['stepid']);
|
||||
$_SESSION['stepUID'] = $_GET['stepid'];
|
||||
//$aStepTypeId = explode('-','2517180104cd42c25cc39e4071099227-BEFORE');
|
||||
$sStep = $aStepTypeId[0];
|
||||
$sType = $aStepTypeId[1];
|
||||
}
|
||||
|
||||
if (isset($_GET['pid'] ) && isset($_SESSION['stepUID']))
|
||||
{
|
||||
$aStepTypeId = explode('|',$_SESSION['stepUID']);
|
||||
$sStep = $aStepTypeId[0];
|
||||
$sType = $aStepTypeId[1];
|
||||
//Getting available Steps Criteria that have been not selected for a particular task
|
||||
$rows = $oProcessMap->getExtAvailableStepTriggersCriteria($_GET['pid'], $sStep, $_GET['tid'], $sType);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Getting all Steps Criteria that have been selected for a particular task
|
||||
$rows = $oProcessMap->getExtStepTriggersCriteria($sStep, $_GET['tid'], $sType);
|
||||
}
|
||||
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
31
workflow/engine/methods/bpmn/proxySubProcessProperties.php
Executable file
31
workflow/engine/methods/bpmn/proxySubProcessProperties.php
Executable file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
|
||||
|
||||
//array_shift($rows);
|
||||
if($_GET['type'] == 2) //Loading sub process details
|
||||
{
|
||||
$rows = $oProcessMap->subProcessExtProperties($_GET['pid'], $_GET['tid'],'','0');
|
||||
$tmpData = json_encode( $rows ) ;
|
||||
$tmpData = str_replace("\\/","/",'{success:true,data:'.$tmpData.'}'); // unescape the slashes
|
||||
|
||||
$result = $tmpData;
|
||||
print $result;
|
||||
}
|
||||
else
|
||||
{
|
||||
$rows = $oProcessMap->subProcessExtProperties($_GET['pid'], $_GET['tid'],'',$_GET['type']);
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
}
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
64
workflow/engine/methods/bpmn/proxyTaskPropertiesDetails.php
Executable file
64
workflow/engine/methods/bpmn/proxyTaskPropertiesDetails.php
Executable file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
require_once 'classes/model/Task.php';
|
||||
$oTask = new Task();
|
||||
$rows = $oTask->load($_GET['tid']);
|
||||
|
||||
while (list($key, $value) = each($rows)) {
|
||||
|
||||
if ($value == 'TRUE')
|
||||
$rows[$key] = true;
|
||||
else if($value == 'FALSE')
|
||||
$rows[$key] = false;
|
||||
|
||||
if($key == 'TAS_TYPE_DAY' && $value == '1')
|
||||
$rows[$key] = 'Work Days';
|
||||
else if($key == 'TAS_TYPE_DAY' && $value == '2')
|
||||
$rows[$key] = 'Calendar Days';
|
||||
|
||||
if($key == 'TAS_ASSIGN_TYPE')
|
||||
{
|
||||
switch($value)
|
||||
{
|
||||
case 'SELF_SERVICE':
|
||||
$rows[$value] = 'true';
|
||||
break;
|
||||
case 'REPORT_TO':
|
||||
$rows[$value] = 'true';
|
||||
break;
|
||||
case 'BALANCED':
|
||||
$rows[$value] = 'true';
|
||||
break;
|
||||
case 'MANUAL':
|
||||
$rows[$value] = 'true';
|
||||
break;
|
||||
case 'EVALUATE':
|
||||
$rows[$value] = 'true';
|
||||
$rows['hideEvaluateField'] = 'false';
|
||||
break;
|
||||
case 'STATIC_MI':
|
||||
$rows[$value] = 'true';
|
||||
$rows['hidePartialJoinField'] = 'false';
|
||||
break;
|
||||
case 'CANCEL_MI':
|
||||
$rows[$value] = 'true';
|
||||
$rows['hidePartialJoinField'] = 'false';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$tmpData = json_encode( $rows ) ;
|
||||
$tmpData = str_replace("\\/","/",'{success:true,data:'.$tmpData.'}'); // unescape the slashes
|
||||
|
||||
$result = $tmpData;
|
||||
echo $result;
|
||||
|
||||
}
|
||||
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
28
workflow/engine/methods/bpmn/proxyTaskSteps.php
Executable file
28
workflow/engine/methods/bpmn/proxyTaskSteps.php
Executable file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['pid'] ) )
|
||||
{
|
||||
//Getting available Steps Criteria that have been not selected for a particular task
|
||||
$rows = $oProcessMap->getExtAvailableBBCriteria($_GET['pid'], $_GET['tid']);
|
||||
array_shift($rows);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Getting all Steps Criteria that have been selected for a particular task
|
||||
$rows = $oProcessMap->getExtStepsCriteria($_GET['tid']);
|
||||
array_shift($rows);
|
||||
}
|
||||
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
|
||||
?>
|
||||
52
workflow/engine/methods/bpmn/proxyUsersList.php
Executable file
52
workflow/engine/methods/bpmn/proxyUsersList.php
Executable file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
try
|
||||
{
|
||||
G::LoadClass('processMap');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
if ( isset($_GET['pid'] ) )
|
||||
{
|
||||
$rows = $oProcessMap->usersExtList($_GET['pid'], $_GET['tid']);
|
||||
array_shift($rows);
|
||||
}
|
||||
else
|
||||
{
|
||||
$rows = $oProcessMap->getAvailableExtUsersCriteria($_GET['tid']);
|
||||
}
|
||||
/*else
|
||||
{
|
||||
require_once 'classes/model/Users.php';
|
||||
$oCriteria = new Criteria('workflow');
|
||||
$oCriteria->addSelectColumn(UsersPeer::USR_UID);
|
||||
|
||||
$sDataBase = 'database_' . strtolower(DB_ADAPTER);
|
||||
if(G::LoadSystemExist($sDataBase)){
|
||||
G::LoadSystem($sDataBase);
|
||||
$oDataBase = new database();
|
||||
$oCriteria->addAsColumn('USR_COMPLETENAME', $oDataBase->concatString("USR_LASTNAME", "' '", "USR_FIRSTNAME"));
|
||||
}
|
||||
|
||||
$oCriteria->addSelectColumn(UsersPeer::USR_USERNAME);
|
||||
|
||||
$oDataset = UsersPeer::doSelectRS($oCriteria);
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$oDataset->next();
|
||||
|
||||
$result = array();
|
||||
$rows = array();
|
||||
$index = isset($start) ? $start : 0;
|
||||
while($aRow = $oDataset->getRow()){
|
||||
$aRow['index'] = ++$index;
|
||||
$rows[] = $aRow;
|
||||
|
||||
$oDataset->next();
|
||||
}
|
||||
}
|
||||
*/
|
||||
$result['totalCount'] = count($rows);
|
||||
$result['data'] = $rows;
|
||||
print json_encode( $result ) ;
|
||||
|
||||
}
|
||||
catch ( Exception $e ) {
|
||||
print json_encode ( $e->getMessage() );
|
||||
}
|
||||
129
workflow/engine/methods/bpmn/saveProcess.php
Executable file
129
workflow/engine/methods/bpmn/saveProcess.php
Executable file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
/**
|
||||
* saveProcess.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{
|
||||
G::LoadClass('xpdl');
|
||||
G::LoadClass('processMap');
|
||||
G::LoadClass('tasks');
|
||||
$oProcessMap = new processMap(new DBConnection);
|
||||
$oProcess = new Xpdl();
|
||||
$oTask = new Task();
|
||||
if(isset($_POST['PRO_UID'])){
|
||||
$idProcess = $_POST['PRO_UID'];
|
||||
if($oProcess->processExists ($idProcess)){
|
||||
$process['ID'] = $idProcess;
|
||||
}
|
||||
else{
|
||||
$result = array();
|
||||
$result['status_code'] = $idProcess;
|
||||
$result['message'] = "the process don't exists";
|
||||
$result['timestamp'] = date('Y-m-d H:i:s');
|
||||
echo json_encode($result);
|
||||
die;
|
||||
}
|
||||
}
|
||||
else{
|
||||
$result = array();
|
||||
$result['status_code'] = 1;
|
||||
$result['message'] = "you don't send the process uid";
|
||||
$result['timestamp'] = date('Y-m-d H:i:s');
|
||||
echo json_encode($result);
|
||||
die;
|
||||
}
|
||||
$aTasks = json_decode ( $_POST['tasks'] );
|
||||
$aRoutes = json_decode ( $_POST['routes'] );
|
||||
$aEvents = json_decode ( $_POST['events'] );
|
||||
$aGateways = json_decode ( $_POST['gateways'] );
|
||||
$aAnnotations = json_decode ( $_POST['annotations'] );
|
||||
$aSubprocess = json_decode ( $_POST['subprocess'] );
|
||||
$fields = $oProcess->serializeProcess($idProcess);
|
||||
//$oData = unserialize($fields);
|
||||
$aRoutes = $oProcess->super_unique($aRoutes);
|
||||
$sOutput = '';
|
||||
$subProcesses = array();
|
||||
foreach($aTasks as $endBase => $valueEnd){
|
||||
$tasks['ID_TASK'] = $valueEnd['0'];
|
||||
$tasks['START'] = '';
|
||||
foreach($aEvents as $id => $value){
|
||||
if($value['1'] == 'bpmnEventEmptyStart' or $value['1'] == 'bpmnEventMessageStart' or $value['1'] == 'bpmnEventTimerStart' ){
|
||||
foreach($aRoutes as $endR => $valueR){
|
||||
if($tasks['ID_TASK'] == $valueR['2'] and $valueR['1'] == $value['0'] ){
|
||||
$tasks['START'] = 'TRUE';
|
||||
unset($aEvents[$id]);
|
||||
unset($aRoutes[$endR]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if( $tasks['START'] == ''){
|
||||
$tasks['START'] = 'FALSE';
|
||||
}
|
||||
$tasks['TAS_TITLE'] = $valueEnd['1'];
|
||||
$tasks['X'] = $valueEnd['2'];
|
||||
$tasks['Y'] = $valueEnd['3'];
|
||||
$tasks['TAS_TYPE'] = $valueEnd['6'];
|
||||
$tasks['ID_PROCESS'] = $idProcess;
|
||||
//$tasks['TASK_TYPE'] = 'NORMAL';
|
||||
$tasks['DESCRIPTION']= '';
|
||||
$oData->tasks[]= $oProcess->createDataTask($tasks);
|
||||
}
|
||||
$endArray = array();
|
||||
$endArray = $oProcess->convertArrayEnd($aEvents,$idProcess);
|
||||
$oData->lanes = $oProcess->createLanesPM($aAnnotations,$idProcess);
|
||||
$transitions = $oProcess->createArrayRoutes($oData->tasks,$aRoutes,$aEvents,$aGateways,$aEvents,$idProcess);
|
||||
$oData->routes = $transitions['ROUTES'];
|
||||
$routeTransitions = $transitions['TRANSITIONS'];
|
||||
$numberRoutes = $transitions['NUMBER'];
|
||||
$oData->tasks = $transitions['TASKS'];
|
||||
$taskHidden = $transitions['HIDDEN'];
|
||||
foreach($aSubprocess as $key => $value){
|
||||
//print_R($value['0']);
|
||||
//$sOutput = $oTask->remove($value['0']);
|
||||
$sOutput = $oProcessMap->addSubProcess($idProcess,$value['2'],$value['3']);
|
||||
/*$subProcess[$key]['ID_PROCESS'] = $idProcess;
|
||||
$subProcess[$key]['TAS_TITLE'] = $idProcess;
|
||||
$subProcess[$key]['ID_TASK'] = $value['0'];
|
||||
$subProcess[$key]['TAS_UID'] = $value['0'];
|
||||
$subProcess[$key]['TASK_PARENT'] = '';
|
||||
$subProcess[$key]['PROCESS_PARENT'] = '';
|
||||
$subProcess[$key]['TASK_TYPE'] = 'SUBPROCESS';
|
||||
$subProcess[$key]['DESCRIPTION'] = '';
|
||||
$subProcess[$key]['X'] = $value['2'];
|
||||
$subProcess[$key]['Y'] = $value['3'];
|
||||
|
||||
print_R($subProcess[$key]);
|
||||
$subProcesses[] = $oProcess->createSubProcess($subProcess);
|
||||
$oData->tasks[] = $oProcess->createTask($subProcess[$key]);*/
|
||||
}
|
||||
$numberTransitions = sizeof($routeTransitions);
|
||||
if($numberTransitions > 0){
|
||||
$routesArray = $oProcess->createGateways($routeTransitions,$endArray,$oData->routes,$numberRoutes,$idProcess,$taskHidden);
|
||||
$oData->routes = $routesArray;
|
||||
}
|
||||
$oProcess->updateProcessFromDataXpdl($oData,$oData->tasks);
|
||||
}
|
||||
catch (Exception $oException) {
|
||||
die($oException->getMessage());
|
||||
}
|
||||
Reference in New Issue
Block a user