Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 784 Rev 1100
Line 193... Line 193...
193
					case 'masque.determination.nt' :
193
					case 'masque.determination.nt' :
194
						$this->requete_condition[] = '`num_tax` = '.$this->getBdd()->proteger($valeur);		break;				case 'masque.observateur'	: $this->ajouterLeFiltreContributeur($valeur);					break;
194
						$this->requete_condition[] = '`num_tax` = '.$this->getBdd()->proteger($valeur);		break;				case 'masque.observateur'	: $this->ajouterLeFiltreContributeur($valeur);					break;
195
					case 'masque.valeur' 		: $this->presenceChorologie = $valeur;							break;
195
					case 'masque.valeur' 		: $this->presenceChorologie = $valeur;							break;
196
					case 'retour.format'		: $this->retour_format = $valeur;								break;
196
					case 'retour.format'		: $this->retour_format = $valeur;								break;
197
					case 'navigation.depart'	: $this->ajouterLimiteDepart($valeur);							break;
197
					case 'navigation.depart'	: $this->ajouterLimiteDepart($valeur);							break;
198
					case 'navigation.limite'	: $this->limite_requete['limite'] = $valeur;					break;
198
					case 'navigation.limite'	: if ($valeur !== '') $this->limite_requete['limite'] = $valeur;	break;
199
					case 'recherche'			: 																break;
199
					case 'recherche'			: 																break;
200
					case 'version.projet'		: 																break;
200
					case 'version.projet'		: 																break;
201
					default						:  $p = 'Erreur dans les paramètres de recherche de votre requête : '.
201
					default						:  $p = 'Erreur dans les paramètres de recherche de votre requête : '.
202
													'</br> Le paramètre " '.$param.' " n\'existe pas.';
202
													'</br> Le paramètre " '.$param.' " n\'existe pas.';
203
												$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $p); break;
203
												$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $p); break;
Line 302... Line 302...
302
			$condition = 'nom LIKE '.$this->getBdd()->proteger($valeur.'%');
302
			$condition = 'nom LIKE '.$this->getBdd()->proteger($valeur.'%');
303
		}
303
		}
304
		list($table, $version) = explode('_v',$this->table);
304
		list($table, $version) = explode('_v',$this->table);
305
		$requete_contr = "SELECT * FROM chorodep_contributeurs_v$version WHERE ".$condition;
305
		$requete_contr = "SELECT * FROM chorodep_contributeurs_v$version WHERE ".$condition;
306
	}
306
	}
307
	
307
 
-
 
308
	/**
-
 
309
	 * @param type $id un offset ou une combinaison de la forme "num_nom:departement"
-
 
310
	 */
308
	public function ajouterLimiteDepart($id) {
311
	public function ajouterLimiteDepart($id) {
-
 
312
		if ($id !== '') {
-
 
313
			// $id est de la forme nn:dept - wtf ? en plus ça marche pas, le lien
-
 
314
			// "href.suivant" génère du caca d'oie
309
		$d = explode(":", $id);
315
			$d = explode(":", $id);
-
 
316
			if (count($d) == 2) {
310
		$this->limite_requete['depart'] = 0;
317
				$this->limite_requete['depart'] = 0;
311
		$this->limite_requete['dept'] = $d[1];
318
				$this->limite_requete['dept'] = $d[1];
312
		if (!isset($this->parametres['masque.determination.nn'])) {
319
				if (!isset($this->parametres['masque.determination.nn'])) {
313
			$requete_condition = (is_numeric($d[0])) ? '`num_nom` = '.$d[0]  : '`nom_sci` like "'.urldecode($d[0]).'%"';
320
					$requete_condition = (is_numeric($d[0])) ? '`num_nom` = '.$d[0]  : '`nom_sci` like "'.urldecode($d[0]).'%"';
314
			$requete = "SELECT id FROM $this->table WHERE ".$requete_condition;
321
					$requete = "SELECT id FROM $this->table WHERE ".$requete_condition;
315
			$res = $this->getBdd()->recuperer($requete);
322
					$res = $this->getBdd()->recuperer($requete);
316
			if ($res == '') { //cas ou la requete comporte des erreurs
323
					if ($res == '') { //cas ou la requete comporte des erreurs
317
				$r = 'La requête SQL formée comporte une erreur !!';
324
						$r = 'La requête SQL formée comporte une erreur !!';
318
				$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $r);
325
						$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $r);
319
				Debug::printr($requete);
326
						Debug::printr($requete);
320
			} elseif ($res) {
327
					} elseif ($res) {
321
				$this->limite_requete['depart'] = $res['id'] - 1;
328
						$this->limite_requete['depart'] = $res['id'] - 1;
-
 
329
					} else {
-
 
330
						$i = "Les données recherchées sont introuvables";
-
 
331
						$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $i);
-
 
332
					}
-
 
333
				}
322
			} else {
334
			} else {
323
				$i = "Les données recherchées sont introuvables";
335
				// $id est un simple offset
324
				$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $i);
336
				$this->limite_requete['depart'] = $id;
325
			}
337
			}
