From e0d581a84a21486c176f127ffe6d3ad565389f3d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patrick=20M=C3=BCller?= <p.mueller@pcsg.de>
Date: Wed, 20 Jul 2022 14:53:51 +0200
Subject: [PATCH] fix: Menu REST API fixes

---
 src/QUI/Menu/Rest/Provider.php | 46 +++++++++++++++++++++++++---------
 1 file changed, 34 insertions(+), 12 deletions(-)

diff --git a/src/QUI/Menu/Rest/Provider.php b/src/QUI/Menu/Rest/Provider.php
index cb146e9..b322cb0 100644
--- a/src/QUI/Menu/Rest/Provider.php
+++ b/src/QUI/Menu/Rest/Provider.php
@@ -71,7 +71,13 @@ public function create(RequestInterface $Request, ResponseInterface $Response):
                 return Handler::getGenericErrorResponse('Field "'.$field.'" is missing.');
             }
 
-            $menu[$field] = Orthos::clear($params[$field]);
+            if (\is_array($params[$field])) {
+                $value = Orthos::clearArray($params[$field]);
+            } else {
+                $value = Orthos::clear($params[$field]);
+            }
+
+            $menu[$field] = $value;
         }
 
         $optionalFields = [
@@ -85,10 +91,18 @@ public function create(RequestInterface $Request, ResponseInterface $Response):
                 continue;
             }
 
-            if (\is_array($params[$field])) {
-                $value = Orthos::clearArray($params[$field]);
-            } else {
-                $value = Orthos::clear($params[$field]);
+            $value = $params[$field];
+
+            switch ($field) {
+                case 'data':
+                    break;
+
+                default:
+                    if (\is_array($params[$field])) {
+                        $value = Orthos::clearArray($params[$field]);
+                    } else {
+                        $value = Orthos::clear($params[$field]);
+                    }
             }
 
             $menu[$field] = $value;
@@ -104,13 +118,13 @@ public function create(RequestInterface $Request, ResponseInterface $Response):
                 $menuId = (int)$menu['id'];
 
                 try {
-                    $menu = MenuHandler::getMenu($menuId);
+                    $Menu = MenuHandler::getMenu($menuId);
                 } catch (\Exception $Exception) {
                     QUI\System\Log::writeDebugException($Exception);
-                    $menu = false;
+                    $Menu = false;
                 }
 
-                if ($menu) {
+                if ($Menu) {
                     throw new QUI\Exception(
                         'Menu with specific id #'.$menuId.' cannot be created, since a menu with this id already'
                         .' exists.'
@@ -230,10 +244,18 @@ public function update(RequestInterface $Request, ResponseInterface $Response):
                 continue;
             }
 
-            if (\is_array($params[$field])) {
-                $value = Orthos::clearArray($params[$field]);
-            } else {
-                $value = Orthos::clear($params[$field]);
+            $value = $params[$field];
+
+            switch ($field) {
+                case 'data':
+                    break;
+
+                default:
+                    if (\is_array($params[$field])) {
+                        $value = Orthos::clearArray($params[$field]);
+                    } else {
+                        $value = Orthos::clear($params[$field]);
+                    }
             }
 
             $menu[$field] = $value;
-- 
GitLab