<?php
/**
 * /produit/index.php
 * =========================================================================================================
 *
 * Contrôleur frontal / Page produit
 * 
 * @author          Monagence/Jamal Arbib (jamal.arbib@gmail.com)
 * @started         01/02/2026
 * @updated         17/07/2025
 * @project         Refonte de monagence.com/
 * @namefile        index.php
 * @fileversion     1.0.0
 * @phpversion      8.1.0
 * @htmlversion     HTML5
 * @cssversion      CSS3
 * @jqueryversion   
 * @copyright       2025 by the author
 * @license         no license - free to use - just link to my github - Thanks :)
 * @mygithub        https://github.com/ 
 */

require __DIR__ .'/../app/config/config.php';

if(!isset($_GET['codeProduit']) || empty($_GET['codeProduit']) || !is_numeric($_GET['codeProduit']))
{
    header('Location: https://www.monagence.com');
    die();
}

 	$codeProduit = $_GET['codeProduit'];
    //require __DIR__ .'/../src/produit/produit.php';
    require __DIR__ .'/../src/produit/produit-v7.php';
    //Search similar products
    require __DIR__ .'/../src/searchProducts/SearchProducts.php';
    require __DIR__ .'/../src/extractionData/ExtractionData.php';
    // return $moteurRecherche
    require __DIR__ .'/../src/moteur/MoteurRecherche.php';
 
    $similarProductsQuery = [
		 'country'		=> $produit['countryCode'],
		 'firstIndex'	=> '0',
		 'nbrResults'	=>'6',
	];

    $similarProducts = [];
    $xmlResponse     = SearchProducts::getProductsByCountry($similarProductsQuery) ;
    $similarProducts = ExtractionData::getSimilarProducts($xmlResponse);
   //optimisation du l'url pour la forme canonique
    $label_rewrited = MyURL::rewrite($produit['label']);
    $canonical= '/'.$label_rewrited.'/'.$produit['code'].'/';

    //Extraire le premier type au singulier,: Séjours
    $firstValueType='';
    if (array_key_exists('types',$produit)){
        $firstValueType = reset($produit['types']);
        $firstValueType = rtrim($firstValueType, 's');
    }
    
    //$title = $produit['label'];
    $title = $firstValueType.' '.$produit['countryLabel'].' - '.$produit['label'].' - '.$produit['cityLabel'];


    $description=$produit['label'].', hôtel';
    $description.=' à '.$produit['cityLabel'].', '.$produit['countryLabel'];
    if (array_key_exists('mealPlanCode', $produit)) {
          $description.='. '.$produit['mealPlanLabel'];
    }

    if (array_key_exists('price', $produit['basePriceDispo'])) {
        if( $produit['basePriceDispo']['price'] > 0){
                $description.=" dès ".$produit['basePriceDispo']['price'].'€';
        }
   }
    
    if (array_key_exists('strikePrice', $produit['basePriceDispo'])) {
       if( $produit['basePriceDispo']['strikePrice'] > 0){
        $description.=" au lieu de ".$produit['basePriceDispo']['strikePrice'].'€';
       }
    }
    if (array_key_exists('discount', $produit['basePriceDispo'])) {
        if( $produit['basePriceDispo']['discount'] > 0){
        $description.=", soit une réduction de -".$produit['basePriceDispo']['discount'].'%.';
       }
     }
   
    $description.=" Profitez de l'offre et réservez dès maintenant!";
    $meta=[   
	   'title'		=>$title,
	   'description'=>$description,
	   'h1'		=>$produit['label'],
        'canonical'  => $canonical
	];

    //netoyage des produits MONAGENCE_FLEX
   /* if ($produit['toCode'] =='MONAGENCE_FLEX'){
        $produit['description'] = cleanHtmlDescription($produit['description']);
    }*/ 

	echo $twig->render('produit/disposCalendar.html.twig', 
		array( 
			'page' 	=> 'produit',
			'meta'  =>$meta,
			'produit'=>$produit,
			'countryCode'=>$produit['countryCode'],
			'similarProducts'=>$similarProducts,
	        'moteurRecherche'=>$moteurRecherche
		)
	 );

function cleanHtmlDescription(string $html): string
{
    // 1. Corriger les <p> imbriqués
    $html = str_replace(
        ['<p><p>', '</p></p>'],
        ['<p>', '</p>'],
        $html
    );

    // 2. Supprimer les <p> vides (toutes variantes)
    $html = preg_replace('/<p>(\s|&nbsp;)*<\/p>/i', '', $html);
    
    // 3. Supprimer complètement les <p> contenant uniquement une image
    $html = preg_replace('/<p>\s*<img[^>]*\/?>\s*<\/p>/i', '', $html);

    // 4. Supprimer les balises <span> mais garder leur contenu
    //    - supprime <span ...> et </span>
    $html = preg_replace('/<\/?span[^>]*>/i', '', $html);

    // 5. Nettoyage final : supprimer les espaces multiples
    $html = preg_replace('/\s{2,}/', ' ', $html);

   //<div> et </div> par vide
    $html = preg_replace('/<\/?div[^>]*>/i', '', $html);

    //p avec br
    $html = preg_replace('/<p>(?:\s|&nbsp;|<br\s*\/?>)*<\/p>/i', '', $html);

    //<p><p> par <p>
    $html = preg_replace('/<p>\s*<p>/i', '<p>', $html);

    //<p/></p>   par </p>
    $html = preg_replace('/<\/p>\s*<\/p>/i', '</p>', $html);
     
    //supprimer img dans le p
    $html = preg_replace('/<img[^>]*>/i', '', $html);

    //<p><strong></strong></p>
    $html = preg_replace('/<p>\s*<strong>\s*<\/strong>\s*<\/p>/i', '', $html);

    return trim($html);
}


?>