Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

<?php
/**
 * 
 *  /syntaxons?masque.catminat=#catminat&masque.niveau=#niveau etc.--> retourne les syntaxons répondant à ces critères
 *  /syntaxons/cle:#cle --> retourne les informations de ce syntaxon ( peut être un synonyme )
 *  
 *  Remarque : le code fixe n'est pas tout à fait unique puisque certaines valeurs (ex. 1489) 
 *  apparaissent 2 ou 3 fois avec des codes catminat  ou des syntaxons sensiblement différents.
 *  C'est pourquoi il n'est pas utilisé.
 *  
 *   
 * @package eflore-projets
 * @author mathilde Salthun-Lassalle
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 * @version 1.0
 * @copyright 1999-2012 Tela Botanica (accueil@tela-botanica.org)
 *
 */

class SyntaxonsCode  extends SyntaxonsCommun {
        
        
        public function consulter($ressources, $parametres) {
                $this->ressources = $ressources;
                $this->parametres = $parametres;
                $this->traiterRessources();
                $this->traiterParametres();
                $this->definirTables();
                $resultats = null;
                $requete = '';
                foreach ($this->table_version as $version) {
                        $this->table = $version;
                        $requete = $this->assemblerLaRequete();
                        $resultat =  $this->Bdd->recupererTous($requete);
                        $versionResultat = $this->traiterResultat($resultat);
                        if (count($this->table_version) > 1) {
                                $resultats[$version] = $versionResultat;
                        } else {
                                $resultats = $versionResultat;
                        }
                }
                return $resultats;
        }
        
        function __construct(Conteneur $conteneur) {
                 parent::__construct($conteneur);
        }
        

        
        
        //+-------------------------------------traitement des ressources et des paramètres----------------------------------------+//
        
        
        public function traiterRessources() {
                $catminat='';
                if(preg_match("/catminat:(([0-9]{2}\-$)|([0-9]{2}\-[0-9]\.$)|([0-9]{2}\-(?:[0-9]\.){1,5}[0-9]$)|([0-9]{2}\-(?:[0-9]\.){4,5}[0-9]\-[0-9]+(?:bis|ter|quater){0,1}$))/",$this->ressources[0], $retour)) {
                        $this->catminat = str_replace('-', '/',$retour[1]);
                        $this->requete_condition[] = ' code_catminat =  \''.$this->catminat.'\' ' ;
                        $this->requete_condition[] = ' niveau NOT LIKE \'syn%\' ';
                } elseif (preg_match("/cle:([0-9]+)/",$this->ressources[0], $retour)) {
                        $this->champs_recherches = ' * ';
                        $this->requete_condition[] = ' cle =  '.$retour[1].' ' ;
                }elseif ($this->ressources[0]) {
                        $e = 'Erreur dans l\'url de votre requête : </br> La ressource demandée n\'existe pas.';
                        throw new Exception($e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
                }
                return $catminat;
        }
        
        public function traiterParametres() {
                if (isset($this->parametres) && !empty($this->parametres) ) {
                        foreach ($this->parametres as $param => $valeur) {
                                switch ($param) {
                                        case 'version.projet' :
                                                $this->traiterVersion($valeur);
                                                break;
                                        default :
                                                $e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
                                        .$param.' " n\'existe pas.';
                                        $this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);     break;
                                }
                        }
                }
                        
        }
        
        
        
        //+--------------------------formatages de resultats  -------------------------------------------+
        
        public function retournerResultatFormate($resultat) {
                $resultat_json = array();
                foreach ($resultat as $cle => $res) {
                        $resultat[$cle] = array_merge($resultat[$cle],$this->traiterOntologieNiveau($res['niveau']));
                        unset($resultat[$cle]['niveau']);
                        $resultat[$cle] = $this->enleverValeursVides($resultat[$cle]);
                }
                $resultat_json['resultat'] = $resultat;
                return $resultat_json;
        }
        

}

?>