aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/course/basicdata.php
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2024-12-04 08:30:41 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2024-12-04 08:30:41 +0000
commit0bb23f9dae4bfdfd4619e73c3bab51cc84e8ebee (patch)
tree184b040a2b8e859d284ed6ad688ad20d963f2433 /app/controllers/course/basicdata.php
parent24bbb999223d2c96e79e864dc8004c7153d60f2b (diff)
restore logging of institute changes and insert home institut back into seminar_inst, fixes #4751
Closes #4751 Merge request studip/studip!3546
Diffstat (limited to 'app/controllers/course/basicdata.php')
-rw-r--r--app/controllers/course/basicdata.php24
1 files changed, 11 insertions, 13 deletions
diff --git a/app/controllers/course/basicdata.php b/app/controllers/course/basicdata.php
index 10e77d8..f463a04 100644
--- a/app/controllers/course/basicdata.php
+++ b/app/controllers/course/basicdata.php
@@ -130,12 +130,11 @@ class Course_BasicdataController extends AuthenticatedController
'locked' => LockRules::Check($course->id, 'Institut_id')
];
- $institute_ids = $course->institutes->pluck('id');
$this->institutional[] = [
'title' => _('beteiligte Einrichtungen'),
'name' => 'related_institutes[]',
'type' => 'nested-select',
- 'value' => $institute_ids,
+ 'value' => array_diff($course->institutes->pluck('id'), [$course->institut_id]),
'choices' => $this->instituteChoices($institutes),
'locked' => LockRules::Check($course->id, 'seminar_inst'),
'multiple' => true,
@@ -488,19 +487,18 @@ class Course_BasicdataController extends AuthenticatedController
} else {
$invalid_datafields[] = $datafield->getName();
}
- } else if ($field['name'] == 'related_institutes[]') {
+ } else if ($field['name'] === 'related_institutes[]') {
// only related_institutes supported for now
$related_institute_ids = Request::optionArray('related_institutes');
- if (is_array($related_institute_ids)) {
- $institutes = Institute::findMany($related_institute_ids);
- if ($institutes) {
- $course->institutes = $institutes;
- $changemade = $course->store();
- } else {
- $this->msg['error'][] = _('Es muss mindestens ein Institut angegeben werden.');
- }
- } else {
- $this->msg['error'][] = _('Es muss mindestens ein Institut angegeben werden.');
+ $current_institute_ids = $course->institutes->pluck('id');
+ $current_institute_ids = array_diff($current_institute_ids, [$course->institut_id]);
+
+ $institutes_changed = count($related_institute_ids) !== count($current_institute_ids)
+ || count(array_diff($current_institute_ids, $related_institute_ids)) > 0;
+
+ if ($institutes_changed) {
+ $course->institutes = Institute::findMany($related_institute_ids);
+ $changemade = true;
}
} else {
// format of input element name is "course_xxx"