Fix messageObjectType access
authorCyperghost <olaf_schmitz_1@t-online.de>
Thu, 1 Feb 2024 13:24:28 +0000 (14:24 +0100)
committerCyperghost <olaf_schmitz_1@t-online.de>
Thu, 1 Feb 2024 13:24:28 +0000 (14:24 +0100)
wcfsetup/install/files/lib/system/option/MessageOptionType.class.php

index 58038971aa4aa4b42cb59dede55421b48c7736d3..5d9b3077c28b519195cc06afd92911b79bb456ce 100644 (file)
@@ -36,12 +36,7 @@ class MessageOptionType extends TextareaOptionType
      */
     public function getData(Option $option, $newValue)
     {
-        if (!$this->messageObjectType) {
-            $this->messageObjectType = $option->messageObjectType;
-        }
-        if (empty($this->messageObjectType)) {
-            throw new \RuntimeException("Message object type '" . $option->optionName . "' requires an object type for definition 'com.woltlab.wcf.message'.");
-        }
+        $this->initMessageObjectType($option);
 
         $permission = $option->disallowedbbcodepermission ?: 'user.message.disallowedBBCodes';
         BBCodeHandler::getInstance()->setDisallowedBBCodes(\explode(
@@ -69,6 +64,7 @@ class MessageOptionType extends TextareaOptionType
             ArrayUtil::trim(WCF::getSession()->getPermission($permission))
         ));
 
+        $this->initMessageObjectType($option);
         $upcastProcessor = new HtmlUpcastProcessor();
         $upcastProcessor->process($value ?? '', $this->messageObjectType);
 
@@ -94,4 +90,18 @@ class MessageOptionType extends TextareaOptionType
             throw new UserInputException($option->optionName, 'disallowedBBCodes');
         }
     }
+
+    private function initMessageObjectType(Option $option): void
+    {
+        if (!$this->messageObjectType) {
+            $this->messageObjectType = $option->messageObjectType;
+        }
+        if (empty($this->messageObjectType)) {
+            throw new \RuntimeException(
+                "Message object type '" .
+                $option->optionName .
+                "' requires an object type for definition 'com.woltlab.wcf.message'."
+            );
+        }
+    }
 }