aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/coursewizardsteps
diff options
context:
space:
mode:
authorAndré Noack <noack@data-quest.de>2024-10-18 11:18:49 +0000
committerAndré Noack <noack@data-quest.de>2024-10-18 11:18:49 +0000
commit1201e3d0f93420f76dcd917211121f2d8b79d05f (patch)
tree9bd4a08a64c74ec4f46d3e39099a728157a72ecf /lib/classes/coursewizardsteps
parent51d059a36f4a508807d9e7a35bda4dce35a8d17b (diff)
Resolve #3697 "Geplante Teilnehmendenzahl als Pflichtangabe bei der Anlage von LV"
Closes #3697 Merge request studip/studip!2566
Diffstat (limited to 'lib/classes/coursewizardsteps')
-rw-r--r--lib/classes/coursewizardsteps/BasicDataWizardStep.php14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/classes/coursewizardsteps/BasicDataWizardStep.php b/lib/classes/coursewizardsteps/BasicDataWizardStep.php
index 53c8c50..022f933 100644
--- a/lib/classes/coursewizardsteps/BasicDataWizardStep.php
+++ b/lib/classes/coursewizardsteps/BasicDataWizardStep.php
@@ -48,6 +48,7 @@ class BasicDataWizardStep implements CourseWizardStep
$values = $values[__CLASS__] ?? [];
// Get all available course types and their categories.
$typestruct = [];
+ $admission_turnout_mandatory_types = [];
foreach (SemType::getTypes() as $type) {
$class = $type->getClass();
// Creates a studygroup.
@@ -62,10 +63,14 @@ class BasicDataWizardStep implements CourseWizardStep
} else {
if (!$class['course_creation_forbidden'] && !$class['studygroup_mode']) {
$typestruct[$class['name']][] = $type;
+ if ($class['admission_turnout_mandatory']) {
+ $admission_turnout_mandatory_types[] = $type['id'];
+ }
}
}
}
$tpl->set_attribute('types', $typestruct);
+ $tpl->set_attribute('admission_turnout_mandatory_types', $admission_turnout_mandatory_types);
// Select a default type if none is given.
if (empty($values['coursetype'])) {
if ($GLOBALS['user']->cfg->MY_COURSES_TYPE_FILTER && Request::isXhr()) {
@@ -376,6 +381,11 @@ class BasicDataWizardStep implements CourseWizardStep
$errors[] = _('Sie müssen die Nutzungsbedingungen akzeptieren.');
}
}
+ $sem_type = new SemType((int)$values['coursetype']);
+ $sem_class = $sem_type->getClass();
+ if ($sem_class['admission_turnout_mandatory'] && !$values['maxmembers']) {
+ $errors[] = _('Sie müssen die maximale Teilnehmendenzahl angeben');
+ }
if ($errors) {
$ok = false;
PageLayout::postError(_('Bitte beheben Sie erst folgende Fehler, bevor Sie fortfahren:'), $errors);
@@ -422,6 +432,7 @@ class BasicDataWizardStep implements CourseWizardStep
$course->admission_prelim = $semclass['admission_prelim_default'];
$course->lesezugriff = $semclass['default_read_level'] ?: 1;
$course->schreibzugriff = $semclass['default_write_level'] ?: 1;
+ $course->admission_turnout = $values['maxmembers'];
// Studygroups: access and description.
if (in_array($values['coursetype'], studygroup_sem_types())) {
@@ -523,7 +534,8 @@ class BasicDataWizardStep implements CourseWizardStep
'institute' => $course->institut_id,
'description' => $course->beschreibung,
'description_i18n' => is_object($course->beschreibung) ?
- $course->beschreibung->toArray() : $course->beschreibung
+ $course->beschreibung->toArray() : $course->beschreibung,
+ 'maxmembers' => $course->getSemClass()->offsetGet('admission_turnout_mandatory') ? $course->admission_turnout : '',
];
$lecturers = $course->members->findBy('status', 'dozent')->pluck('user_id');
$data['lecturers'] = array_flip($lecturers);