src/Controller/Admin/WebUIController.php line 29

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the PHP Translation package.
  4.  *
  5.  * (c) PHP Translation team <tobias.nyholm@gmail.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace App\Controller\Admin;
  11. use Translation\Bundle\Controller\WebUIController as BaseController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
  15. use Symfony\Component\Intl\Intl;
  16. use Symfony\Component\Translation\MessageCatalogue;
  17. use Translation\Bundle\Exception\MessageValidationException;
  18. use Translation\Bundle\Service\StorageService;
  19. use Translation\Common\Exception\StorageException;
  20. use Translation\Bundle\Model\CatalogueMessage;
  21. use Translation\Common\Model\Message;
  22. use Translation\Common\Model\MessageInterface;
  23. /**
  24.  * @author Tobias Nyholm <tobias.nyholm@gmail.com>
  25.  */
  26. class WebUIController extends BaseController
  27. {
  28.     /**
  29.      * @param Request $request
  30.      * @param string  $configName
  31.      * @param string  $locale
  32.      * @param string  $domain
  33.      *
  34.      * @return Response
  35.      */
  36.     public function editAction(Request $request$configName$locale$domain)
  37.     {
  38.         if (!$this->getParameter('php_translation.webui.enabled')) {
  39.             return new Response('You are not allowed here. Check you config. '400);
  40.         }
  41.         try {
  42.             $message $this->getMessageFromRequest($request);
  43.             $message $message->withDomain($domain);
  44.             $message $message->withLocale($locale);
  45.             $this->validateMessage($message, ['Edit']);
  46.         } catch (MessageValidationException $e) {
  47.             return new Response($e->getMessage(), 400);
  48.         }
  49.         /** @var StorageService $storage */
  50.         $storage $this->get('php_translation.storage_manager')->getStorage($configName);
  51.         $storage->update($message);
  52.         $cacheClearer $this->get('php_translation.cache_clearer');
  53.         $cacheClearer->clearAndWarmUp($locale);
  54.         return new Response('Translation updated');
  55.     }
  56.     /**
  57.      * @param Request $request
  58.      *
  59.      * @return MessageInterface
  60.      */
  61.     private function getMessageFromRequest(Request $request)
  62.     {
  63.         $json $request->getContent();
  64.         $data json_decode($jsontrue);
  65.         $message = new Message($data['key']);
  66.         if (isset($data['message'])) {
  67.             $message $message->withTranslation($data['message']);
  68.         }
  69.         return $message;
  70.     }
  71.     /**
  72.      * @param MessageInterface $message
  73.      * @param array            $validationGroups
  74.      *
  75.      * @throws MessageValidationException
  76.      */
  77.     private function validateMessage(MessageInterface $message, array $validationGroups)
  78.     {
  79.         $errors $this->get('validator')->validate($messagenull$validationGroups);
  80.         if (count($errors) > 0) {
  81.             throw  MessageValidationException::create();
  82.         }
  83.     }
  84. }