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) { // fonction devant uniquement être appelée depuis le serveur // lui-même, cad par l'application de saisie $controle = new ControleUtilisateur($this->config); $controle->controleAppelIpAutorisee(); $requete = 'INSERT INTO ods_especes '; $champs = array('oe_id_espece'); $valeurs = array("''"); foreach($params as $param => $valeur) { $champs[] = 'oe_'.$param; $valeur = stripslashes($valeur); $valeurs[] = $this->proteger($valeur); } $champs[] = 'oe_ce_climat'; $valeurs[] = $this->proteger(0); $requete .= '('.implode(', ', $champs).') VALUES ('.implode(', ', $valeurs).')'; $ajout_espece = $this->executerRequeteSimple($requete); if(!$ajout_espece) { $retour['erreurs'] = 'erreur d\'ajout'; } else { $retour = 'ok'; } $this->envoyer($retour); } /** * Méthode appelée pour mettre à jour un élément */ public function updateElement($uid, $params) { // fonction devant uniquement être appelée depuis le serveur // lui-même, cad par l'application de saisie $controle = new ControleUtilisateur($this->config); $controle->controleAppelIpAutorisee(); $requete = 'UPDATE ods_especes SET '; foreach($params as $param => $valeur) { $valeur = stripslashes($valeur); $requete .= 'oe_'.$param.' = '.$this->proteger($valeur).', '; } $requete = rtrim ($requete, ', '); $requete .= ' WHERE oe_id_espece = '.$this->proteger($uid[0]); $modification_espece = $this->executerRequeteSimple($requete); if(!$modification_espece) { $retour['erreurs'] = 'erreur de modification'; } else { $retour = 'ok'; } $this->envoyer($retour); } /** * Méthode appelée pour supprimer un élément */ public function deleteElement($uid) { //TODO: méthode de suppression d'espèce spéciale aux admins } /** ======================= Methodes d'accès au informations ================================ */ private function getElementParDefaut() { return $this->getEspecesParType(); } private function getEspece($params) { $id_espece = $params[0]; $requete_informations_espece = 'SELECT * FROM ods_especes '. 'WHERE oe_id_espece = '.$this->proteger($id_espece); $informations_espece = $this->executerRequete($requete_informations_espece); $informations_espece_formatees = array(); if(!empty($informations_espece)) { $informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]); } return $informations_espece_formatees; } private function getEspecesPourStation($params) { $id_station = $params[0]; $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). ') '. ' AND oe_espece_active = 1 '. 'ORDER BY oe_ce_type, oe_nom_vernaculaire'; $especes_pour_station = $this->executerRequete($requete_especes_pour_station); foreach($especes_pour_station as &$espece_dans_station) { $espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station); } return $especes_pour_station; } private function getEspecesActivesParType() { return $this->getEspecesParType(true); } private function getEspecesParType() { return $this->obtenirEspecesParType(false); } private function getEspecesParTypeAdmin() { return $this->obtenirEspecesParType(true); } private function obtenirEspecesParType($toutes_les_especes = false) { $requete_toute_espece = 'SELECT * FROM ods_especes '. ($toutes_les_especes ? '' : ' WHERE oe_espece_active = 1 '). 'ORDER BY oe_ce_type, oe_nom_vernaculaire'; $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['id_espece']] = $espece; } return $especes_par_type; } public function getToutesEspeces() { $requete_toute_espece = 'SELECT * FROM ods_especes WHERE oe_espece_active = 1 ORDER BY oe_nom_vernaculaire '; $liste_espece = $this->executerRequete($requete_toute_espece); $liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE); $especes_par_id = array(); foreach($liste_espece as $espece) { $espece = $this->formaterTableauEspecePourEnvoi($espece); $especes_par_id[$espece['id_espece']] = $espece; } return $especes_par_id; } 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'], 'active' => $espece['oe_espece_active'] ); } } ?>