Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 291 Rev 732
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
	}