protected function parseJobToData(array $a_item, ilCronJob $job) { global $lng; $res = $a_item; $res["title"] = $job->getTitle(); $res["description"] = $job->getDescription(); $res["has_settings"] = $job->hasCustomSettings(); if (!$res["title"]) { $res["title"] = $a_item["job_id"]; } // schedule if (!$job->hasFlexibleSchedule()) { // schedule type changed if ($a_item["schedule_type"]) { ilCronManager::updateJobSchedule($job, null, null); } $a_item["schedule_type"] = $job->getDefaultScheduleType(); $a_item["schedule_value"] = $job->getDefaultScheduleValue(); $res["editable_schedule"] = false; } else { // schedule type changed if (!$a_item["schedule_type"]) { $a_item["schedule_type"] = $job->getDefaultScheduleType(); $a_item["schedule_value"] = $job->getDefaultScheduleValue(); ilCronManager::updateJobSchedule($job, $a_item["schedule_type"], $a_item["schedule_value"]); } $res["editable_schedule"] = true; } switch ($a_item["schedule_type"]) { case ilCronJob::SCHEDULE_TYPE_DAILY: $schedule = $lng->txt("cron_schedule_daily"); break; case ilCronJob::SCHEDULE_TYPE_WEEKLY: $schedule = $lng->txt("cron_schedule_weekly"); break; case ilCronJob::SCHEDULE_TYPE_MONTHLY: $schedule = $lng->txt("cron_schedule_monthly"); break; case ilCronJob::SCHEDULE_TYPE_QUARTERLY: $schedule = $lng->txt("cron_schedule_quarterly"); break; case ilCronJob::SCHEDULE_TYPE_YEARLY: $schedule = $lng->txt("cron_schedule_yearly"); break; case ilCronJob::SCHEDULE_TYPE_IN_MINUTES: $schedule = sprintf($lng->txt("cron_schedule_in_minutes"), $a_item["schedule_value"]); break; case ilCronJob::SCHEDULE_TYPE_IN_HOURS: $schedule = sprintf($lng->txt("cron_schedule_in_hours"), $a_item["schedule_value"]); break; case ilCronJob::SCHEDULE_TYPE_IN_DAYS: $schedule = sprintf($lng->txt("cron_schedule_in_days"), $a_item["schedule_value"]); break; } $res["schedule"] = $schedule; // status if ($a_item["job_status"]) { $res["status"] = $lng->txt("cron_status_active"); } else { $res["status"] = $lng->txt("cron_status_inactive"); } $status_info = array(); if ($a_item["job_status_ts"]) { $status_info[] = ilDatePresentation::formatDate(new ilDateTime($a_item["job_status_ts"], IL_CAL_UNIX)); } if (!$a_item["job_status_type"]) { $status_info[] = $lng->txt("cron_changed_by_crontab"); } else { $status_info[] = ilUserUtil::getNamePresentation($a_item["job_status_user_id"]); } $res["status_info"] = implode("<br />", $status_info); // result $result = "-"; if ($a_item["job_result_status"]) { switch ($a_item["job_result_status"]) { case ilCronJobResult::STATUS_INVALID_CONFIGURATION: $result = $lng->txt("cron_result_status_invalid_configuration"); break; case ilCronJobResult::STATUS_NO_ACTION: $result = $lng->txt("cron_result_status_no_action"); break; case ilCronJobResult::STATUS_OK: $result = $lng->txt("cron_result_status_ok"); break; case ilCronJobResult::STATUS_CRASHED: $result = $lng->txt("cron_result_status_crashed"); break; case ilCronJobResult::STATUS_RESET: $result = $lng->txt("cron_result_status_reset"); break; } } $res["result"] = $result; $result_info = array(); if ($a_item["job_result_dur"]) { $result_info[] = $a_item["job_result_dur"] / 1000 . " sec"; } if ($a_item["job_result_message"]) { $result_info[] = $a_item["job_result_message"]; } if (DEVMODE && $a_item["job_result_code"]) { $result_info[] = $a_item["job_result_code"]; } if (!$a_item["job_result_type"]) { $result_info[] = $lng->txt("cron_changed_by_crontab"); } else { $result_info[] = ilUserUtil::getNamePresentation($a_item["job_result_user_id"]); } $res["result_info"] = implode("<br />", $result_info); if ($a_item["running_ts"]) { $res["last_run"] = strtotime("+1year", $a_item["running_ts"]); } else { if ($a_item["job_result_ts"]) { $res["last_run"] = $a_item["job_result_ts"]; } else { $res["last_run"] = null; } } $res['is_manually_executable'] = $job->isManuallyExecutable(); return $res; }
function update() { global $ilCtrl, $lng; $id = $_REQUEST["jid"]; if (!$id) { $ilCtrl->redirect($this, "render"); } $form = $this->initEditForm($id); if ($form->checkInput()) { $job = ilCronManager::getJobInstanceById($id); if ($job) { $valid = true; if ($job->hasCustomSettings() && !$job->saveCustomSettings($form)) { $valid = false; } if ($valid && $job->hasFlexibleSchedule()) { $type = $form->getInput("type"); switch ($type) { case ilCronJob::SCHEDULE_TYPE_IN_MINUTES: $value = $form->getInput("smini"); break; case ilCronJob::SCHEDULE_TYPE_IN_HOURS: $value = $form->getInput("shri"); break; case ilCronJob::SCHEDULE_TYPE_IN_DAYS: $value = $form->getInput("sdyi"); break; default: $value = null; } ilCronManager::updateJobSchedule($job, $type, $value); } if ($valid) { ilUtil::sendSuccess($lng->txt("cron_action_edit_success"), true); $ilCtrl->redirect($this, "render"); } } } $form->setValuesByPost(); $this->edit($form); }