| 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;
|