Subversion Repositories eFlore/Projets.eflore-projets

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
584 mathilde 1
<?php
2
/**
3
 *
4
 *  /syntaxons?masque.catminat=#catminat&masque.niveau=#niveau etc.--> retourne les syntaxons répondant à ces critères
5
 *  /syntaxons/cle:#cle --> retourne les informations de ce syntaxon ( peut être un synonyme )
6
 *
7
 *  Remarque : le code fixe n'est pas tout à fait unique puisque certaines valeurs (ex. 1489)
8
 *  apparaissent 2 ou 3 fois avec des codes catminat  ou des syntaxons sensiblement différents.
9
 *  C'est pourquoi il n'est pas utilisé.
10
 *
11
 *
12
 * @package eflore-projets
13
 * @author mathilde Salthun-Lassalle
14
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @version 1.0
17
 * @copyright 1999-2012 Tela Botanica (accueil@tela-botanica.org)
18
 *
19
 */
20
 
21
class SyntaxonsCode  extends SyntaxonsCommun {
22
 
23
 
24
	public function consulter($ressources, $parametres) {
25
		$this->ressources = $ressources;
26
		$this->parametres = $parametres;
27
		$this->traiterRessources();
28
		$this->traiterParametres();
29
		$this->definirTables();
30
		$resultats = null;
31
		$requete = '';
32
		foreach ($this->table_version as $version) {
33
			$this->table = $version;
34
			$requete = $this->assemblerLaRequete();
35
			$resultat =  $this->Bdd->recupererTous($requete);
766 raphael 36
			$versionResultat = $this->traiterResultat($resultat, $version);
584 mathilde 37
			if (count($this->table_version) > 1) {
38
				$resultats[$version] = $versionResultat;
39
			} else {
40
				$resultats = $versionResultat;
41
			}
42
		}
43
		return $resultats;
44
	}
45
 
46
	function __construct(Conteneur $conteneur) {
47
		 parent::__construct($conteneur);
48
	}
49
 
50
 
51
 
52
 
53
	//+-------------------------------------traitement des ressources et des paramètres----------------------------------------+//
54
 
55
 
56
	public function traiterRessources() {
57
		$catminat='';
58
		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)) {
59
			$this->catminat = str_replace('-', '/',$retour[1]);
60
			$this->requete_condition[] = ' code_catminat =  \''.$this->catminat.'\' ' ;
61
			$this->requete_condition[] = ' niveau NOT LIKE \'syn%\' ';
62
		} elseif (preg_match("/cle:([0-9]+)/",$this->ressources[0], $retour)) {
63
			$this->champs_recherches = ' * ';
64
			$this->requete_condition[] = ' cle =  '.$retour[1].' ' ;
65
		}elseif ($this->ressources[0]) {
66
			$e = 'Erreur dans l\'url de votre requête : </br> La ressource demandée n\'existe pas.';
67
			throw new Exception($e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
68
		}
69
		return $catminat;
70
	}
71
 
72
	public function traiterParametres() {
73
		if (isset($this->parametres) && !empty($this->parametres) ) {
74
			foreach ($this->parametres as $param => $valeur) {
75
				switch ($param) {
76
					case 'version.projet' :
77
						$this->traiterVersion($valeur);
78
						break;
79
					default :
80
						$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
81
					.$param.' " n\'existe pas.';
82
					$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);	break;
83
				}
84
			}
85
		}
86
 
87
	}
88
 
89
 
90
 
91
	//+--------------------------formatages de resultats  -------------------------------------------+
92
 
93
	public function retournerResultatFormate($resultat) {
94
		$resultat_json = array();
95
		foreach ($resultat as $cle => $res) {
96
			$resultat[$cle] = array_merge($resultat[$cle],$this->traiterOntologieNiveau($res['niveau']));
97
			unset($resultat[$cle]['niveau']);
98
			$resultat[$cle] = $this->enleverValeursVides($resultat[$cle]);
99
		}
100
		$resultat_json['resultat'] = $resultat;
101
		return $resultat_json;
102
	}
103
 
104
 
105
}
106
 
107
?>