/trunk/applications/jrest/services/OdsIndividu.php |
---|
2,19 → 2,27 |
class OdsIndividu extends JRestService { |
const PREFIXE = 'get'; |
/** |
* Méthode appelée avec une requête de type GET. |
* |
*/ |
function getElement($param = array()) { |
$type = $param[0]; |
$donnees_test = $this->retournerDonneesTest(); |
if($param[0] == "*") { |
$info = $donnees_test; |
} else if(is_numeric($param[0])) { |
$info = $donnees_test[$param[0]]; |
} |
if ($type == '*' || is_numeric($type)) { |
$info = $this->getElementParDefaut($param); |
} else { |
$methode = self::PREFIXE.$type; |
if (method_exists($this, $methode)) { |
array_shift($param); |
$info = $this->$methode($param); |
} else { |
$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible."; |
} |
} |
// Envoi sur la sortie standard |
$this->envoyer($info); |
24,18 → 32,34 |
* Méthode appelée pour ajouter un élément. |
*/ |
public function createElement($params) { |
// Identification de l'utilisateur |
list($id_utilisateur, $id_session) = $this->getIdentification($params); |
// Contrôle du non détournement de l'utilisateur |
if ($this->etreAutorise($id_utilisateur)) { |
try { |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
} |
} |
$this->envoyer((string) $id_personne); |
$elements_requis = array('id_participant','id_espece','id_station','individu_nom'); |
foreach($elements_requis as $requis) { |
if(!isset($params[$requis])) { |
//$erreurs[$requis] = 'erreur '; |
} |
} |
if(!empty($erreurs)) { |
$this->envoyer($erreurs); |
} |
$id_participant = $params['id_participant']; |
$requete_creation_individu = 'INSERT INTO ods_individus '. |
'(oi_ce_espece, oi_ce_station, oi_nom) '. |
'VALUES ('. |
$this->proteger($params['id_espece']).','. |
$this->proteger($params['id_station']).','. |
$this->proteger($params['individu_nom']).')'; |
$creation_individu = $this->executerRequeteSimple($requete_creation_individu); |
if(!$creation_individu) { |
// TODO: comment gère t'on les erreurs ? |
} |
$this->envoyer(); |
} |
/** |
89,59 → 113,60 |
$this->envoyer(); |
} |
private function retournerDonneesTest() { |
private function getInformationsIndividu($params) { |
$id_individu = $params[0]; |
$requete_toute_espece = 'SELECT * FROM ods_individus '. |
'WHERE oi_id_individu = '.$this->proteger($id_individu); |
$liste_espece = $this->executerRequete($requete_toute_espece); |
} |
private function getIndividusPourStation($params) { |
$id_station = $params[0]; |
return array( |
'1' => |
array( |
'id' => '1', |
'nom' => 'Individu 1', |
'nom_scientifique' => 'Acer monspessulanum', |
'nom_vernaculaire' => 'Erable de Montpellier', |
'description' => 'Quel bel individu!' |
), |
'2' => |
array( |
'id' => '2', |
'nom' => 'Individu 2', |
'nom_scientifique' => 'Acer monspessulanum', |
'nom_vernaculaire' => 'Erable de Montpellier', |
'description' => 'Quel bel individu!' |
), |
'3' => |
array( |
'id' => '3', |
'nom' => 'Individu 3', |
'nom_scientifique' => 'Acer monspessulanum', |
'nom_vernaculaire' => 'Erable de Montpellier', |
'description' => 'Quel bel individu!' |
), |
'4' => |
array( |
'id' => '4', |
'nom' => 'Individu 4', |
'nom_scientifique' => 'Acer monspessulanum', |
'nom_vernaculaire' => 'Erable de Montpellier', |
'description' => 'Quel bel individu!' |
), |
'5' => |
array( |
'id' => '5', |
'nom' => 'Individu 5', |
'nom_scientifique' => 'Acer monspessulanum', |
'nom_vernaculaire' => 'Erable de Montpellier', |
'description' => 'Quel bel individu!' |
), |
'6' => |
array( |
'id' => '6', |
'nom' => 'Individu 6', |
'nom_scientifique' => 'Acer monspessulanum', |
'nom_vernaculaire' => 'Erable de Montpellier', |
'description' => 'Quel bel individu!' |
) |
); |
$requete_individus_station = 'SELECT * FROM ods_individus '. |
'WHERE oi_ce_station = '.$this->proteger($id_station); |
$liste_individus_pour_station = $this->executerRequete($requete_individus_station); |
foreach($liste_individus_pour_station as &$individu_pour_station) { |
$individu_pour_station = $this->formaterTableauIndividuPourEnvoi($individu_pour_station); |
} |
return $liste_individus_pour_station; |
} |
private function getIndividusPourStationPourEspece($params) { |
$id_station = $params[0]; |
$id_espece = $params[1]; |
$requete_individus_station_espece = 'SELECT * FROM ods_individus '. |
'WHERE oi_ce_station = '.$this->proteger($id_station).' '. |
'AND oi_ce_espece ='.$this->proteger($id_espece); |
$liste_individus_pour_station_pour_espece = $this->executerRequete($requete_individus_station_espece); |
foreach($liste_individus_pour_station_pour_espece as &$individu_pour_station_pour_espece) { |
$individu_pour_station_pour_espece = $this->formaterTableauIndividuPourEnvoi($individu_pour_station_pour_espece); |
} |
return $liste_individus_pour_station_pour_espece; |
} |
private function formaterTableauIndividuPourEnvoi($individu) { |
return array( |
'id_espece' => $individu['oi_id_individu'], |
'id_espece' => $individu['oi_ce_espece'], |
'id_station' => $individu['oi_ce_station'], |
'nom' => $individu['oi_nom'] |
); |
} |
} |
?> |
/trunk/applications/jrest/services/OdsStation.php |
---|
55,14 → 55,14 |
$requete_creation_station = 'INSERT INTO ods_stations '. |
'(os_ce_participant, os_nom, os_ce_commune, os_latitude, os_longitude, os_altitude, os_ce_environnement, os_commentaire) '. |
'VALUES ('. |
$this->bdd->quote($id_participant).','. |
$this->bdd->quote($params['station_nom']).','. |
$this->bdd->quote($params['station_commune']).','. |
$this->bdd->quote($params['station_lat']).','. |
$this->bdd->quote($params['station_lon']).','. |
$this->bdd->quote($params['station_alt']).','. |
$this->bdd->quote($params['station_milieu']).','. |
$this->bdd->quote($params['station_description']).')'; |
$this->proteger($id_participant).','. |
$this->proteger($params['station_nom']).','. |
$this->proteger($params['station_commune']).','. |
$this->proteger($params['station_lat']).','. |
$this->proteger($params['station_lon']).','. |
$this->proteger($params['station_alt']).','. |
$this->proteger($params['station_milieu']).','. |
$this->proteger($params['station_description']).')'; |
$creation_station = $this->executerRequeteSimple($requete_creation_station); |
93,15 → 93,15 |
$requete_modification_station = 'UPDATE ods_stations '. |
'SET '. |
'os_nom ='.$this->bdd->quote($params['station_nom']).','. |
'os_latitude ='.$this->bdd->quote($params['station_commune']).','. |
'os_latitude ='.$this->bdd->quote($params['station_lat']).','. |
'os_longitude ='.$this->bdd->quote($params['station_lon']).','. |
'os_altitude ='.$this->bdd->quote($params['station_alt']).','. |
'os_ce_environnement ='.$this->bdd->quote($params['station_milieu']).','. |
'os_commentaire ='.$this->bdd->quote($params['station_description']).' '. |
'WHERE os_ce_particant = '.$this->bdd->quote($id_participant).' '. |
'AND os_id_station = '.$this->bdd->quote($id_station); |
'os_nom ='.$this->proteger($params['station_nom']).','. |
'os_latitude ='.$this->proteger($params['station_commune']).','. |
'os_latitude ='.$this->proteger($params['station_lat']).','. |
'os_longitude ='.$this->proteger($params['station_lon']).','. |
'os_altitude ='.$this->proteger($params['station_alt']).','. |
'os_ce_environnement ='.$this->proteger($params['station_milieu']).','. |
'os_commentaire ='.$this->proteger($params['station_description']).' '. |
'WHERE os_ce_particant = '.$this->proteger($id_participant).' '. |
'AND os_id_station = '.$this->proteger($id_station); |
$modification_station = $this->executerRequeteSimple($requete_creation_station); |
133,8 → 133,8 |
} |
$requete_suppression_station = 'DELETE FROM ods_stations '. |
'WHERE os_ce_particant = '.$this->bdd->quote($id_participant).' '. |
'AND os_id_station = '.$this->bdd->quote($id_station); |
'WHERE os_ce_particant = '.$this->proteger($id_participant).' '. |
'AND os_id_station = '.$this->proteger($id_station); |
// TODO : supprimer également tout ce qui est associé à la station (observations, etc...) |
$suppression_station = $this->executerRequeteSimple($requete_suppression_station); |
152,7 → 152,7 |
// METHODES D'ACCES A LA BASE DE DONNEES |
private function obtenirListeStationPourParticipant($id_participant) { |
$requete_liste_station = 'SELECT * FROM ods_stations WHERE os_ce_participant = '.$this->bdd->quote($id_participant); |
$requete_liste_station = 'SELECT * FROM ods_stations WHERE os_ce_participant = '.$this->proteger($id_participant); |
$liste_station = $this->executerRequete($requete_liste_station); |
169,7 → 169,7 |
private function obtenirInformationsStation($id_station) { |
$requete_infos_station = 'SELECT * FROM ods_stations WHERE os_id_station = '.$this->bdd->quote($id_station); |
$requete_infos_station = 'SELECT * FROM ods_stations WHERE os_id_station = '.$this->proteger($id_station); |
$infos_station = $this->executerRequete($requete_infos_station); |
202,7 → 202,7 |
private function obtenirInformationsCommuneParId($id_commune) { |
$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_id_commune = '.$this->bdd->quote($id_commune); |
$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_id_commune = '.$this->proteger($id_commune); |
$infos_commune = $this->executerRequete($requete_infos_commune); |
return $infos_commune; |
210,7 → 210,7 |
private function obtenirInformationsCommuneParCodeInsee($code_insee_commune) { |
$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_code_insee = '.$this->bdd->quote($code_insee_commune); |
$requete_infos_commune = 'SELECT * FROM ods_communes WHERE oc_code_insee = '.$this->proteger($code_insee_commune); |
$infos_commune = $this->executerRequete($requete_infos_commune); |
return $infos_commune; |
/trunk/applications/jrest/services/GestionTriple.php |
---|
13,10 → 13,10 |
protected function obtenirValeursListeParAbreviation($abreviation_triple) { |
$requete = 'SELECT * FROM ods_triple WHERE ot_ce_parent = (SELECT ot_id_triple WHERE ot_cle ='.$this->proteger($abreviation_triple).')'; |
$requete = 'SELECT * FROM ods_triples WHERE ot_ce_parent = (SELECT ot_id_triple FROM ods_triples WHERE ot_cle ='.$this->proteger($abreviation_triple).')'; |
$resultat = $this->executerRequete($requete); |
return $resultat; |
return $this->grouperResultat($resultat); |
} |
38,6 → 38,17 |
} |
private function grouperResultat($tableau_resultat_requete_triple) { |
$tableau_resultat_requete_triple_ordonne = array(); |
foreach($tableau_resultat_requete_triple as $valeur_triple) { |
$tableau_resultat_requete_triple_ordonne[$valeur_triple['ot_id_triple']] = $valeur_triple; |
} |
return $tableau_resultat_requete_triple_ordonne; |
} |
} |
?> |
/trunk/applications/jrest/services/JRestService.php |
---|
143,6 → 143,10 |
} |
return $resultat; |
} |
protected function proteger($chaine) { |
return $this->bdd->quote($chaine); |
} |
protected function getTxt($id) { |
$sortie = ''; |
/trunk/applications/jrest/services/OdsEspece.php |
---|
1,8 → 1,9 |
<?php |
class OdsEspece extends JRestService { |
class OdsEspece extends GestionTriple { |
const PREFIXE = 'get'; |
const ABBR_LISTE_TYPE_ESPECE = 'type_espece'; |
/** |
* Méthode appelée avec une requête de type GET. |
32,18 → 33,9 |
* Méthode appelée pour ajouter un élément. |
*/ |
public function createElement($params) { |
// Identification de l'utilisateur |
list($id_utilisateur, $id_session) = $this->getIdentification($params); |
// Contrôle du non détournement de l'utilisateur |
if ($this->etreAutorise($id_utilisateur)) { |
try { |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
} |
} |
$this->envoyer((string) $id_personne); |
//TODO: méthode de création d'espeèce spéciales aux admins |
} |
/** |
100,102 → 92,74 |
/** ======================= Methodes privées d'accès au informations ================================ */ |
private function getElementParDefaut() { |
return $this->getEspeces(); |
return $this->getEspecesParType(); |
} |
private function getEspeces() { |
return array( |
'1' => array( |
'id' => '1', |
'nom_vernaculaire' => 'Erable de Montpellier' |
), |
'2' => array( |
'id' => '2', |
'nom_vernaculaire' => 'Herbe à canard' |
), |
'3' => array( |
'id' => '3', |
'nom_vernaculaire' => 'Coquelicot' |
), |
'4' => array( |
'id' => '4', |
'nom_vernaculaire' => 'Herbe à chat' |
), |
'5' => array( |
'id' => '5', |
'nom_vernaculaire' => 'Hibou' |
), |
'6' => array( |
'id' => '6', |
'nom_vernaculaire' => 'Coucou' |
) |
); |
} |
private function getEspece($params) { |
$id_espece = $params[0]; |
$infos_espece = array( |
'id' => $id_espece, |
'nom_scientifique' => 'Acer monspessulanum', |
'nom_vernaculaire' => 'Erable de Montpellier', |
'description' => 'Un arbre bien connu de tous', |
'url_image' => 'http://www.tela-botanica.org/sites/eflore/generique/images/projets/eflore/bdnff/4.02/nt/8523/002543.jpg' |
); |
return $infos_espece; |
} |
private function getEspecesPourStation($params) { |
$id_station = $params[0]; |
$especes_dans_station = $this->getEspeces(); |
$requete_especes_pour_station = 'SELECT * FROM ods_especes '. |
'WHERE oe_id_espece IN '. |
'( '. |
'SELECT oi_ce_espece FROM ods_individus '. |
'WHERE oi_ce_station = '.$this->proteger($id_station). |
') '. |
'ORDER BY oe_ce_type'; |
$especes_pour_station = $this->executerRequete($requete_especes_pour_station); |
$modulo = ($id_station+7)%6; |
if($modulo == 0) $modulo = 1; |
return array_slice($especes_dans_station, 0, $modulo); |
foreach($especes_pour_station as &$espece_dans_station) { |
$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station); |
} |
return $especes_pour_station; |
} |
private function getEspecesParType($params) { |
private function getEspecesParType() { |
$id_type = $params[0]; |
return $especes_par_type = array( |
'1' => array( |
'nom' => 'herbacées', |
'especes' => array( |
'1' => array('id' => '1', |
'nom_vernaculaire' => 'Herbe de Montpellier' |
) |
) |
), |
'2' => array( |
'nom' => 'arbres', |
'especes' => array( |
'id' => array('id' => '1', |
'nom_vernaculaire' => 'Erable de Montpellier' |
) |
) |
), |
'3' => array( |
'nom' => 'animaux', |
'especes' => array( |
'id' => array('id' => '1', |
'nom_vernaculaire' => 'Hibou de Montpellier' |
) |
) |
) |
); |
$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_ce_type'; |
$liste_espece = $this->executerRequete($requete_toute_espece); |
$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE); |
$especes_par_type = array(); |
foreach($liste_espece as $espece) { |
$espece = $this->formaterTableauEspecePourEnvoi($espece); |
$type = $espece['type']; |
$nom_type = $liste_type_espece[$type]['ot_valeur']; |
if(!isset($especes_par_type[$type])) { |
$especes_par_type[$type] = array( |
'nom' => $nom_type, |
'especes' => array() |
); |
} |
$especes_par_type[$type]['especes'][] = $espece; |
} |
return $especes_par_type; |
} |
private function formaterTableauEspecePourEnvoi($espece) { |
return array( |
'id_espece' => $espece['oe_id_espece'], |
'nom_vernaculaire' => $espece['oe_nom_vernaculaire'], |
'nom_scientifique' => $espece['oe_nom_scientifique'], |
'espece_ecole' => $espece['oe_espece_ecole'], |
'description' => $espece['oe_description'], |
'climat' => $espece['oe_ce_climat'], |
'evenements' => $espece['oe_ce_evenements'], |
'type' => $espece['oe_ce_type'] |
); |
} |
} |
?> |