From fa0f8936de4e2cc40cfe166d0e6fe765c01709ef Mon Sep 17 00:00:00 2001
From: Rasmus Fuhse <fuhse@data-quest.de>
Date: Tue, 8 Aug 2023 14:43:47 +0000
Subject: [PATCH] =?UTF-8?q?Resolve=20"System-Ank=C3=BCndigung:=20Weitere?=
 =?UTF-8?q?=20Bereiche=20auffindbar,=20werden=20aber=20nicht=20gespeichert?=
 =?UTF-8?q?"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #2945

Merge request studip/studip!1994
---
 lib/classes/forms/Form.php       |  2 +-
 lib/models/SimpleORMap.class.php | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/lib/classes/forms/Form.php b/lib/classes/forms/Form.php
index 0afe442b536..e5c5b103bda 100644
--- a/lib/classes/forms/Form.php
+++ b/lib/classes/forms/Form.php
@@ -417,7 +417,7 @@ class Form extends Part
         if (
             $context
             && is_subclass_of($context, \SimpleORMap::class)
-            && $context->isField($input->getName())
+            && ($context->isField($input->getName()) || $context->isRelation($input->getName()))
         ) {
             return function ($value) use ($context, $input) {
                 $context[$input->getName()] = $value;
diff --git a/lib/models/SimpleORMap.class.php b/lib/models/SimpleORMap.class.php
index 2187979190e..5c7e0959276 100644
--- a/lib/models/SimpleORMap.class.php
+++ b/lib/models/SimpleORMap.class.php
@@ -1731,6 +1731,17 @@ class SimpleORMap implements ArrayAccess, Countable, IteratorAggregate
         return isset($this->db_fields()[$field]);
     }
 
+    /**
+     * check if given relation exists in this class
+     * @param string $field
+     * @return boolean
+     */
+    function isRelation($field)
+    {
+        $field = strtolower($field);
+        return array_key_exists($field, $this->relations);
+    }
+
     /**
      * check if given column is additional
      * @param string $field
-- 
GitLab