From d0b3cea122cc90faec0b7b4b4c24267a06d022b6 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms Date: Mon, 29 Apr 2024 12:08:40 +0000 Subject: cronjobs: remove scheduling once and priority, fixes #4078 Closes #4078 Merge request studip/studip!2922 --- RELEASE-NOTES.md | 1 + app/controllers/admin/cronjobs/schedules.php | 39 +++++------- app/views/admin/cronjobs/schedules/display.php | 22 +------ app/views/admin/cronjobs/schedules/edit.php | 39 ------------ app/views/admin/cronjobs/schedules/index.php | 29 ++------- db/migrations/1.231_add_files_search_index.php | 7 +-- ...emove_cronjobs_scheduling_once_and_priority.php | 19 ++++++ lib/classes/CronjobScheduler.class.php | 67 +++++++++----------- lib/models/CronjobSchedule.class.php | 72 +++------------------- lib/models/CronjobTask.class.php | 68 ++++++++++---------- tests/unit/lib/classes/CronjobScheduleTest.php | 54 ---------------- 11 files changed, 111 insertions(+), 306 deletions(-) create mode 100644 db/migrations/6.0.1_remove_cronjobs_scheduling_once_and_priority.php diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index a10e714..d28b92b 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -18,6 +18,7 @@ - Die Funktionen `studip_json_encode()` und `studip_json_decode()` wurden entfernt. Stattdessen müssen die Methode `json_encode()` und `json_decode()` verwendet werden. ([Issue #3814](https://gitlab.studip.de/studip/studip/-/issues/3814)) - Die `MembersModel.php` wurde entfernt ([Issue #3811](https://gitlab.studip.de/studip/studip/-/issues/3811)) - Die `admission.inc.php` wurde entfernt. ([Issue #3812](https://gitlab.studip.de/studip/studip/-/issues/3812)) +- Die Methoden `CronjobScheduler::scheduleOnce()` sowie `CronjobTask::scheduleOnce()` wurden ersatzlos entfernt. ([Issue #4078](https://gitlab.studip.de/studip/studip/-/issues/4078)) ## Security related issues diff --git a/app/controllers/admin/cronjobs/schedules.php b/app/controllers/admin/cronjobs/schedules.php index 294d78d..929ae29 100644 --- a/app/controllers/admin/cronjobs/schedules.php +++ b/app/controllers/admin/cronjobs/schedules.php @@ -29,7 +29,7 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController if (empty($_SESSION['cronjob-filter'])) { $_SESSION['cronjob-filter'] = [ 'where' => '1', - 'values' => array_fill_keys(['type', 'status', 'task_id'], null), + 'values' => array_fill_keys(['status', 'task_id'], null), ]; } @@ -102,9 +102,6 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController $filter = array_filter(Request::optionArray('filter')); $conditions = []; - if (!empty($filter['type'])) { - $conditions[] = "type = " . DBManager::get()->quote($filter['type']); - } if (!empty($filter['status'])) { $active = (int)($filter['status'] === 'active'); $conditions[] = "active = " . DBManager::get()->quote($active); @@ -130,7 +127,6 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController if (Request::submitted('store')) { $parameters = Request::getArray('parameters'); - $schedule->priority = Request::option('priority', 'normal'); $schedule->title = Request::get('title'); $schedule->description = Request::get('description'); $schedule->active = Request::int('active', 0); @@ -138,27 +134,20 @@ class Admin_Cronjobs_SchedulesController extends AuthenticatedController $schedule->task_id = Request::option('task_id'); } $schedule->parameters = $parameters[$schedule->task_id]; - $schedule->type = Request::option('type') === 'once' - ? 'once' - : 'periodic'; - - if ($schedule->type === 'once') { - $temp = Request::getArray('once'); - $schedule->next_execution = strtotime($temp['date'] . ' ' . $temp['time']); - } else { - $temp = Request::getArray('periodic'); - $schedule->minute = $this->extractCronItem($temp['minute']); - $schedule->hour = $this->extractCronItem($temp['hour']); - $schedule->day = $this->extractCronItem($temp['day']); - $schedule->month = $this->extractCronItem($temp['month']); - $schedule->day_of_week = mb_strlen($temp['day_of_week']['value']) - ? (int) $temp['day_of_week']['value'] - : null; - - if ($schedule->active) { - $schedule->next_execution = $schedule->calculateNextExecution(); - } + + $temp = Request::getArray('periodic'); + $schedule->minute = $this->extractCronItem($temp['minute']); + $schedule->hour = $this->extractCronItem($temp['hour']); + $schedule->day = $this->extractCronItem($temp['day']); + $schedule->month = $this->extractCronItem($temp['month']); + $schedule->day_of_week = mb_strlen($temp['day_of_week']['value']) + ? (int) $temp['day_of_week']['value'] + : null; + + if ($schedule->active) { + $schedule->next_execution = $schedule->calculateNextExecution(); } + $schedule->store(); PageLayout::postSuccess(_('Die Änderungen wurden gespeichert.')); diff --git a/app/views/admin/cronjobs/schedules/display.php b/app/views/admin/cronjobs/schedules/display.php index 8eb9075..ddf1d21 100644 --- a/app/views/admin/cronjobs/schedules/display.php +++ b/app/views/admin/cronjobs/schedules/display.php @@ -16,9 +16,6 @@
active ? _('Ja') : _('Nein') ?>
-
-
priority) ?>
- parameters) > 0): ?>
@@ -33,23 +30,8 @@
task->name) ?>
-
-type === 'once'): ?> -
- next_execution), date('H:i', $schedule->next_execution)) ?> -
- -
?
-
- execution_count > 0): ?> - , last_execution), date('H:i:s', $schedule->last_execution)) ?> - - - -
- +
- render_partial('admin/cronjobs/schedules/periodic-schedule', $schedule->toArray()) ?>
@@ -68,8 +50,6 @@
last_result) ?>
- -
diff --git a/app/views/admin/cronjobs/schedules/edit.php b/app/views/admin/cronjobs/schedules/edit.php index 96be249..8754510 100644 --- a/app/views/admin/cronjobs/schedules/edit.php +++ b/app/views/admin/cronjobs/schedules/edit.php @@ -42,17 +42,6 @@ $days_of_week = [ - - @@ -118,14 +107,6 @@ $days_of_week = [
- -
@@ -218,26 +199,6 @@ $days_of_week = [
- - - - - -