Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 517 | Rev 525 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 517 Rev 518
Line 36... Line 36...
36
 
36
 
37
	public function consulter($ressources, $parametres) {
37
	public function consulter($ressources, $parametres) {
38
		$this->ressources = $ressources;
38
		$this->ressources = $ressources;
39
		$this->parametres = $parametres;
39
		$this->parametres = $parametres;
-
 
40
		$this->traiterParametres();
40
		$this->traiterParametres();
41
		$this->DefinirTables();
41
		$this->traiterVersionProjet();
42
		$this->traiterRessources();
42
		$resultats = null;
43
		$resultats = null;
43
		foreach ($this->table_version as $version) {
44
		foreach ($this->table_version as $version) {
44
			$this->table = $version;
-
 
45
			$this->recupererNomChamp($this->table);
-
 
46
			$this->traiterRessources();
45
			$this->table = $version;
47
			$requete = $this->assemblerLaRequete();
46
			$requete = $this->assemblerLaRequete();
48
			$resultat = $this->getBdd()->recupererTous($requete);
47
			$resultat = $this->getBdd()->recupererTous($requete);
49
			$versionResultat = $this->traiterResultat($resultat, $version, $requete);
48
			$versionResultat = $this->traiterResultat($resultat, $version);
50
			if (count($this->table_version) > 1) {
49
			if (count($this->table_version) > 1) {
51
				$resultats[$version] = $versionResultat;
50
				$resultats[$version] = $versionResultat;
52
			} else {
51
			} else {
53
				$resultats = $versionResultat;
52
				$resultats = $versionResultat;
54
			}
53
			}
55
		}
54
		}
56
		return $resultats;
55
		return $resultats;
Line 57... Line 56...
57
	}
56
	}
58
 
57
 
59
	public function traiterResultat($resultat, $version, $requete) {
58
	public function traiterResultat($resultat, $version) {
60
		$versionResultat = null;
59
		$versionResultat = null;
61
		if ($resultat == '') {
60
		if ($resultat == '') {
62
			$message = 'La requête SQL formée comporte une erreur!';
61
			$message = 'La requête SQL formée comporte une erreur!';
Line 132... Line 131...
132
							break;
131
							break;
133
						} else {
132
						} else {
134
							$e = "Valeur de paramètre inconnue pour 'retour.format'.";
133
							$e = "Valeur de paramètre inconnue pour 'retour.format'.";
135
							$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
134
							$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
136
						}
135
						}
-
 
136
					case 'version.projet' :
-
 
137
						$this->traiterVersion($valeur);
-
 
138
						break;
137
					default :
139
					default :
138
						$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
140
						$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
139
							.$param.' " n\'existe pas.';
141
							.$param.' " n\'existe pas.';
140
						$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);	break;
142
						$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);	break;
141
				}
143
				}
Line 172... Line 174...
172
			}
174
			}
173
		} else {
175
		} else {
174
			$this->champs_recherches=" cle, catminat_code, BDNT, num_taxon, num_nomen ";
176
			$this->champs_recherches=" cle, catminat_code, BDNT, num_taxon, num_nomen ";
175
		}
177
		}
176
	}
178
	}
177
 
179
	
-
 
180
	//+++------------------------------traitement des versions----------------------------------------++
-
 
181
	
-
 
182
	public function traiterVersion($valeur) {
-
 
183
		if (preg_match('/^[0-9]+(?:[._][0-9]+)*$/', $valeur) || $valeur == '*' || $valeur == '+') {
-
 
184
			$this->version_projet = $valeur;
-
 
185
		} else {
-
 
186
			$e = "Erreur : La version est inconnue.";
-
 
187
			$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
-
 
188
		}
-
 
189
		if ($this->version_projet == '*' && $this->ressources == array()) {
-
 
190
			$message = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id";
-
 
191
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
-
 
192
			throw new Exception($message, $code);
-
 
193
		}
-
 
194
	}
-
 
195
	
-
 
196
	public function DefinirTables() {
-
 
197
		$table_num_version = $this->recupererVersionDisponible();
-
 
198
		$prefixe_table = config::get('bdd_table');
-
 
199
		if ( in_array($this->version_projet,$table_num_version) ) {
-
 
200
			$this->table_version[] = $prefixe_table.'_v'.$this->version_projet;
-
 
201
		} elseif ($this->version_projet == '+') {
-
 
202
					$derniere_version = $table_num_version[count($table_num_version) - 1];
-
 
203
					$this->table_version[] = $prefixe_table.'_v'.str_replace('.', '_', $derniere_version);
-
 
204
		} elseif ($this->version_projet == '*') {
-
 
205
			foreach ($table_num_version as $num_version) {
-
 
206
				$this->table_version[] = $prefixe_table.'_v'.str_replace('.', '_', $num_version);
-
 
207
			}
-
 
208
		} else {
-
 
209
			$e = "Erreur : La version est inconnue.";
-
 
210
			$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
-
 
211
		}
-
 
212
	}
