src/Controller/PageController.php line 40

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Category;
  4. use App\Entity\Media;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. /**
  11.  * @Route("/", name="page_")
  12.  */
  13. class PageController extends AbstractController
  14. {
  15.     /**
  16.      * @var ManagerRegistry
  17.      */
  18.     private $doctrine;
  19.     public function __construct(ManagerRegistry $doctrine)
  20.     {
  21.         $this->doctrine $doctrine;
  22.     }
  23.     /**
  24.      * @Route("/a-propos", name="about")
  25.      */
  26.     public function about(): Response
  27.     {
  28.         return $this->render('pages/about.html.twig');
  29.     }
  30.     /**
  31.      * @Route("/ressources-documentaires", name="ressources_documentaires")
  32.      */
  33.     public function documents(): Response
  34.     {
  35.         $static1Docs = new ArrayCollection();
  36.         $static2Docs = new ArrayCollection();
  37.         $staticDoc2Datas = [
  38.             [
  39.                 'title' => 'Sécurisation juridique des aménagement hydro agricoles dans la vallée 2004',
  40.                 'src' => 'Sécurisation juridique des aménagement hydro agricoles dans la vallée 2004.pdf',
  41.                 'mime' => 'application/pdf'
  42.             ],
  43.         ];
  44.         $staticDoc1Datas = [
  45.             [
  46.                 'title' => 'AFD et le Senegal, une coopération de longue date',
  47.                 'src' => 'AFD et le Senegal, une coopération de longue date.pdf',
  48.                 'mime' => 'application/pdf'
  49.             ],
  50.             [
  51.                 'title' => 'AFD Eval 15 ans developpement territorial',
  52.                 'src' => 'AFD Eval 15 ans developpement territorial.pdf',
  53.                 'mime' => 'application/pdf'
  54.             ],
  55.             [
  56.                 'title' => 'AFD Eval 15 ans Frise PP senegal',
  57.                 'src' => 'AFD Eval 15 ans Frise PP senegal.pdf',
  58.                 'mime' => 'application/pdf'
  59.             ],
  60.             [
  61.                 'title' => 'Afd Eval 15 ans_Annexe Communs',
  62.                 'src' => 'Afd Eval 15 ans_Annexe Communs.pdf',
  63.                 'mime' => 'application/pdf'
  64.             ],
  65.             [
  66.                 'title' => 'AFD Eval soutien Irrigation Sénégal 2019',
  67.                 'src' => 'AFD Eval soutien Irrigation Sénégal 2019.docx',
  68.                 'mime' => 'application/vnd.openxmlformats'
  69.             ],
  70.             [
  71.                 'title' => 'AFD Projet Tiers Sud',
  72.                 'src' => 'AFD Projet Tiers Sud.pdf',
  73.                 'mime' => 'application/pdf'
  74.             ],
  75.             [
  76.                 'title' => 'ARRÊTÉ MINISTÉRIEL COMITE SUIVI LM',
  77.                 'src' => 'ARRÊTÉ MINISTÉRIEL COMITE SUIVI LM.pdf',
  78.                 'mime' => 'application/pdf'
  79.             ],
  80.             [
  81.                 'title' => 'CINQUANTE ANS DE COOPÉRATION FRANÇAISE AVEC L\'AFRIQUE',
  82.                 'src' => 'CINQUANTE ANS DE COOPÉRATION FRANÇAISE AVEC L\'AFRIQUE.pdf',
  83.                 'mime' => 'application/pdf'
  84.             ],
  85.             [
  86.                 'title' => 'Deveze Agricultures familales fleuve Sénégal',
  87.                 'src' => 'Deveze Agricultures familales fleuve Sénégal.doc',
  88.                 'mime' => 'application/vnd.openxmlformats'
  89.             ],
  90.             [
  91.                 'title' => 'État des lieux de l\'aide publique au développement, 2005',
  92.                 'src' => 'État des lieux de l\'aide publique au développement, 2005.pdf',
  93.                 'mime' => 'application/pdf'
  94.             ],
  95.             [
  96.                 'title' => 'Evaluation rétrospective des interventions de l’Agence Française de Développement dans le secteur de l\’irrigation',
  97.                 'src' => 'Evaluation rétrospective des interventions de l’Agence Française de Développement dans le secteur de l\’irrigation.docx',
  98.                 'mime' => 'application/pdf'
  99.             ],
  100.             [
  101.                 'title' => 'Stratégie de l\'AFD en matière de décentralisation et de développement local en zones rurales en Afrique 2004',
  102.                 'src' => 'Stratégie de l\'AFD en matière de décentralisation et de développement local en zones rurales en Afrique 2004.doc',
  103.                 'mime' => 'application/vnd.openxmlformats'
  104.             ],
  105.         ];
  106.         foreach($staticDoc1Datas as $datas) {
  107.             $doc = (new Media())
  108.                 ->setTitle($datas['title'])
  109.                 ->setsrc($datas['src'])
  110.                 ->setMime($datas['mime'])
  111.                 ->setCreatedAt(new \DateTime('now'))
  112.                 ->setUpdatedAt(new \DateTime('now'))
  113.             ;
  114.             $static1Docs->add($doc);
  115.         }
  116.         foreach($staticDoc2Datas as $datas) {
  117.             $doc = (new Media())
  118.                 ->setTitle($datas['title'])
  119.                 ->setsrc($datas['src'])
  120.                 ->setMime($datas['mime'])
  121.                 ->setCreatedAt(new \DateTime('now'))
  122.                 ->setUpdatedAt(new \DateTime('now'))
  123.             ;
  124.             $static2Docs->add($doc);
  125.         }
  126.         $listedVyCategories = [];
  127.         $hashes = new ArrayCollection();
  128.         $categories $this->doctrine->getRepository(Category::class)->findAll();
  129.         $documents $this->doctrine->getRepository(Media::class)->findAllDocuments();
  130.         foreach($categories as $category
  131.         {
  132.             $listedVyCategories[$category->getSlug()] = new ArrayCollection();
  133.         }
  134.         foreach ($documents as $document) {
  135.             // Calculer le hachage SHA-256 du document
  136.             $sha256Hash hash_file('sha256''./uploads/documents/' $document->getSrc());
  137.             if($document->getMarkers()->isEmpty() || $document->getId() == 33 || $document->getId() == 46 )
  138.                 continue;
  139.             
  140.             $category $document->getMarkers()->first()->getArticle()->getCategory();
  141.             // Vérifier si le hachage est déjà dans la collection des hachages
  142.             if (!$hashes->contains($sha256Hash)) {
  143.                 // Ajouter le document à la liste et le hachage à la collection des hachages
  144.                 $listedVyCategories[$category->getSlug()]->add($document);
  145.                 $hashes->add($sha256Hash);
  146.                 
  147.             }
  148.         }
  149.         foreach($listedVyCategories as $k => $v) {
  150.             if($listedVyCategories[$k]->isEmpty()) {
  151.                 unset($listedVyCategories[$k]);
  152.             }
  153.         }
  154.         return $this->render('pages/ressources_documentaires.html.twig', [
  155.             'documents' => $listedVyCategories,
  156.             'categories' => $categories,
  157.             'staticDoc1' => $static1Docs,
  158.             'staticDoc2' => $static2Docs
  159.         ]);
  160.     }
  161. }