Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 212 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
class NomFormateur {

        private $nomAFormater = null;
        private $decorateurs = array();
        private $bdd = null;
        private $champsProjet = array();
        private $champsRetour = null;
        private $detailsHrefTpl = null;
        private $ontologieHrefTpl = null;

        public function setNomAFormater(NomDO $nomDO) {
                $this->nomAFormater = $nomDO;
        }

        public function setChampsRetour(Array $champsRetour) {
                $this->champsRetour = $champsRetour;
        }

        public function setChampsProjet(Array $champsProjet) {
                $this->champsProjet = $champsProjet;
        }

        public function setDetailsHrefTpl($tpl) {
                $this->detailsHrefTpl = $tpl;
        }

        public function setBdd($bdd) {
                $this->bdd = $bdd;
        }

        public function setOntologieHrefTpl($tpl) {
                $this->ontologieHrefTpl = $tpl;
        }

        public function formaterDetails() {
                $nomDeco = new NomDecorateur($this->nomAFormater, $this->detailsHrefTpl);
                $retenuDeco = new NomRetenuDecorateur($nomDeco, $this->detailsHrefTpl);
                $rangDeco = new NomRangDecorateur($nomDeco, $this->bdd, $this->ontologieHrefTpl);
                $compoDeco = new NomCompoDecorateur($nomDeco);
                $basioDeco = new NomBasionymeDecorateur($nomDeco, $this->detailsHrefTpl);
                $projetDeco = new NomChampsProjetDecorateur($nomDeco, $this->champsProjet);

                if ($this->avoirDemandeChampsRetour()) {
                        $this->decorateurs[] = $nomDeco;
                        $this->decorateurs[] = $retenuDeco;
                        $this->decorateurs[] = $rangDeco;
                        $this->decorateurs[] = $compoDeco;
                        $this->decorateurs[] = $basioDeco;
                        $this->decorateurs[] = $projetDeco;

                        $this->traiterChampsRetour();
                } else {
                        $nomDeco->ajouterId();
                        $nomDeco->ajouterIntitule();

                        $retenuDeco->ajouterRetenu();
                        $retenuDeco->ajouterId();
                        $retenuDeco->ajouterIntitule();
                        $retenuDeco->ajouterHref();

                        $rangDeco->ajouterCode();
                        $rangDeco->ajouterIntitule();
                        $rangDeco->ajouterHref();

                        $compoDeco->ajouterCompo();

                        $nomDeco->ajouterAuteur();
                        $nomDeco->ajouterAnnee();
                        $nomDeco->ajouterBiblio();
                        $nomDeco->ajouterAddendum();
                        $nomDeco->ajouterNotes();

                        $basioDeco->ajouterId();
                        $basioDeco->ajouterIntitule();
                        $basioDeco->ajouterHref();

                        $projetDeco->ajouterChampsSupplementaires();
                }
                return $nomDeco->getNomFormate();
        }

        public function formaterListe() {
                $nomDeco = new NomDecorateur($this->nomAFormater, $this->detailsHrefTpl);
                $nomDeco->ajouterIntitule();

                $retenuDeco = new NomRetenuDecorateur($nomDeco, $this->detailsHrefTpl);
                $retenuDeco->ajouterRetenu();

                $nomDeco->ajouterHref();

                if ($this->avoirDemandeChampsRetour()) {
                        $this->decorateurs[] = $nomDeco;
                        $this->decorateurs[] = $retenuDeco;

                        $this->decorateurs[] = new NomRangDecorateur($nomDeco, $this->bdd, $this->ontologieHrefTpl);
                        $this->decorateurs[] = new NomCompoDecorateur($nomDeco);
                        $this->decorateurs[] = new NomBasionymeDecorateur($nomDeco, $this->detailsHrefTpl);
                        $this->decorateurs[] = new NomChampsProjetDecorateur($nomDeco, $this->champsProjet);

                        $this->traiterChampsRetour();
                }

                return $nomDeco->getNomFormate();
        }

        private function avoirDemandeChampsRetour() {
                $demande = true;
                if ($this->champsRetour === null || count($this->champsRetour) == 0) {
                        $demande = false;
                }
                return $demande;
        }

        private function traiterChampsRetour() {
                foreach ($this->decorateurs as $deco) {
                        $deco->traiterChampsRetour($this->champsRetour);
                }
        }
}
?>