private\page\Controller.php line 140

  1. <?php
  2. use App\Objects\Menu;
  3. use App\Objects\Image;
  4. use App\Objects\ColonneDroite;
  5. use Klio\KlioBundle\Database\DB;
  6. use Klio\KlioBundle\Symfony\Controller;
  7. class PrivateController
  8. {
  9.     public function render(Controller $ROUTE)
  10.     {
  11.         $rootPageId "9214d0f6ee3c31330460c63c9b7fec32f6293942";
  12.         $url __PATH__;
  13.         $ROUTE->addJs("Scripts.js");
  14.         // Identifie la rubrique du site dans laquelle on se trouve 
  15.         // Puis associe la rubrique à la classe correspondante pour gérer le CSS
  16.         $isPaie preg_match("/\/paie\b(\/.*|.{0})/"$url);
  17.         $isCooperative preg_match("/\/cooperative\b(\/.*|.{0})/"$url);
  18.         $isFormation preg_match("/\/formation\b(\/.*|.{0})/"$url);
  19.         $isMediation preg_match("/\/mediation\b(\/.*|.{0})/"$url);
  20.         $isDanse preg_match("/\/bureau_danse\b(\/.*|.{0})/"$url);
  21.         $isConseil preg_match("/\/conseil\b(\/.*|.{0})/"$url);
  22.         $destination "";
  23.         $classTitle "";
  24.         if ($isPaie) {
  25.             $classTitle "color-paie";
  26.             $destination "paie";
  27.         }
  28.         if ($isCooperative) {
  29.             $classTitle "color-cooperative";
  30.             $destination "cooperative";
  31.         }
  32.         if ($isFormation) {
  33.             $classTitle "color-formation";
  34.             $destination "formations";
  35.         }
  36.         if ($isMediation) {
  37.             $classTitle "color-mediation";
  38.             $destination "mediation";
  39.         }
  40.         if ($isDanse) {
  41.             $classTitle "color-danse";
  42.             $destination "bureau_danse";
  43.         }
  44.         if ($isConseil) {
  45.             $classTitle "color-conseil";
  46.             $destination "conseil";
  47.         }
  48.         $TWIG['color'] = $classTitle;
  49.         $DB = new DB();
  50.         $rubriques $DB->query(
  51.             "SELECT * from colonne_droite where colonne_droite__cible = :cible ORDER BY colonne_droite__placement",
  52.             ["cible" => $destination],
  53.             "rows"
  54.         );
  55.         if ($rubriques !== []) {
  56.             $colonnes = new ColonneDroite($destination);
  57.             $files $colonnes->getFiles();
  58.             for ($a 0$a count($rubriques); $a++) {
  59.                 $rubriques[$a]["class"] = "linked color" $a 1;
  60.                 $image $colonnes->getImages($files$rubriques[$a]["colonne_droite__id"]);
  61.                 if ($image) {
  62.                     $rubriques[$a]["img_link"] = $image->getUrl();
  63.                     $rubriques[$a]["extension"] = $image->getExtension();
  64.                 } else {
  65.                     $rubriques[$a]["img_link"] = null;
  66.                     $rubriques[$a]["extension"] = null;
  67.                 }
  68.                 $pdf $colonnes->getPdf($files$rubriques[$a]["colonne_droite__id"]);
  69.                 if ($pdf)
  70.                     $rubriques[$a]["pdf_link"] = $pdf->getUrl();
  71.                 else
  72.                     $rubriques[$a]["pdf_link"] = null;
  73.             }
  74.             $TWIG["rubriques"] = $rubriques;
  75.         } else
  76.             $TWIG["rubriques"] = null;
  77.         $page $DB->query("
  78.                 SELECT 
  79.                     *
  80.                 FROM 
  81.                     pages 
  82.                 LEFT JOIN files ON files__table_id = pages__id AND files__field = 'pages_photos'
  83.                 WHERE 
  84.                     pages__url like :url 
  85.                 ORDER BY 
  86.                     pages__node_position,pages__num
  87.                 ", array('url' => $url), "row");
  88.         if ($page) {
  89.             $pageId $page['pages__id'];
  90.             $images $DB->query(
  91.                 "
  92.                     SELECT *
  93.                     FROM 
  94.                         files 
  95.                     WHERE 
  96.                         files__table_id= :id ",
  97.                 array('id' => $pageId),
  98.                 "rows"
  99.             );
  100.             $page['pages__tags_id'] = str_replace('["'""$page['pages__tags_id']);
  101.             $page['pages__tags_id'] = str_replace('"]'""$page['pages__tags_id']);
  102.             $page['pages__tags_id'] = str_replace('"'""$page['pages__tags_id']);
  103.             $tableauTags explode(","$page['pages__tags_id']);
  104.             $pages $DB->query(
  105.                 "
  106.                     SELECT *
  107.                     FROM 
  108.                         pages
  109.                     WHERE    pages__url not like :url 
  110.                         ",
  111.                 array('url' => $url),
  112.                 "rows"
  113.             );
  114.             $pagesWithSameTags = [];
  115.             $counterPage 0;
  116.             $counter 0;
  117.             foreach ($tableauTags as $tags => $tag) {
  118.                 foreach ($pages as $champs => $champ) {
  119.                     if (str_contains($champ['pages__tags_id'], $tag) && !empty($tag)) {
  120.                         $pagesWithSameTags[] = $champ;
  121.                     }
  122.                     $counter++;
  123.                 }
  124.             }
  125.             // Compter les occurrences de chaque valeur de pages__id
  126.             $occurrences array_count_values(array_column($pagesWithSameTags'pages__id'));
  127.             // Trier le tableau des occurrences par ordre décroissant
  128.             arsort($occurrences);
  129.             // Extraire les clés triées
  130.             $sortedKeys array_keys($occurrences);
  131.             // Créer un nouveau tableau classé
  132.             $newArray = array();
  133.             foreach ($sortedKeys as $key) {
  134.                 foreach ($pagesWithSameTags as $item) {
  135.                     if ($item['pages__id'] == $key) {
  136.                         $newArray[] = $item;
  137.                         break; // Sortir de la boucle interne après avoir ajouté l'élément correspondant
  138.                     }
  139.                 }
  140.             }
  141.             // Éliminer les doublons du nouveau tableau
  142.             $newArray array_unique($newArraySORT_REGULAR);
  143.             $TWIG['page_tags'] = $newArray;
  144.             $TWIG['og_url'] = __HOST__ $url;
  145.             $TWIG['og_description'] = "";
  146.         }
  147.         if ($page) {
  148.             /*
  149.             On teste si la page en cours est parente ou enfant.
  150.             */
  151.             $isParent $page['pages__node_parent'] == $rootPageId;
  152.             /*
  153.             Si elle est parente, on affecte à $parentId l'id de la page.
  154.             Si elle est enfant, on lui affecte l'identifiant de la page parente'
  155.             */
  156.             $parentId $isParent $page['pages__id'] : $page['pages__node_parent'];
  157.             // 
  158.             $sql =
  159.                 "
  160.                 SELECT 
  161.                     *
  162.                 FROM
  163.                     pages
  164.                 WHERE
  165.                     pages__node_parent = :id or pages__id =:id
  166.                 ORDER BY 
  167.                     pages__node_parent != '" $rootPageId "', pages__node_position
  168.                 ";
  169.             $relatedPages $DB->query($sql, array('id' => $parentId));
  170.             $TWIG['title'] = $page['pages__name'];
  171.             $TWIG['page_subtitle'] = $page['pages__sous_titre'];
  172.             $TWIG['page_title'] = $page['pages__titre'];
  173.             $TWIG['page_video'] = $page['pages__video'];
  174.             $page_content $page['pages__html'];
  175.             $TWIG['og_description'] = $page['pages__description'];
  176.             $TWIG['relatedPages'] = $relatedPages;
  177.             $TWIG['images'] = [];
  178.             $TWIG['images'] = $this->getImages($images);
  179.             $TWIG['page_content'] = '<div>' $page_content '</div>';
  180.             $ROUTE->addCss('Page.scss');
  181.             $ROUTE->setTemplate('Page.twig');
  182.             $ROUTE->addTrustedTwig($TWIG);
  183.         } else {
  184.             $ROUTE->setRouteFound(false);
  185.         }
  186.     }
  187.     /*
  188.     Pour chaque fichier de la table files, on teste si c'est bien une photo.
  189.     Si c'est le cas, on l'ajoute à un tableau d'images et on le retourne
  190.     */
  191.     function getImages($files)
  192.     {
  193.         $images = [];
  194.         foreach ($files as $file) {
  195.             if ($file['files__name'] && $file['files__folder'] && $file['files__hash'] && $file['files__field'] == 'pages_photos') {
  196.                 $image = new Image($file['files__name'], $file['files__folder'], $file['files__extension'], $file['files__hash'], null$file["files__copyright"]);
  197.                 $images[] = $image;
  198.             }
  199.         }
  200.         return $images;
  201.     }
  202. }