. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Controllers; use Espo\Core\Api\Request; use Espo\Core\DataManager; use Espo\Core\Exceptions\BadRequest; use Espo\Core\Exceptions\Error; use Espo\Core\Exceptions\Forbidden; use Espo\Entities\User; use Espo\Tools\LabelManager\LabelManager as LabelManagerTool; use stdClass; /** * @noinspection PhpUnused */ class LabelManager { /** * @throws Forbidden */ public function __construct( private User $user, private DataManager $dataManager, private LabelManagerTool $labelManagerTool ) { if (!$this->user->isEffectiveAdmin()) { throw new Forbidden(); } } /** * @return string[] */ public function postActionGetScopeList(): array { return $this->labelManagerTool->getScopeList(); } /** * @throws BadRequest */ public function postActionGetScopeData(Request $request): stdClass { $data = $request->getParsedBody(); $language = $data->language ?? null; $scope = $data->scope ?? null; if (!$scope || !$language) { throw new BadRequest(); } if (!is_string($scope) || !is_string($language)) { throw new BadRequest(); } if (basename($scope) !== $scope || basename($language) !== $language) { throw new BadRequest(); } return $this->labelManagerTool->getScopeData($language, $scope); } /** * @throws BadRequest * @throws Error */ public function postActionSaveLabels(Request $request): stdClass { $data = $request->getParsedBody(); $language = $data->language ?? null; $scope = $data->scope ?? null; if (!$scope || !$language || !isset($data->labels)) { throw new BadRequest(); } if (!is_string($scope) || !is_string($language)) { throw new BadRequest(); } if (basename($scope) !== $scope || basename($language) !== $language) { throw new BadRequest(); } $labels = get_object_vars($data->labels); $returnData = $this->labelManagerTool->saveLabels($language, $scope, $labels); $this->dataManager->clearCache(); return $returnData; } }