Rev 284 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpclass OdsIndividu extends JRestService {const PREFIXE = 'get';/*** Méthode appelée avec une requête de type GET.**/function getElement($param = array()) {$type = $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);}/*** Méthode appelée pour ajouter un élément.*/public function createElement($params) {$elements_requis = array('id_participant','id_espece','id_station','individu_nom');foreach($elements_requis as $requis) {if(!isset($params[$requis])) {//TODO: pourquoi est-ce que c'est commenté ça ?//$erreurs[$requis] = 'erreur ';}}if(!empty($erreurs)) {$this->envoyer($erreurs);}// commentaire optionnel$commentaire = !empty($params['individu_commentaire']) ? $params['individu_commentaire'] : '';// limité à 1000 caractères (pas besoin de renvoyer une erreur ici car c'est un cas très peu fréquent)$commentaire = substr($commentaire, 0, 1000);$requete_creation_individu = 'INSERT INTO ods_individus '.'(oi_ce_espece, oi_ce_station, oi_nom, oi_commentaire) '.'VALUES ('.$this->proteger($params['id_espece']).','.$this->proteger($params['id_station']).','.$this->proteger($params['individu_nom']).','.$this->proteger($commentaire).')';$creation_individu = $this->executerRequeteSimple($requete_creation_individu);if(!$creation_individu) {$retour['erreurs'] = 'erreur d\'insertion';} else {$retour['id_nouvel_individu'] = $this->renvoyerDernierIdInsere();}$this->envoyer($retour);}/*** Méthode appelée pour mettre à jour un élément*/public function updateElement($uid, $params) {if(isset($uid[0])) {$id_individu = $uid[0];} else {return;}// commentaire optionnel$commentaire = !empty($params['individu_commentaire']) ? $params['individu_commentaire'] : '';// limité à 1000 caractères (pas besoin de renvoyer une erreur ici car c'est un cas très peu fréquent)$commentaire = substr($commentaire, 0, 1000);$requete_modification_individu = 'UPDATE ods_individus '.'SET oi_nom = '.$this->proteger($params['individu_nom']).' ';// mise à jour éventuelle du commentaire optionnelif(!empty($params['individu_commentaire'])) {$requete_modification_individu .= ', oi_commentaire = '.$this->proteger($params['individu_commentaire']).' ';}$requete_modification_individu .= 'WHERE oi_id_individu = '.$this->proteger($id_individu);$modification_individu = $this->executerRequeteSimple($requete_modification_individu);$this->envoyer();}/*** Méthode appelée pour supprimer un élément*/public function deleteElement($uid) {if(isset($uid[0])) {$id_participant = $uid[0];} else {return;}if(isset($uid[1])) {$id_individu = $uid[1];} else {return;}$requete_suppression_individu = 'DELETE FROM ods_individus '.'WHERE oi_id_individu = '.$this->proteger($id_individu).' '.'AND oi_ce_station IN '.'(SELECT os_id_station FROM ods_stations '.'WHERE os_ce_participant = '.$this->proteger($id_participant).' '.')';$suppression_individu = $this->executerRequeteSimple($requete_suppression_individu);if(!$suppression_individu) {// TODO: comment gère t'on les erreurs ?}// Envoie sur la sortie standard$this->envoyer();}private function getElementParDefaut($params) {return $this->getInformationsIndividu($params);}private function getInformationsIndividu($params) {$id_individu = $params[0];$requete_informations_individu = 'SELECT * FROM ods_individus '.'WHERE oi_id_individu = '.$this->proteger($id_individu);$informations_individu = $this->executerRequete($requete_informations_individu);if(!empty($informations_individu)) {$informations_individu_formatees = $this->formaterTableauIndividuPourEnvoi($informations_individu[0]);}return $informations_individu_formatees;}private function getIndividusPourStation($params) {$id_station = $params[0];$requete_individus_station = 'SELECT oi.* FROM ods_individus oi '.'INNER JOIN ods_especes oe '.'ON oi.oi_ce_espece = oe.oe_id_espece '.'AND oe.oe_espece_active = 1 '.'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_individu' => $individu['oi_id_individu'],'id_espece' => $individu['oi_ce_espece'],'id_station' => $individu['oi_ce_station'],'nom' => $individu['oi_nom'],'commentaire' => $individu['oi_commentaire'],);}}?>