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 optionnel if(!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'], ); } } ?>