326
		}
338
		}
327
	}
339
	}
Line 328... Line 340...
328
	
340
	
Line 387... Line 399...
387
				break;
399
				break;
388
			}
400
			}
389
			$this->table_retour = array();
401
			$this->table_retour = array();
390
		}
402
		}
391
		//on remplit la table $table_retour_json['entete']	
403
		//on remplit la table $table_retour_json['entete']	
-
 
404
		// Mode moderne rétrocompatible : les départ sont toujours de simples offsets
-
 
405
		if (strpos($this->limite_requete['depart'], ':') === false) {
-
 
406
			$id = $this->limite_requete['depart'] + $this->limite_requete['limite'];
-
 
407
		}
392
		//formuler les urls precedentes et suivantes affichées dans l'entete du resultat
408
		//formuler les urls precedentes et suivantes affichées dans l'entete du resultat
393
		$url = $this->formulerUrlObs($id, $num, '/observations');
409
		$url = $this->formulerUrlObs($id, $num, '/observations');
394
		if ($url['precedent'] != '') { $this->table_entete['href.precedent'] = $url['precedent']; }
410
		if ($url['precedent'] != '') { $this->table_entete['href.precedent'] = $url['precedent']; }
395
		if ($url['suivant']   != '') { $this->table_entete['href.suivant']   = $url['suivant']; }
411
		if ($url['suivant']   != '') { $this->table_entete['href.suivant']   = $url['suivant']; }
396
		$this->table_entete['total']  = $num;
412
		$this->table_entete['total']  = $num;
Line 690... Line 706...
690
	 * @return string : la fin de l'url decrivant les limites des resultats precedents. 
706
	 * @return string : la fin de l'url decrivant les limites des resultats precedents. 
691
	 * Si aucun résultats ne precedent, une chaine de caractère vide est retournée
707
	 * Si aucun résultats ne precedent, une chaine de caractère vide est retournée
692
	 */
708
	 */
693
	public function recupererLesLimitesPrecedentesObs($suivant) {
709
	public function recupererLesLimitesPrecedentesObs($suivant) {
694
		$url_precedente = '';
710
		$url_precedente = '';
-
 
711
		// tentative de fonctionnement normal
-
 
712
		if (strpos($this->limite_requete['depart'], ':') === false && $this->limite_requete['depart'] != 0) {
-
 
713
			$departPrec = max(0, $this->limite_requete['depart'] - $this->limite_requete['limite']);
-
 
714
			$url_precedente = "&navigation.depart=$departPrec&navigation.limite=" . $this->limite_requete['limite'];
-
 
715
		}
695
		if (isset($this->table_param['navigation_depart'])) { // si on utilise un parametre de départ
716
		if (isset($this->table_param['navigation_depart'])) { // si on utilise un parametre de départ
696
			// si l'adresse d'appel de la page est inférieur au départ
717
			// si l'adresse d'appel de la page est inférieur au départ
697
			$regex = '/http:\/\/.*\/service:eflore:0.1\/chorodep\/observations\?.*navigation.depart=(.*\:[0-9]*).*/';
718
			$regex = '/http:\/\/.*\/service:eflore:0.1\/chorodep\/observations\?.*navigation.depart=(.*\:[0-9]*).*/';
698
			if (isset($_SERVER['HTTP_REFERER']) && preg_match($regex, $_SERVER['HTTP_REFERER'], $match)) {
719
			if (isset($_SERVER['HTTP_REFERER']) && preg_match($regex, $_SERVER['HTTP_REFERER'], $match)) {
699
				if ($match[1] != $this->table_param['navigation_depart'] && $match[1] != $suivant) {
720
				if ($match[1] != $this->table_param['navigation_depart'] && $match[1] != $suivant) {