diff --git a/app/Console/Commands/ScheduleRunCommand.php b/app/Console/Commands/ScheduleRunCommand.php index 36b4eb22f..10937cb62 100755 --- a/app/Console/Commands/ScheduleRunCommand.php +++ b/app/Console/Commands/ScheduleRunCommand.php @@ -2,11 +2,9 @@ namespace App\Console\Commands; -use Maveriks\WebApplication; -use \Illuminate\Support\Carbon; +use Illuminate\Support\Carbon; use Illuminate\Console\Scheduling\ScheduleRunCommand as BaseCommand; -use Illuminate\Support\Facades\Log; -use ProcessMaker\BusinessModel\TaskSchedulerBM; +use Maveriks\WebApplication; use ProcessMaker\Model\TaskScheduler; class ScheduleRunCommand extends BaseCommand @@ -24,11 +22,11 @@ class ScheduleRunCommand extends BaseCommand { $this->startedAt = Carbon::now(); $this->signature = "schedule:run"; - $this->signature .= ' - {--workspace=workflow : ProcessMaker Indicates the workspace to be processed.} - {--user=apache : ProcessMaker Indicates the user to execute the crons.} + $this->signature .= " + {--workspace=workflow : Workspace to use.} + {--user=apache : Operating system's user who executes the crons.} {--processmakerPath=./ : ProcessMaker path.} - '; + "; $this->description .= ' (ProcessMaker has extended this command)'; parent::__construct($schedule); } @@ -54,7 +52,7 @@ class ScheduleRunCommand extends BaseCommand $ending = isset($p->startingTime) ? $p->endingTime : "23:59"; $timezone = isset($p->timezone) && $p->timezone != "" ? $p->timezone : date_default_timezone_get(); - $body = str_replace("-c", $user . " -c", $p->body); + $body = str_replace("-c", $user . " -c", $p->body); $that->schedule->exec($body)->cron($p->expression)->between($starting, $ending)->timezone($timezone)->when(function () use ($p) { $now = Carbon::now(); $result = false; diff --git a/workflow/engine/methods/scheduler/index.php b/workflow/engine/methods/scheduler/index.php index 1545b3824..3b6ba39b0 100755 --- a/workflow/engine/methods/scheduler/index.php +++ b/workflow/engine/methods/scheduler/index.php @@ -1,37 +1,27 @@ \n" . - "var timezoneArray = " . G::json_encode($arrayTimeZoneId) . ";\n" . - "\n"; - echo($js); + global $G_PUBLISH; + $G_PUBLISH = new Publisher(); + $headPublisher = headPublisher::getSingleton(); + $category = (isset($_GET["category"]))? $_GET["category"] : null; + /* Render page */ - } + $pmDynaform = new PmDynaform([]); + if (!empty($_SESSION['USER_LOGGED'])) { + $arrayTimeZoneId = DateTimeZone::listIdentifiers(); + $fields["timezoneArray"] = G::json_encode($arrayTimeZoneId); + } - $js = "" . - "\n". - "\n"; - echo($js); + $fields["server"] = System::getHttpServerHostnameRequestsFrontEnd(); + $fields["credentials"] = G::json_encode($pmDynaform->getCredentials()); + $fields["category"] = $category; + $fields["lang"] = SYS_LANG; + $fields["workspace"] = config("system.workspace"); + $fields["translation"] = "/js/ext/translation.".SYS_LANG.".".G::browserCacheFilesGetUid().".js"; - $file = file_get_contents(PATH_HOME . 'public_html/lib/taskscheduler/index.html'); - echo $file; + $G_PUBLISH->addContent('smarty','scheduler/index.html','', '', $fields); //Adding a HTML file .html + $G_PUBLISH->addContent('smarty',PATH_HOME . 'public_html/lib/taskscheduler/index.html'); //Adding a HTML file .html + G::RenderPage("publish", "raw"); } catch (Exception $e) { - -} -?> \ No newline at end of file + echo($e); +} \ No newline at end of file diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/TaskSchedulerBM.php b/workflow/engine/src/ProcessMaker/BusinessModel/TaskSchedulerBM.php index 7d724a687..3a59b824c 100755 --- a/workflow/engine/src/ProcessMaker/BusinessModel/TaskSchedulerBM.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/TaskSchedulerBM.php @@ -1,12 +1,8 @@ count(); - if($count == 0){ + if ($count == 0) { TaskSchedulerBM::generateInitialData(); $tasks = TaskScheduler::all(); - } - if(is_null($category)){ + } + if (is_null($category)) { return $tasks; - }else{ + } else { return TaskScheduler::where('category', $category)->get(); } } /** * Save the record Schedule in Schedule Table */ - public static function saveSchedule(array $request_data){ - $task = TaskScheduler::find($request_data['id']); - if(isset($request_data['enable'])){ - $task->enable = $request_data['enable']; + public static function saveSchedule(array $request) + { + $task = TaskScheduler::find($request['id']); + if (isset($request['enable'])) { + $task->enable = $request['enable']; } - if(isset($request_data['expression'])){ - $task->expression = $request_data['expression']; - $task->startingTime = $request_data['startingTime']; - $task->endingTime = $request_data['endingTime']; - $task->timezone = $request_data['timezone']; - $task->everyOn = $request_data['everyOn']; - $task->interval = $request_data['interval']; - - } + if (isset($request['expression'])) { + $task->expression = $request['expression']; + $task->startingTime = $request['startingTime']; + $task->endingTime = $request['endingTime']; + $task->timezone = $request['timezone']; + $task->everyOn = $request['everyOn']; + $task->interval = $request['interval']; + } $task->save(); - return array(); + return $task; } - public static function generateInitialData(){ + /** + * Initial data for Schedule Table, with default values + */ + public static function generateInitialData() + { $arraySystemConfiguration = System::getSystemConfiguration('', '', config("system.workspace")); - $toSave = array(); - $services = array( - array( + $toSave = []; + $services = [ + [ "title" => "ID_TASK_SCHEDULER_UNPAUSE", "enable" => "0", "service" => "unpause", @@ -64,9 +65,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "0 */1 * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_UNPAUSE_DESC" - ), - array( + "description" => "ID_TASK_SCHEDULER_UNPAUSE_DESC" + ], + [ "title" => "ID_TASK_SCHEDULER_CALCULATE_ELAPSED", "enable" => "0", "service" => "calculate", @@ -77,9 +78,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "0 */1 * * 0,1,2,3,4,5,6", - "description" => 'ID_TASK_SCHEDULER_CALCULATE_ELAPSED_DESC' - ), - array( + "description" => 'ID_TASK_SCHEDULER_CALCULATE_ELAPSED_DESC' + ], + [ "title" => "ID_TASK_SCHEDULER_UNASSIGNED", "enable" => "0", "service" => "unassigned-case", @@ -90,9 +91,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "0 */1 * * 0,1,2,3,4,5,6", - "description" => 'ID_TASK_SCHEDULER_UNASSIGNED_DESC' - ), - array( + "description" => 'ID_TASK_SCHEDULER_UNASSIGNED_DESC' + ], + [ "title" => "ID_TASK_SCHEDULER_CLEAN_SELF", "enable" => "0", "service" => "clean-self-service-tables", @@ -103,9 +104,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "0 */1 * * 0,1,2,3,4,5,6", - "description" => 'ID_TASK_SCHEDULER_CLEAN_SELF_DESC' - ), - array( + "description" => 'ID_TASK_SCHEDULER_CLEAN_SELF_DESC' + ], + [ "title" => "ID_TASK_SCHEDULER_CASE_EMAILS", "enable" => "1", "service" => "emails", @@ -116,9 +117,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "*/5 * * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_CASE_EMAILS_DESC" - ), - array( + "description" => "ID_TASK_SCHEDULER_CASE_EMAILS_DESC" + ], + [ "title" => "ID_TASK_SCHEDULER_ACTION_EMAIL", "enable" => "1", "service" => "", @@ -129,9 +130,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "*/5 * * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_ACTION_EMAIL_DESC" - ), - array( + "description" => "ID_TASK_SCHEDULER_ACTION_EMAIL_DESC" + ], + [ "title" => "ID_TASK_SCHEDULER_MESSAGE_EVENTS", "enable" => "1", "service" => "", @@ -142,9 +143,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "*/5 * * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_MESSAGE_EVENTS_DESC" - ), - array( + "description" => "ID_TASK_SCHEDULER_MESSAGE_EVENTS_DESC" + ], + [ "title" => "ID_TASK_SCHEDULER_SEND_NOT", "enable" => "1", "service" => "", @@ -155,9 +156,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "*/5 * * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_SEND_NOT_DESC" - ), - array( + "description" => "ID_TASK_SCHEDULER_SEND_NOT_DESC" + ], + [ "title" => "ID_TASK_SCHEDULER_REPORT_USERS", "enable" => "0", "service" => "report_by_user", @@ -168,25 +169,15 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "*/10 * * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_REPORT_USERS_DESC" - ), - array( + "description" => "ID_TASK_SCHEDULER_REPORT_USERS_DESC" + ], + [ "title" => "ID_TASK_SCHEDULER_REPORT_PROCESS", "enable" => "0", "service" => "report_by_process", "category" => "reporting", "file" => "workflow/engine/bin/cron.php", "startingTime" => null, - "endingTime" => null, - "everyOn" => "1", - "interval" => "week", - "expression" => "*/10 * * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_REPORT_PROCESS_DESC" - ), - array( - "title" => "ID_TASK_SCHEDULER_CALCULATE_APP", - "enable" => "0", - "service" => "calculateapp", "category" => "reporting", "file" => "workflow/engine/bin/cron.php", "startingTime" => null, @@ -194,9 +185,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "*/10 * * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_CALCULATE_APP_DESC" - ), - array( + "description" => "ID_TASK_SCHEDULER_CALCULATE_APP_DESC" + ], + [ "title" => "ID_TASK_SCHEDULER_LDAP", "enable" => "0", "service" => "", @@ -207,9 +198,9 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "0 */1 * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_LDAP" - ), - array( + "description" => "ID_TASK_SCHEDULER_LDAP" + ], + [ "title" => "ID_TASK_SCHEDULER_PM_PLUGINS", "enable" => "0", "service" => "plugins", @@ -220,26 +211,25 @@ class TaskSchedulerBM "everyOn" => "1", "interval" => "week", "expression" => "0 */1 * * 0,1,2,3,4,5,6", - "description" => "ID_TASK_SCHEDULER_PM_PLUGINS_DESC" - ) - ); - - for($i = 0; $i < count($services); ++$i) { + "description" => "ID_TASK_SCHEDULER_PM_PLUGINS_DESC" + ] + ]; + + foreach ($services as $service) { $task = new TaskScheduler; - $task->title = $services[$i]["title"]; - $task->category = $services[$i]["category"]; - $task->description = $services[$i]["description"]; - $task->startingTime = $services[$i]["startingTime"]; - $task->endingTime = $services[$i]["endingTime"]; - $task->body = 'su -s /bin/sh -c "php '. PATH_TRUNK . $services[$i]["file"] . " " . $services[$i]["service"] . ' +w' . config("system.workspace") . ' +force"'; - $task->expression = $services[$i]["expression"]; + $task->title = $service["title"]; + $task->category = $service["category"]; + $task->description = $service["description"]; + $task->startingTime = $service["startingTime"]; + $task->endingTime = $service["endingTime"]; + $task->body = 'su -s /bin/sh -c "php ' . PATH_TRUNK . $service["file"] . " " . $service["service"] . ' +w' . config("system.workspace") . ' +force"'; + $task->expression = $service["expression"]; $task->type = "shell"; $task->system = 1; - //$task->timezone = $arraySystemConfiguration['time_zone']; - $task->enable = $services[$i]["enable"]; - $task->everyOn = $services[$i]["everyOn"]; - $task->interval = $services[$i]["interval"]; - $task->save(); + $task->enable = $service["enable"]; + $task->everyOn = $service["everyOn"]; + $task->interval = $service["interval"]; + $task->save(); } } -} \ No newline at end of file +} diff --git a/workflow/engine/src/ProcessMaker/Model/TaskScheduler.php b/workflow/engine/src/ProcessMaker/Model/TaskScheduler.php index 678c357f4..4de504e52 100755 --- a/workflow/engine/src/ProcessMaker/Model/TaskScheduler.php +++ b/workflow/engine/src/ProcessMaker/Model/TaskScheduler.php @@ -3,11 +3,7 @@ namespace ProcessMaker\Model; use \Illuminate\Database\Eloquent\Model; -use \Illuminate\Support\Facades\DB; -use \Cron\CronExpression; -use \Illuminate\Support\Carbon; -use \Illuminate\Console\Scheduling\ManagesFrequencies; -use Illuminate\Console\Scheduling\Schedule; + /** * Class TaskScheduler * @package ProcessMaker\Model diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Scheduler.php b/workflow/engine/src/ProcessMaker/Services/Api/Scheduler.php index 0f13f24f5..2a578ad4b 100755 --- a/workflow/engine/src/ProcessMaker/Services/Api/Scheduler.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Scheduler.php @@ -1,12 +1,11 @@ getMessage()); } } /** + * Receive the options sent from Scheduler UI * @url POST * @status 200 * @@ -37,10 +41,10 @@ class Scheduler extends Api * @throws RestException * */ - public function doPost(array $request_data) { + public function doPost(array $request) { try { - return TaskSchedulerBM::saveSchedule($request_data); - } catch (\Exception $e) { + return TaskSchedulerBM::saveSchedule($request); + } catch (Exception $e) { throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } } diff --git a/workflow/engine/templates/scheduler/index.html b/workflow/engine/templates/scheduler/index.html new file mode 100644 index 000000000..42e22714b --- /dev/null +++ b/workflow/engine/templates/scheduler/index.html @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file