PRO_UID; $EVN_UID = $params->EVN_UID; $oEvent = new Event(); $oData = $oEvent->load( $EVN_UID ); $sch_uid = $oData['EVN_ACTION']; if ($sch_uid != '') { G::LoadClass( 'processMap' ); $oProcessMap = new processMap( new DBConnection() ); $rows = $oProcessMap->caseNewSchedulerList( $sch_uid ); if ($rows['SCH_OPTION'] == '3') { $sch_start_day = explode( '|', $rows['SCH_START_DAY'] ); $count = count( $sch_start_day ); switch ($count) { case 1: $rows['SCH_START_DAY'] = $sch_start_day[0]; break; case 2: $rows['SCH_START_DAY'] = $sch_start_day[0]; $rows['SCH_START_DAY_OPT_2_WEEKS'] = $sch_start_day[1]; break; case 3: $rows['SCH_START_DAY'] = $sch_start_day[0]; $rows['SCH_START_DAY_OPT_2_WEEKS'] = $sch_start_day[1]; $rows['SCH_START_DAY_OPT_2_DAYS_WEEK'] = $sch_start_day[2]; break; } } if ($rows['SCH_START_DATE'] != '') { $sch_str_dt = explode( ' ', $rows['SCH_START_DATE'] ); $rows['SCH_START_DATE'] = $sch_str_dt[0]; } if ($rows['SCH_END_DATE'] != '') { $sch_str_dt = explode( ' ', $rows['SCH_END_DATE'] ); $rows['SCH_END_DATE'] = $sch_str_dt[0]; } $this->success = true; $this->data = $rows; } else { $this->success = false; } } function delete ($params) { require_once 'classes/model/CaseScheduler.php'; require_once 'classes/model/Event.php'; $SCH_UID = $params->SCH_UID; $EVN_UID = $params->EVN_UID; $oCaseScheduler = new CaseScheduler(); $oCaseScheduler->remove( $SCH_UID ); $oEvent = new Event(); $editE = array (); $editE['EVN_UID'] = $EVN_UID; $editE['EVN_ACTION'] = ''; $oEvent->update( $editE ); $this->success = true; $this->msg = G::LoadTranslation( 'ID_SCHEDULER_SUCCESS_DELETE' ); } function changeStatus ($params) { require_once 'classes/model/CaseScheduler.php'; $SCH_UID = $params->SCH_UID; $oCaseScheduler = new CaseScheduler(); $oCaseScheduler->changeStatus( $SCH_UID ); $oCaseScheduler->load( $SCH_UID ); $this->success = true; $this->SCH_STATUS = $oCaseScheduler->getSchState(); $this->msg = G::LoadTranslation( 'ID_SCHEDULER_SUCCESS_CHANGE_STATUS' ); } function checkCredentials ($params) { require_once 'classes/model/Event.php'; require_once 'classes/model/Users.php'; require_once 'classes/model/TaskUser.php'; require_once 'classes/model/GroupUser.php'; $sPRO_UID = $params->PRO_UID; $sEVN_UID = $params->EVN_UID; $sWS_USER = trim( $params->WS_USER ); $sWS_PASS = trim( $params->WS_PASS ); if (G::is_https()) { $http = 'https://'; } else { $http = 'http://'; } $endpoint = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/services/wsdl2'; @$client = new SoapClient( $endpoint ); $user = $sWS_USER; $pass = $sWS_PASS; $parameters = array ('userid' => $user,'password' => $pass ); $result = $client->__SoapCall( 'login', array ($parameters ) ); $fields['status_code'] = $result->status_code; $fields['message'] = 'ProcessMaker WebService version: ' . $result->version . "\n" . $result->message; $fields['version'] = $result->version; $fields['time_stamp'] = $result->timestamp; $messageCode = true; $message = $result->message; G::LoadClass( 'Task' ); //G::LoadClass ( 'Event' ); G::LoadClass( 'User' ); G::LoadClass( 'TaskUser' ); G::LoadClass( 'Groupwf' ); $event = new Event(); $event->load( $sEVN_UID ); $sTASKS = $event->getEvnTasUidTo(); $task = new Task(); $task->load( $sTASKS ); $sTASKS_SEL = $task->getTasTitle(); if (! class_exists( 'GroupUser' )) { G::LoadClass( 'GroupUser' ); } // if the user has been authenticated, then check if has the rights or // permissions to create the webentry if ($result->status_code == 0) { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( UsersPeer::USR_UID ); $oCriteria->addSelectColumn( TaskUserPeer::USR_UID ); $oCriteria->addSelectColumn( TaskUserPeer::TAS_UID ); $oCriteria->addJoin( TaskUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->add( TaskUserPeer::TAS_UID, $sTASKS ); $oCriteria->add( UsersPeer::USR_USERNAME, $sWS_USER ); //$oCriteria->add(TaskUserPeer::TU_RELATION,1); $userIsAssigned = TaskUserPeer::doCount( $oCriteria ); // if the user is not assigned directly, maybe a have the task a group with the user if ($userIsAssigned < 1) { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( UsersPeer::USR_UID ); $oCriteria->addJoin( UsersPeer::USR_UID, GroupUserPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->addJoin( GroupUserPeer::GRP_UID, TaskUserPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->add( TaskUserPeer::TAS_UID, $sTASKS ); $oCriteria->add( UsersPeer::USR_USERNAME, $sWS_USER ); $userIsAssigned = GroupUserPeer::doCount( $oCriteria ); if (! ($userIsAssigned >= 1)) { $messageCode = false; $message = "The User \"" . $sWS_USER . "\" doesn't have the task \"" . $sTASKS_SEL . "\" assigned."; } } } else { $messageCode = false; } $this->success = $messageCode; $this->msg = $message; } 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."
"; $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' ); } } function loadCS ($params) { require_once 'classes/model/CaseScheduler.php'; $SCH_UID = $params->SCH_UID; $oCaseScheduler = new CaseScheduler(); $data = $oCaseScheduler->load( $SCH_UID ); $start_date = $data['SCH_START_DATE']; $start_date = date( 'Y-m-d', strtotime( $start_date ) ); $data['START_DATE'] = $start_date; $end_date = $data['SCH_END_DATE']; if ($end_date != '') { $end_date = date( 'Y-m-d', strtotime( $end_date ) ); } $data['END_DATE'] = $end_date; $exec_time = $data['SCH_START_TIME']; $exec_time = date( 'H:i', strtotime( $exec_time ) ); $data['EXEC_TIME'] = $exec_time; $weeks = $data['SCH_WEEK_DAYS']; $week = explode( '|', $weeks ); $w1 = $w2 = $w3 = $w4 = $w5 = $w6 = $w7 = false; foreach ($week as $w) { switch ($w) { case 1: $w1 = true; break; case 2: $w2 = true; break; case 3: $w3 = true; break; case 4: $w4 = true; break; case 5: $w5 = true; break; case 6: $w6 = true; break; case 7: $w7 = true; break; } } $data['W1'] = $w1; $data['W2'] = $w2; $data['W3'] = $w3; $data['W4'] = $w4; $data['W5'] = $w5; $data['W6'] = $w6; $data['W7'] = $w7; $years = $data['SCH_MONTHS']; $year = explode( '|', $years ); $m1 = $m2 = $m3 = $m4 = $m5 = $m6 = $m7 = $m8 = $m9 = $m10 = $m11 = $m12 = false; foreach ($year as $month) { switch ($month) { case 1: $m1 = true; break; case 2: $m2 = true; break; case 3: $m3 = true; break; case 4: $m4 = true; break; case 5: $m5 = true; break; case 6: $m6 = true; break; case 7: $m7 = true; break; case 8: $m8 = true; break; case 9: $m9 = true; break; case 10: $m10 = true; break; case 11: $m11 = true; break; case 12: $m12 = true; break; } } $data['M1'] = $m1; $data['M2'] = $m2; $data['M3'] = $m3; $data['M4'] = $m4; $data['M5'] = $m5; $data['M6'] = $m6; $data['M7'] = $m7; $data['M8'] = $m8; $data['M9'] = $m9; $data['M10'] = $m10; $data['M11'] = $m11; $data['M12'] = $m12; $start_options = $data['SCH_START_DAY']; $options = explode( '|', $start_options ); $data['TYPE_CMB'] = $options[0]; if ($options[0] == 1) { $data['EACH_DAY'] = $options[1]; } else { $data['CMB_1'] = $options[1]; $data['CMB_2'] = $options[2]; } $this->success = true; $this->data = $data; } } //End caseSchedulerProxy