Line 42... |
Line 42... |
42 |
case 'masque' : $this->ajouterLeFiltreMasque('masque', $valeur); break;
|
42 |
case 'masque' : $this->ajouterLeFiltreMasque('masque', $valeur); break;
|
43 |
case 'masque.code' : $this->ajouterLeFiltreMasque('code', $valeur); break;
|
43 |
case 'masque.code' : $this->ajouterLeFiltreMasque('code', $valeur); break;
|
44 |
case 'masque.nom' : $this->ajouterLeFiltreMasque('nom', $valeur); break;
|
44 |
case 'masque.nom' : $this->ajouterLeFiltreMasque('nom', $valeur); break;
|
45 |
case 'masque.description' : $this->ajouterLeFiltreMasque('description', $valeur); break;
|
45 |
case 'masque.description' : $this->ajouterLeFiltreMasque('description', $valeur); break;
|
46 |
case 'retour.format' : $this->retour_format = $valeur; break;
|
46 |
case 'retour.format' : $this->retour_format = $valeur; break;
|
47 |
case 'retour.champs' : break;
|
47 |
case 'retour.champs' : $this->parametres['retour_champs'] = $valeur; break;
|
48 |
case 'navigation.depart' : $this->limite_requete['depart'] = $valeur; break;
|
48 |
case 'navigation.depart' : $this->limite_requete['depart'] = $valeur; break;
|
49 |
case 'navigation.limite' : $this->limite_requete['limite'] = $valeur; break;
|
49 |
case 'navigation.limite' : $this->limite_requete['limite'] = $valeur; break;
|
50 |
case 'recherche' : break;
|
50 |
case 'recherche' : break;
|
51 |
case 'version.projet' : break;
|
51 |
case 'version.projet' : break;
|
52 |
default :
|
52 |
default :
|
Line 115... |
Line 115... |
115 |
$this->format_reponse .= '/id';
|
115 |
$this->format_reponse .= '/id';
|
116 |
preg_match('/^([^:]+):([^:]+)$/', $this->ressources[0], $match);
|
116 |
preg_match('/^([^:]+):([^:]+)$/', $this->ressources[0], $match);
|
117 |
$this->requete_condition[] =
|
117 |
$this->requete_condition[] =
|
118 |
' id IN (SELECT id FROM '.$this->table.' WHERE code = '.$this->getBdd()->proteger($match[2])
|
118 |
' id IN (SELECT id FROM '.$this->table.' WHERE code = '.$this->getBdd()->proteger($match[2])
|
119 |
.' AND classe_id = (SELECT id FROM '.$this->table.' WHERE code = '.$this->getBdd()->proteger($match[1]).'))';
|
119 |
.' AND classe_id = (SELECT id FROM '.$this->table.' WHERE code = '.$this->getBdd()->proteger($match[1]).'))';
|
- |
|
120 |
// TODO: optimiser, à voir: traiterMultipleRessourceId() ci-dessous
|
- |
|
121 |
// SELECT a.*
|
- |
|
122 |
// FROM $this->table a
|
- |
|
123 |
// LEFT JOIN $this->table b ON a.id = b.id LEFT JOIN $this->table c ON b.classe_id = c.id
|
- |
|
124 |
// WHERE b.code = $this->getBdd()->proteger($match[2])
|
- |
|
125 |
// AND c.code = $this->getBdd()->proteger($match[1]);
|
120 |
} else {
|
126 |
} else {
|
121 |
$e = 'Erreur dans les paramètres de recherche de votre requête : </br> Le paramètre " '
|
127 |
$e = 'Erreur dans les paramètres de recherche de votre requête : </br> Le paramètre " '
|
122 |
.$this->ressources[0].' " n\'existe pas.';
|
128 |
.$this->ressources[0].' " n\'existe pas.';
|
123 |
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
|
129 |
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
|
124 |
}
|
130 |
}
|
Line 151... |
Line 157... |
151 |
}
|
157 |
}
|
152 |
if (isset($this->parametres['retour_champs']) || $this->format_reponse == 'ontologies/id/champs') {
|
158 |
if (isset($this->parametres['retour_champs']) || $this->format_reponse == 'ontologies/id/champs') {
|
153 |
$champs_recherches = explode(',', $this->parametres['retour_champs']);
|
159 |
$champs_recherches = explode(',', $this->parametres['retour_champs']);
|
154 |
$champs_possibles = $this->rechercherChampsPossibles();
|
160 |
$champs_possibles = $this->rechercherChampsPossibles();
|
155 |
foreach ($champs_recherches as $champ_recherche) {
|
161 |
foreach ($champs_recherches as $champ_recherche) {
|
156 |
if ($this->verifierValiditeChamp($champ_recherche)) {
|
162 |
if ($this->verifierValiditeChamp($champ_recherche, $champs_possibles)) {
|
157 |
$champ[] = (preg_match('/classe/', $champ_recherche)) ? 'classe_id' : $champ_recherche;
|
163 |
$champ[] = (preg_match('/classe/', $champ_recherche)) ? 'classe_id' : $champ_recherche;
|
158 |
}
|
164 |
}
|
159 |
}
|
165 |
}
|
160 |
}
|
166 |
}
|
161 |
if (count($champ) == 1) {
|
167 |
if (count($champ) == 1) {
|
Line 275... |
Line 281... |
275 |
return $entete;
|
281 |
return $entete;
|
276 |
}
|
282 |
}
|
Line 277... |
Line 283... |
277 |
|
283 |
|
278 |
|
284 |
|
279 |
public function formaterOntologiesId($resultat) {
|
285 |
public function formaterOntologiesId($resultat) {
|
280 |
$table_retour = array();
|
- |
|
281 |
foreach ($resultat as $key => $valeur) {
|
- |
|
282 |
if ($valeur != '') {
|
- |
|
283 |
$table_retour = array_merge($table_retour, $this->afficherDonnees($key, $valeur));
|
- |
|
284 |
}
|
286 |
$table_retour = array_filter($resultat, function($val) { return $val != ''; });
|
285 |
}
|
287 |
$this->calculerClassID($table_retour);
|
Line 286... |
Line 288... |
286 |
return $table_retour;
|
288 |
return $table_retour;
|
- |
|
289 |
}
|
287 |
}
|
290 |
|
288 |
|
291 |
public function calculerClassID(&$resultat) {
|
- |
|
292 |
// commenté: pourquoi restreindre le choix des champs au format "max",
|
- |
|
293 |
// ça ne semble pas logique...
|
- |
|
294 |
// if ($this->retour_format != 'max') return;
|
- |
|
295 |
|
289 |
public function afficherDonnees($champ, $valeur) {
|
296 |
|
- |
|
297 |
// question: pourquoi ne pas passer les infos relatives aux ontologies 0 ?
|
290 |
$retour[$champ] = $valeur;
|
298 |
// et que signifie ce commentaire: "pas de parent"
|
291 |
if ($this->retour_format == 'max') {
|
299 |
if ($resultat['classe_id'] == '0') return;
|
292 |
if ($champ == 'classe_id') {
|
300 |
|
293 |
unset($retour[$champ]); // remplacer par classe.id
|
301 |
$valeur = isset($resultat['classe_id']) ? $resultat['classe_id'] : $resultat['classe.id'];
|
- |
|
302 |
if(! $resultat['classe.id']) {
|
- |
|
303 |
$resultat['classe.id'] = $resultat['classe_id'];
|
294 |
if ($valeur != "0") { // pas de parent
|
304 |
unset($resultat['classe_id']);
|
295 |
if (isset($this->parametres['retour_champs'])) {
|
305 |
}
|
296 |
switch ($this->parametres['retour_champs']) {
|
306 |
|
297 |
case 'classe' : $retour['classe'] = $this->ajouterClasseCorrespondante($valeur); break;
|
307 |
// max-format et pas de champs spécifiques demandés ?
|
298 |
case 'classe.id' : $retour['classe.id'] = $valeur; break;
|
308 |
// Alors on rempli "classe" et "classe.href"
|
299 |
case 'classe.href' : $retour['classe.href'] = $this->ajouterHref('ontologies', $valeur); break;
|
309 |
// Mais ne pas recalculer (surtout la classe) si ce n'est pas nécessaire
|
300 |
case 'classe.*' : $retour['classe.id'] = $valeur; $retour['classe.href'] = $this->ajouterHref('ontologies', $valeur); break;
|
310 |
// (c'est le cas si l'on a demandé plusieurs critère [provenons de formaterMultipleOntologiesId()])
|
301 |
}
|
311 |
if (! $this->parametres['retour_champs']) {
|
302 |
} else {
|
- |
|
303 |
$nom_classe = $this->ajouterClasseCorrespondante($valeur);
|
- |
|
304 |
if (isset($nom_classe)) $retour['classe'] = $nom_classe;
|
- |
|
305 |
$retour['classe.id'] = $valeur;
|
- |
|
306 |
$retour['classe.href'] = $this->ajouterHref('ontologies', $valeur);
|
312 |
if(! isset($resultat['classe'])) {
|
- |
|
313 |
$nom_classe = $this->ajouterClasseCorrespondante($valeur);
|
- |
|
314 |
if (isset($nom_classe)) $resultat['classe'] = $nom_classe;
|
- |
|
315 |
}
|
- |
|
316 |
if(! isset($resultat['classe.href'])) {
|
- |
|
317 |
$resultat['classe.href'] = $this->ajouterHref('ontologies', $valeur);
|
- |
|
318 |
}
|
- |
|
319 |
return;
|
- |
|
320 |
}
|
- |
|
321 |
|
- |
|
322 |
// cas où des champs sont demandés
|
- |
|
323 |
$champs = explode(',', $this->parametres['retour_champs']);
|
- |
|
324 |
if(in_array('classe', $champs) && ! isset($resultat['classe'])) {
|
- |
|
325 |
$this->ajouterClasseCorrespondante($valeur);
|
- |
|
326 |
}
|
- |
|
327 |
|
- |
|
328 |
if(in_array('classe.id', $champs) && ! isset($resultat['classe.id'])) {
|
- |
|
329 |
$resultat['classe.id'] = $valeur;
|
- |
|
330 |
}
|
- |
|
331 |
|
- |
|
332 |
if(in_array('classe.href', $champs) && ! isset($resultat['classe.href'])) {
|
- |
|
333 |
$resultat['classe.href'] = $this->ajouterHref('ontologies', $valeur);
|
- |
|
334 |
}
|
- |
|
335 |
|
307 |
}
|
336 |
if(in_array('classe.*', $champs) && (! isset($resultat['classe.href']) || ! isset($resultat['classe.id']))) {
|
308 |
}
|
- |
|
309 |
}
|
337 |
$resultat['classe.id'] = $valeur;
|
Line 310... |
Line 338... |
310 |
}
|
338 |
$resultat['classe.href'] = $this->ajouterHref('ontologies', $valeur);
|
311 |
return $retour;
|
339 |
}
|
312 |
}
|
340 |
}
|