Rev 215 | Rev 289 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpclass OdsEspece extends OdsTriple {const PREFIXE = 'get';const ABBR_LISTE_TYPE_ESPECE = 'type_espece';/*** 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) {//TODO: méthode de création d'espèce spéciale aux admins}/*** 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) {$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']);}}?>