From daca0acfb563cfb2de46cc1ff7c5bb3601ed4e82 Mon Sep 17 00:00:00 2001 From: joebordes Date: Mon, 8 Aug 2022 01:01:04 +0200 Subject: [PATCH] fix(WebService) catch invalid module error --- include/Webservices/GetViewsByModule.php | 27 +++++++++++++++--------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/include/Webservices/GetViewsByModule.php b/include/Webservices/GetViewsByModule.php index e2a5a639c9..fc34028a05 100644 --- a/include/Webservices/GetViewsByModule.php +++ b/include/Webservices/GetViewsByModule.php @@ -21,16 +21,23 @@ function getViewsByModule($module, $user) { $result = array(); $types = vtws_listtypes(null, $user); foreach ($modules as $module) { - // pickup meta data of module - $webserviceObject = VtigerWebserviceObject::fromName($adb, $module); - $handlerPath = $webserviceObject->getHandlerPath(); - $handlerClass = $webserviceObject->getHandlerClass(); - require_once $handlerPath; - $handler = new $handlerClass($webserviceObject, $user, $adb, $log); - $meta = $handler->getMeta(); - $mainModule = $meta->getTabName(); // normalize module name - // check modules - if (!$meta->isModuleEntity()) { + try { + // pickup meta data of module + $webserviceObject = VtigerWebserviceObject::fromName($adb, $module); + $handlerPath = $webserviceObject->getHandlerPath(); + $handlerClass = $webserviceObject->getHandlerClass(); + require_once $handlerPath; + $handler = new $handlerClass($webserviceObject, $user, $adb, $log); + $meta = $handler->getMeta(); + $mainModule = $meta->getTabName(); // normalize module name + // check modules + if (!$meta->isModuleEntity()) { + if ($isMoreThanOne) { + continue; + } + throw new WebServiceException('INVALID_MODULE', "Given module ($module) cannot be found"); + } + } catch (\Throwable $th) { if ($isMoreThanOne) { continue; }