PROBLEMA: En la creacion de Cases Schedulers se realizaba el guardado de el password del usuario con el algoritmo md5 siempre, lo cual generaba un password distinto al guardado en la base de datos cuando el ambiente estaba configurado con sha256. SOLUCION: Se utiliza la funcion hashPassword de bootstrap para encriptar el password con el algoritmo q se esta usando en el ambiente.
285 lines
12 KiB
PHP
Executable File
285 lines
12 KiB
PHP
Executable File
<?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';
|
|
|
|
if (empty( $_POST )) {
|
|
die( 'The information sended is empty!' );
|
|
}
|
|
$aData['SCH_UID'] = $_POST['form']['SCH_UID'];
|
|
$aData['SCH_NAME'] = $_POST['form']['SCH_NAME'];
|
|
$aData['PRO_UID'] = $_POST['form']['PRO_UID'];
|
|
$aData['TAS_UID'] = $_POST['form']['TAS_UID'];
|
|
|
|
$oCaseScheduler = new CaseScheduler();
|
|
$oCaseScheduler->Load( $aData['SCH_UID'] );
|
|
|
|
$aData['SCH_DEL_USER_NAME'] = $_POST['form']['SCH_USER_NAME'];
|
|
if ($_POST['form']['SCH_USER_PASSWORD'] != 'DefaultPM') {
|
|
$aData['SCH_DEL_USER_PASS'] = Bootstrap::hashPassword($_POST['form']['SCH_USER_PASSWORD']);
|
|
}
|
|
$aData['SCH_DEL_USER_UID'] = $_POST['form']['SCH_USER_UID'];
|
|
|
|
// $aData['SCH_TIME_NEXT_RUN'] = time();
|
|
//$aData['SCH_LAST_RUN_TIME'] = time();
|
|
// $aData['SCH_STATE'] = 'ACTIVE';
|
|
// $aData['SCH_LAST_STATE'] = 'ACTIVE';
|
|
$aData['USR_UID'] = $_SESSION['USER_LOGGED'];
|
|
|
|
$sOption = $_POST['form']['SCH_OPTION'];
|
|
$aData['SCH_OPTION'] = $sOption;
|
|
|
|
$sDateTmp = $_POST['form']['SCH_START_DATE'];
|
|
$sTimeTmp = $_POST['form']['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 ) );
|
|
$previousStartTime = date( 'Y-m-d', strtotime( $_POST['form']['PREV_SCH_START_DATE'] ) ) . ' ' . date( 'H:i:s', strtotime( $_POST['form']['PREV_SCH_START_TIME'] ) );
|
|
$previousStartDate = date( 'Y-m-d', strtotime( $_POST['form']['PREV_SCH_START_DATE'] ) ) . ' ' . date( 'H:i:s', strtotime( $_POST['form']['PREV_SCH_START_TIME'] ) );
|
|
|
|
$sValue = '';
|
|
$sDaysPerformTask = '';
|
|
$sWeeks = '';
|
|
$sMonths = '';
|
|
$sMonths = '';
|
|
$sStartDay = '';
|
|
$nSW = 0;
|
|
|
|
switch ($sOption) {
|
|
case '1':
|
|
// Option 1
|
|
$sValue = $_POST['form']['SCH_DAYS_PERFORM_TASK'];
|
|
switch ($sValue) {
|
|
case '1':
|
|
$aData['SCH_DAYS_PERFORM_TASK'] = $_POST['form']['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['form']['SCH_DAYS_PERFORM_TASK_OPT_3'];
|
|
$aData['SCH_DAYS_PERFORM_TASK'] = $_POST['form']['SCH_DAYS_PERFORM_TASK'] . '|' . $_POST['form']['SCH_DAYS_PERFORM_TASK_OPT_3'];
|
|
break;
|
|
}
|
|
break;
|
|
case '2':
|
|
// If the option is zero, set by default 1
|
|
if (empty( $_POST['form']['SCH_EVERY_DAYS'] )) {
|
|
$nEveryDays = 1;
|
|
} else {
|
|
$nEveryDays = $_POST['form']['SCH_EVERY_DAYS'];
|
|
}
|
|
$aData['SCH_EVERY_DAYS'] = $nEveryDays;
|
|
$sWeeks = '';
|
|
if (! empty( $_POST['form']['SCH_WEEK_DAYS'] )) {
|
|
$aWeekDays = $_POST['form']['SCH_WEEK_DAYS'];
|
|
foreach ($aWeekDays as $value) {
|
|
$sWeeks = $sWeeks . $value . '|';
|
|
}
|
|
}
|
|
if (! empty( $_POST['form']['SCH_WEEK_DAYS_2'] )) {
|
|
$aWeekDays2 = $_POST['form']['SCH_WEEK_DAYS_2'];
|
|
foreach ($aWeekDays2 as $value) {
|
|
$sWeeks = $sWeeks . $value . '|';
|
|
}
|
|
}
|
|
$sStartTime = $_POST['form']['SCH_START_TIME'];
|
|
$aData['SCH_WEEK_DAYS'] = $sWeeks;
|
|
break;
|
|
case '3':
|
|
$nStartDay = $_POST['form']['SCH_START_DAY'];
|
|
if ($nStartDay == 1) {
|
|
$aData['SCH_START_DAY'] = $nStartDay . '|' . $_POST['form']['SCH_START_DAY_OPT_1'];
|
|
} else {
|
|
$aData['SCH_START_DAY'] = $nStartDay . '|' . $_POST['form']['SCH_START_DAY_OPT_2_WEEKS'] . '|' . $_POST['form']['SCH_START_DAY_OPT_2_DAYS_WEEK'];
|
|
}
|
|
|
|
$sMonths = '';
|
|
if (! empty( $_POST['form']['SCH_MONTHS'] )) {
|
|
$aMonths = $_POST['form']['SCH_MONTHS'];
|
|
foreach ($aMonths as $value) {
|
|
$sMonths = $sMonths . $value . '|';
|
|
}
|
|
}
|
|
if (! empty( $_POST['form']['SCH_MONTHS_2'] )) {
|
|
$aMonths2 = $_POST['form']['SCH_MONTHS_2'];
|
|
foreach ($aMonths2 as $value) {
|
|
$sMonths = $sMonths . $value . '|';
|
|
}
|
|
}
|
|
if (! empty( $_POST['form']['SCH_MONTHS_3'] )) {
|
|
$aMonths3 = $_POST['form']['SCH_MONTHS_3'];
|
|
foreach ($aMonths3 as $value) {
|
|
$sMonths = $sMonths . $value . '|';
|
|
}
|
|
}
|
|
$aData['SCH_MONTHS'] = $sMonths;
|
|
$sStartDay = $aData['SCH_START_DAY'];
|
|
$sValue = $nStartDay;
|
|
break;
|
|
|
|
}
|
|
if (trim( $_POST['form']['SCH_END_DATE'] ) != '') {
|
|
$aData['SCH_END_DATE'] = $_POST['form']['SCH_END_DATE'];
|
|
}
|
|
// if the start date has changed then recalculate the next run time
|
|
if ($_POST['form']['SCH_START_DATE'] == $_POST['form']['PREV_SCH_START_DATE']) {
|
|
$recalculateDate = false;
|
|
} else {
|
|
$recalculateDate = true;
|
|
}
|
|
if (date( 'H:i:s', strtotime( $_POST['form']['SCH_START_TIME'] ) ) == date( 'H:i:s', strtotime( $_POST['form']['PREV_SCH_START_TIME'] ) )) {
|
|
$recalculateTime = false;
|
|
} else {
|
|
$recalculateTime = true;
|
|
}
|
|
// if the start date has changed then recalculate the next run time
|
|
|
|
|
|
// var_dump($recalculateTime);
|
|
// die();
|
|
$nActualTime = $_POST['form']['SCH_START_TIME'];
|
|
if (($sOption != '1') && ($sOption != '4') && ($sOption != '5')) {
|
|
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['form']['SCH_START_TIME'] . ":00";
|
|
if ($recalculateDate) {
|
|
$aData['SCH_TIME_NEXT_RUN'] = date( 'Y' ) . '-' . $row . '-' . $aStartDay[1] . ' ' . $startTime;
|
|
} elseif ($recalculateTime) {
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00";
|
|
}
|
|
break;
|
|
} else {
|
|
if ($recalculateDate) {
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
|
|
} elseif ($recalculateTime) {
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00";
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if ($recalculateDate) {
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->updateNextRun( $sOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp );
|
|
} elseif ($recalculateTime) {
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00";
|
|
}
|
|
}
|
|
// print_r ($aData['SCH_TIME_NEXT_RUN']);
|
|
// die;
|
|
} else {
|
|
if ($sOption == '4') {
|
|
$aData['SCH_END_DATE'] = $aData['SCH_START_TIME'];
|
|
}
|
|
if ($recalculateDate) {
|
|
$aData['SCH_TIME_NEXT_RUN'] = $aData['SCH_START_TIME'];
|
|
} elseif ($recalculateTime) {
|
|
|
|
// $Fields = $oCaseScheduler->Load($aData['SCH_UID']);
|
|
// $Fields['SCH_LAST_STATE'] = $aRow['SCH_STATE'];
|
|
// $Fields['SCH_STATE'] = 'PROCESSED';
|
|
// $this->Update($Fields);
|
|
$aData['SCH_TIME_NEXT_RUN'] = $oCaseScheduler->getSchTimeNextRun( "Y-m-d" ) . " " . $_POST['form']['SCH_START_TIME'] . ":00";
|
|
}
|
|
// var_dump($recalculateTime);
|
|
// var_dump($aData['SCH_TIME_NEXT_RUN']);
|
|
// die;
|
|
if ($sOption == '5') {
|
|
$date = $oCaseScheduler->getSchLastRunTime();
|
|
if ($date == null) {
|
|
$date = $oCaseScheduler->getSchStartTime();
|
|
}
|
|
$date = strtotime( $date );
|
|
$nextRun = $_POST['form']['SCH_REPEAT_EVERY'] * 60 * 60;
|
|
$aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY'];
|
|
$date += $nextRun;
|
|
$date = date( "Y-m-d H:i", $date );
|
|
$aData['SCH_TIME_NEXT_RUN'] = $date;
|
|
}
|
|
}
|
|
|
|
if (! empty( $_POST['form']['SCH_REPEAT_TASK_CHK'] )) {
|
|
$nOptEvery = $_POST['form']['SCH_REPEAT_EVERY_OPT'];
|
|
if ($nOptEvery == 2) {
|
|
$aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY'] * 60;
|
|
} else {
|
|
$aData['SCH_REPEAT_EVERY'] = $_POST['form']['SCH_REPEAT_EVERY'];
|
|
}
|
|
|
|
}
|
|
// var_dump ($aData['SCH_TIME_NEXT_RUN']);
|
|
// die;
|
|
$oCaseScheduler->Update( $aData );
|
|
if ((isset( $_POST['form']['CASE_SH_PLUGIN_UID'] )) && ($_POST['form']['CASE_SH_PLUGIN_UID'] != "")) {
|
|
$params = explode( "--", $_REQUEST['form']['CASE_SH_PLUGIN_UID'] );
|
|
$oPluginRegistry = & PMPluginRegistry::getSingleton();
|
|
$activePluginsForCaseScheduler = $oPluginRegistry->getCaseSchedulerPlugins();
|
|
|
|
foreach ($activePluginsForCaseScheduler as $key => $caseSchedulerPluginDetail) {
|
|
if (($caseSchedulerPluginDetail->sNamespace == $params[0]) && ($caseSchedulerPluginDetail->sActionId == $params[1])) {
|
|
$caseSchedulerSelected = $caseSchedulerPluginDetail;
|
|
|
|
}
|
|
}
|
|
if ((isset( $caseSchedulerSelected )) && (is_object( $caseSchedulerSelected ))) {
|
|
//Save the form
|
|
$oData = $_POST['pluginFields'];
|
|
$oData['SCH_UID'] = $aData['SCH_UID'];
|
|
$oPluginRegistry->executeMethod( $caseSchedulerPluginDetail->sNamespace, $caseSchedulerPluginDetail->sActionSave, $oData );
|
|
}
|
|
}
|
|
|
|
G::header( 'location: cases_Scheduler_List?PRO_UID=' . $_POST['form']['PRO_UID'] );
|
|
|
|
} catch (Exception $oException) {
|
|
die( $oException->getMessage() );
|
|
}
|
|
|