From c79263d70eac66dce4189df797da71ba232935e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de>
Date: Fri, 2 Feb 2024 10:26:07 +0000
Subject: [PATCH] =?UTF-8?q?Resolve=20"FormBuilder=20kann=20nicht=20mit=20z?=
 =?UTF-8?q?us=C3=A4tzlichen=20SORM=20Attributen=20umgehen"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #3706

Merge request studip/studip!2578
---
 lib/classes/forms/Form.php | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/classes/forms/Form.php b/lib/classes/forms/Form.php
index 5e27895455f..4e384b11a6d 100644
--- a/lib/classes/forms/Form.php
+++ b/lib/classes/forms/Form.php
@@ -129,7 +129,11 @@ class Form extends Part
         }
         foreach ($params['fields'] as $fieldname => $fielddata) {
             if (is_array($fielddata) && !array_key_exists('value', $fielddata)) {
-                if ($object->isField($fieldname)) {
+                if (
+                    $object->isField($fieldname)
+                    || $object->isAdditionalField($fieldname)
+                    || $object->isAliasField($fieldname)
+                ) {
                     $params['fields'][$fieldname]['value'] = $object[$fieldname];
                 }
             }
@@ -412,7 +416,6 @@ class Form extends Part
             }
             $all_values[$input->getName()] = $value;
         }
-
         foreach ($this->parts as $part) {
             $context = $part->getContextObject();
             if ($context && method_exists($context, 'store')) {
@@ -514,7 +517,12 @@ class Form extends Part
         if (
             $context
             && is_subclass_of($context, \SimpleORMap::class)
-            && ($context->isField($input->getName()) || $context->isRelation($input->getName()))
+            && (
+                $context->isField($input->getName())
+                || $context->isAdditionalField($input->getName())
+                || $context->isAliasField($input->getName())
+                || $context->isRelation($input->getName())
+            )
         ) {
             return function ($value) use ($context, $input) {
                 if ($context && !$value && $value !== null) {
-- 
GitLab