Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 163 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

<?php
class NomDecorateur implements NomResponsabilite {
        protected $nom = null;
        protected $nomFormate = array();
        private $detailsHrefTpl = null;
        protected $correspondances = array(
                'id' => 'Id',
                'nom_sci' => 'Intitule',
                'href' => 'Href',
                'auteur' => 'Auteur',
                'annee' => 'Annee',
                'biblio_origine' => 'Biblio',
                'nom_addendum' => 'Addendum',
                'notes' => 'Notes',
                'homonyme' => 'Homonyme');

        public function __construct(NomDO $nomADecorer, $detailsHrefTpl) {
                $this->nom = $nomADecorer;
                $this->detailsHrefTpl = $detailsHrefTpl;
                $this->initialiserNomFormate();
        }

        public function traiterChampsRetour(Array $champsRetour) {
                foreach ($champsRetour as $champ) {
                        if (array_key_exists($champ, $this->correspondances)) {
                                $methodesAExecuter = explode(',', $this->correspondances[$champ]);
                                foreach ($methodesAExecuter as $methodeNom) {
                                        $methodeAjouter = 'ajouter'.$methodeNom;
                                        if (method_exists($this, $methodeAjouter)) {
                                                $this->$methodeAjouter();
                                                unset($champsRetour[$champ]);
                                        }
                                }
                        }
                }
                return $champsRetour;
        }

        public function ajouterId() {
                $this->nomFormate['id'] = (int) $this->nom->getTag('num_nom');
        }

        public function ajouterIntitule() {
                $this->nomFormate['nom_sci'] = $this->nom->getTag('nom_sci');
        }

        public function ajouterHref() {
                if ($this->nom->verifierTag('num_nom')) {
                        $href = sprintf($this->detailsHrefTpl, $this->nom->getTag('num_nom'));
                        $this->nomFormate['href'] = $href;
                }
        }

        public function ajouterAuteur() {
                if ($this->nom->verifierTag('auteur')) {
                        $this->nomFormate['auteur'] = $this->nom->getTag('auteur');
                }
        }

        public function ajouterAnnee() {
                if ($this->nom->verifierTag('annee')) {
                        $this->nomFormate['annee'] = $this->nom->getTag('annee');
                }
        }

        public function ajouterBiblio() {
                if ($this->nom->verifierTag('biblio_origine')) {
                        $this->nomFormate['biblio_origine'] = $this->nom->getTag('biblio_origine');
                }
        }

        public function ajouterAddendum() {
                if ($this->nom->verifierTag('nom_addendum')) {
                        $this->nomFormate['nom_addendum'] = $this->nom->getTag('nom_addendum');
                }
        }

        public function ajouterNotes() {
                if ($this->nom->verifierTag('notes')) {
                        $this->nomFormate['notes'] = $this->nom->getTag('notes');
                }
        }

        public function ajouterHomonyme() {
                if ($this->nom->verifierTag('homonyme') && $this->nom->getTag('homonyme') == 1) {
                        $this->nomFormate['homonyme'] = true;
                }
        }

        public function initialiserNomFormate() {
                $this->nomFormate = array();
        }

        public function getNomFormate() {
                return $this->nomFormate;
        }
}
?>