Esempio n. 1
0
    /**

     * Create Case Scheduler Rows from an array, removing those Objects

     * with the same UID, and recreaiting the records from the array data.

     *

     * @param $CaseScheduler array.

     * @return void

     */

    public function createCaseSchedulerRows ($CaseScheduler)

    {

        foreach ($CaseScheduler as $key => $row) {

            $oCaseScheduler = new CaseScheduler();

            if ($oCaseScheduler->Exists( $row['SCH_UID'] )) {

                $oCaseScheduler->remove( $row['SCH_UID'] );

            }

            $res = $oCaseScheduler->create( $row );

        }

        return;

    }
Esempio n. 2
0
 public function addCaseScheduler($schUid)
 {
     try {
         $caseScheduler = new \CaseScheduler();
         $data = array('SCH_NAME' => '', 'SCH_DEL_USER_NAME' => '', 'SCH_DEL_USER_UID' => '', 'PRO_UID' => $this->proUid, 'TAS_UID' => '', 'SCH_TIME_NEXT_RUN' => date('Y-m-d H:i:s'), 'SCH_LAST_RUN_TIME' => NULL, 'SCH_STATE' => '', 'SCH_LAST_STATE' => '', 'USR_UID' => '', 'SCH_OPTION' => '', 'SCH_START_TIME' => date('Y-m-d H:i:s'), 'SCH_START_DATE' => date('Y-m-d H:i:s'), 'SCH_DAYS_PERFORM_TASK' => '', 'SCH_EVERY_DAYS' => NULL, 'SCH_WEEK_DAYS' => '', 'SCH_START_DAY' => '', 'SCH_START_DAY_OPT_1' => '', 'SCH_START_DAY_OPT_2' => '', 'SCH_MONTHS' => '', 'SCH_END_DATE' => date('Y-m-d H:i:s'), 'SCH_REPEAT_EVERY' => '', 'SCH_REPEAT_STOP_IF_RUNNING' => '', 'CASE_SH_PLUGIN_UID' => NULL, 'SCH_DEL_USER_PASS' => '', 'SCH_UID' => $schUid, 'SCH_REPEAT_UNTIL' => '');
         self::log("Adding Case Scheduler with data: ", $data);
         $caseSchedulerUid = $caseScheduler->create($data);
         self::log("Adding Case Scheduler success!, created case Scheduler id: ", $caseSchedulerUid);
         return $caseSchedulerUid;
     } catch (\Exception $oError) {
         throw $oError;
     }
 }
        }
        $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());
}
 function save($params)
 {
     require_once 'classes/model/CaseScheduler.php';
     $oCaseScheduler = new CaseScheduler();
     $aData['SCH_UID'] = G::generateUniqueID();
     $aData['SCH_NAME'] = $params->fDescription;
     //$_POST['form']['SCH_NAME'];
     $aData['SCH_DEL_USER_NAME'] = $params->fUser;
     //$_POST['form']['SCH_USER_NAME'];
     $aData['SCH_DEL_USER_PASS'] = G::encryptOld($params->fPassword);
     $aData['SCH_DEL_USER_UID'] = $params->usr_uid;
     //$_POST['form']['SCH_USER_UID'];
     $aData['PRO_UID'] = $params->pro_uid;
     //$_POST['form']['PRO_UID'];
     $aData['TAS_UID'] = $params->tas_uid;
     //$_POST['form']['TAS_UID'];
     $aData['SCH_STATE'] = 'ACTIVE';
     $aData['SCH_LAST_STATE'] = 'CREATED';
     // 'ACTIVE';
     $aData['USR_UID'] = $_SESSION['USER_LOGGED'];
     $sOption = $params->fType;
     //$_POST['form']['SCH_OPTION'];
     switch ($sOption) {
         case 'Daily':
             $sOption = '1';
             break;
         case 'Weekly':
             $sOption = '2';
             break;
         case 'Monthly':
             $sOption = '3';
             break;
         default:
             $sOption = '4';
             break;
     }
     $aData['SCH_OPTION'] = $sOption;
     //    if ($_POST['form']['SCH_START_DATE']!=''){
     //      $sDateTmp = $_POST['form']['SCH_START_DATE'];
     //    } else {
     //      $sDateTmp = date('Y-m-d');
     //    }
     $sDateTmp = $params->SCH_START_DATE;
     $sTimeTmp = $params->SCH_START_TIME;
     //$_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));
     //g::pr($aData);
     $nActualTime = $sTimeTmp;
     //date("Y-m-d  H:i:s"); // time();
     //$nActualDate = date("Y-m-d  H:i:s");
     $sValue = '';
     $sDaysPerformTask = '';
     $sWeeks = '';
     $sMonths = '';
     $sMonths = '';
     $sStartDay = '';
     $nSW = 0;
     switch ($sOption) {
         case '1':
             // Option 1
             $sValue = isset($params->SCH_DAYS_PERFORM_TASK) ? $params->SCH_DAYS_PERFORM_TASK : '1';
             //$_POST['form']['SCH_DAYS_PERFORM_TASK'];
             switch ($sValue) {
                 case '1':
                     $aData['SCH_DAYS_PERFORM_TASK'] = $sValue . '|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 = $params->SCH_DAYS_PERFORM_TASK_OPT_3;
                     $aData['SCH_DAYS_PERFORM_TASK'] = $params->SCH_DAYS_PERFORM_TASK . '|' . $params->SCH_DAYS_PERFORM_TASK_OPT_3;
                     break;
             }
             break;
         case '2':
             // If the option is zero, set by default 1
             $sWeeks = '';
             if (isset($params->W1)) {
                 if ($sWeeks != '') {
                     $sWeeks .= '|';
                 }
                 $sWeeks .= '1';
             }
             if (isset($params->W2)) {
                 if ($sWeeks != '') {
                     $sWeeks .= '|';
                 }
                 $sWeeks .= '2';
             }
             if (isset($params->W3)) {
                 if ($sWeeks != '') {
                     $sWeeks .= '|';
                 }
                 $sWeeks .= '3';
             }
             if (isset($params->W4)) {
                 if ($sWeeks != '') {
                     $sWeeks .= '|';
                 }
                 $sWeeks .= '4';
             }
             if (isset($params->W5)) {
                 if ($sWeeks != '') {
                     $sWeeks .= '|';
                 }
                 $sWeeks .= '5';
             }
             if (isset($params->W6)) {
                 if ($sWeeks != '') {
                     $sWeeks .= '|';
                 }
                 $sWeeks .= '6';
             }
             if (isset($params->W7)) {
                 if ($sWeeks != '') {
                     $sWeeks .= '|';
                 }
                 $sWeeks .= '7';
             }
             $sStartTime = $params->SCH_START_TIME;
             $aData['SCH_WEEK_DAYS'] = $sWeeks;
             $aData['SCH_START_DAY'] = '';
             //
             break;
         case '3':
             $nStartDay = $params->SCH_START_DAY;
             if ($nStartDay == 'Day of Month') {
                 $nStartDay = 1;
             }
             if ($nStartDay == 'The Day') {
                 $nStartDay = 2;
             }
             if ($nStartDay == 1) {
                 $aData['SCH_START_DAY'] = $nStartDay . '|' . $params->SCH_START_DAY_OPT_1;
             } else {
                 $opt2weeks = $params->SCH_START_DAY_OPT_2_WEEKS;
                 switch ($opt2weeks) {
                     case 'First':
                         $opt2weeks = 1;
                         break;
                     case 'Second':
                         $opt2weeks = 2;
                         break;
                     case 'Third':
                         $opt2weeks = 3;
                         break;
                     case 'Fourth':
                         $opt2weeks = 4;
                         break;
                     case 'Last':
                         $opt2weeks = 5;
                         break;
                 }
                 $opt2days = $params->SCH_START_DAY_OPT_2_DAYS_WEEK;
                 switch ($opt2days) {
                     case 'Monday':
                         $opt2days = 1;
                         break;
                     case 'Tuesday':
                         $opt2days = 2;
                         break;
                     case 'Wednesday':
                         $opt2days = 3;
                         break;
                     case 'Thursday':
                         $opt2days = 4;
                         break;
                     case 'Friday':
                         $opt2days = 5;
                         break;
                     case 'Saturday':
                         $opt2days = 6;
                         break;
                     case 'Sunday':
                         $opt2days = 7;
                         break;
                 }
                 $aData['SCH_START_DAY'] = $nStartDay . '|' . $opt2weeks . '|' . $opt2days;
             }
             $sMonths = '';
             if (isset($params->M1)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '1';
             }
             if (isset($params->M2)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '2';
             }
             if (isset($params->M3)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '3';
             }
             if (isset($params->M4)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '4';
             }
             if (isset($params->M5)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '5';
             }
             if (isset($params->M6)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '6';
             }
             if (isset($params->M7)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '7';
             }
             if (isset($params->M8)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '8';
             }
             if (isset($params->M9)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '9';
             }
             if (isset($params->M10)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '10';
             }
             if (isset($params->M11)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '11';
             }
             if (isset($params->M12)) {
                 if ($sMonths != '') {
                     $sMonths .= '|';
                 }
                 $sMonths .= '12';
             }
             //        if(!empty($params->SCH_MONTHS)){
             //          $aMonths = $params->SCH_MONTHS;
             //          foreach($aMonths as $value) {
             //            $sMonths = $sMonths . $value . '|' ;
             //          }
             //        }
             //        if(!empty($params->SCH_MONTHS_2)){
             //          $aMonths2 = $params->SCH_MONTHS_2;
             //          foreach($aMonths2 as $value) {
             //            $sMonths = $sMonths . $value . '|' ;
             //          }
             //        }
             //        if(!empty($params->SCH_MONTHS_3)){
             //          $aMonths3 = $params->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 = $params->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 (isset($params->SCH_END_DATE)) {
         if (trim($params->SCH_END_DATE) != '') {
             $aData['SCH_END_DATE'] = $params->SCH_END_DATE;
         }
     }
     if (!empty($params->SCH_REPEAT_TASK_CHK)) {
         $nOptEvery = $params->SCH_REPEAT_EVERY_OPT;
         if ($nOptEvery == 2) {
             $aData['SCH_REPEAT_EVERY'] = $params->SCH_REPEAT_EVERY_OPT * 60;
         } else {
             $aData['SCH_REPEAT_EVERY'] = $params->SCH_REPEAT_EVERY_OPT;
         }
     }
     if (isset($_POST['form']['CASE_SH_PLUGIN_UID']) && $_POST['form']['CASE_SH_PLUGIN_UID'] != "") {
         $aData['CASE_SH_PLUGIN_UID'] = $_POST['form']['CASE_SH_PLUGIN_UID'];
     }
     //$aData['SCH_END_DATE'] = "2020-12-30";
     //g::pr($aData);
     $sch_uid = $params->sch_uid;
     if ($sch_uid != '') {
         $aData['SCH_UID'] = $sch_uid;
         $oCaseScheduler->Update($aData);
         $sw_update = true;
     } else {
         $oCaseScheduler->create($aData);
         $sch_uid = $oCaseScheduler->getSchUid();
         $sw_update = false;
     }
     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);
         }
     }
     //Added by Qennix
     //Update Start Time Event in BPMN
     require_once 'classes/model/Event.php';
     require_once 'classes/model/Task.php';
     $oTask = new Task();
     $oTask->load($params->tas_uid);
     $evn_uid = $oTask->getStartingEvent();
     $tas_name = $oTask->getTasTitle();
     $event = new Event();
     $editEvent = array();
     $editEvent['EVN_UID'] = $evn_uid;
     $editEvent['EVN_ACTION'] = $sch_uid;
     $event->update($editEvent);
     //End Adding
     $sch = new CaseScheduler();
     $sch->load($sch_uid);
     $this->success = true;
     $this->SCH_UID = $sch_uid;
     $this->NEXT = $sch->getSchTimeNextRun();
     $this->DESCRIPTION = $sch->getSchName();
     $this->TAS_NAME = $tas_name;
     if ($sw_update) {
         $this->msg = G::LoadTranslation('ID_SCHEDULER_SUCCESS_UPDATE');
     } else {
         $this->msg = G::LoadTranslation('ID_SCHEDULER_SUCCESS_NEW');
     }
 }