-
 
213
	
178
//+--------------------------formatages de resultats  -------------------------------------------+
214
//+--------------------------formatages de resultats  -------------------------------------------+
179
	public function retournerResultatFormate($resultat) {
215
	public function retournerResultatFormate($resultat) {
180
		if ((count($this->ressources)) == 0) {
216
		if ((count($this->ressources)) == 0) {
181
			$table_retour_json = $this->formaterResultatsInformations($resultat);
217
			$table_retour_json = $this->formaterResultatsInformations($resultat);
182
		} else {
218
		} else {
Line 295... Line 331...
295
		return $entete;
331
		return $entete;
296
	}
332
	}
Line 297... Line 333...
297
 
333
 
-
 
334
 
298
 
335
//+--------------------------traitement ontologies -------------------------------------------+
-
 
336
 
299
//+--------------------------traitement ontologies -------------------------------------------+
337
	public function recupererOntologies($valeur, $champs){
300
	public function recupererOntologies($valeur, $champs){
338
		$url = Config::get('url_service_base').Config::get('nom_projet').
301
		$url = $this->ajouterHref('ontologies',$this->champs_ontologiques[$champs].':'.urlencode(urlencode($valeur)));
339
			'/ontologies/'.$this->champs_ontologiques[$champs].':'.urlencode(urlencode($valeur));
302
		$val = $this->consulterHref($url);
340
		$val = $this->consulterHref($url);
303
		$resultat_json[$champs.'.libelle'] = $val->nom;
341
		$resultat_json[$champs.'.libelle'] = $val->nom;
304
		$resultat_json[$champs.'.code'] = $valeur;
342
		$resultat_json[$champs.'.code'] = $valeur;
Line 328... Line 366...
328
					break;
366
					break;
329
			}
367
			}
Line 330... Line 368...
330
 
368
 
331
			foreach ($types_sstypes as $cle => $tb) {
369
			foreach ($types_sstypes as $cle => $tb) {
-
 
370
				if (($cle == 'type.principal') || ($cle == 'type.secondaire')) {
332
				if (($cle == 'type.principal') || ($cle == 'type.secondaire')) {
371
					$url = Config::get('url_service_base').Config::get('nom_projet').
333
					$url = $this->ajouterHref('ontologies','TB:'.urlencode(urlencode($tb)));
372
					'/ontologies/TB:'.urlencode(urlencode($tb));
334
					$val = $this->consulterHref($url);
373
					$val = $this->consulterHref($url);
335
					$libelle[$cle]= $val->nom;
374
					$libelle[$cle]= $val->nom;
336
					$detail[$cle]['libelle'] = $val->nom;
375
					$detail[$cle]['libelle'] = $val->nom;
337
					$detail[$cle]['code'] = $val->code;
376
					$detail[$cle]['code'] = $val->code;
338
					$detail[$cle]['href'] = $url;
377
					$detail[$cle]['href'] = $url;
339
				}
378
				}
340
				if ($cle == 'sous_type.principal' || $cle == 'sous_type.secondaire' || $cle == 'sous_type.special') {
379
				if ($cle == 'sous_type.principal' || $cle == 'sous_type.secondaire' || $cle == 'sous_type.special') {
341
					$i = 0;
380
					$i = 0;
-
 
381
					foreach ($tb as $sstypes) {
342
					foreach ($tb as $sstypes) {
382
						$url = Config::get('url_service_base').Config::get('nom_projet').
343
						$url = $this->ajouterHref('ontologies','ssTT:'.urlencode(urlencode($sstypes)));
383
						'/ontologies/ssTT:'.urlencode(urlencode($sstypes));
344
						$val = $this->consulterHref($url);
384
						$val = $this->consulterHref($url);
345
						$libelle[$cle]=$val->nom;
385
						$libelle[$cle]=$val->nom;
346
						$detail[$cle][$i]['libelle'] = $val->nom;
386
						$detail[$cle][$i]['libelle'] = $val->nom;
347
						$detail[$cle][$i]['code'] = $val->code;
387
						$detail[$cle][$i]['code'] = $val->code;