<?php

/**
 *  Ce script est un exemple d'utilisation de la nouvelle classe destinée à gérer les popups
 *  de navigation sur les données.
 *  Ici, la popup porte sur les fournisseurs.
 */

// On inclut tous les scripts nécessaires
require_once 'application/class/class_panier.php';
require_once 'application/config/boot_init.php';

// Lorsque la popup est appelée
if ('initPopup' === getValue('action')) {
    // On insère l'entête PHP qui contient les liens vers les source scripts javascripts
    // Le mode popup est défini à true afin de masquer le bandeau d'entête
    
    // On créé l'objet Popup et on pass en paramètre l'identifiant de la popup, un type de popup doit donc porté un identifiant unique
    // on passe en 2ème paramètre le nom du script php jouant le rôle de controlleur qui prendra en charge les évènements déclenchés sur la popup
    $monBrowse = new PopupBrowse(getValue('popup_id'), $_SERVER['SCRIPT_NAME']);
    
    // On définit le titre de la popup. Le titre sera affiché.
    $monBrowse->setPopupTitle(trad('Liste des accords-cadres'));
    
    // On définit des propriétés non modifiables par l'utilisateur
    if (! is_null(getValue('CODE_FOUR'))){
        $monBrowse->setProperties('CODE_FOUR', getValue('CODE_FOUR'));
    }
    if (! is_null(getValue('valide'))){
        $monBrowse->setProperties('valide', getValue('valide'));
    }
    if (! is_null(getValue('CENTRE_EMETTEUR'))){
        $monBrowse->setProperties('CENTRE_EMETTEUR', getValue('CENTRE_EMETTEUR'));
    }
    if (! is_null(getValue('CENTRE_LIVRAISON'))){
        $monBrowse->setProperties('CENTRE_LIVRAISON', getValue('CENTRE_LIVRAISON'));
    }
    if (! is_null(getValue('CODE_STE'))){
        $monBrowse->setProperties('CODE_STE', getValue('CODE_STE'));
    }
    if (! is_null(getValue('code_art_haplus'))){
        $monBrowse->setProperties('code_art_haplus', getValue('code_art_haplus'));
    }
    
    // On définit les champs de recherche proposés à l'utilisateur, on peut en ajouter autant qu'on le souhaite.
    // IMPORTANT : 1er paramètre : Le nom des champs ajoutés doit correspondre au nom des colonnes sql utilisés dans la requête de recherche.
    // 2ème paramètre : On définit le libellé du champ qui sera iniqué à l'utilisateur
    $monBrowse->addNewSearchField('CODE_ACD', trad('Code'));
    $monBrowse->addNewSearchField('LIBELLE', trad('Libellé'));
    
    // On définit ici les colonnes qui seront affichées dans le résultats des recherches.
    // On peut définir ici autant de colonne qu'on le souhaite. Générallement, on propose dans l'affichage du résultat au moins toutes
    // les colonnes correspondantes aux champs de recherche
    // 1er paramètre : Le libellé de la colonne, 2ème paramètre : Le nom du champ sql tel qu'il est présent dans la requête sql
    $monBrowse->addNewColumn(trad('Code'), 'CODE_ACD', 'asc', '20%', true, 'A');
    $monBrowse->addNewColumn(trad('Libellé'), 'LIBELLE', 'asc', '80%', true, 'A');
    
    // On définit ici les éléments cibles à utilisés lors de la sélection d'une ligne de résultat par l'utilisateur
    $monBrowse->setTargetFormName(getValue('formName')); // On définit le nom du formulaire possédant le champ de saisi de la valeur sélectionnée depuis la popup
    $monBrowse->setTargetImputField(getValue('inputField')); // On définit le nom du champ de saisi
    $monBrowse->setTargetLabelField(getValue('labelField')); // On définit (optionel) le nom du champ qui contiendra le libellé de la valeur saisie
    
    $monBrowse->addAction('CLOSE_POPUP', 'window.closePopup();');
    
    $monBrowse->setIsActionClick(true);
    $monBrowse->setBackCtrl(getValue('backCtrl'));
    $monBrowse->setBackMode(getValue('backMode'));
    $monBrowse->setBackAction(getValue('backAction'));
    $monBrowse->setBackData(array(
        'CODE_ACD'
    ));
    $monBrowse->setBackPopup(getValue('backPopup'));
    $monBrowse->setBackForm(getValue('backForm'));
    $monBrowse->setBackField(getValue('backField'));
    
    // La popup précédemment construite peut maintenant être affichée
    $monBrowse->buildXML(); // On construite le tableau de données qui sera fusionné avec la feuille de style XSL
    $genXsl = new GenXslt(true);
    // print_r($monBrowse->getArrayXmlForXsl()); exit; 

    echo $genXsl->XslHtml('application/xsl/template_browse/browseCore.xsl', $monBrowse->getArrayXmlForXsl());
    
    PopupBrowse::execSearch('btnSearch', false);
    
    // TRES IMPORTANT : Afin de pouvoir réutiliser la popup dans le script controleur on serialize l'objet. Il pourra être ainsi rapellé par la suite.
    $_SESSION[getValue('popup_id')] = serializeSecure($monBrowse);
}// Si l'utilisateur clique sur le bouton "Rechercher"
elseif ('search' === getValue('action')) {
    // On récupère l'objet popup créé prcédemment en le déserialisant
    $monBrowse = unserializeSecure($_SESSION[getValue('popup_id')]);
    
    $_REQUEST['CODE_FOUR'] = $monBrowse->getProperties('CODE_FOUR');
    $_REQUEST['valide'] = $monBrowse->getProperties('valide');
    $_REQUEST['CENTRE_EMETTEUR'] = $monBrowse->getProperties('CENTRE_EMETTEUR');
    $_REQUEST['CENTRE_LIVRAISON'] = $monBrowse->getProperties('CENTRE_LIVRAISON');
    $_REQUEST['CODE_STE'] = $monBrowse->getProperties('CODE_STE');
    $_REQUEST['code_art_haplus'] = $monBrowse->getProperties('code_art_haplus');

    // On appele la fonction de recherche en passant en paramètre les données GET + POST
    $resultat = $monBrowse->search(getValueAll($_REQUEST));

    
    // On affiche sur la popup le nombre de résultats trouvés
    $monBrowse->showNbResult($resultat['resultat']);
    
    // On créé un nouvel objet : un objet pagination.
    // On lui passe en paramètre : le tableau de résultat de la recherche, le nombre de résultats affiché par page, le numéro de la page en cours
    $Pagination = new Pagination($resultat['resultat'], $monBrowse);
    
    if ($monBrowse->getIsActionClick()) {
        $Pagination->setClickOnLine(true, 'value', $monBrowse->getTargetImputField(), 'CODE_ACD', true); // action permettant d'insérer la valeur de la ligne sélectionnée dans le champ de saisi
        
        $Pagination->setActionBack($monBrowse->getBackMode(), $monBrowse->getBackCtrl(), $monBrowse->getBackAction(), $monBrowse->getBackData(), $monBrowse->getBackPopup(), $monBrowse->getBackForm(), $monBrowse->getBackField(), true);
    }
    
    $Pagination->affichePaginationListe($monBrowse, 'application/xsl/popups_and_listes/browseACD.xsl');
}

$connecteur->disconnect();
exit();