Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 484 → Rev 485

/trunk/jrest/services/CelWidgetMap.php
7,6 → 7,8
* Cas d'utilisation :
* /CelWidgetMap/Carte/Utilisateur : carte des observations publiques d'un utilisateur.
* /CelWidgetMap/Carte/Utilisateur/Projet : carte des observations publiques d'un utilisateur pour un projet.
* /CelWidgetMap/Carte/Utilisateur/Projet/dept : carte des observations publiques d'un utilisateur pour un projet sur un département.
* /CelWidgetMap/Carte/Utilisateur/Projet/dept/num_taxon : carte des observations publiques d'un utilisateur pour un projet sur un département pour un taxon.
*
* Carte = Type de carte. Valeurs possible : defaut,
* Utilisateur = identifiant (= courriel) de l'utilisateur ou * pour tous les utilisateurs.
19,7 → 21,7
* @copyright © 2010, Jean-Pascal MILCENT
*/
class CelWidgetMap extends Cel {
 
/**
* Méthode appelée avec une requête de type GET.
*/
27,7 → 29,7
$retour = null;
$parametres = $this->traiterParametres(array('carte'), $params, false);
extract($parametres);
 
if (isset($carte)) {
$methode = $this->traiterNomMethodeGet($carte);
if (method_exists($this, $methode)) {
55,17 → 57,42
*/
public function getCarteDefautJson($params) {
$json = null;
$parametres = $this->traiterParametres(array('utilisateur', 'projet'), $params, false);
$parametres = $this->traiterParametres(array('utilisateur','projet','dept','num_taxon'), $params, false);
extract($parametres);
 
$requete = 'SELECT sector, x_utm, y_utm, coord_x, coord_y, ref_geo '.
'FROM cel_inventory AS i '.
' LEFT JOIN locations AS l '.
' ON (l.name = i.location AND l.code = i.id_location) '.
"WHERE transmission = '1' ".
(isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '');
$resultats = $this->executerRequete($requete);
 
// Traitement de $projet pour construction de filtre dans la requête
if (isset($projet)) {
$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($projet));
// Construction de la requête
$requete = 'SELECT * '.
'FROM cel_mots_cles_obs '.
"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
$elements_projet = $this->executerRequete($requete);
if ($elements_projet != false && count($elements_projet) > 0) {
// Pré-construction du where de la requête
$tpl_where = '(mots_cles LIKE "%%%s%%" AND identifiant = %s )';
$requete_projet = array();
foreach ($elements_projet as $occurence) {
$requete_projet[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
}
} else {
$this->messages[] = "Aucune observation ne correspond à ce mot clé.";
}
}
$requete = 'SELECT sector, x_utm, y_utm, coord_x, coord_y, ref_geo '.
'FROM cel_inventory AS i '.
' LEFT JOIN locations AS l '.
' ON (l.name = i.location AND l.code = i.id_location) '.
"WHERE transmission = '1' ".
(isset($utilisateur) ? " AND identifiant = '$utilisateur' " : '' ).
(isset($dept) ? " AND l.insee_code LIKE '$dept%' " : '').
(isset($num_taxon) ? " AND num_taxon = '$num_taxon' " : '' ).
(isset($projet) ? ' AND '.implode(" \nOR ", $requete_projet) : '' );
$resultats = $this->executerRequete($requete);
// Traitement des résultats
$mm = array('min_x' => 0,'max_x' => 0,'min_y' => 0,'max_y' => 0);
$points = array();