src/Controller/NewsletterController.php line 80

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\ClassTheatre\asides;
  4. use App\ClassTheatre\TheatreController;
  5. use App\Service\Functions;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. use Symfony\Component\Finder\Finder;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  13. use Symfony\Contracts\Translation\TranslatorInterface;
  14. class NewsletterController extends TheatreController
  15. {
  16.     // {{{ _construct()
  17.     /** constructeur hérité
  18.      *
  19.      */
  20.     public function __construct(EntityManagerInterface $emTranslatorInterface $translatorTokenStorageInterface $tokenStorageFunctions $func)
  21.     {
  22.         // surbrillance du menu principal (thnet)
  23.         $GLOBALS['rub_courante'] = 'index';
  24.         parent::__construct($translator$tokenStorage);
  25.         $GLOBALS['editset'] = 'newsletter';
  26.         $this->context['controller'] = 'newsletter';
  27.         $this->em $em;
  28.         $this->func $func;
  29.         $this->asides = new asides();
  30.     }
  31.     // }}}
  32.     /**
  33.      * @Route("/newsletter/", name="newsletter_view")
  34.      */
  35.     public function action_view()
  36.     {
  37.         $liste = array();
  38.         $finder = new Finder();
  39.         $finder->files()
  40.             ->in($this->getParameter('webDir') . '/newsletters/date')
  41.             ->sortByName(true)
  42.             ->reverseSorting();
  43.         if ($finder->hasResults()) {
  44.             foreach ($finder as $myFile) {
  45.                 if (preg_match('/([0-9]{4}[^0-9][0-9]{2}[^0-9][0-9]{2})\.htm[l]?$/'$myFile$regs)) {
  46.                     if (isset($_REQUEST['show'])) {
  47.                         $show = &$_REQUEST['show'];
  48.                         if ($show == '' || $show == $regs[1]) {
  49.                             /* redirige vers le dernier message ou celui spécifié (ex: 2008-10-24)*/
  50.                             return $this->redirect('/newsletter/date/' $regs[0]);
  51.                         }
  52.                         /* restriction de la liste au préfixe donné (ex: 2008-10)*/
  53.                         if (strpos($regs[1], $show) !== 0) continue;
  54.                     }
  55.                     /* ajout à la liste */
  56.                     $liste[] = array($regs[0], $regs[1]);
  57.                 }
  58.             }
  59.         }
  60.         $this->view->liste $liste;
  61.         // situation
  62.         $locate = array(=> 'Historique des messages');
  63.         // title page
  64.         $title_page 'Historique des messages de theatre-contemporain.net';
  65.         return $this->view('newsletter/view.html.twig');
  66.     }
  67.     /**
  68.      * @Route("/newsletter/date/{fileName}", name="newsletter_serve_file")
  69.      */
  70.     public function action_serveFile($fileName)
  71.     {
  72.         $filePath $this->getParameter('webDir') . "/newsletters/date/$fileName";
  73.         if (! file_exists($filePath)) {
  74.             throw new NotFoundHttpException();
  75.         }
  76.         $response = new Response(
  77.             /** @todo convertir les mauvais encodage, bon chance */
  78.             (file_get_contents($filePath))
  79.         );
  80.         return $response;
  81.     }
  82. }