Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 998 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
 * Classe gérant les noms scientifiques.
 *
 * @category    PHP 5.2
 * @package             eflore-consultation
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @author              Delphine CAUQUIL <delphine@tela-botanica.org>
 * @copyright   2011 Tela-Botanica
 * @license             http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
 * @license             http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
 * @version             $Id$
 */
class Noms extends Eflore {

        public function getSynonymes($nn) {
                $tpl = Config::get('nomsSynonymesTpl');
                $params = array('id' => $nn);
                $url = $this->formaterUrl($tpl, $params);
                return $this->chargerDonnees($url);
        }
        
        public function getFlores($nn) {
                $tpl = Config::get('nomsFloresTpl');
                $params = array('id' => $nn);
                $url = $this->formaterUrl($tpl, $params);
                return $this->chargerDonnees($url);
        }

        public function getNom($nn) {
                return $this->chargerDonnees($this->getUrlNom($nn));
        }
        

        public function getRechercheEtendue($nom, $type_resultat = '') {
                $methode = 'getUrlRecherche'.$type_resultat;

                if (method_exists($this, $methode)) {
                        $url = $this->$methode($nom, 'etendue');
                } else {
                        $url = $this->getUrlRecherche($nom, 'etendue');
                        Debug::printr("Le type de recherche demandé '$type_resultat' n'est pas disponible.");
                }
                return $this->chargerDonneesRecursivement($url);
        }

        public function getRechercheFloue($nom) {
                $url = $this->getUrlRecherche($nom, 'floue');
                return $this->chargerDonnees($url);
        }
        
        public function getRechercheAvancee($parametres) {
                $url = $this->getUrlRechercheAvancee($parametres);
                return $this->chargerDonnees($url);
        }
        
        private function getUrlRechercheAvancee($parametres){
                $tpl = Config::get('nomsRechercheAvanceeTpl');
                $masques =  $this->formaterMasquesRechercheAvancee($parametres);
                $url = '';
                if($masques != ''){
                        $url = $this->formaterUrl($tpl,array('projet'=> $this->getProjet(), 'type' => 'etendue'));
                        $url .= '&'.implode('&',$masques);
                }
                return $url;
        }
        
        private function formaterMasquesRechercheAvancee($parametres) {
                $masques = '';
                foreach ($parametres as $masque => $valeur){
                        if ($valeur != '' && in_array($valeur, I18n::get('Recherche-form-avancee')) == false){
                                if ($masque == 'type') {
                                        $masques[] = 'masque='.urlencode('%'.$valeur);
                                } elseif ($masque == 'au') {
                                        $masques[] = 'masque.au='.urlencode($valeur.',('.$valeur.'%),% '.$valeur);
                                } elseif ($masque == 'bib'){
                                        $masques[] = 'masque.bib='.urlencode($valeur.',%; '.$valeur);
                                } else {
                                        $valeur = ($valeur == '0') ? '' : $valeur;
                                        $masques[] = 'masque.'.$masque.'='.urlencode($valeur);
                                }
                        }
                }
                return $masques;
        }
        
        private function getUrlNom($nn) {
                $tpl = Config::get('nomTpl');
                $params = array('id' => $nn);
                $url = $this->formaterUrl($tpl, $params);
                return $url;
        }

        // retourne les champs par defaut
        private function getUrlRecherche($nom, $typeRech) {
                $tpl = Config::get('nomsRechercheTpl');
                $params = array('valeur' => $nom, 'type' => $typeRech);
                $url = $this->formaterUrl($tpl, $params);
                return $url;
                
        }

        // retourne les champs par defaut
        private function getUrlRechercheAlphab($nom, $typeRech) {
                $tpl = Config::get('nomsRechercheAlphabTpl');
                $params = array('valeur' => $nom, 'type' => $typeRech);
                $url = $this->formaterUrl($tpl, $params);
                return $url;
        }

        // retourne les champs par defaut
        private function getUrlRechercheRetenu($nom, $typeRech) {
                $tpl = Config::get('nomsRechercheRetenuTpl');
                $params = array('valeur' => $nom, 'type' => $typeRech);
                $url = $this->formaterUrl($tpl, $params);
                return $url;
        }

        private function getUrlRechercheSynonyme($nom, $typeRech) {
                $tpl = Config::get('nomsRechercheSynonymeTpl');
                $params = array('valeur' => $nom, 'type' => $typeRech);
                $url = $this->formaterUrl($tpl, $params);
                return $url;
        }

        // retourne les champs par defaut + nom retenu
        private function getUrlRechercheDetermination($nom, $typeRech) {
                $tpl = Config::get('nomsRechercheDeterminationTpl');
                $params = array('valeur' => $nom, 'type' => $typeRech);
                $url = $this->formaterUrl($tpl, $params);
                return $url;
        }

        // retourne les champs par defaut + nom decompose (au, an et bib)
        private function getUrlRechercheDecompo($nom, $typeRech) {
                $tpl = Config::get('nomsRechercheDecompoTpl');
                $params = array('valeur' => $nom, 'type' => $typeRech);
                $url = $this->formaterUrl($tpl, $params);
                return $url;
        }

}
?>