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) {
|