<?php

//
// Spec 3615 Formulaire générique de recherche avancée
//

// Liste des champs à considérer : nom, type
// le type donne aussi la liste des opérateurs (contient, est égal...)
// le type donne code, libellé, nombre de case à afficher, libellé entre les cases

/**
 * Classe qui permet , dans le cadre de la recherche avancée, de gérer la liste des critères possibles pour l'affichage d'une ligne
 */
class RechAvGeneEtatLigne
{

    private $champ;

    private $operateur;

    private $valeur1;

    private $valeur2;

    private $onclick;

    private $popup_id;

    public function __construct($popup_id)
    {
        $this->champ = $this->operateur = $this->valeur1 = $this->valeur2 = $this->onclick = '';
        $this->popup_id = $popup_id;
    }

    // Gestion de la liste des critères en fonction des popups
    public static function &GetTousLesCriteres(& $popup_id)
    {
        switch ($popup_id) {
            case RechercheAvanceeGestionFournisseurs::$popup_id:
                $listeCriteres = RechercheAvanceeGestionFournisseurs::GetListeCriZteres();
                break;
            case RechercheAvanceeGestFourniss::$popup_id:
                $listeCriteres = RechercheAvanceeGestFourniss::GetListeCriteres();
                break;
            case RechercheAvanceeGroupementFournisseurs::$popup_id:
                $listeCriteres = RechercheAvanceeGroupementFournisseurs::GetListeCriteres();
                break;
        }
        return $listeCriteres;
    }

    public static function &BuildXMLListeCriteres(& $popup_id)
    {
        $resultat = null;
        $baseCriteres = RechAvGeneEtatLigne::GetTousLesCriteres($popup_id);
        foreach ($baseCriteres as $cle => &$valeur) {
            $resultat[] = array(
                '!libelle' => $valeur['libelle'],
                '!type' => $valeur['type'],
                '!code' => $cle
            );
        }
        return $resultat;
    }

    // Getters et setters
    public function &GetChamp()
    {
        return $this->champ;
    }

    public function SetChamp($champ)
    {
        $tousLesCriteres = RechAvGeneEtatLigne::GetTousLesCriteres($this->popup_id);
        // Est-ce que le critère existe dans la liste des champs de la popup?
        if (array_key_exists($champ, $tousLesCriteres)) {
            $this->champ = $champ;
            $this->operateur = $tousLesCriteres[$champ]['type'];
        }
    }

    public function &GetOperateur()
    {
        return $this->operateur;
    }

    public function SetOperateur($operateur)
    {
        $this->operateur = $operateur;
    }

    public function &GetValeur1()
    {
        return $this->valeur1;
    }

    public function SetValeur1($valeur1)
    {
        $this->valeur1 = $valeur1;
    }

    public function &GetValeur2()
    {
        return $this->valeur2;
    }

    public function SetValeur2($valeur2)
    {
        $this->valeur2 = $valeur2;
    }

    public function &GetOnclick()
    {
        return $this->onclick;
    }

    public function SetOnclick($onclick)
    {
        $this->onclick = $onclick;
    }
}
