Skip to content
Snippets Groups Projects
Commit b3e8c24e authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

ensure dates belong to course, fixes #4530

Closes #4530

Merge request studip/studip!3509
parent bf45c573
No related branches found
No related tags found
No related merge requests found
...@@ -771,7 +771,8 @@ class Course_TimesroomsController extends AuthenticatedController ...@@ -771,7 +771,8 @@ class Course_TimesroomsController extends AuthenticatedController
public function stack_action($cycle_id = '') public function stack_action($cycle_id = '')
{ {
$_SESSION['_checked_dates'] = Request::optionArray('single_dates'); $_SESSION['_checked_dates'] = Request::optionArray('single_dates');
if (empty($_SESSION['_checked_dates']) && isset($_SESSION['_checked_dates'])) { $_SESSION['_checked_dates'] = $this->validateDateIds($_SESSION['_checked_dates']);
if (count($_SESSION['_checked_dates']) === 0) {
PageLayout::postError(_('Sie haben keine Termine ausgewählt!')); PageLayout::postError(_('Sie haben keine Termine ausgewählt!'));
$this->redirect('course/timesrooms/index', ['contentbox_open' => $cycle_id]); $this->redirect('course/timesrooms/index', ['contentbox_open' => $cycle_id]);
...@@ -1874,4 +1875,35 @@ class Course_TimesroomsController extends AuthenticatedController ...@@ -1874,4 +1875,35 @@ class Course_TimesroomsController extends AuthenticatedController
} }
} }
} }
private function validateDateIds(array $date_ids): array
{
if (count($date_ids) === 0) {
return [];
}
$valid = [];
CourseDate::findEachBySQL(
function (CourseDate $date) use (&$valid) {
if ($date->range_id === $this->course_id) {
$valid[] = $date->id;
}
},
'range_id = ? AND termin_id IN (?)',
[$this->course->id, $date_ids]
);
CourseExDate::findEachBySQL(
function (CourseExDate $date) use (&$valid) {
if ($date->range_id === $this->course_id) {
$valid[] = $date->id;
}
},
'range_id = ? AND termin_id IN (?)',
[$this->course->id, $date_ids]
);
return $valid;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment