<?php

// 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 destinataires'));
    
    // 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', trad('Login'));
    $monBrowse->addNewSearchField('RS', trad('Nom'));
    $monBrowse->addNewSearchField('CPOSTAL', trad('Code postal'));
    $monBrowse->addNewSearchField('VILLE', trad('Ville'));
    
    // 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('Login'), 'CODE', 'asc', '20%', true, 'A');
    $monBrowse->addNewColumn(trad('Nom'), 'RS', 'asc', '30%', true, 'A');
    $monBrowse->addNewColumn(trad('Code postal'), 'CPOSTAL', 'asc', '20%', true, 'A');
    $monBrowse->addNewColumn(trad('Ville'), 'VILLE', 'asc', '30%', 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);
    
    // 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);
    
    echo $genXsl->XslHtml('application/xsl/template_browse/browseCore.xsl', $monBrowse->getArrayXmlForXsl());
    
    $monBrowse->setBackCtrl(getValue('backCtrl'));
    $monBrowse->setBackMode(getValue('backMode'));
    $monBrowse->setBackAction(getValue('backAction'));
    $monBrowse->setBackData(array(
        'CODE',
        'NOM'
    ));
    $monBrowse->setBackPopup(getValue('backPopup'));
    $monBrowse->setBackForm(getValue('backForm'));
    $monBrowse->setBackField(getValue('backField'));
    
    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')]);
    
    // 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', true); // action permettant d'insérer la valeur de la ligne sélectionnée dans le champ de saisi
        $Pagination->setClickOnLine(false, 'innerHTML', $monBrowse->getTargetLabelField(), 'RS', true); // action permettant d'afficher le libellé de la valeur 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/browseDestinataires.xsl');
}
$connecteur->disconnect();
exit();	