diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2022-11-25 10:38:06 +0000 |
|---|---|---|
| committer | David Siegfried <david.siegfried@uni-vechta.de> | 2022-11-25 10:38:06 +0000 |
| commit | 7cd4ce3fd32dc2de0195cff6edc672b8edefbeae (patch) | |
| tree | 9ac6169eb4ef045f73d53b8e4848c63c1332a471 /lib/models/ConsultationBlock.php | |
| parent | 73875caae83c4d1a60afeea7e6ba58788bfb037f (diff) | |
ensure only valid User objects are passed as responsible persons, fixes #1821
Closes #1821
Merge request studip/studip!1197
Diffstat (limited to 'lib/models/ConsultationBlock.php')
| -rw-r--r-- | lib/models/ConsultationBlock.php | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/lib/models/ConsultationBlock.php b/lib/models/ConsultationBlock.php index c3373e3..55c31dc 100644 --- a/lib/models/ConsultationBlock.php +++ b/lib/models/ConsultationBlock.php @@ -95,25 +95,26 @@ class ConsultationBlock extends SimpleORMap implements PrivacyObject }; $config['additional_fields']['responsible_persons']['get'] = function (ConsultationBlock $block) { - if (count($block->responsibilities) !== 0) { - $result = []; + $persons = []; + if (count($block->responsibilities) > 0) { foreach (array_merge(...$block->responsibilities->getUsers()) as $user) { - $result[$user->id] = $user; + $persons[$user->id] = $user; } - return array_values($result); + } elseif ($block->range instanceof User) { + $persons[] = $block->range; + } elseif ($block->range instanceof Course) { + $persons = ConsultationResponsibility::getCourseResponsibilities($block->range); + } elseif ($block->range instanceof Institute) { + $persons = ConsultationResponsibility::getInstituteResponsibilites($block->range); + } else { + throw new Exception('Unknown range type'); } - if ($block->range instanceof User) { - return [$block->range]; - } - if ($block->range instanceof Course) { - return ConsultationResponsibility::getCourseResponsibilities($block->range); - } - if ($block->range instanceof Institute) { - return ConsultationResponsibility::getInstituteResponsibilites($block->range); - } - - throw new Exception('Unknown range type'); + // Ensure we only return objects of type User + $persons = array_filter($persons, function ($person) { + return $person instanceof User; + }); + return array_values($persons); }; $config['registered_callbacks']['after_store'][] = function (ConsultationBlock $block) { |
