Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 33 | Rev 46 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php

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];
        
        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])) {
                        //$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();
    }
   
    /**
     * Méthode appelée pour mettre à jour un élément
     */
    public function updateElement($uid, $params)    {
        //Mise à jour de la personne
        // 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) {
                $messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
            }
        }
       
        $this->envoyer();      
    }
   
    /**
     * Méthode appelée pour supprimer un élément
     */
    public function deleteElement($uid) {
        // Vérification de la présence des id passés par l'url
        if (!isset($uid[0]) || !isset($uid[1])) {
            $this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
        } else {
            list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
           
            // Contrôle du non détournement de l'utilisateur     
            if ($this->etreAutorise($id_utilisateur)) {
                // Récupération des id passés par l'url     
                $identifiants = explode(',', rtrim($uid[1], ','));
                if (count($identifiants) == 0) {
                    $this->messages[] = "Aucun enregistrement n'a été supprimé.";
                } else {
                    foreach ($identifiants as $id_personne) {
                        try {
                        } catch (PDOException $e) {
                            $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
                        }
                    }
                }
            }
        }
       
        // 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 * 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_individu' => $individu['oi_id_individu'],
            'id_espece' => $individu['oi_ce_espece'],
            'id_station' => $individu['oi_ce_station'],
            'nom' => $individu['oi_nom']
        );
        
    }
}
?>