Files
luos/workflow/engine/methods/cases/cases_Scheduler_Update.php
jennylee fa1425ba60 PM-555 No se crean los casus configurados con Case Scheduler
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.
2014-10-08 13:12:58 -04:00

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() );
}