Subversion Repositories Sites.obs-saisons.fr

Rev

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

<?php

class OdsEvenement extends OdsTriple {

        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) {
        
                //TODO: méthode de creation d'évènements spéciale aux admins
    }
      
    /**
     * Méthode appelée pour supprimer un élément
     */
    public function deleteElement($uid) {
        //TODO: méthode de suppression d'évènements spéciale aux admins
    }
    
        private function getElementParDefaut($param) {
                $this->getTousEvenements($params);
        }
        
        private function getTousEvenements($params) {

        $requete_liste_evenements_pour_espece = 'SELECT * FROM ods_triples '.
                                                                                                'WHERE ot_ce_parent = 12';
        
        $liste_evenements_pour_espece = $this->executerRequete($requete_liste_evenements_pour_espece);
        
            $liste_evenements_pour_espece_formatee = $this->formaterTableauEvenementPourEnvoiParId($liste_evenements_pour_espece);                  
            
                return $liste_evenements_pour_espece_formatee;
        }
    
    private function getEvenementsPourEspece($params) {
        
        $id_espece = $params[0]; 
        
        $requete_evenements_pour_espece = 'SELECT oe_ce_evenements FROM ods_especes '.
                                                                                   'WHERE oe_id_espece = '.$this->proteger($id_espece);
        
        $evenements_pour_espece = $this->executerRequete($requete_evenements_pour_espece);
        $evenements_pour_espece = $evenements_pour_espece[0]['oe_ce_evenements'];
        
        $tableau_evenements_espece = split(',',$evenements_pour_espece);
        foreach($tableau_evenements_espece as &$evenement_espece) {
                $evenement_espece = $this->proteger($evenement_espece);
        }
        
        $evenements_espece_chaine_bdd = implode(',',$tableau_evenements_espece);

        $requete_liste_evenements_pour_espece = 'SELECT * FROM ods_triples '.
                                                                                                'WHERE ot_id_triple IN '.
                                                                                                '('.$evenements_espece_chaine_bdd.')';
        
        $liste_evenements_pour_espece = $this->executerRequete($requete_liste_evenements_pour_espece);
        
            $liste_evenements_pour_espece_formatee = $this->formaterTableauEvenementPourEnvoi($liste_evenements_pour_espece);                   

                return $liste_evenements_pour_espece_formatee;
    }
    
        private function formaterTableauEvenementPourEnvoiParId($liste_evenements) {
        
                $tableau_evenements_formate = array();
        
            foreach($liste_evenements as $evenement) {
                                
                        $identifiant_stade = $evenement['ot_id_triple'];
                
                                $stade_observation_complet = $evenement['ot_cle'];
                                
                                $infos_stades = $this->renvoyerInformationStadeAPartirChaineTriple($stade_observation_complet);
                                
                                $titre_stade = $infos_stades['nom'];
                                $numero_stade = $infos_stades['numero'];
                                $abreviation_stade = $infos_stades['abreviation'];              
                                
                                $tableau_evenements_formate[$identifiant_stade]['code'] = $numero_stade;
                                $tableau_evenements_formate[$identifiant_stade]['nom'] = $titre_stade;
                                
                }
                
                return $tableau_evenements_formate;
    }
    
    private function formaterTableauEvenementPourEnvoi($liste_evenements) {
        
                $tableau_evenements_formate = array();
        
            foreach($liste_evenements as $evenement) {
                                
                        $identifiant_stade = $evenement['ot_id_triple'];
                
                                $stade_observation_complet = $evenement['ot_cle'];
                                
                                $infos_stades = $this->renvoyerInformationStadeAPartirChaineTriple($stade_observation_complet);
                                
                                $titre_stade = $infos_stades['nom'];
                                $numero_stade = $infos_stades['numero'];
                                $abreviation_stade = $infos_stades['abreviation'];              
                                
                                $tableau_evenements_formate[$titre_stade]['id'] = $evenement['ot_id_triple'];
                                $tableau_evenements_formate[$titre_stade]['nom'] = $titre_stade;
                                $tableau_evenements_formate[$titre_stade]['abreviation'] = $abreviation_stade;
                                $tableau_evenements_formate[$titre_stade]['stades'][$identifiant_stade] = $numero_stade;
                                
                }
                
                return $tableau_evenements_formate;
    }
}
?>