src/Controller/LanguagesController.php line 154

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CmsPhoto;
  4. use App\Entity\Languages;
  5. use App\Form\LanguagesType;
  6. use App\Repository\CmsPhotoRepository;
  7. use App\Repository\LanguagesRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\RequestStack;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. #[Route('/languages')]
  15. class LanguagesController extends AbstractController
  16. {
  17.     #[Route('/index'name'languages_index'methods: ['GET'])]
  18.     public function index(LanguagesRepository $languagesRepository): Response
  19.     {
  20.         return $this->render('languages/index.html.twig', [
  21.             'languages' => $languagesRepository->findAll(),
  22.         ]);
  23.     }
  24.     #[Route('/new'name'languages_new'methods: ['GET''POST'])]
  25.     public function new(Request $requestLanguagesRepository $languagesRepository): Response
  26.     {
  27.         $language = new Languages();
  28.         $form $this->createForm(LanguagesType::class, $language);
  29.         $form->handleRequest($request);
  30.         if ($form->isSubmitted() && $form->isValid()) {
  31.             if ($form->isSubmitted() && $form->isValid()) {
  32.                 $languagesRepository->add($languagetrue);
  33.                 $icon $form->get('icon')->getData();
  34.                 if ($icon) {
  35.                     $safeFilename $language->getAbbreviation();
  36.                     $newFilename $safeFilename '.' $icon->guessExtension();
  37.                     try {
  38.                         $icon->move(
  39.                             $this->getParameter('icon_directory'),
  40.                             $newFilename
  41.                         );
  42.                         $language->setIcon($newFilename);
  43.                     } catch (FileException $e) {
  44.                         die('Import failed');
  45.                     }
  46.                 }
  47.             }
  48.             $languagesRepository->add($languagetrue);
  49.             return $this->redirectToRoute('languages_index', [], Response::HTTP_SEE_OTHER);
  50.         }
  51.         return $this->renderForm('languages/new.html.twig', [
  52.             'language' => $language,
  53.             'form' => $form,
  54.         ]);
  55.     }
  56.     #[Route('/show/{id}'name'languages_show'methods: ['GET'])]
  57.     public function show(Languages $language): Response
  58.     {
  59.         return $this->render('languages/show.html.twig', [
  60.             'language' => $language,
  61.         ]);
  62.     }
  63.     #[Route('/edit/{id}'name'languages_edit'methods: ['GET''POST'])]
  64.     public function edit(Request $requestLanguages $languageLanguagesRepository $languagesRepository): Response
  65.     {
  66.         $form $this->createForm(LanguagesType::class, $language);
  67.         $form->handleRequest($request);
  68.         if ($form->isSubmitted() && $form->isValid()) {
  69.             if ($form->isSubmitted() && $form->isValid()) {
  70.                 $languagesRepository->add($languagetrue);
  71.                 $icon $form->get('icon')->getData();
  72.                 if ($icon) {
  73.                     $safeFilename $language->getAbbreviation();
  74.                     $newFilename $safeFilename '.' $icon->guessExtension();
  75.                     try {
  76.                         $icon->move(
  77.                             $this->getParameter('icon_directory'),
  78.                             $newFilename
  79.                         );
  80.                         $language->setIcon($newFilename);
  81.                     } catch (FileException $e) {
  82.                         die('Import failed');
  83.                     }
  84.                 }
  85.             }
  86.             $languagesRepository->add($languagetrue);
  87.             return $this->redirectToRoute('languages_index', [], Response::HTTP_SEE_OTHER);
  88.         }
  89.         return $this->renderForm('languages/edit.html.twig', [
  90.             'language' => $language,
  91.             'form' => $form,
  92.         ]);
  93.     }
  94.     #[Route('/delete/{id}'name'languages_delete'methods: ['POST'])]
  95.     public function delete(Request $requestLanguages $languageLanguagesRepository $languagesRepositoryEntityManagerInterface $entityManager): Response
  96.     {
  97.         $file_name $language->getIcon();
  98.         if ($file_name) {
  99.             $file $this->getParameter('icon_directory') . $file_name;
  100.             if (file_exists($file)) {
  101.                 unlink($file);
  102.             }
  103.             $language->setIcon('');
  104.             $entityManager->flush();
  105.         }
  106.         if ($this->isCsrfTokenValid('delete' $language->getId(), $request->request->get('_token'))) {
  107.             $languagesRepository->remove($languagetrue);
  108.         }
  109.         return $this->redirectToRoute('languages_index', [], Response::HTTP_SEE_OTHER);
  110.     }
  111.     /**
  112.      * @Route("/delete_language_icon/{id}", name="language_icon_delete", methods={"POST", "GET"})
  113.      */
  114.     public function deleteLanguageIcon(int $idRequest $requestLanguages $languageEntityManagerInterface $entityManager)
  115.     {
  116.         $referer $request->headers->get('referer');
  117.         $file_name $language->getIcon();
  118.         if ($file_name) {
  119.             $file $this->getParameter('icon_directory') . $file_name;
  120.             if (file_exists($file)) {
  121.                 unlink($file);
  122.             }
  123.             $language->setIcon('');
  124.             $entityManager->flush();
  125.         }
  126.         return $this->redirect($referer);
  127.     }
  128.     /**
  129.      * @Route("/set/default/language/{id}", name="select_default_language")
  130.      */
  131. public function setDefaultLanguage(Request $requestLanguages $languages)
  132. {
  133.    $session $request->getSession();
  134.    $session->set('selected_language'$languages->getLanguage());
  135.    return $this->redirect($request->headers->get('referer'));
  136. }
  137. }