Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 1103 → Rev 1104

/trunk/services/modules/0.1/insee-d/ZoneGeo.php
33,6 → 33,16
* Est utilisée principalement pr déterminer le format du tableau à retourner. */
protected $format_reponse = 'zone-geo';
 
/** Tri des résultats */
protected $tri = 'dep';
protected $ordre = 'ASC';
/**
* Permet de trier selon les clefs des tableaux reçus, et que ça marche (en
* fait faut faire des alias de colonnes correspondant aux clefs de sortie
* mais bon bref...)
*/
protected $corres_tri = array('code' => 'dep', 'nom' => 'nccenr');
 
/** Variables constituant les parametres de la requete SQL (champ, condition, group by, limit) remplie
* selon ressources et paramètres */
protected $requete_champ = ' * ';
45,6 → 55,7
/** Stockage des ressources et paramétres */
protected $table_ressources = array();
protected $table_param = array();
 
/**
* Precise la contenance plus ou moins précise du tableau à retourner :
* - min = les données présentes dans la table
52,6 → 63,13
* - oss = la liste des nom_sci (uniquement pour noms et taxons)
*/
protected $retour_format = 'max';
 
/**
* Si "objet", renverra un objet dont les clefs sont les codes de départements;
* Si "liste", renverra une liste qui a le mérite de conserver l'ordre !
*/
protected $retour_type = 'objet';
 
/** Valeur du paramètre de requete recherche :
* - stricte : le masque est passé tel quel à l'opérateur LIKE.
* - etendue : ajout automatique du signe % à la place des espaces et en fin de masque avec utilisation de LIKE.
60,6 → 78,7
 
/** Permet de stocker le tableau de résultat (non encodé en json) */
protected $table_retour = array();
 
/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */
protected $total_resultat;
 
94,6 → 113,23
case 'retour.format' :
$this->retour_format = $valeur;
break;
case 'retour.type' :
if (in_array($valeur, array('objet', 'liste')))
$this->retour_type = $valeur;
break;
case 'retour.tri' :
if ($valeur != '' ) {
if (in_array($valeur, array_keys($this->corres_tri))) {
$this->tri = $this->corres_tri[$valeur];
} else {
$this->tri = $valeur; // au petit bonheur la chance
}
}
break;
case 'retour.ordre' :
if (in_array(strtoupper($valeur), array('ASC', 'DESC')))
$this->ordre = $valeur;
break;
case 'navigation.depart' :
if ($valeur != '')
$this->limite_requete['depart'] = $valeur;
192,6 → 228,7
$requete = ' SELECT '.$this->requete_champ.
' FROM '.$this->table
.$this->formerRequeteCondition()
. ' ORDER BY ' . $this->tri . ' ' . $this->ordre
.$this->formerRequeteLimite();
return $requete;
}
212,11 → 249,6
$this->requete_limite = '';
} else {
$this->total_resultat = $this->recupererTotalResultat();
/*if ($this->limite_requete['depart'] > $this->total_resultat) {
//cas où la requete presente un navigation.depart supérieur au nb total de resultats.
$this->limite_requete['depart'] =
(($nb - $this->limite_requete['limite']) < 0) ? 0 : ($nb - $this->limite_requete['limite']);
}*/
$this->requete_limite = ' LIMIT '.$this->limite_requete['depart'].', '.$this->limite_requete['limite'];
}
return $this->requete_limite;
279,7 → 311,11
if ($this->retour_format == 'max') {
$this->table_retour['href'] = $this->ajouterHref('zone-geo', $num);
}
$resultat_json[$num] = $this->table_retour;
if ($this->retour_type == 'objet') {
$resultat_json[$num] = $this->table_retour;
} elseif ($this->retour_type == 'liste') {
$resultat_json[] = $this->table_retour;
}
$this->table_retour = array();
}
$table_retour_json['resultat'] = $resultat_json;