diff --git a/workflow/engine/methods/events/eventsDelete.php b/workflow/engine/methods/events/eventsDelete.php index 2c5933c3d..3adb131d0 100755 --- a/workflow/engine/methods/events/eventsDelete.php +++ b/workflow/engine/methods/events/eventsDelete.php @@ -28,8 +28,22 @@ if ($RBAC->userCanAccess( 'PM_SETUP' ) != 1) { die(); } +$k = new Criteria('workflow'); +$k->clearSelectColumns(); +$k->addSelectColumn(EventPeer::PRO_UID); +$k->add(EventPeer::EVN_UID, $_POST['EVN_UID'] ); +$rs = EventPeer::doSelectRS($k); +$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); +$rs->next(); +$row = $rs->getRow(); +$proUid = $row['PRO_UID']; + +$infoProcess = new Processes(); +$proFields = $infoProcess->serializeProcess($proUid); +$resultProcess = $infoProcess->saveSerializedProcess($proFields); +G::auditLog('Events','Delete event in process "'.$resultProcess['PRO_TITLE'].'"'); + $evnUid = $_POST['EVN_UID']; require_once 'classes/model/Event.php'; $oEvent = new Event(); -$oEvent->remove( $evnUid ); - +$oEvent->remove( $evnUid ); \ No newline at end of file diff --git a/workflow/engine/methods/events/eventsSave.php b/workflow/engine/methods/events/eventsSave.php index bd38f717a..4321fe608 100755 --- a/workflow/engine/methods/events/eventsSave.php +++ b/workflow/engine/methods/events/eventsSave.php @@ -59,6 +59,10 @@ if ($_POST['form']['EVN_UID'] == '') { */ $oEvent->update( $_POST['form'] ); } +$infoProcess = new Processes(); +$proFields = $infoProcess->serializeProcess($_POST['form']['PRO_UID']); +$resultProcess = $infoProcess->saveSerializedProcess($proFields); +G::auditLog('Events','Save intermediate message "'.$_POST['form']['EVN_DESCRIPTION'].'" in process "'.$resultProcess['PRO_TITLE'].'"'); function replaceQuotes ($aData) { diff --git a/workflow/engine/methods/events/triggersSave.php b/workflow/engine/methods/events/triggersSave.php index b9402984a..c42cfc12e 100755 --- a/workflow/engine/methods/events/triggersSave.php +++ b/workflow/engine/methods/events/triggersSave.php @@ -36,3 +36,18 @@ if ($_POST['form']['TRI_UID'] != '') { $oTrigger->update( $_POST['form'] ); +$k = new Criteria('workflow'); +$k->clearSelectColumns(); +$k->addSelectColumn(TriggersPeer::PRO_UID); +$k->add(TriggersPeer::TRI_UID, $_POST['form']['TRI_UID'] ); +$rs = TriggersPeer::doSelectRS($k); +$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); +$rs->next(); +$row = $rs->getRow(); +$proUid = $row['PRO_UID']; + +$infoProcess = new Processes(); +$proFields = $infoProcess->serializeProcess($proUid); +$resultProcess = $infoProcess->saveSerializedProcess($proFields); +G::auditLog('Events','Save event in process "'.$resultProcess['PRO_TITLE'].'"'); + diff --git a/workflow/engine/methods/processes/processes_Ajax.php b/workflow/engine/methods/processes/processes_Ajax.php index 7f70d7ddd..472ceef7c 100755 --- a/workflow/engine/methods/processes/processes_Ajax.php +++ b/workflow/engine/methods/processes/processes_Ajax.php @@ -42,17 +42,81 @@ try { if (isset($_REQUEST['data'])) { if($_REQUEST['action']=="addText"||$_REQUEST['action']=="updateText") { $oData = Bootstrap::json_decode($_REQUEST['data']); + $oDataAux = json_decode($_REQUEST['data'],true); } else { $oData = Bootstrap::json_decode(stripslashes($_REQUEST['data'])); + $oDataAux = json_decode(stripslashes($_REQUEST['data']),true); } //$oData = $oJSON->decode( stripslashes( $_REQUEST['data'] ) ); $sOutput = ''; $sTask = ''; + + if(array_key_exists('pro_uid', $oDataAux) || array_key_exists('uid', $oDataAux) || array_key_exists('PRO_UID', $oDataAux) || array_key_exists('UID', $oDataAux)) { + if(array_key_exists('pro_uid', $oDataAux) || array_key_exists('PRO_UID', $oDataAux)) { + if(array_key_exists('pro_uid', $oDataAux)) { + $proUid = $oDataAux['pro_uid']; + } else { + $proUid = $oDataAux['PRO_UID']; + } + } else { + $proUid = $oDataAux['uid']; + $uidAux = $proUid; + } + + G::LoadClass('processes'); + $infoProcess = new Processes(); + + if(!$infoProcess->processExists($proUid)) { + $oSL = new SwimlanesElements(); + if($oSL->swimlanesElementsExists($proUid)) { + $aFields = $oSL->load($proUid); + $proUid = $aFields['PRO_UID']; + } else { + $k = new Criteria('workflow'); + $k->clearSelectColumns(); + $k->addSelectColumn(TaskPeer::PRO_UID); + $k->add(TaskPeer::TAS_UID, $uidAux ); + $rs = TaskPeer::doSelectRS($k); + $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rs->next(); + $row = $rs->getRow(); + $proUid = $row['PRO_UID']; + } + } + $resultProcess = $infoProcess->getProcessRow($proUid); + } else { + if(array_key_exists('PU_UID', $oDataAux)) { + $c = new Criteria('workflow'); + $c->clearSelectColumns(); + $c->addSelectColumn(ProcessUserPeer::PRO_UID); + $c->add(ProcessUserPeer::PU_UID, $oData->PU_UID); + $oDataset = AppDelegationPeer::doSelectRS($c); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $row = $oDataset->getRow(); + + G::LoadClass('processes'); + $infoProcess = new Processes(); + $resultProcess = $infoProcess->getProcessRow($row['PRO_UID']); + } + } } - + + if(isset($_REQUEST['pro_uid']) && !empty($_REQUEST['pro_uid']) || isset($_REQUEST['PRO_UID']) && !empty($_REQUEST['PRO_UID'])) { + if(isset($_REQUEST['pro_uid']) && !empty($_REQUEST['pro_uid'])) { + $proUid = $_REQUEST['pro_uid']; + } else { + $proUid = $_REQUEST['PRO_UID']; + } + G::LoadClass('processes'); + $infoProcess = new Processes(); + $resultProcess = $infoProcess->getProcessRow($proUid); + } + + //G::LoadClass( 'processMap' ); $oProcessMap = new processMap(new DBConnection()); - + switch ($_REQUEST['action']) { case 'load': $_SESSION['PROCESS'] = $oData->uid; @@ -85,6 +149,7 @@ try { break; case 'process_Export': include (PATH_METHODS . 'processes/processes_Export.php'); + G::auditLog('ExportProcess','Export Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'process_User': include (PATH_METHODS . 'processes/processes_User.php'); @@ -101,18 +166,25 @@ try { break; case 'webEntry_delete': $form = $_REQUEST; - 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"); + if(file_exists(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 . $form['FILENAME']); + } + if(file_exists(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $form['PRO_UID'] . PATH_SEP . str_replace(".php", "Post", $form['FILENAME']) . ".php")) { + 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($_REQUEST['PRO_UID']); + G::auditLog('WebEntry','Delete web entry in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'webEntry_new': $oProcessMap->webEntry_new($oData->PRO_UID); + G::auditLog('WebEntry','Save new web entry in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'assignProcessUser': $oProcessMap->assignProcessUser($oData->PRO_UID, $oData->USR_UID, $oData->TYPE_UID); G::LoadClass('processMap'); $oProcessMap = new ProcessMap(); $oProcessMap->listProcessesUser($oData->PRO_UID); + G::auditLog('AssignRole','Assign new supervisor in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'removeProcessUser': $oProcessMap->removeProcessUser($oData->PU_UID); @@ -122,6 +194,8 @@ try { break; } } + + G::auditLog('RemoveUser','Remove supervisor in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'supervisorDynaforms': $oProcessMap->supervisorDynaforms($oData->pro_uid); @@ -159,9 +233,11 @@ try { break; case 'addTask': $sOutput = $oProcessMap->addTask($oData->uid, $oData->position->x, $oData->position->y); + G::auditLog('AddTask','Add new task in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'addSubProcess': $sOutput = $oProcessMap->addSubProcess($oData->uid, $oData->position->x, $oData->position->y); + G::auditLog('AddSubProcess','Add new sub process in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'taskColor': $oTask->taskColor($oData->pro_uid, $oData->tas_uid); @@ -174,33 +250,44 @@ try { break; case 'saveTaskPosition': $sOutput = $oProcessMap->saveTaskPosition($oData->uid, $oData->position->x, $oData->position->y); + $oTask = new Task(); + $oTask->load($uidAux); + G::auditLog('SaveTaskPosition','Change task position ('.$oTask->getTasTitle().') in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'deleteTask': $sOutput = $oProcessMap->deleteTask($oData->tas_uid); break; case 'addGuide': $sOutput = $oProcessMap->addGuide($oData->uid, $oData->position, $oData->direction); + G::auditLog('Add'.ucwords($oDataAux['direction']).'Line','Add '.$oDataAux['direction'].' line in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'saveGuidePosition': $sOutput = $oProcessMap->saveGuidePosition($oData->uid, $oData->position, $oData->direction); + G::auditLog('SaveGuidePosition','Change '.$oData->direction.' line position in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'deleteGuide': $sOutput = $oProcessMap->deleteGuide($oData->uid); + G::auditLog('DeleteLine','Delete line in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'deleteGuides': $sOutput = $oProcessMap->deleteGuides($oData->pro_uid); + G::auditLog('DeleteLines','Delete all lines in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'addText': $sOutput = $oProcessMap->addText($oData->uid, $oData->label, $oData->position->x, $oData->position->y); + G::auditLog('AddText','Add new text ('.$oDataAux['label'].') in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'updateText': $sOutput = $oProcessMap->updateText($oData->uid, $oData->label); + G::auditLog('UpdateText','Edit text ('.$oDataAux['label'].' ) in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'saveTextPosition': $sOutput = $oProcessMap->saveTextPosition($oData->uid, $oData->position->x, $oData->position->y); + G::auditLog('SaveTextPosition','Change text position in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'deleteText': $sOutput = $oProcessMap->deleteText($oData->uid); + G::auditLog('DeleteText','Delete text in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'dynaforms': $oProcessMap->dynaformsList($oData->pro_uid); @@ -326,9 +413,11 @@ try { case 'exploreDirectory': $_SESSION["PFMDirectory"] = $oData->main_directory; $oProcessMap->exploreDirectory($oData->pro_uid, $oData->main_directory, $oData->directory); + G::auditLog('ProcessFileManager','Upload template ('.$oData->main_directory.') in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'deleteFile': $oProcessMap->deleteFile($oData->pro_uid, $oData->main_directory, $oData->directory, $oData->file); + G::auditLog('ProcessFileManager','Delete template ('.$oData->main_directory.': '.$oData->file.') in process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'deleteDirectory': $oProcessMap->deleteDirectory($oData->pro_uid, $oData->main_directory, $oData->directory, $oData->dir_to_delete); @@ -440,9 +529,11 @@ try { switch ($sDir) { case 'mailTemplates': $sDirectory = PATH_DATA_MAILTEMPLATES . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename']; + G::auditLog('ProcessFileManager','Edit template ('.$_REQUEST['filename'].') in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'public': $sDirectory = PATH_DATA_PUBLIC . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename']; + G::auditLog('ProcessFileManager','Edit public template ('.$_REQUEST['filename'].') in Process "'.$resultProcess['PRO_TITLE'].'"'); break; default: $sDirectory = PATH_DATA_MAILTEMPLATES . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename']; @@ -530,9 +621,11 @@ try { switch ($sDir) { case 'mailTemplates': $sDirectory = PATH_DATA_MAILTEMPLATES . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename']; + G::auditLog('ProcessFileManager','Save template ('.$_REQUEST['filename'].') in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'public': $sDirectory = PATH_DATA_PUBLIC . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename']; + G::auditLog('ProcessFileManager','Save public template ('.$_REQUEST['filename'].') in Process "'.$resultProcess['PRO_TITLE'].'"'); break; default: $sDirectory = PATH_DATA_MAILTEMPLATES . $_REQUEST['pro_uid'] . PATH_SEP . $_REQUEST['filename']; diff --git a/workflow/engine/methods/processes/processes_DeleteObjectPermission.php b/workflow/engine/methods/processes/processes_DeleteObjectPermission.php index fd9f97a8e..15045f61a 100755 --- a/workflow/engine/methods/processes/processes_DeleteObjectPermission.php +++ b/workflow/engine/methods/processes/processes_DeleteObjectPermission.php @@ -58,3 +58,7 @@ try { $result->msg = $e->getMessage(); } print G::json_encode( $result ); + +$infoProcess = new Processes(); +$resultProcess = $infoProcess->getProcessRow($sProcessUID); +G::auditLog('DeletePermissions','Delete Permissions in Process "'.$resultProcess['PRO_TITLE'].'"'); diff --git a/workflow/engine/methods/processes/processes_Save.php b/workflow/engine/methods/processes/processes_Save.php index 60c6824f5..eef57ac1e 100755 --- a/workflow/engine/methods/processes/processes_Save.php +++ b/workflow/engine/methods/processes/processes_Save.php @@ -91,4 +91,5 @@ switch ($function) { } break; -} \ No newline at end of file +} +G::auditLog('EditProcess','Edit Process "'.$_POST['form']['PRO_TITLE'].'"'); \ No newline at end of file diff --git a/workflow/engine/methods/processes/processes_SaveObjectPermission.php b/workflow/engine/methods/processes/processes_SaveObjectPermission.php index 4557e01d5..e606bcfb9 100755 --- a/workflow/engine/methods/processes/processes_SaveObjectPermission.php +++ b/workflow/engine/methods/processes/processes_SaveObjectPermission.php @@ -76,3 +76,7 @@ $oOP->save(); G::LoadClass( 'processMap' ); $oProcessMap = new ProcessMap(); $oProcessMap->getObjectsPermissionsCriteria( $sValue['PRO_UID'] ); + +$infoProcess = new Processes(); +$resultProcess = $infoProcess->getProcessRow($sValue['PRO_UID']); +G::auditLog('ProcessPermissions','Add Permission "'.$sValue['OP_OBJ_TYPE'].'" in Process "'.$resultProcess['PRO_TITLE'].'"'); diff --git a/workflow/engine/methods/steps/steps_SupervisorAjax.php b/workflow/engine/methods/steps/steps_SupervisorAjax.php index e9039ee50..3edf84514 100755 --- a/workflow/engine/methods/steps/steps_SupervisorAjax.php +++ b/workflow/engine/methods/steps/steps_SupervisorAjax.php @@ -41,6 +41,9 @@ try { G::LoadClass( 'processMap' ); $oProcessMap = new ProcessMap(); + + $infoProcess = new Processes(); + $resultProcess = $infoProcess->getProcessRow($_POST['PRO_UID']); switch ($_POST['action']) { case 'availableSupervisorDynaforms': @@ -48,18 +51,22 @@ try { break; case 'assignSupervisorDynaform': $oProcessMap->assignSupervisorStep( $_POST['PRO_UID'], 'DYNAFORM', $_POST['DYN_UID'] ); + G::auditLog('AssignSupervisorDynaform','Assign Supervisor Dynaform in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'removeSupervisorDynaform': $oProcessMap->removeSupervisorStep( $_POST['STEP_UID'], $_POST['PRO_UID'], 'DYNAFORM', $_POST['DYN_UID'], $_POST['STEP_POSITION'] ); + G::auditLog('RemoveSupervisorDynaform','Remove Supervisor Dynaform in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'availableSupervisorInputs': $oProcessMap->availableSupervisorInputs( $_POST['PRO_UID'] ); break; case 'assignSupervisorInput': $oProcessMap->assignSupervisorStep( $_POST['PRO_UID'], 'INPUT_DOCUMENT', $_POST['INP_DOC_UID'] ); + G::auditLog('AssignSupervisorInput','Assign Supervisor Input in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'removeSupervisorInput': $oProcessMap->removeSupervisorStep( $_POST['STEP_UID'], $_POST['PRO_UID'], 'INPUT_DOCUMENT', $_POST['INP_DOC_UID'], $_POST['STEP_POSITION'] ); + G::auditLog('RemoveSupervisorInput','Remove Supervisor Input in Process "'.$resultProcess['PRO_TITLE'].'"'); break; } } catch (Exception $oException) { diff --git a/workflow/engine/methods/tracker/tracker_Ajax.php b/workflow/engine/methods/tracker/tracker_Ajax.php index 8551aeedc..484720438 100755 --- a/workflow/engine/methods/tracker/tracker_Ajax.php +++ b/workflow/engine/methods/tracker/tracker_Ajax.php @@ -25,6 +25,11 @@ try { if (isset( $_POST['form']['action'] )) { $_POST['action'] = $_POST['form']['action']; } + + $infoProcess = new Processes(); + $proFields = $infoProcess->serializeProcess($_POST['PRO_UID']); + $resultProcess = $infoProcess->saveSerializedProcess($proFields); + switch ($_POST['action']) { case 'availableCaseTrackerObjects': G::LoadClass( 'processMap' ); @@ -37,24 +42,28 @@ try { $cto_UID = $oProcessMap->assignCaseTrackerObject( $_POST['PRO_UID'], $_POST['OBJECT_TYPE'], $_POST['OBJECT_UID'] ); $oProcessMap->getCaseTrackerObjectsCriteria( $_POST['PRO_UID'] ); echo $cto_UID; + G::auditLog('CaseTrackers','Assign Case Tracker Object ('.$_POST['OBJECT_TYPE'].') in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'removeCaseTrackerObject': G::LoadClass( 'processMap' ); $oProcessMap = new ProcessMap(); $oProcessMap->removeCaseTrackerObject( $_POST['CTO_UID'], $_POST['PRO_UID'], $_POST['STEP_POSITION'] ); $oProcessMap->getCaseTrackerObjectsCriteria( $_POST['PRO_UID'] ); + G::auditLog('CaseTrackers','Remove Case Tracker Object in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'upCaseTrackerObject': G::LoadClass( 'processMap' ); $oProcessMap = new ProcessMap(); $oProcessMap->upCaseTrackerObject( $_POST['CTO_UID'], $_POST['PRO_UID'], $_POST['STEP_POSITION'] ); $oProcessMap->getCaseTrackerObjectsCriteria( $_POST['PRO_UID'] ); + G::auditLog('CaseTrackers','Move Up Case Tracker Object in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'downCaseTrackerObject': G::LoadClass( 'processMap' ); $oProcessMap = new ProcessMap(); $oProcessMap->downCaseTrackerObject( $_POST['CTO_UID'], $_POST['PRO_UID'], $_POST['STEP_POSITION'] ); $oProcessMap->getCaseTrackerObjectsCriteria( $_POST['PRO_UID'] ); + G::auditLog('CaseTrackers','Move Down Case Tracker Object in Process "'.$resultProcess['PRO_TITLE'].'"'); break; case 'editStagesMap': $oTemplatePower = new TemplatePower( PATH_TPL . 'tracker/stages_Map.html' ); diff --git a/workflow/engine/methods/tracker/tracker_ConditionsSave.php b/workflow/engine/methods/tracker/tracker_ConditionsSave.php index 4ef89a7bd..6fc66202a 100755 --- a/workflow/engine/methods/tracker/tracker_ConditionsSave.php +++ b/workflow/engine/methods/tracker/tracker_ConditionsSave.php @@ -48,6 +48,11 @@ try { $aFields = $oCaseTrackerObject->load( $value['CTO_UID'] ); $aFields['CTO_CONDITION'] = $value['CTO_CONDITION']; $oCaseTrackerObject->update( $aFields ); + + $infoProcess = new Processes(); + $proFields = $infoProcess->serializeProcess($value['PRO_UID']); + $resultProcess = $infoProcess->saveSerializedProcess($proFields); + G::auditLog('CaseTrackers','Save Condition Case Tracker Object ('.$value['CTO_CONDITION'].') in Process "'.$resultProcess['PRO_TITLE'].'"'); } catch (Exception $oException) { die( $oException->getMessage() ); } diff --git a/workflow/engine/methods/tracker/tracker_Save.php b/workflow/engine/methods/tracker/tracker_Save.php index fcc27d712..7fafe2cd6 100755 --- a/workflow/engine/methods/tracker/tracker_Save.php +++ b/workflow/engine/methods/tracker/tracker_Save.php @@ -15,3 +15,8 @@ require_once 'classes/model/CaseTracker.php'; $oCaseTracker = new CaseTracker(); $oCaseTracker->update( $sValue ); +$infoProcess = new Processes(); +$proFields = $infoProcess->serializeProcess($sValue['PRO_UID']); +$resultProcess = $infoProcess->saveSerializedProcess($proFields); +G::auditLog('CaseTrackers','Save Case Tracker Properties ('.$sValue['CT_MAP_TYPE'].') in Process "'.$resultProcess['PRO_TITLE'].'"'); +