src/Controller/ProduitsController.php line 1247

  1. <?php
  2. namespace App\Controller;
  3. use App\Services\DbProduct;
  4. use Doctrine\ORM\EntityManager;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. class ProduitsController extends AbstractController
  11. {
  12.     #[Route(
  13.         path: ['fr' => '/{_locale}/capteurs-de-force''en' => '/{_locale}/load-cells'], 
  14.         name'capteurs_force'
  15.         requirements: [
  16.             '_locale' => 'en|fr',
  17.         ], 
  18.         priority2
  19.     )]
  20.     public function capteurs_force(Request $requestDbProduct $dbProduct): Response
  21.     {
  22.         if ($request->getLocale() == 'fr') {
  23.             $link '/en/load-cells';
  24.             $lienDb "capteurs-de-force";
  25.         } else {
  26.             $link '/fr/capteurs-de-force';
  27.             $lienDb "load-cells"
  28.         }
  29.         $contents $dbProduct->getContent($lienDb$request->getLocale());
  30.         
  31.         foreach ($contents as $k => $content) {
  32.             $contents[$k]["meta_title"] = $content["name"];
  33.         }
  34.         
  35.         $category $contents[0]["id_category"];
  36.         $products $dbProduct->getProducts($request->getLocale(), $category);
  37.         $filters $dbProduct->getAllAttrCategories($request->getLocale(), $category);
  38.         $filtersFeat $dbProduct->getAllFeatCategories($request->getLocale(), $category);
  39.         return $this->render('produit/produits.html.twig', ['contents' => $contents'link' => $link'breadcrumb' => '''products' => $products'categories' => $filters'features' => $filtersFeat]);
  40.     }
  41.     #[Route(
  42.         path: ['fr' => '/{_locale}/capteurs-de-pesage''en' => '/{_locale}/weighing-load-cells'], 
  43.         name'capteurs_pesage'
  44.         requirements: [
  45.             '_locale' => 'en|fr',
  46.         ], 
  47.         priority2
  48.     )]
  49.     public function capteurs_pesage(Request $requestDbProduct $dbProduct): Response
  50.     {
  51.         if ($request->getLocale() == 'fr') {
  52.             $link '/en/weighing-load-cells';
  53.             $lienDb "capteurs-de-pesage";
  54.         } else {
  55.             $link '/fr/capteurs-de-pesage';
  56.             $lienDb "weighing-load-cells"
  57.         }
  58.         $contents $dbProduct->getContent($lienDb$request->getLocale());
  59.         
  60.         foreach ($contents as $k => $content) {
  61.             $contents[$k]["meta_title"] = $content["name"];
  62.         }
  63.         
  64.         $category $contents[0]["id_category"];
  65.         $products $dbProduct->getProducts($request->getLocale(), $category);
  66.         $filters $dbProduct->getAllAttrCategories($request->getLocale(), $category);
  67.         $filtersFeat $dbProduct->getAllFeatCategories($request->getLocale(), $category);
  68.         return $this->render('produit/produits.html.twig', ['contents' => $contents'link' => $link'breadcrumb' => ""'products' => $products'categories' => $filters'features' => $filtersFeat]);
  69.     }
  70.     #[Route(
  71.         path: ['fr' => '/{_locale}/capteurs-de-force-etalon''en' => '/{_locale}/reference-force-transducers'], 
  72.         name'capteurs_force_etalon'
  73.         requirements: [
  74.             '_locale' => 'en|fr',
  75.         ], 
  76.         priority2
  77.     )]
  78.     public function capteurs_force_etalon(Request $requestDbProduct $dbProduct): Response
  79.     {
  80.         if ($request->getLocale() == 'fr') {
  81.             $link '/en/reference-force-transducers';
  82.             $lienDb "capteurs-de-force-etalon";
  83.         } else {
  84.             $link '/fr/capteurs-de-force-etalon';
  85.             $lienDb "reference-force-transducers"
  86.         }
  87.         $contents $dbProduct->getContent($lienDb$request->getLocale());
  88.         
  89.         foreach ($contents as $k => $content) {
  90.             $contents[$k]["meta_title"] = $content["name"];
  91.         }
  92.         
  93.         $category $contents[0]["id_category"];
  94.         $products $dbProduct->getProducts($request->getLocale(), $category);
  95.         $filters $dbProduct->getAllAttrCategories($request->getLocale(), $category);
  96.         $filtersFeat $dbProduct->getAllFeatCategories($request->getLocale(), $category);
  97.         return $this->render('produit/produits.html.twig', ['contents' => $contents'link' => $link'breadcrumb' => ""'products' => $products'categories' => $filters'features' => $filtersFeat]);
  98.     }
  99.     #[Route(
  100.         path: ['fr' => '/{_locale}/limitation-de-charge''en' => '/{_locale}/crane-overload-protection'], 
  101.         name'limitation_charge'
  102.         requirements: [
  103.             '_locale' => 'en|fr',
  104.         ], 
  105.         priority2
  106.     )]
  107.     public function limitation_charge(Request $requestDbProduct $dbProduct): Response
  108.     {
  109.         if ($request->getLocale() == 'fr') {
  110.             $link '/en/crane-overload-protection';
  111.             $lienDb "limitation-de-charge";
  112.         } else {
  113.             $link '/fr/limitation-de-charge';
  114.             $lienDb "crane-overload-protection"
  115.         }
  116.         $contents $dbProduct->getContent($lienDb$request->getLocale());
  117.         
  118.         foreach ($contents as $k => $content) {
  119.             $contents[$k]["meta_title"] = $content["name"];
  120.         }
  121.         
  122.         $category $contents[0]["id_category"];
  123.         $products $dbProduct->getProducts($request->getLocale(), $category);
  124.         $filters $dbProduct->getAllAttrCategories($request->getLocale(), $category);
  125.         $filtersFeat $dbProduct->getAllFeatCategories($request->getLocale(), $category);
  126.         return $this->render('produit/produits.html.twig', ['contents' => $contents'link' => $link'breadcrumb' => ""'products' => $products'categories' => $filters'features' => $filtersFeat]);
  127.     }
  128.     #[Route(
  129.         path: ['fr' => '/{_locale}/capteurs-de-couple''en' => '/{_locale}/torque-transducers'], 
  130.         name'capteurs_couple'
  131.         requirements: [
  132.             '_locale' => 'en|fr',
  133.         ], 
  134.         priority2
  135.     )]
  136.     public function capteurs_couple(Request $requestDbProduct $dbProduct): Response
  137.     {
  138.         if ($request->getLocale() == 'fr') {
  139.             $link '/en/torque-transducers';
  140.             $lienDb "capteurs-de-couple";
  141.         } else {
  142.             $link '/fr/capteurs-de-couple';
  143.             $lienDb "torque-transducers"
  144.         }
  145.         $contents $dbProduct->getContent($lienDb$request->getLocale());
  146.         
  147.         foreach ($contents as $k => $content) {
  148.             $contents[$k]["meta_title"] = $content["name"];
  149.         }
  150.         
  151.         $category $contents[0]["id_category"];
  152.         $products $dbProduct->getProducts($request->getLocale(), $category);
  153.         $filters $dbProduct->getAllAttrCategories($request->getLocale(), $category);
  154.         $filtersFeat $dbProduct->getAllFeatCategories($request->getLocale(), $category);
  155.         return $this->render('produit/produits.html.twig', ['contents' => $contents'link' => $link'breadcrumb' => ""'products' => $products'categories' => $filters'features' => $filtersFeat]);
  156.     }
  157.     #[Route(
  158.         path: ['fr' => '/{_locale}/tensiometres''en' => '/{_locale}/tensiometers'], 
  159.         name'tensiometres'
  160.         requirements: [
  161.             '_locale' => 'en|fr',
  162.         ], 
  163.         priority2
  164.     )]
  165.     public function tensiometres(Request $requestDbProduct $dbProduct): Response
  166.     {
  167.         if ($request->getLocale() == 'fr') {
  168.             $link '/en/tensiometers';
  169.             $lienDb "tensiometres";
  170.         } else {
  171.             $link '/fr/tensiometres';
  172.             $lienDb "tensiometers"
  173.         }
  174.         $contents $dbProduct->getContent($lienDb$request->getLocale());
  175.         
  176.         foreach ($contents as $k => $content) {
  177.             $contents[$k]["meta_title"] = $content["name"];
  178.         }
  179.         
  180.         $category $contents[0]["id_category"];
  181.         $products $dbProduct->getProducts($request->getLocale(), $category);
  182.         $filters $dbProduct->getAllAttrCategories($request->getLocale(), $category);
  183.         $filtersFeat $dbProduct->getAllFeatCategories($request->getLocale(), $category);
  184.         return $this->render('produit/produits.html.twig', ['contents' => $contents'link' => $link'breadcrumb' => ""'products' => $products'categories' => $filters'features' => $filtersFeat]);
  185.     }
  186.     #[Route(
  187.         path: ['fr' => '/{_locale}/instrumentation''en' => '/{_locale}/instrumentation'],
  188.         name'instrumentation',
  189.         requirements: [
  190.             '_locale' => 'en|fr',
  191.         ],
  192.         priority2
  193.     )]
  194.     public function instrumentation(Request $requestDbProduct $dbProduct): Response
  195.     {
  196.         if ($request->getLocale() == 'fr') {
  197.             $link '/en/instrumentation';
  198.             $lienDb "instrumentation";
  199.         } else {
  200.             $link '/fr/instrumentation';
  201.             $lienDb "instrumentation";
  202.         }
  203.         $contents $dbProduct->getContent($lienDb$request->getLocale());
  204.         foreach ($contents as $k => $content) {
  205.             $contents[$k]["meta_title"] = $content["name"];
  206.         }
  207.         $category $contents[0]["id_category"];
  208.         $products $dbProduct->getProducts($request->getLocale(), $category);
  209.         return $this->render('produit/produits.html.twig', ['contents' => $contents'link' => $link'breadcrumb' => ""'products' => $products"instrumentation" => true]);
  210.     }
  211.     #[Route(
  212.         path: ['fr' => '/{_locale}/capteurs-de-force/{link}''en' => '/{_locale}/load-cells/{link}'],
  213.         name'capteurs_force_produit',
  214.         requirements: [
  215.             '_locale' => 'en|fr',
  216.         ],
  217.         priority2
  218.     )]
  219.     public function capteurs_force_produit(Request $requestDbProduct $dbProductEntityManagerInterface $entityManager$link null): Response
  220.     {
  221.         if ($request->getLocale() == 'fr') {
  222.             $breadcrumb = array(['name' => 'Capteurs de pesage''link_rewrite' => 'capteurs-de-force']);
  223.         } else {
  224.             $breadcrumb = array(['name' => 'Load cells''link_rewrite' => 'load-cells']);
  225.         }
  226.         $contents $dbProduct->getProduct($request->getLocale(), $link);
  227.         $linkrewrite $dbProduct->getLink($contents[0]['id_product'], $request);
  228.         foreach ($contents as $k => $content) {
  229.             $contents[$k]["meta_title"] = $content["name"];
  230.         }
  231.         $productsElectro $dbProduct->getProductsElectro($request->getLocale(), $contents[0]["category_default"]);
  232.         $Langue $request->getLocale() == "fr" "1" "2";
  233.         $id_product $contents[0]["id_product"];
  234.         $myproduct $contents[0];
  235.         $categories = [$myproduct["category_default"]];
  236.         if (in_array(18$categories)) {
  237.             $AttributGroupe 6//instrumentation    => ref article
  238.         } else {
  239.             $AttributGroupe 5// capteur    => precision
  240.         }
  241.         $sql "
  242.             SELECT fp.id_feature, fp.id_product , fl.name, p.reference, p.id_product, fvl.value
  243.             FROM `pre2398_feature_product` fp
  244.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  245.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  246.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  247.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  248.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.id_product = $id_product ORDER BY f.position";
  249.         $query $entityManager->getConnection()->prepare($sql);
  250.         $SQLArrayFeaturedProduitEnCours $query->executeQuery()->fetchAllAssociative();
  251.         foreach ($SQLArrayFeaturedProduitEnCours as $cle => $infos) {
  252.             $ArrayFeaturedProduitEnCours[] = $infos['id_feature'];
  253.         }
  254.         $tmpattributes $myproduct["attr_cap"] . "," $myproduct["attr_prec"];
  255.         $tmpattributesid $myproduct["attr_cap_id"] . "," $myproduct["attr_prec_id"];
  256.         $attributes = [];
  257.         foreach (explode(","$tmpattributes) as $k => $attr) {
  258.             $attributes[$k]['id_attribute_group'] = explode(","$tmpattributesid)[$k];
  259.             $attributes[$k]['attribute_name'] = $attr;
  260.         }
  261.         $attrCap explode(","$myproduct["attr_cap"]);
  262.         $attrCap array_reverse($attrCap);
  263.         $attrCap implode(','$attrCap);
  264.         $attrCapId explode(','$myproduct["attr_cap_id"]);
  265.         $attrCapId array_reverse($attrCapId);
  266.         $attrCapId implode(','$attrCapId);
  267.         $attrPrec explode(','$myproduct["attr_prec"]);
  268.         $attrPrec array_reverse($attrPrec);
  269.         $attrPrec implode($attrPrec);
  270.         $attrPrecid explode(','$myproduct["attr_prec_id"]);
  271.         $attrPrecid array_reverse($attrPrecid);
  272.         $attrPrecid implode(','$attrPrecid);
  273.         $attributes2 = array();
  274.         foreach ($attributes as $cle => $attribute) {
  275.             //id precison ou ref article => 6
  276.             if ($attribute['id_attribute_group'] == $AttributGroupe) {
  277.                 if (substr($attribute['attribute_name'], -11) == ' ') {
  278.                     $attribute['attribute_name'] = substr($attribute['attribute_name'], 0, -1);
  279.                 }
  280.                 $attributes2[$attribute['group_name']]['list'][$attribute['attribute_name']] = $attribute['attribute_name'];
  281.             }
  282.         }
  283.         $reference $myproduct['reference'];
  284.         // on va chercher les caracteristiques des produits dont la reference commence par $reference (exemple : 5000)
  285.         $sql "
  286.             SELECT fp.id_feature, fp.id_product, fl.name, p.reference, p.id_product, fvl.value
  287.             FROM `pre2398_feature_product` fp
  288.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  289.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  290.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  291.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  292.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.reference LIKE '" $reference "\_%' ORDER BY f.position";
  293.         $query $entityManager->getConnection()->prepare($sql);
  294.         $Array $query->executeQuery()->fetchAllAssociative();
  295.         $ArrayCaracteristiques = array();
  296.         foreach ($Array as $cle => $infos) {
  297.             $PageName $infos['name'];
  298.             $sqlPagesCms '
  299.                 SELECT cl.link_rewrite,cl.meta_title,cl.meta_description,cl.id_cms,c.active,ccl.link_rewrite as link2, ccl2.link_rewrite as link1
  300.                 FROM `pre2398_cms` c
  301.                 INNER JOIN `pre2398_cms_lang` cl ON cl.id_cms = c.id_cms
  302.                 INNER JOIN `pre2398_cms_category` cc ON cc.id_cms_category = c.id_cms_category
  303.                 INNER JOIN `pre2398_cms_category_lang` ccl ON ccl.id_cms_category = cc.id_cms_category
  304.                 INNER JOIN `pre2398_cms_category` cc2 ON cc2.id_cms_category = cc.id_parent
  305.                 INNER JOIN `pre2398_cms_category_lang` ccl2 ON ccl2.id_cms_category = cc2.id_cms_category
  306.                 WHERE cl.id_lang = ' $Langue '
  307.                 AND cl.meta_title = "' $PageName '"
  308.             ';
  309.             $query $entityManager->getConnection()->prepare($sqlPagesCms);
  310.             $PageCms $query->executeQuery()->fetchAllAssociative();
  311.             if ($PageCms != array()) {
  312.                 if ($PageCms[0]['id_cms']) {
  313.                     $meta_description $PageCms[0]['meta_description'];
  314.                     if ($PageCms[0]['active']) {
  315.                         $url "";
  316.                         $url .= $PageCms[0]["link1"] ? "/" $PageCms[0]["link1"] : "";
  317.                         $url .= $PageCms[0]["link2"] ? "/" $PageCms[0]["link2"] : "";
  318.                         $url .= $PageCms[0]["link_rewrite"] ? "/" $PageCms[0]["link_rewrite"] : "";
  319.                     } else {
  320.                         $url "";
  321.                     }
  322.                 } else {
  323.                     $meta_description '';
  324.                     $url '';
  325.                 }
  326.             } else {
  327.                 $meta_description '';
  328.                 $url '';
  329.             }
  330.             $ref explode('_'$infos['reference']);
  331.             // on ne garde que les caracteristiques qui concernent le produit en cours
  332.             if (in_array($infos['id_feature'], $ArrayFeaturedProduitEnCours)) {
  333.                 $ArrayCaracteristiques[$infos['id_feature']]['FeatureName'] =  $infos['name'];
  334.                 $ArrayCaracteristiques[$infos['id_feature']]['url'] = $url;
  335.                 $ArrayCaracteristiques[$infos['id_feature']]['meta_description'] = $meta_description;
  336.                 $infos['value'] = str_replace('[PPQ]''<'$infos['value']);
  337.                 $infos['value'] = str_replace('[PGQ]''>'$infos['value']);
  338.                 $infos['value'] = str_replace('[EG]''='$infos['value']);
  339.                 $ArrayCaracteristiques[$infos['id_feature']]['Products'][$ref[2]] = array(
  340.                     'cle'        =>    $ref[2],
  341.                     'reference'    =>    $infos['reference'],
  342.                     'value'     =>     $infos['value'],
  343.                     'nom'        =>    $ref[1]
  344.                 );
  345.             }
  346.         }
  347.         //cette partie permet de trier le tableau suivant les references des articles/caracteristiques grace a la cle puis on remet la cle/nom qui permettra l'affichage
  348.         $ArrayCaracteristiques2 $ArrayCaracteristiques;
  349.         foreach ($ArrayCaracteristiques as $id => $donnees) {
  350.             ksort($donnees['Products']);
  351.             $ArrayCaracteristiques2[$id]['Products'] = [];
  352.             foreach ($donnees['Products'] as $id2 => $donnees2) {
  353.                 $ArrayCaracteristiques2[$id]['Products'][$donnees2['nom']] = $donnees2;
  354.             }
  355.         }
  356.         // cette partie permet de trier les caracteristiques
  357.         $i 0;
  358.         $TabCarac = [];
  359.         foreach ($ArrayCaracteristiques2 as $id => $donnees) {
  360.             if ($i == 0) {
  361.                 foreach ($donnees['Products'] as $id2 => $donnees2) {
  362.                     $TabCarac[$donnees2['nom']] = $donnees2['nom'];
  363.                     $i++;
  364.                 }
  365.             }
  366.         }
  367.         $files $dbProduct->getProductAttachment($request->getLocale(), $myproduct['id_product']);
  368.         $accessories $dbProduct->getProductAccessories($request->getLocale(), $myproduct['id_product']);
  369.         $appProduct = [];
  370.         foreach ($accessories as $accessory) {
  371.             if ($accessory['name'] == 'Applications') {
  372.                 $debut strpos($accessory['content'], '{products}');
  373.                 $fin strpos($accessory['content'], '{/products}');
  374.                 $references substr($accessory['content'], $debut strlen('{products}'), $fin $debut strlen('{products}'));
  375.                 foreach (explode(","$references) as $reference) {
  376.                     array_push($appProduct$dbProduct->getProductReference($request->getLocale(), $reference)[0]);
  377.                 }
  378.             }
  379.         }
  380.         return $this->render('produit/produit.html.twig', ['contents' => $contents'link' => $linkrewrite'breadcrumb' => $breadcrumb'productsElectro' => $productsElectro'caracteristiques' => $ArrayCaracteristiques2'files' => $files'accessories' => $accessories'appProduct' => $appProduct]);
  381.     }
  382.     #[Route(
  383.         path: ['fr' => '/{_locale}/capteurs-de-pesage/{link}''en' => '/{_locale}/weighing-load-cells/{link}'],
  384.         name'capteur_pesage_produit',
  385.         requirements: [
  386.             '_locale' => 'en|fr',
  387.         ],
  388.         priority2
  389.     )]
  390.     public function capteur_pesage_produit(Request $requestDbProduct $dbProductEntityManagerInterface $entityManager$link null): Response
  391.     {
  392.         if ($request->getLocale() == 'fr') {
  393.             $breadcrumb = array(['name' => 'Capteurs de pesage''link_rewrite' => 'capteurs-de-pesage']);
  394.         } else {
  395.             $breadcrumb = array(['name' => 'Weighing load cells''link_rewrite' => 'weighing-load-cells']);
  396.         }
  397.         $contents $dbProduct->getProduct($request->getLocale(), $link);
  398.         $linkrewrite $dbProduct->getLink($contents[0]['id_product'], $request);
  399.         foreach ($contents as $k => $content) {
  400.             $contents[$k]["meta_title"] = $content["name"];
  401.         }
  402.         $productsElectro $dbProduct->getProductsElectro($request->getLocale(), $contents[0]["category_default"]);
  403.         $Langue $request->getLocale() == "fr" "1" "2";
  404.         $id_product $contents[0]["id_product"];
  405.         $myproduct $contents[0];
  406.         $categories = [$myproduct["category_default"]];
  407.         if (in_array(18$categories)) {
  408.             $AttributGroupe 6//instrumentation    => ref article
  409.         } else {
  410.             $AttributGroupe 5// capteur    => precision
  411.         }
  412.         $sql "
  413.             SELECT fp.id_feature, fp.id_product , fl.name, p.reference, p.id_product, fvl.value
  414.             FROM `pre2398_feature_product` fp
  415.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  416.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  417.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  418.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  419.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.id_product = $id_product ORDER BY f.position";
  420.         $query $entityManager->getConnection()->prepare($sql);
  421.         $SQLArrayFeaturedProduitEnCours $query->executeQuery()->fetchAllAssociative();
  422.         foreach ($SQLArrayFeaturedProduitEnCours as $cle => $infos) {
  423.             $ArrayFeaturedProduitEnCours[] = $infos['id_feature'];
  424.         }
  425.         $tmpattributes $myproduct["attr_cap"] . "," $myproduct["attr_prec"];
  426.         $tmpattributesid $myproduct["attr_cap_id"] . "," $myproduct["attr_prec_id"];
  427.         $attributes = [];
  428.         foreach (explode(","$tmpattributes) as $k => $attr) {
  429.             $attributes[$k]['id_attribute_group'] = explode(","$tmpattributesid)[$k];
  430.             $attributes[$k]['attribute_name'] = $attr;
  431.         }
  432.         $attributes2 = array();
  433.         foreach ($attributes as $cle => $attribute) {
  434.             //id precison ou ref article => 6
  435.             if ($attribute['id_attribute_group'] == $AttributGroupe) {
  436.                 if (substr($attribute['attribute_name'], -11) == ' ') {
  437.                     $attribute['attribute_name'] = substr($attribute['attribute_name'], 0, -1);
  438.                 }
  439.                 $attributes2[$attribute['group_name']]['list'][$attribute['attribute_name']] = $attribute['attribute_name'];
  440.             }
  441.         }
  442.         $reference $myproduct['reference'];
  443.         // on va chercher les caracteristiques des produits dont la reference commence par $reference (exemple : 5000)
  444.         $sql "
  445.             SELECT fp.id_feature, fp.id_product, fl.name, p.reference, p.id_product, fvl.value
  446.             FROM `pre2398_feature_product` fp
  447.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  448.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  449.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  450.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  451.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.reference LIKE '" $reference "\_%' ORDER BY f.position";
  452.         $query $entityManager->getConnection()->prepare($sql);
  453.         $Array $query->executeQuery()->fetchAllAssociative();
  454.         $ArrayCaracteristiques = array();
  455.         foreach ($Array as $cle => $infos) {
  456.             $PageName $infos['name'];
  457.             $sqlPagesCms '
  458.                 SELECT cl.link_rewrite,cl.meta_title,cl.meta_description,cl.id_cms,c.active,ccl.link_rewrite as link2, ccl2.link_rewrite as link1
  459.                 FROM `pre2398_cms` c
  460.                 INNER JOIN `pre2398_cms_lang` cl ON cl.id_cms = c.id_cms
  461.                 INNER JOIN `pre2398_cms_category` cc ON cc.id_cms_category = c.id_cms_category
  462.                 INNER JOIN `pre2398_cms_category_lang` ccl ON ccl.id_cms_category = cc.id_cms_category
  463.                 INNER JOIN `pre2398_cms_category` cc2 ON cc2.id_cms_category = cc.id_parent
  464.                 INNER JOIN `pre2398_cms_category_lang` ccl2 ON ccl2.id_cms_category = cc2.id_cms_category
  465.                 WHERE cl.id_lang = ' $Langue '
  466.                 AND cl.meta_title = "' $PageName '"
  467.             ';
  468.             $query $entityManager->getConnection()->prepare($sqlPagesCms);
  469.             $PageCms $query->executeQuery()->fetchAllAssociative();
  470.             if ($PageCms != array()) {
  471.                 if ($PageCms[0]['id_cms']) {
  472.                     $meta_description $PageCms[0]['meta_description'];
  473.                     if ($PageCms[0]['active']) {
  474.                         $url "";
  475.                         $url .= $PageCms[0]["link1"] ? "/" $PageCms[0]["link1"] : "";
  476.                         $url .= $PageCms[0]["link2"] ? "/" $PageCms[0]["link2"] : "";
  477.                         $url .= $PageCms[0]["link_rewrite"] ? "/" $PageCms[0]["link_rewrite"] : "";
  478.                     } else {
  479.                         $url "";
  480.                     }
  481.                 } else {
  482.                     $meta_description '';
  483.                     $url '';
  484.                 }
  485.             } else {
  486.                 $meta_description '';
  487.                 $url '';
  488.             }
  489.             $ref explode('_'$infos['reference']);
  490.             // on ne garde que les caracteristiques qui concernent le produit en cours
  491.             if (in_array($infos['id_feature'], $ArrayFeaturedProduitEnCours)) {
  492.                 $ArrayCaracteristiques[$infos['id_feature']]['FeatureName'] =  $infos['name'];
  493.                 $ArrayCaracteristiques[$infos['id_feature']]['url'] = $url;
  494.                 $ArrayCaracteristiques[$infos['id_feature']]['meta_description'] = $meta_description;
  495.                 $infos['value'] = str_replace('[PPQ]''<'$infos['value']);
  496.                 $infos['value'] = str_replace('[PGQ]''>'$infos['value']);
  497.                 $infos['value'] = str_replace('[EG]''='$infos['value']);
  498.                 $ArrayCaracteristiques[$infos['id_feature']]['Products'][$ref[2]] = array(
  499.                     'cle'        =>    $ref[2],
  500.                     'reference'    =>    $infos['reference'],
  501.                     'value'     =>     $infos['value'],
  502.                     'nom'        =>    $ref[1]
  503.                 );
  504.             }
  505.         }
  506.         //cette partie permet de trier le tableau suivant les references des articles/caracteristiques grace a la cle puis on remet la cle/nom qui permettra l'affichage
  507.         $ArrayCaracteristiques2 $ArrayCaracteristiques;
  508.         foreach ($ArrayCaracteristiques as $id => $donnees) {
  509.             ksort($donnees['Products']);
  510.             $ArrayCaracteristiques2[$id]['Products'] = [];
  511.             foreach ($donnees['Products'] as $id2 => $donnees2) {
  512.                 $ArrayCaracteristiques2[$id]['Products'][$donnees2['nom']] = $donnees2;
  513.             }
  514.         }
  515.         // cette partie permet de trier les caracteristiques
  516.         $i 0;
  517.         $TabCarac = [];
  518.         foreach ($ArrayCaracteristiques2 as $id => $donnees) {
  519.             if ($i == 0) {
  520.                 foreach ($donnees['Products'] as $id2 => $donnees2) {
  521.                     $TabCarac[$donnees2['nom']] = $donnees2['nom'];
  522.                     $i++;
  523.                 }
  524.             }
  525.         }
  526.         $files $dbProduct->getProductAttachment($request->getLocale(), $myproduct['id_product']);
  527.         $accessories $dbProduct->getProductAccessories($request->getLocale(), $myproduct['id_product']);
  528.         $appProduct = [];
  529.         foreach ($accessories as $accessory) {
  530.             if ($accessory['name'] == 'Applications') {
  531.                 $debut strpos($accessory['content'], '{products}');
  532.                 $fin strpos($accessory['content'], '{/products}');
  533.                 $references substr($accessory['content'], $debut strlen('{products}'), $fin $debut strlen('{products}'));
  534.                 foreach (explode(","$references) as $reference) {
  535.                     array_push($appProduct$dbProduct->getProductReference($request->getLocale(), $reference)[0]);
  536.                 }
  537.             }
  538.         }
  539.         return $this->render('produit/produit.html.twig', ['contents' => $contents'link' => $linkrewrite'breadcrumb' => $breadcrumb'productsElectro' => $productsElectro'caracteristiques' => $ArrayCaracteristiques2'files' => $files'accessories' => $accessories'appProduct' => $appProduct]);
  540.     }
  541.     #[Route(
  542.         path: ['fr' => '/{_locale}/capteurs-de-force-etalon/{link}''en' => '/{_locale}/reference-force-transducers/{link}'],
  543.         name'capteurs_force_etalon_produit',
  544.         requirements: [
  545.             '_locale' => 'en|fr',
  546.         ],
  547.         priority2
  548.     )]
  549.     public function capteurs_force_etalon_produit(Request $requestDbProduct $dbProductEntityManagerInterface $entityManager$link null): Response
  550.     {
  551.         if ($request->getLocale() == 'fr') {
  552.             $breadcrumb = array(['name' => 'Capteurs de force Ã©talon''link_rewrite' => 'capteurs-de-force-etalon']);
  553.         } else {
  554.             $breadcrumb = array(['name' => 'Reference force transducers''link_rewrite' => 'reference-force-transducers']);
  555.         }
  556.         $contents $dbProduct->getProduct($request->getLocale(), $link);
  557.         $linkrewrite $dbProduct->getLink($contents[0]['id_product'], $request);
  558.         foreach ($contents as $k => $content) {
  559.             $contents[$k]["meta_title"] = $content["name"];
  560.         }
  561.         $productsElectro $dbProduct->getProductsElectro($request->getLocale(), $contents[0]["category_default"]);
  562.         $Langue $request->getLocale() == "fr" "1" "2";
  563.         $id_product $contents[0]["id_product"];
  564.         $myproduct $contents[0];
  565.         $categories = [$myproduct["category_default"]];
  566.         if (in_array(18$categories)) {
  567.             $AttributGroupe 6//instrumentation    => ref article
  568.         } else {
  569.             $AttributGroupe 5// capteur    => precision
  570.         }
  571.         $sql "
  572.             SELECT fp.id_feature, fp.id_product , fl.name, p.reference, p.id_product, fvl.value
  573.             FROM `pre2398_feature_product` fp
  574.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  575.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  576.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  577.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  578.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.id_product = $id_product ORDER BY f.position";
  579.         $query $entityManager->getConnection()->prepare($sql);
  580.         $SQLArrayFeaturedProduitEnCours $query->executeQuery()->fetchAllAssociative();
  581.         foreach ($SQLArrayFeaturedProduitEnCours as $cle => $infos) {
  582.             $ArrayFeaturedProduitEnCours[] = $infos['id_feature'];
  583.         }
  584.         $tmpattributes $myproduct["attr_cap"] . "," $myproduct["attr_prec"];
  585.         $tmpattributesid $myproduct["attr_cap_id"] . "," $myproduct["attr_prec_id"];
  586.         $attributes = [];
  587.         foreach (explode(","$tmpattributes) as $k => $attr) {
  588.             $attributes[$k]['id_attribute_group'] = explode(","$tmpattributesid)[$k];
  589.             $attributes[$k]['attribute_name'] = $attr;
  590.         }
  591.         $attributes2 = array();
  592.         foreach ($attributes as $cle => $attribute) {
  593.             //id precison ou ref article => 6
  594.             if ($attribute['id_attribute_group'] == $AttributGroupe) {
  595.                 if (substr($attribute['attribute_name'], -11) == ' ') {
  596.                     $attribute['attribute_name'] = substr($attribute['attribute_name'], 0, -1);
  597.                 }
  598.                 $attributes2[$attribute['group_name']]['list'][$attribute['attribute_name']] = $attribute['attribute_name'];
  599.             }
  600.         }
  601.         $reference $myproduct['reference'];
  602.         // on va chercher les caracteristiques des produits dont la reference commence par $reference (exemple : 5000)
  603.         $sql "
  604.             SELECT fp.id_feature, fp.id_product, fl.name, p.reference, p.id_product, fvl.value
  605.             FROM `pre2398_feature_product` fp
  606.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  607.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  608.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  609.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  610.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.reference LIKE '" $reference "\_%' ORDER BY f.position";
  611.         $query $entityManager->getConnection()->prepare($sql);
  612.         $Array $query->executeQuery()->fetchAllAssociative();
  613.         $ArrayCaracteristiques = array();
  614.         foreach ($Array as $cle => $infos) {
  615.             $PageName $infos['name'];
  616.             $sqlPagesCms '
  617.                 SELECT cl.link_rewrite,cl.meta_title,cl.meta_description,cl.id_cms,c.active,ccl.link_rewrite as link2, ccl2.link_rewrite as link1
  618.                 FROM `pre2398_cms` c
  619.                 INNER JOIN `pre2398_cms_lang` cl ON cl.id_cms = c.id_cms
  620.                 INNER JOIN `pre2398_cms_category` cc ON cc.id_cms_category = c.id_cms_category
  621.                 INNER JOIN `pre2398_cms_category_lang` ccl ON ccl.id_cms_category = cc.id_cms_category
  622.                 INNER JOIN `pre2398_cms_category` cc2 ON cc2.id_cms_category = cc.id_parent
  623.                 INNER JOIN `pre2398_cms_category_lang` ccl2 ON ccl2.id_cms_category = cc2.id_cms_category
  624.                 WHERE cl.id_lang = ' $Langue '
  625.                 AND cl.meta_title = "' $PageName '"
  626.             ';
  627.             $query $entityManager->getConnection()->prepare($sqlPagesCms);
  628.             $PageCms $query->executeQuery()->fetchAllAssociative();
  629.             if ($PageCms != array()) {
  630.                 if ($PageCms[0]['id_cms']) {
  631.                     $meta_description $PageCms[0]['meta_description'];
  632.                     if ($PageCms[0]['active']) {
  633.                         $url "";
  634.                         $url .= $PageCms[0]["link1"] ? "/" $PageCms[0]["link1"] : "";
  635.                         $url .= $PageCms[0]["link2"] ? "/" $PageCms[0]["link2"] : "";
  636.                         $url .= $PageCms[0]["link_rewrite"] ? "/" $PageCms[0]["link_rewrite"] : "";
  637.                     } else {
  638.                         $url "";
  639.                     }
  640.                 } else {
  641.                     $meta_description '';
  642.                     $url '';
  643.                 }
  644.             } else {
  645.                 $meta_description '';
  646.                 $url '';
  647.             }
  648.             $ref explode('_'$infos['reference']);
  649.             // on ne garde que les caracteristiques qui concernent le produit en cours
  650.             if (in_array($infos['id_feature'], $ArrayFeaturedProduitEnCours)) {
  651.                 $ArrayCaracteristiques[$infos['id_feature']]['FeatureName'] =  $infos['name'];
  652.                 $ArrayCaracteristiques[$infos['id_feature']]['url'] = $url;
  653.                 $ArrayCaracteristiques[$infos['id_feature']]['meta_description'] = $meta_description;
  654.                 $infos['value'] = str_replace('[PPQ]''<'$infos['value']);
  655.                 $infos['value'] = str_replace('[PGQ]''>'$infos['value']);
  656.                 $infos['value'] = str_replace('[EG]''='$infos['value']);
  657.                 $ArrayCaracteristiques[$infos['id_feature']]['Products'][$ref[2]] = array(
  658.                     'cle'        =>    $ref[2],
  659.                     'reference'    =>    $infos['reference'],
  660.                     'value'     =>     $infos['value'],
  661.                     'nom'        =>    $ref[1]
  662.                 );
  663.             }
  664.         }
  665.         //cette partie permet de trier le tableau suivant les references des articles/caracteristiques grace a la cle puis on remet la cle/nom qui permettra l'affichage
  666.         $ArrayCaracteristiques2 $ArrayCaracteristiques;
  667.         foreach ($ArrayCaracteristiques as $id => $donnees) {
  668.             ksort($donnees['Products']);
  669.             $ArrayCaracteristiques2[$id]['Products'] = [];
  670.             foreach ($donnees['Products'] as $id2 => $donnees2) {
  671.                 $ArrayCaracteristiques2[$id]['Products'][$donnees2['nom']] = $donnees2;
  672.             }
  673.         }
  674.         // cette partie permet de trier les caracteristiques
  675.         $i 0;
  676.         $TabCarac = [];
  677.         foreach ($ArrayCaracteristiques2 as $id => $donnees) {
  678.             if ($i == 0) {
  679.                 foreach ($donnees['Products'] as $id2 => $donnees2) {
  680.                     $TabCarac[$donnees2['nom']] = $donnees2['nom'];
  681.                     $i++;
  682.                 }
  683.             }
  684.         }
  685.         $files $dbProduct->getProductAttachment($request->getLocale(), $myproduct['id_product']);
  686.         $accessories $dbProduct->getProductAccessories($request->getLocale(), $myproduct['id_product']);
  687.         $appProduct = [];
  688.         foreach ($accessories as $accessory) {
  689.             if ($accessory['name'] == 'Applications') {
  690.                 $debut strpos($accessory['content'], '{products}');
  691.                 $fin strpos($accessory['content'], '{/products}');
  692.                 $references substr($accessory['content'], $debut strlen('{products}'), $fin $debut strlen('{products}'));
  693.                 foreach (explode(","$references) as $reference) {
  694.                     array_push($appProduct$dbProduct->getProductReference($request->getLocale(), $reference)[0]);
  695.                 }
  696.             }
  697.         }
  698.         return $this->render('produit/produit.html.twig', ['contents' => $contents'link' => $linkrewrite'breadcrumb' => $breadcrumb'productsElectro' => $productsElectro'caracteristiques' => $ArrayCaracteristiques2'files' => $files'accessories' => $accessories'appProduct' => $appProduct]);
  699.     }
  700.     #[Route(
  701.         path: ['fr' => '/{_locale}/limitation-de-charge/{link}''en' => '/{_locale}/crane-overload-protection/{link}'],
  702.         name'limitation_charge_produit',
  703.         requirements: [
  704.             '_locale' => 'en|fr',
  705.         ],
  706.         priority2
  707.     )]
  708.     public function limitation_charge_produit(Request $requestDbProduct $dbProductEntityManagerInterface $entityManager$link null): Response
  709.     {
  710.         if ($request->getLocale() == 'fr') {
  711.             $breadcrumb = array(['name' => 'Limitation de charge''link_rewrite' => 'limitation-de-charge']);
  712.         } else {
  713.             $breadcrumb = array(['name' => 'Crane overload protection''link_rewrite' => 'crane-overload-protection']);
  714.         }
  715.         $contents $dbProduct->getProduct($request->getLocale(), $link);
  716.         $linkrewrite $dbProduct->getLink($contents[0]['id_product'], $request);
  717.         foreach ($contents as $k => $content) {
  718.             $contents[$k]["meta_title"] = $content["name"];
  719.         }
  720.         $productsElectro $dbProduct->getProductsElectro($request->getLocale(), $contents[0]["category_default"]);
  721.         $Langue $request->getLocale() == "fr" "1" "2";
  722.         $id_product $contents[0]["id_product"];
  723.         $myproduct $contents[0];
  724.         $categories = [$myproduct["category_default"]];
  725.         if (in_array(18$categories)) {
  726.             $AttributGroupe 6//instrumentation    => ref article
  727.         } else {
  728.             $AttributGroupe 5// capteur    => precision
  729.         }
  730.         $sql "
  731.             SELECT fp.id_feature, fp.id_product , fl.name, p.reference, p.id_product, fvl.value
  732.             FROM `pre2398_feature_product` fp
  733.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  734.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  735.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  736.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  737.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.id_product = $id_product ORDER BY f.position";
  738.         $query $entityManager->getConnection()->prepare($sql);
  739.         $SQLArrayFeaturedProduitEnCours $query->executeQuery()->fetchAllAssociative();
  740.         foreach ($SQLArrayFeaturedProduitEnCours as $cle => $infos) {
  741.             $ArrayFeaturedProduitEnCours[] = $infos['id_feature'];
  742.         }
  743.         $tmpattributes $myproduct["attr_cap"] . "," $myproduct["attr_prec"];
  744.         $tmpattributesid $myproduct["attr_cap_id"] . "," $myproduct["attr_prec_id"];
  745.         $attributes = [];
  746.         foreach (explode(","$tmpattributes) as $k => $attr) {
  747.             $attributes[$k]['id_attribute_group'] = explode(","$tmpattributesid)[$k];
  748.             $attributes[$k]['attribute_name'] = $attr;
  749.         }
  750.         $attributes2 = array();
  751.         foreach ($attributes as $cle => $attribute) {
  752.             //id precison ou ref article => 6
  753.             if ($attribute['id_attribute_group'] == $AttributGroupe) {
  754.                 if (substr($attribute['attribute_name'], -11) == ' ') {
  755.                     $attribute['attribute_name'] = substr($attribute['attribute_name'], 0, -1);
  756.                 }
  757.                 $attributes2[$attribute['group_name']]['list'][$attribute['attribute_name']] = $attribute['attribute_name'];
  758.             }
  759.         }
  760.         $reference $myproduct['reference'];
  761.         // on va chercher les caracteristiques des produits dont la reference commence par $reference (exemple : 5000)
  762.         $sql "
  763.             SELECT fp.id_feature, fp.id_product, fl.name, p.reference, p.id_product, fvl.value
  764.             FROM `pre2398_feature_product` fp
  765.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  766.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  767.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  768.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  769.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.reference LIKE '" $reference "\_%' ORDER BY f.position";
  770.         $query $entityManager->getConnection()->prepare($sql);
  771.         $Array $query->executeQuery()->fetchAllAssociative();
  772.         $ArrayCaracteristiques = array();
  773.         foreach ($Array as $cle => $infos) {
  774.             $PageName $infos['name'];
  775.             $sqlPagesCms '
  776.                 SELECT cl.link_rewrite,cl.meta_title,cl.meta_description,cl.id_cms,c.active,ccl.link_rewrite as link2, ccl2.link_rewrite as link1
  777.                 FROM `pre2398_cms` c
  778.                 INNER JOIN `pre2398_cms_lang` cl ON cl.id_cms = c.id_cms
  779.                 INNER JOIN `pre2398_cms_category` cc ON cc.id_cms_category = c.id_cms_category
  780.                 INNER JOIN `pre2398_cms_category_lang` ccl ON ccl.id_cms_category = cc.id_cms_category
  781.                 INNER JOIN `pre2398_cms_category` cc2 ON cc2.id_cms_category = cc.id_parent
  782.                 INNER JOIN `pre2398_cms_category_lang` ccl2 ON ccl2.id_cms_category = cc2.id_cms_category
  783.                 WHERE cl.id_lang = ' $Langue '
  784.                 AND cl.meta_title = "' $PageName '"
  785.             ';
  786.             $query $entityManager->getConnection()->prepare($sqlPagesCms);
  787.             $PageCms $query->executeQuery()->fetchAllAssociative();
  788.             if ($PageCms != array()) {
  789.                 if ($PageCms[0]['id_cms']) {
  790.                     $meta_description $PageCms[0]['meta_description'];
  791.                     if ($PageCms[0]['active']) {
  792.                         $url "";
  793.                         $url .= $PageCms[0]["link1"] ? "/" $PageCms[0]["link1"] : "";
  794.                         $url .= $PageCms[0]["link2"] ? "/" $PageCms[0]["link2"] : "";
  795.                         $url .= $PageCms[0]["link_rewrite"] ? "/" $PageCms[0]["link_rewrite"] : "";
  796.                     } else {
  797.                         $url "";
  798.                     }
  799.                 } else {
  800.                     $meta_description '';
  801.                     $url '';
  802.                 }
  803.             } else {
  804.                 $meta_description '';
  805.                 $url '';
  806.             }
  807.             $ref explode('_'$infos['reference']);
  808.             // on ne garde que les caracteristiques qui concernent le produit en cours
  809.             if (in_array($infos['id_feature'], $ArrayFeaturedProduitEnCours)) {
  810.                 $ArrayCaracteristiques[$infos['id_feature']]['FeatureName'] =  $infos['name'];
  811.                 $ArrayCaracteristiques[$infos['id_feature']]['url'] = $url;
  812.                 $ArrayCaracteristiques[$infos['id_feature']]['meta_description'] = $meta_description;
  813.                 $infos['value'] = str_replace('[PPQ]''<'$infos['value']);
  814.                 $infos['value'] = str_replace('[PGQ]''>'$infos['value']);
  815.                 $infos['value'] = str_replace('[EG]''='$infos['value']);
  816.                 $ArrayCaracteristiques[$infos['id_feature']]['Products'][$ref[2]] = array(
  817.                     'cle'        =>    $ref[2],
  818.                     'reference'    =>    $infos['reference'],
  819.                     'value'     =>     $infos['value'],
  820.                     'nom'        =>    $ref[1]
  821.                 );
  822.             }
  823.         }
  824.         //cette partie permet de trier le tableau suivant les references des articles/caracteristiques grace a la cle puis on remet la cle/nom qui permettra l'affichage
  825.         $ArrayCaracteristiques2 $ArrayCaracteristiques;
  826.         foreach ($ArrayCaracteristiques as $id => $donnees) {
  827.             ksort($donnees['Products']);
  828.             $ArrayCaracteristiques2[$id]['Products'] = [];
  829.             foreach ($donnees['Products'] as $id2 => $donnees2) {
  830.                 $ArrayCaracteristiques2[$id]['Products'][$donnees2['nom']] = $donnees2;
  831.             }
  832.         }
  833.         // cette partie permet de trier les caracteristiques
  834.         $i 0;
  835.         $TabCarac = [];
  836.         foreach ($ArrayCaracteristiques2 as $id => $donnees) {
  837.             if ($i == 0) {
  838.                 foreach ($donnees['Products'] as $id2 => $donnees2) {
  839.                     $TabCarac[$donnees2['nom']] = $donnees2['nom'];
  840.                     $i++;
  841.                 }
  842.             }
  843.         }
  844.         $files $dbProduct->getProductAttachment($request->getLocale(), $myproduct['id_product']);
  845.         $accessories $dbProduct->getProductAccessories($request->getLocale(), $myproduct['id_product']);
  846.         $appProduct = [];
  847.         foreach ($accessories as $accessory) {
  848.             if ($accessory['name'] == 'Applications') {
  849.                 $debut strpos($accessory['content'], '{products}');
  850.                 $fin strpos($accessory['content'], '{/products}');
  851.                 $references substr($accessory['content'], $debut strlen('{products}'), $fin $debut strlen('{products}'));
  852.                 foreach (explode(","$references) as $reference) {
  853.                     array_push($appProduct$dbProduct->getProductReference($request->getLocale(), $reference)[0]);
  854.                 }
  855.             }
  856.         }
  857.         return $this->render('produit/produit.html.twig', ['contents' => $contents'link' => $linkrewrite'breadcrumb' => $breadcrumb'productsElectro' => $productsElectro'caracteristiques' => $ArrayCaracteristiques2'files' => $files'accessories' => $accessories'appProduct' => $appProduct]);
  858.     }
  859.     #[Route(
  860.         path: ['fr' => '/{_locale}/capteurs-de-couple/{link}''en' => '/{_locale}/torque-transducers/{link}'], 
  861.         name'capteurs_couple_produit'
  862.         requirements: [
  863.             '_locale' => 'en|fr',
  864.         ], 
  865.         priority2
  866.     )]
  867.     #[Route(
  868.         path: ['fr' => '/{_locale}/sm-capteurs-de-couple/{link}''en' => '/{_locale}/torque-transducers/{link}'], 
  869.         name'capteurs_smcouple_produit'
  870.         requirements: [
  871.             '_locale' => 'en|fr',
  872.         ], 
  873.         priority2
  874.     )]
  875.     public function capteurs_couple_produit(Request $requestDbProduct $dbProductEntityManagerInterface $entityManager$link null): Response
  876.     {
  877.         if ($request->getLocale() == 'fr') {
  878.             $breadcrumb = array(['name' => 'Capteurs de couple''link_rewrite' => 'capteurs-de-couple']);
  879.         } else {
  880.             $breadcrumb = array(['name' => 'Torque transducers''link_rewrite' => 'torque-transducers']);
  881.         }
  882.         $contents $dbProduct->getProduct($request->getLocale(), $link);
  883.         $linkrewrite $dbProduct->getLink($contents[0]['id_product'], $request);
  884.         foreach ($contents as $k => $content) {
  885.             $contents[$k]["meta_title"] = $content["name"];
  886.         }
  887.         $productsElectro $dbProduct->getProductsElectro($request->getLocale(), $contents[0]["category_default"]);
  888.         $Langue $request->getLocale() == "fr" "1" "2";
  889.         $id_product $contents[0]["id_product"];
  890.         $myproduct $contents[0];
  891.         $categories = [$myproduct["category_default"]];
  892.         if (in_array(18$categories)) {
  893.             $AttributGroupe 6//instrumentation    => ref article
  894.         } else {
  895.             $AttributGroupe 5// capteur    => precision
  896.         }
  897.         $sql "
  898.             SELECT fp.id_feature, fp.id_product , fl.name, p.reference, p.id_product, fvl.value
  899.             FROM `pre2398_feature_product` fp
  900.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  901.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  902.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  903.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  904.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.id_product = $id_product ORDER BY f.position";
  905.         $query $entityManager->getConnection()->prepare($sql);
  906.         $SQLArrayFeaturedProduitEnCours $query->executeQuery()->fetchAllAssociative();
  907.         foreach ($SQLArrayFeaturedProduitEnCours as $cle => $infos) {
  908.             $ArrayFeaturedProduitEnCours[] = $infos['id_feature'];
  909.         }
  910.         $tmpattributes $myproduct["attr_cap"] . "," $myproduct["attr_prec"];
  911.         $tmpattributesid $myproduct["attr_cap_id"] . "," $myproduct["attr_prec_id"];
  912.         $attributes = [];
  913.         foreach (explode(","$tmpattributes) as $k => $attr) {
  914.             $attributes[$k]['id_attribute_group'] = explode(","$tmpattributesid)[$k];
  915.             $attributes[$k]['attribute_name'] = $attr;
  916.         }
  917.         $attributes2 = array();
  918.         foreach ($attributes as $cle => $attribute) {
  919.             //id precison ou ref article => 6
  920.             if ($attribute['id_attribute_group'] == $AttributGroupe) {
  921.                 if (substr($attribute['attribute_name'], -11) == ' ') {
  922.                     $attribute['attribute_name'] = substr($attribute['attribute_name'], 0, -1);
  923.                 }
  924.                 $attributes2[$attribute['group_name']]['list'][$attribute['attribute_name']] = $attribute['attribute_name'];
  925.             }
  926.         }
  927.         $reference $myproduct['reference'];
  928.         // on va chercher les caracteristiques des produits dont la reference commence par $reference (exemple : 5000)
  929.         $sql "
  930.             SELECT fp.id_feature, fp.id_product, fl.name, p.reference, p.id_product, fvl.value
  931.             FROM `pre2398_feature_product` fp
  932.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  933.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  934.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  935.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  936.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.reference LIKE '" $reference "\_%' ORDER BY f.position";
  937.         $query $entityManager->getConnection()->prepare($sql);
  938.         $Array $query->executeQuery()->fetchAllAssociative();
  939.         $ArrayCaracteristiques = array();
  940.         foreach ($Array as $cle => $infos) {
  941.             $PageName $infos['name'];
  942.             $sqlPagesCms '
  943.                 SELECT cl.link_rewrite,cl.meta_title,cl.meta_description,cl.id_cms,c.active,ccl.link_rewrite as link2, ccl2.link_rewrite as link1
  944.                 FROM `pre2398_cms` c
  945.                 INNER JOIN `pre2398_cms_lang` cl ON cl.id_cms = c.id_cms
  946.                 INNER JOIN `pre2398_cms_category` cc ON cc.id_cms_category = c.id_cms_category
  947.                 INNER JOIN `pre2398_cms_category_lang` ccl ON ccl.id_cms_category = cc.id_cms_category
  948.                 INNER JOIN `pre2398_cms_category` cc2 ON cc2.id_cms_category = cc.id_parent
  949.                 INNER JOIN `pre2398_cms_category_lang` ccl2 ON ccl2.id_cms_category = cc2.id_cms_category
  950.                 WHERE cl.id_lang = ' $Langue '
  951.                 AND cl.meta_title = "' $PageName '"
  952.             ';
  953.             $query $entityManager->getConnection()->prepare($sqlPagesCms);
  954.             $PageCms $query->executeQuery()->fetchAllAssociative();
  955.             if ($PageCms != array()) {
  956.                 if ($PageCms[0]['id_cms']) {
  957.                     $meta_description $PageCms[0]['meta_description'];
  958.                     if ($PageCms[0]['active']) {
  959.                         $url "";
  960.                         $url .= $PageCms[0]["link1"] ? "/" $PageCms[0]["link1"] : "";
  961.                         $url .= $PageCms[0]["link2"] ? "/" $PageCms[0]["link2"] : "";
  962.                         $url .= $PageCms[0]["link_rewrite"] ? "/" $PageCms[0]["link_rewrite"] : "";
  963.                     } else {
  964.                         $url "";
  965.                     }
  966.                 } else {
  967.                     $meta_description '';
  968.                     $url '';
  969.                 }
  970.             } else {
  971.                 $meta_description '';
  972.                 $url '';
  973.             }
  974.             $ref explode('_'$infos['reference']);
  975.             // on ne garde que les caracteristiques qui concernent le produit en cours
  976.             if (in_array($infos['id_feature'], $ArrayFeaturedProduitEnCours)) {
  977.                 $ArrayCaracteristiques[$infos['id_feature']]['FeatureName'] =  $infos['name'];
  978.                 $ArrayCaracteristiques[$infos['id_feature']]['url'] = $url;
  979.                 $ArrayCaracteristiques[$infos['id_feature']]['meta_description'] = $meta_description;
  980.                 $infos['value'] = str_replace('[PPQ]''<'$infos['value']);
  981.                 $infos['value'] = str_replace('[PGQ]''>'$infos['value']);
  982.                 $infos['value'] = str_replace('[EG]''='$infos['value']);
  983.                 $ArrayCaracteristiques[$infos['id_feature']]['Products'][$ref[2]] = array(
  984.                     'cle'        =>    $ref[2],
  985.                     'reference'    =>    $infos['reference'],
  986.                     'value'     =>     $infos['value'],
  987.                     'nom'        =>    $ref[1]
  988.                 );
  989.             }
  990.         }
  991.         //cette partie permet de trier le tableau suivant les references des articles/caracteristiques grace a la cle puis on remet la cle/nom qui permettra l'affichage
  992.         $ArrayCaracteristiques2 $ArrayCaracteristiques;
  993.         foreach ($ArrayCaracteristiques as $id => $donnees) {
  994.             ksort($donnees['Products']);
  995.             $ArrayCaracteristiques2[$id]['Products'] = [];
  996.             foreach ($donnees['Products'] as $id2 => $donnees2) {
  997.                 $ArrayCaracteristiques2[$id]['Products'][$donnees2['nom']] = $donnees2;
  998.             }
  999.         }
  1000.         // cette partie permet de trier les caracteristiques
  1001.         $i 0;
  1002.         $TabCarac = [];
  1003.         foreach ($ArrayCaracteristiques2 as $id => $donnees) {
  1004.             if ($i == 0) {
  1005.                 foreach ($donnees['Products'] as $id2 => $donnees2) {
  1006.                     $TabCarac[$donnees2['nom']] = $donnees2['nom'];
  1007.                     $i++;
  1008.                 }
  1009.             }
  1010.         }
  1011.         $files $dbProduct->getProductAttachment($request->getLocale(), $myproduct['id_product']);
  1012.         $accessories $dbProduct->getProductAccessories($request->getLocale(), $myproduct['id_product']);
  1013.         $appProduct = [];
  1014.         foreach($accessories as $accessory) {
  1015.             if ($accessory['name'] == 'Applications') {
  1016.                 $debut strpos($accessory['content'], '{products}');
  1017.                 $fin strpos($accessory['content'], '{/products}');
  1018.                 $references substr($accessory['content'], $debut strlen('{products}'), $fin $debut strlen('{products}'));
  1019.             
  1020.                 foreach (explode(","$references) as $reference) {
  1021.                     array_push($appProduct$dbProduct->getProductReference($request->getLocale(), $reference)[0]);
  1022.                 }
  1023.             }
  1024.         }
  1025.         if ($request->attributes->get('_route') == 'capteurs_smcouple_produit') {
  1026.             $render 'produit/smproduit.html.twig';
  1027.         } else {
  1028.             $render 'produit/produit.html.twig';
  1029.         }
  1030.         return $this->render($render, ['contents' => $contents'link' => $linkrewrite'breadcrumb' => $breadcrumb'productsElectro' => $productsElectro'caracteristiques' => $ArrayCaracteristiques2'files' => $files'accessories' => $accessories'appProduct' => $appProduct]); 
  1031.     }
  1032.     #[Route(
  1033.         path: ['fr' => '/{_locale}/tensiometres/{link}''en' => '/{_locale}/tensiometers/{link}'],
  1034.         name'tensiometres_produit',
  1035.         requirements: [
  1036.             '_locale' => 'en|fr',
  1037.         ],
  1038.         priority2
  1039.     )]
  1040.     public function tensiometres_produit(Request $requestDbProduct $dbProductEntityManagerInterface $entityManager$link null): Response
  1041.     {
  1042.         if ($request->getLocale() == 'fr') {
  1043.             $breadcrumb = array(['name' => 'Tensiomètres''link_rewrite' => 'tensiometres']);
  1044.         } else {
  1045.             $breadcrumb = array(['name' => 'Tensiometers''link_rewrite' => 'tensiometers']);
  1046.         }
  1047.         $contents $dbProduct->getProduct($request->getLocale(), $link);
  1048.         $linkrewrite $dbProduct->getLink($contents[0]['id_product'], $request);
  1049.         foreach ($contents as $k => $content) {
  1050.             $contents[$k]["meta_title"] = $content["name"];
  1051.         }
  1052.         $productsElectro $dbProduct->getProductsElectro($request->getLocale(), $contents[0]["category_default"]);
  1053.         $Langue $request->getLocale() == "fr" "1" "2";
  1054.         $id_product $contents[0]["id_product"];
  1055.         $myproduct $contents[0];
  1056.         $categories = [$myproduct["category_default"]];
  1057.         if (in_array(18$categories)) {
  1058.             $AttributGroupe 6//instrumentation    => ref article
  1059.         } else {
  1060.             $AttributGroupe 5// capteur    => precision
  1061.         }
  1062.         $sql "
  1063.             SELECT fp.id_feature, fp.id_product , fl.name, p.reference, p.id_product, fvl.value
  1064.             FROM `pre2398_feature_product` fp
  1065.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  1066.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  1067.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  1068.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  1069.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.id_product = $id_product ORDER BY f.position";
  1070.         $query $entityManager->getConnection()->prepare($sql);
  1071.         $SQLArrayFeaturedProduitEnCours $query->executeQuery()->fetchAllAssociative();
  1072.         foreach ($SQLArrayFeaturedProduitEnCours as $cle => $infos) {
  1073.             $ArrayFeaturedProduitEnCours[] = $infos['id_feature'];
  1074.         }
  1075.         $tmpattributes $myproduct["attr_cap"] . "," $myproduct["attr_prec"];
  1076.         $tmpattributesid $myproduct["attr_cap_id"] . "," $myproduct["attr_prec_id"];
  1077.         $attributes = [];
  1078.         foreach (explode(","$tmpattributes) as $k => $attr) {
  1079.             $attributes[$k]['id_attribute_group'] = explode(","$tmpattributesid)[$k];
  1080.             $attributes[$k]['attribute_name'] = $attr;
  1081.         }
  1082.         $attributes2 = array();
  1083.         foreach ($attributes as $cle => $attribute) {
  1084.             //id precison ou ref article => 6
  1085.             if ($attribute['id_attribute_group'] == $AttributGroupe) {
  1086.                 if (substr($attribute['attribute_name'], -11) == ' ') {
  1087.                     $attribute['attribute_name'] = substr($attribute['attribute_name'], 0, -1);
  1088.                 }
  1089.                 $attributes2[$attribute['group_name']]['list'][$attribute['attribute_name']] = $attribute['attribute_name'];
  1090.             }
  1091.         }
  1092.         $reference $myproduct['reference'];
  1093.         // on va chercher les caracteristiques des produits dont la reference commence par $reference (exemple : 5000)
  1094.         $sql "
  1095.             SELECT fp.id_feature, fp.id_product, fl.name, p.reference, p.id_product, fvl.value
  1096.             FROM `pre2398_feature_product` fp
  1097.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  1098.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  1099.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  1100.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  1101.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.reference LIKE '" $reference "\_%' ORDER BY f.position";
  1102.         $query $entityManager->getConnection()->prepare($sql);
  1103.         $Array $query->executeQuery()->fetchAllAssociative();
  1104.         $ArrayCaracteristiques = array();
  1105.         foreach ($Array as $cle => $infos) {
  1106.             $PageName $infos['name'];
  1107.             $sqlPagesCms '
  1108.                 SELECT cl.link_rewrite,cl.meta_title,cl.meta_description,cl.id_cms,c.active,ccl.link_rewrite as link2, ccl2.link_rewrite as link1
  1109.                 FROM `pre2398_cms` c
  1110.                 INNER JOIN `pre2398_cms_lang` cl ON cl.id_cms = c.id_cms
  1111.                 INNER JOIN `pre2398_cms_category` cc ON cc.id_cms_category = c.id_cms_category
  1112.                 INNER JOIN `pre2398_cms_category_lang` ccl ON ccl.id_cms_category = cc.id_cms_category
  1113.                 INNER JOIN `pre2398_cms_category` cc2 ON cc2.id_cms_category = cc.id_parent
  1114.                 INNER JOIN `pre2398_cms_category_lang` ccl2 ON ccl2.id_cms_category = cc2.id_cms_category
  1115.                 WHERE cl.id_lang = ' $Langue '
  1116.                 AND cl.meta_title = "' $PageName '"
  1117.             ';
  1118.             $query $entityManager->getConnection()->prepare($sqlPagesCms);
  1119.             $PageCms $query->executeQuery()->fetchAllAssociative();
  1120.             if ($PageCms != array()) {
  1121.                 if ($PageCms[0]['id_cms']) {
  1122.                     $meta_description $PageCms[0]['meta_description'];
  1123.                     if ($PageCms[0]['active']) {
  1124.                         $url "";
  1125.                         $url .= $PageCms[0]["link1"] ? "/" $PageCms[0]["link1"] : "";
  1126.                         $url .= $PageCms[0]["link2"] ? "/" $PageCms[0]["link2"] : "";
  1127.                         $url .= $PageCms[0]["link_rewrite"] ? "/" $PageCms[0]["link_rewrite"] : "";
  1128.                     } else {
  1129.                         $url "";
  1130.                     }
  1131.                 } else {
  1132.                     $meta_description '';
  1133.                     $url '';
  1134.                 }
  1135.             } else {
  1136.                 $meta_description '';
  1137.                 $url '';
  1138.             }
  1139.             $ref explode('_'$infos['reference']);
  1140.             // on ne garde que les caracteristiques qui concernent le produit en cours
  1141.             if (in_array($infos['id_feature'], $ArrayFeaturedProduitEnCours)) {
  1142.                 $ArrayCaracteristiques[$infos['id_feature']]['FeatureName'] =  $infos['name'];
  1143.                 $ArrayCaracteristiques[$infos['id_feature']]['url'] = $url;
  1144.                 $ArrayCaracteristiques[$infos['id_feature']]['meta_description'] = $meta_description;
  1145.                 $infos['value'] = str_replace('[PPQ]''<'$infos['value']);
  1146.                 $infos['value'] = str_replace('[PGQ]''>'$infos['value']);
  1147.                 $infos['value'] = str_replace('[EG]''='$infos['value']);
  1148.                 $ArrayCaracteristiques[$infos['id_feature']]['Products'][$ref[2]] = array(
  1149.                     'cle'        =>    $ref[2],
  1150.                     'reference'    =>    $infos['reference'],
  1151.                     'value'     =>     $infos['value'],
  1152.                     'nom'        =>    $ref[1]
  1153.                 );
  1154.             }
  1155.         }
  1156.         //cette partie permet de trier le tableau suivant les references des articles/caracteristiques grace a la cle puis on remet la cle/nom qui permettra l'affichage
  1157.         $ArrayCaracteristiques2 $ArrayCaracteristiques;
  1158.         foreach ($ArrayCaracteristiques as $id => $donnees) {
  1159.             ksort($donnees['Products']);
  1160.             $ArrayCaracteristiques2[$id]['Products'] = [];
  1161.             foreach ($donnees['Products'] as $id2 => $donnees2) {
  1162.                 $ArrayCaracteristiques2[$id]['Products'][$donnees2['nom']] = $donnees2;
  1163.             }
  1164.         }
  1165.         // cette partie permet de trier les caracteristiques
  1166.         $i 0;
  1167.         $TabCarac = [];
  1168.         foreach ($ArrayCaracteristiques2 as $id => $donnees) {
  1169.             if ($i == 0) {
  1170.                 foreach ($donnees['Products'] as $id2 => $donnees2) {
  1171.                     $TabCarac[$donnees2['nom']] = $donnees2['nom'];
  1172.                     $i++;
  1173.                 }
  1174.             }
  1175.         }
  1176.         $files $dbProduct->getProductAttachment($request->getLocale(), $myproduct['id_product']);
  1177.         $accessories $dbProduct->getProductAccessories($request->getLocale(), $myproduct['id_product']);
  1178.         $appProduct = [];
  1179.         foreach ($accessories as $accessory) {
  1180.             if ($accessory['name'] == 'Applications') {
  1181.                 $debut strpos($accessory['content'], '{products}');
  1182.                 $fin strpos($accessory['content'], '{/products}');
  1183.                 $references substr($accessory['content'], $debut strlen('{products}'), $fin $debut strlen('{products}'));
  1184.                 foreach (explode(","$references) as $reference) {
  1185.                     array_push($appProduct$dbProduct->getProductReference($request->getLocale(), $reference)[0]);
  1186.                 }
  1187.             }
  1188.         }
  1189.         return $this->render('produit/produit.html.twig', ['contents' => $contents'link' => $linkrewrite'breadcrumb' => $breadcrumb'productsElectro' => $productsElectro'caracteristiques' => $ArrayCaracteristiques2'files' => $files'accessories' => $accessories'appProduct' => $appProduct]);
  1190.     }
  1191.     #[Route(
  1192.         path: ['fr' => '/{_locale}/instrumentation/{link}''en' => '/{_locale}/instrumentation/{link}'],
  1193.         name'instrumentation_produit',
  1194.         requirements: [
  1195.             '_locale' => 'en|fr',
  1196.         ],
  1197.         priority2
  1198.     )]
  1199.     public function instrumentation_produit(Request $requestDbProduct $dbProductEntityManagerInterface $entityManager$link null): Response
  1200.     {
  1201.         if ($request->getLocale() == 'fr') {
  1202.             $breadcrumb = array(['name' => 'Instrumentation''link_rewrite' => 'instrumentation']);
  1203.         } else {
  1204.             $breadcrumb = array(['name' => 'Instrumentation''link_rewrite' => 'instrumentation']);
  1205.         }
  1206.         $contents $dbProduct->getProduct($request->getLocale(), $link);
  1207.         $linkrewrite $dbProduct->getLink($contents[0]['id_product'], $request);
  1208.         foreach ($contents as $k => $content) {
  1209.             $contents[$k]["meta_title"] = $content["name"];
  1210.         }
  1211.         $productsElectro $dbProduct->getProductsElectro($request->getLocale(), $contents[0]["category_default"]);
  1212.         $Langue $request->getLocale() == "fr" "1" "2";
  1213.         $id_product $contents[0]["id_product"];
  1214.         $myproduct $contents[0];
  1215.         $categories = [$myproduct["category_default"]];
  1216.         if (in_array(18$categories)) {
  1217.             $AttributGroupe 6//instrumentation    => ref article
  1218.         } else {
  1219.             $AttributGroupe 5// capteur    => precision
  1220.         }
  1221.         $sql "
  1222.             SELECT fp.id_feature, fp.id_product , fl.name, p.reference, p.id_product, fvl.value
  1223.             FROM `pre2398_feature_product` fp
  1224.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  1225.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  1226.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  1227.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  1228.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.id_product = $id_product ORDER BY f.position";
  1229.         $query $entityManager->getConnection()->prepare($sql);
  1230.         $SQLArrayFeaturedProduitEnCours $query->executeQuery()->fetchAllAssociative();
  1231.         foreach ($SQLArrayFeaturedProduitEnCours as $cle => $infos) {
  1232.             $ArrayFeaturedProduitEnCours[] = $infos['id_feature'];
  1233.         }
  1234.         $tmpattributes $myproduct["attr_cap"] . "," $myproduct["attr_prec"];
  1235.         $tmpattributesid $myproduct["attr_cap_id"] . "," $myproduct["attr_prec_id"];
  1236.         $attributes = [];
  1237.         foreach (explode(","$tmpattributes) as $k => $attr) {
  1238.             $attributes[$k]['id_attribute_group'] = explode(","$tmpattributesid)[$k];
  1239.             $attributes[$k]['attribute_name'] = $attr;
  1240.         }
  1241.         $attributes2 = array();
  1242.         foreach ($attributes as $cle => $attribute) {
  1243.             //id precison ou ref article => 6
  1244.             if ($attribute['id_attribute_group'] == $AttributGroupe) {
  1245.                 if (substr($attribute['attribute_name'], -11) == ' ') {
  1246.                     $attribute['attribute_name'] = substr($attribute['attribute_name'], 0, -1);
  1247.                 }
  1248.                 $attributes2[$attribute['group_name']]['list'][$attribute['attribute_name']] = $attribute['attribute_name'];
  1249.             }
  1250.         }
  1251.         $reference $myproduct['reference'];
  1252.         // on va chercher les caracteristiques des produits dont la reference commence par $reference (exemple : 5000)
  1253.         $sql "
  1254.             SELECT fp.id_feature, fp.id_product, fl.name, p.reference, p.id_product, fvl.value
  1255.             FROM `pre2398_feature_product` fp
  1256.             INNER JOIN `pre2398_feature_value_lang` fvl ON fp.id_feature_value = fvl.id_feature_value
  1257.             INNER JOIN `pre2398_feature_lang` fl ON fp.id_feature = fl.id_feature
  1258.             INNER JOIN `pre2398_product` p ON fp.id_product = p.id_product
  1259.             INNER JOIN `pre2398_feature` f ON f.id_feature = fl.id_feature
  1260.             WHERE fl.id_lang = $Langue AND fvl.id_lang = $Langue AND p.reference LIKE '" $reference "\_%' ORDER BY f.position";
  1261.         $query $entityManager->getConnection()->prepare($sql);
  1262.         $Array $query->executeQuery()->fetchAllAssociative();
  1263.         $ArrayCaracteristiques = array();
  1264.         foreach ($Array as $cle => $infos) {
  1265.             $PageName $infos['name'];
  1266.             $sqlPagesCms '
  1267.                 SELECT cl.link_rewrite,cl.meta_title,cl.meta_description,cl.id_cms,c.active,ccl.link_rewrite as link2, ccl2.link_rewrite as link1
  1268.                 FROM `pre2398_cms` c
  1269.                 INNER JOIN `pre2398_cms_lang` cl ON cl.id_cms = c.id_cms
  1270.                 INNER JOIN `pre2398_cms_category` cc ON cc.id_cms_category = c.id_cms_category
  1271.                 INNER JOIN `pre2398_cms_category_lang` ccl ON ccl.id_cms_category = cc.id_cms_category
  1272.                 INNER JOIN `pre2398_cms_category` cc2 ON cc2.id_cms_category = cc.id_parent
  1273.                 INNER JOIN `pre2398_cms_category_lang` ccl2 ON ccl2.id_cms_category = cc2.id_cms_category
  1274.                 WHERE cl.id_lang = ' $Langue '
  1275.                 AND cl.meta_title = "' $PageName '"
  1276.             ';
  1277.             $query $entityManager->getConnection()->prepare($sqlPagesCms);
  1278.             $PageCms $query->executeQuery()->fetchAllAssociative();
  1279.             if ($PageCms != array()) {
  1280.                 if ($PageCms[0]['id_cms']) {
  1281.                     $meta_description $PageCms[0]['meta_description'];
  1282.                     if ($PageCms[0]['active']) {
  1283.                         $url "";
  1284.                         $url .= $PageCms[0]["link1"] ? "/" $PageCms[0]["link1"] : "";
  1285.                         $url .= $PageCms[0]["link2"] ? "/" $PageCms[0]["link2"] : "";
  1286.                         $url .= $PageCms[0]["link_rewrite"] ? "/" $PageCms[0]["link_rewrite"] : "";
  1287.                     } else {
  1288.                         $url "";
  1289.                     }
  1290.                 } else {
  1291.                     $meta_description '';
  1292.                     $url '';
  1293.                 }
  1294.             } else {
  1295.                 $meta_description '';
  1296.                 $url '';
  1297.             }
  1298.             $ref explode('_'$infos['reference']);
  1299.             // on ne garde que les caracteristiques qui concernent le produit en cours
  1300.             if (in_array($infos['id_feature'], $ArrayFeaturedProduitEnCours)) {
  1301.                 $ArrayCaracteristiques[$infos['id_feature']]['FeatureName'] =  $infos['name'];
  1302.                 $ArrayCaracteristiques[$infos['id_feature']]['url'] = $url;
  1303.                 $ArrayCaracteristiques[$infos['id_feature']]['meta_description'] = $meta_description;
  1304.                 $infos['value'] = str_replace('[PPQ]''<'$infos['value']);
  1305.                 $infos['value'] = str_replace('[PGQ]''>'$infos['value']);
  1306.                 $infos['value'] = str_replace('[EG]''='$infos['value']);
  1307.                 $ArrayCaracteristiques[$infos['id_feature']]['Products'][$ref[2]] = array(
  1308.                     'cle'        =>    $ref[2],
  1309.                     'reference'    =>    $infos['reference'],
  1310.                     'value'     =>     $infos['value'],
  1311.                     'nom'        =>    $ref[1],
  1312.                     'id'        =>  $infos['id_product']
  1313.                 );
  1314.             }
  1315.         }
  1316.         //cette partie permet de trier le tableau suivant les references des articles/caracteristiques grace a la cle puis on remet la cle/nom qui permettra l'affichage
  1317.         $ArrayCaracteristiques2 $ArrayCaracteristiques;
  1318.         foreach ($ArrayCaracteristiques as $id => $donnees) {
  1319.             ksort($donnees['Products']);
  1320.             $ArrayCaracteristiques2[$id]['Products'] = [];
  1321.             foreach ($donnees['Products'] as $id2 => $donnees2) {
  1322.                 $ArrayCaracteristiques2[$id]['Products'][$donnees2['nom']] = $donnees2;
  1323.             }
  1324.         }
  1325.         // cette partie permet de trier les caracteristiques
  1326.         $i 0;
  1327.         $TabCarac = [];
  1328.         foreach ($ArrayCaracteristiques2 as $id => $donnees) {
  1329.             if ($i == 0) {
  1330.                 foreach ($donnees['Products'] as $id2 => $donnees2) {
  1331.                     $TabCarac[$donnees2['nom']] = $donnees2['nom'];
  1332.                     $i++;
  1333.                 }
  1334.             }
  1335.         }
  1336.         $files $dbProduct->getProductAttachment($request->getLocale(), $myproduct['id_product']);
  1337.         $accessories $dbProduct->getProductAccessories($request->getLocale(), $myproduct['id_product']);
  1338.         $appProduct = [];
  1339.         foreach ($accessories as $accessory) {
  1340.             if ($accessory['name'] == 'Applications') {
  1341.                 $debut strpos($accessory['content'], '{products}');
  1342.                 $fin strpos($accessory['content'], '{/products}');
  1343.                 $references substr($accessory['content'], $debut strlen('{products}'), $fin $debut strlen('{products}'));
  1344.                 foreach (explode(","$references) as $reference) {
  1345.                     array_push($appProduct$dbProduct->getProductReference($request->getLocale(), $reference)[0]);
  1346.                 }
  1347.             }
  1348.         }
  1349.         return $this->render('produit/produit.html.twig', ['contents' => $contents'link' => $linkrewrite'breadcrumb' => $breadcrumb'productsElectro' => $productsElectro'caracteristiques' => $ArrayCaracteristiques2'files' => $files'accessories' => $accessories'appProduct' => $appProduct]);
  1350.     }
  1351. }