/** * Update job schedule * * @param ilCronJob $a_job * @param int $a_schedule_type * @param int $a_schedule_value */ public static function updateJobSchedule(ilCronJob $a_job, $a_schedule_type, $a_schedule_value) { global $ilDB; if ($a_schedule_type === null || $a_job->hasFlexibleSchedule() && in_array($a_schedule_type, $a_job->getValidScheduleTypes())) { $sql = "UPDATE cron_job SET " . " schedule_type = " . $ilDB->quote($a_schedule_type, "integer") . " , schedule_value = " . $ilDB->quote($a_schedule_value, "integer") . " WHERE job_id = " . $ilDB->quote($a_job->getId(), "text"); $ilDB->manipulate($sql); } }
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; }