195,7 → 195,7 |
case 'masque.valeur' : $this->presenceChorologie = $valeur; break; |
case 'retour.format' : $this->retour_format = $valeur; break; |
case 'navigation.depart' : $this->ajouterLimiteDepart($valeur); break; |
case 'navigation.limite' : $this->limite_requete['limite'] = $valeur; break; |
case 'navigation.limite' : if ($valeur !== '') $this->limite_requete['limite'] = $valeur; break; |
case 'recherche' : break; |
case 'version.projet' : break; |
default : $p = 'Erreur dans les paramètres de recherche de votre requête : '. |
304,24 → 304,36 |
list($table, $version) = explode('_v',$this->table); |
$requete_contr = "SELECT * FROM chorodep_contributeurs_v$version WHERE ".$condition; |
} |
|
|
/** |
* @param type $id un offset ou une combinaison de la forme "num_nom:departement" |
*/ |
public function ajouterLimiteDepart($id) { |
$d = explode(":", $id); |
$this->limite_requete['depart'] = 0; |
$this->limite_requete['dept'] = $d[1]; |
if (!isset($this->parametres['masque.determination.nn'])) { |
$requete_condition = (is_numeric($d[0])) ? '`num_nom` = '.$d[0] : '`nom_sci` like "'.urldecode($d[0]).'%"'; |
$requete = "SELECT id FROM $this->table WHERE ".$requete_condition; |
$res = $this->getBdd()->recuperer($requete); |
if ($res == '') { //cas ou la requete comporte des erreurs |
$r = 'La requête SQL formée comporte une erreur !!'; |
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $r); |
Debug::printr($requete); |
} elseif ($res) { |
$this->limite_requete['depart'] = $res['id'] - 1; |
if ($id !== '') { |
// $id est de la forme nn:dept - wtf ? en plus ça marche pas, le lien |
// "href.suivant" génère du caca d'oie |
$d = explode(":", $id); |
if (count($d) == 2) { |
$this->limite_requete['depart'] = 0; |
$this->limite_requete['dept'] = $d[1]; |
if (!isset($this->parametres['masque.determination.nn'])) { |
$requete_condition = (is_numeric($d[0])) ? '`num_nom` = '.$d[0] : '`nom_sci` like "'.urldecode($d[0]).'%"'; |
$requete = "SELECT id FROM $this->table WHERE ".$requete_condition; |
$res = $this->getBdd()->recuperer($requete); |
if ($res == '') { //cas ou la requete comporte des erreurs |
$r = 'La requête SQL formée comporte une erreur !!'; |
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $r); |
Debug::printr($requete); |
} elseif ($res) { |
$this->limite_requete['depart'] = $res['id'] - 1; |
} else { |
$i = "Les données recherchées sont introuvables"; |
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $i); |
} |
} |
} else { |
$i = "Les données recherchées sont introuvables"; |
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $i); |
// $id est un simple offset |
$this->limite_requete['depart'] = $id; |
} |
} |
} |
389,6 → 401,10 |
$this->table_retour = array(); |
} |
//on remplit la table $table_retour_json['entete'] |
// Mode moderne rétrocompatible : les départ sont toujours de simples offsets |
if (strpos($this->limite_requete['depart'], ':') === false) { |
$id = $this->limite_requete['depart'] + $this->limite_requete['limite']; |
} |
//formuler les urls precedentes et suivantes affichées dans l'entete du resultat |
$url = $this->formulerUrlObs($id, $num, '/observations'); |
if ($url['precedent'] != '') { $this->table_entete['href.precedent'] = $url['precedent']; } |
692,6 → 708,11 |
*/ |
public function recupererLesLimitesPrecedentesObs($suivant) { |
$url_precedente = ''; |
// tentative de fonctionnement normal |
if (strpos($this->limite_requete['depart'], ':') === false && $this->limite_requete['depart'] != 0) { |
$departPrec = max(0, $this->limite_requete['depart'] - $this->limite_requete['limite']); |
$url_precedente = "&navigation.depart=$departPrec&navigation.limite=" . $this->limite_requete['limite']; |
} |
if (isset($this->table_param['navigation_depart'])) { // si on utilise un parametre de départ |
// si l'adresse d'appel de la page est inférieur au départ |
$regex = '/http:\/\/.*\/service:eflore:0.1\/chorodep\/observations\?.*navigation.depart=(.*\:[0-9]*).*/'; |