Files
luos/workflow/engine/methods/processes/processes_Save.php
marcelo.cuiza f6877ba27d PM-936
Agregar columna en lista de procesos

Se agrego la columna que indica la fecha de la ultima modificacion, de cualquier evento o cambio en el proceso
2015-02-20 14:26:57 -04:00

154 lines
5.9 KiB
PHP
Executable File

<?php
/**
* processes_Save.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.
*/
/*
* This is a ajax response file
*
*/
//G::LoadThirdParty( 'pear/json', 'class.json' );
$function = isset( $_POST['function'] ) ? $_POST['function'] : '';
$infoProcess = new Process();
$resultProcessOld = $infoProcess->load($_POST['form']['PRO_UID']);
switch ($function) {
case 'lookForNameProcess':
require_once 'classes/model/Content.php';
$snameProcess = urldecode( $_POST['NAMEPROCESS'] );
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( 'COUNT(*) AS PROCESS' );
$oCriteria->add( ContentPeer::CON_CATEGORY, 'PRO_TITLE' );
$oCriteria->add( ContentPeer::CON_LANG, SYS_LANG );
$oCriteria->add( ContentPeer::CON_VALUE, $snameProcess );
$oDataset = ContentPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
$aRow = $oDataset->getRow();
print ($aRow['PROCESS'] ? true : false) ;
break;
default:
if (isset( $_GET['PRO_UID'] )) {
$_POST['form']['PRO_UID'] = $_GET['PRO_UID'];
}
$_POST['form']['PRO_TITLE'] = trim( $_POST['form']['PRO_TITLE'] );
G::LoadClass( 'processMap' );
$oProcessMap = new ProcessMap();
if (! isset( $_POST['form']['PRO_UID'] )) {
$_POST['form']['USR_UID'] = $_SESSION['USER_LOGGED'];
//$oJSON = new Services_JSON();
require_once 'classes/model/Task.php';
$sProUid = $oProcessMap->createProcess( $_POST['form'] );
//call plugins
$oData['PRO_UID'] = $sProUid;
$oData['PRO_TEMPLATE'] = (isset( $_POST['form']['PRO_TEMPLATE'] ) && $_POST['form']['PRO_TEMPLATE'] != '') ? $_POST['form']['PRO_TEMPLATE'] : '';
$oData['PROCESSMAP'] = $oProcessMap;
$oPluginRegistry = & PMPluginRegistry::getSingleton();
$oPluginRegistry->executeTriggers( PM_NEW_PROCESS_SAVE, $oData );
G::header( 'location: processes_Map?PRO_UID=' . $sProUid );
die();
} else {
$_POST['form']['PRO_DYNAFORMS'] = array ();
$_POST['form']['PRO_DYNAFORMS']['PROCESS'] = isset( $_POST['form']['PRO_SUMMARY_DYNAFORM'] ) ? $_POST['form']['PRO_SUMMARY_DYNAFORM'] : '';
unset( $_POST['form']['PRO_SUMMARY_DYNAFORM'] );
$oProcessMap->updateProcess( $_POST['form'] );
$sProUid = $_POST['form']['PRO_UID'];
}
//Save Calendar ID for this process
G::LoadClass( "calendar" );
$calendarObj = new Calendar();
$calendarObj->assignCalendarTo( $sProUid, $_POST['form']['PRO_CALENDAR'], 'PROCESS' );
if ($_POST['form']['THETYPE'] == '') {
G::header( 'location: main' );
}
break;
}
$resultProcessNew = $infoProcess->load($_POST['form']['PRO_UID']);
$oldFields = array_diff_assoc($resultProcessOld,$resultProcessNew);
$newFields = array_diff_assoc($resultProcessNew,$resultProcessOld);
$fields = array();
if(array_key_exists('PRO_TITLE', $newFields)) {
$fields[] = G::LoadTranslation('ID_TITLE');
}
if(array_key_exists('PRO_DESCRIPTION', $newFields)) {
$fields[] = G::LoadTranslation('ID_DESCRIPTION');
}
if(array_key_exists('PRO_CALENDAR', $newFields)) {
$fields[] = G::LoadTranslation('ID_CALENDAR');
}
if(array_key_exists('PRO_CATEGORY', $newFields)) {
$fields[] = "Process Category";
}
if(array_key_exists('PRO_SUMMARY_DYNAFORM', $newFields)) {
$fields[] = "Dynaform to show a case summary";
}
if(array_key_exists('PRO_DERIVATION_SCREEN_TPL', $newFields)) {
$fields[] = "Routing Screen Template";
}
if(array_key_exists('PRO_DEBUG', $newFields)) {
$fields[] = G::LoadTranslation('ID_PRO_DEBUG');
}
if(array_key_exists('PRO_SHOW_MESSAGE', $newFields)) {
$fields[] = "Hide the case number and the case title in the steps";
}
if(array_key_exists('PRO_SUBPROCESS', $newFields)) {
$fields[] = "This a sub process";
}
if(array_key_exists('PRO_TRI_DELETED', $newFields)) {
$fields[] = "Execute a trigger when a case is deleted";
}
if(array_key_exists('PRO_TRI_CANCELED', $newFields)) {
$fields[] = "Execute a trigger when a case is canceled";
}
if(array_key_exists('PRO_TRI_PAUSED', $newFields)) {
$fields[] = "Execute a trigger when a case is paused";
}
if(array_key_exists('PRO_TRI_REASSIGNED', $newFields)) {
$fields[] = "Execute a trigger when a case is reassigned";
}
if(array_key_exists('PRO_TRI_UNPAUSED', $newFields)) {
$fields[] = "Execute a trigger when a case is unpaused";
}
if(array_key_exists('PRO_TYPE_PROCESS', $newFields)) {
$fields[] = "Type of process (only owners can edit private processes)";
}
G::auditLog('EditProcess','Edit fields ('.implode(', ',$fields).') in process "'.$_POST['form']['PRO_TITLE'].'"');
if(isset($_POST['form']['PRO_UID']) && !empty($_POST['form']['PRO_UID'])) {
$valuesProcess['PRO_UID'] = $_POST['form']['PRO_UID'];
$valuesProcess['PRO_UPDATE_DATE'] = date("Y-m-d H:i:s");
G::LoadClass('processes');
$infoProcess = new Processes();
$resultProcess = $infoProcess->updateProcessRow($valuesProcess);
}