diff --git a/application/Espo/Controllers/Metadata.php b/application/Espo/Controllers/Metadata.php index 66ed42856a..b4ef5d125c 100644 --- a/application/Espo/Controllers/Metadata.php +++ b/application/Espo/Controllers/Metadata.php @@ -29,8 +29,10 @@ namespace Espo\Controllers; +use Espo\Core\Api\Response; use Espo\Core\Exceptions\Forbidden; use Espo\Core\Api\Request; +use Espo\Core\Utils\Json; use Espo\Core\Utils\Metadata as MetadataUtil; use Espo\Entities\User as UserEntity; use Espo\Tools\App\MetadataService as Service; @@ -53,16 +55,21 @@ class Metadata $this->user = $user; } - public function getActionRead(): stdClass + public function getActionRead(Request $request): mixed { + $key = $request->getQueryParam('key'); + + if (is_string($key)) { + return $this->service->getDataForFrontendByKey($key); + } + return $this->service->getDataForFrontend(); } /** - * @return mixed * @throws Forbidden */ - public function getActionGet(Request $request) + public function getActionGet(Request $request, Response $response): void { if (!$this->user->isAdmin()) { throw new Forbidden(); @@ -70,6 +77,8 @@ class Metadata $key = $request->getQueryParam('key'); - return $this->metadata->get($key, false); + $value = $this->metadata->get($key); + + $response->writeBody(Json::encode($value)); } } diff --git a/application/Espo/Tools/App/MetadataService.php b/application/Espo/Tools/App/MetadataService.php index d9bdaf56ea..43fc708b8d 100644 --- a/application/Espo/Tools/App/MetadataService.php +++ b/application/Espo/Tools/App/MetadataService.php @@ -31,6 +31,7 @@ namespace Espo\Tools\App; use Espo\Core\Acl; use Espo\Core\Utils\Metadata as MetadataUtil; +use Espo\Core\Utils\Util; use Espo\Entities\User; use Espo\Modules\Crm\Entities\Reminder; use Espo\Tools\App\Metadata\AclDependencyProvider; @@ -264,4 +265,11 @@ class MetadataService } } } + + public function getDataForFrontendByKey(?string $key): mixed + { + $data = $this->getDataForFrontend(); + + return Util::getValueByKey($data, $key); + } }