Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 950 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
584 mathilde 1
<?php
2
/**
3
 *
950 raphael 4
 *	/syntaxons --> retourne l'ensemble des tuples de la table
5
 *	/syntaxons?masque.catminat=#catminat&masque.niveau=#niveau etc.--> retourne les syntaxons répondant à ces critères
6
 *
584 mathilde 7
 * * @package eflore-projets
8
* @author mathilde Salthun-Lassalle
9
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
10
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
11
* @version 1.0
12
* @copyright 1999-2012 Tela Botanica (accueil@tela-botanica.org)
13
 *
14
 */
15
 
950 raphael 16
class SyntaxonsTous	 extends SyntaxonsCommun {
584 mathilde 17
 
18
 
19
	function __construct(Conteneur $conteneur) {
20
		 parent::__construct($conteneur);
950 raphael 21
		 $this->champs_recherches = 'cle, code_catminat, syntaxon,	code_fixe_nom, code_natura_2000, niveau ';
584 mathilde 22
	}
23
 
24
	public function consulter($ressources, $parametres) {
25
		$this->ressources = $ressources;
26
		$this->parametres = $parametres;
27
		$this->traiterParametres();
28
		$this->definirTables();
29
		$resultats = null;
30
		foreach ($this->table_version as $version) {
31
			$this->table = $version;
32
			$requete = $this->assemblerLaRequete();
950 raphael 33
			$resultat =	 $this->Bdd->recupererTous($requete);
34
			// puisque notre implémentation de retournerResultatFormate() n'utilise pas NULL
35
			// et que le prototype de Commun::traiterResultat() doit être respecté, nous passons
36
			// NULL comme second paramètre.
37
			$versionResultat = $this->traiterResultat($resultat, NULL);
584 mathilde 38
			if (count($this->table_version) > 1) {
39
				$resultats[$version] = $versionResultat;
40
			} else {
41
				$resultats = $versionResultat;
42
			}
43
		}
44
		return $resultats;
45
	}
46
 
47
 
48
 
49
	//+-------------------------------------traitement des ressources et des paramètres----------------------------------------+//
50
 
51
	public function traiterParametres() {
52
		if (isset($this->parametres) && !empty($this->parametres) ) {
53
			foreach ($this->parametres as $param => $valeur) {
54
				switch ($param) {
55
					case 'navigation.depart'  :
56
						$this->definirNavigationDepart($valeur);
57
						break;
58
					case 'navigation.limite'  :
59
						$this->definirNavigationLimite($valeur);
60
						break;
61
					case 'version.projet' :
62
						$this->traiterVersion($valeur);
63
						break;
64
					case 'masque.catminat' :
65
						$this->traiterCatminat($valeur);
66
						break;
67
					case 'masque.niveau' :
68
						$this->traiterNiveau($valeur);
69
						break;
70
					case 'masque.retenu' :
71
						$this->traiterRetenu($valeur);
72
						break;
73
					case 'masque.fixe' :
74
						$this->requete_condition[] = ' code_fixe_nom = \''.$valeur.'\' ';
75
						break;
76
					case 'retour.champs' :
77
						$this->champs_recherches .= ','.$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
	public function traiterRetenu($valeur) {
90
		$valeur = trim($valeur);
91
		if( $valeur == 'true') {
92
			$this->requete_condition[] = ' niveau NOT LIKE \'syn%\' ';
93
		} elseif ( $valeur == 'false') {
94
			$this->requete_condition[] = ' niveau LIKE \'syn%\' ';
95
		}
96
	}
97
 
98
	public function traiterCatminat($valeur) {
99
		$valeur = trim($valeur);
100
		$valeur = str_replace('-', '/', $valeur);
101
		$this->requete_condition[] = ' code_catminat = '.$this->getBdd()->proteger($valeur).'';
102
	}
103
 
104
	public function traiterNiveau($valeur) {
105
		$valeur = strtoupper(trim($valeur));
106
		if (in_array($valeur,$this->niv)) {
107
			$this->requete_condition[] = ' niveau = '.$this->getBdd()->proteger($valeur).'';
108
			//$this->requete_condition[] = ' code_catminat = '.$this->catminat.'';
109
		} else {
110
			$e = "Erreur : valeur inconnue pour masque.niveau."
111
			." valeurs possibles : ALL|ORD|CLA|SUBCLA|SUBORD|SUBALL|ASS|SUBASS|BC|DC|GRPT";
112
			throw new Exception($e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
113
		}
114
	}
115
 
116
 
117
	//+--------------------------formatages de resultats  -------------------------------------------+
118
 
119
	public function retournerResultatFormate($resultat) {
120
		$resultat_json = array();
121
		$resultat_json['entete'] = $this->ajouterEnteteResultat();
122
		foreach ($resultat as $cle => $res) {
123
			$resultat[$cle]['href'] = $this->ajouterHref('syntaxons','cle:'.$res['cle']);
124
			$resultat[$cle] = array_merge($resultat[$cle],$this->traiterOntologieNiveau($res['niveau']));
125
			unset($resultat[$cle]['niveau']);
126
		}
127
		$resultat_json['resultat'] = $resultat;
128
		return $resultat_json;
129
	}
130
 
131
 
132
 
133
	public function ajouterEnteteResultat() {
134
		$entete['depart'] = $this->limite_requete['depart'];
135
		$entete['limite'] = $this->limite_requete['limite'];
950 raphael 136
		$entete['total']  =	 $this->total_resultat;
137
		$entete['version']	= $this->version_projet;
584 mathilde 138
		$ressources = (empty($this->ressources)) ? '/syntaxons' : '/syntaxons/' ;
139
		$url = $this->formulerUrl($this->total_resultat, $ressources.implode('/',$this->ressources));
140
		if (isset($url['precedent']) && $url['precedent'] != '') {
141
			$entete['href.precedent'] = $url['precedent'];
142
		}
143
		if (isset($url['suivant']) && $url['suivant'] != '') {
950 raphael 144
			$entete['href.suivant']	  = $url['suivant'];
584 mathilde 145
		}
146
		return $entete;
147
	}
148
 
149
 
150
 
151
}
152
?>