Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 1099 → Rev 1100

/trunk/services/modules/0.1/chorodep/Observations.php
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]*).*/';