Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 287 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
 * Classe d'administration de l'application
 *
 * @package     Collection
 * @category    Php 5.2
 * @author      Aurélien PERONNET <aurelien@tela-botanica.org>
 * @copyright   2013 Tela-Botanica
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
 * @version     SVN: $Id: Espece.php 152 2010-09-06 16:19:12Z jpm $
 */
class Administration extends aControleur {
        
        public function __construct()  {
                parent::__construct();
                $this->initialiser();
        }
        
        public function initialiser() { 

        }
        
        public function executerActionParDefaut() {
                $this->afficherListeEspecesAdministrables();
        }
        
        public function afficherListeEspecesAdministrables() {
                $espece_dao = new EspeceDao();
                $donnees['especes'] = $espece_dao->getListeEspecesAdminParType();
                $liste = $this->getVue('listes/espece_liste_administration',$donnees);
                $this->setSortie(self::RENDU_CORPS, $liste);    
        }
        
        public function afficherFormulaireAjoutEspeceAdmin($valeurs_precedentes = array()) {
                $triple_dao = new TripleDao();
                $erreurs = isset($valeurs_precedentes['erreurs']) ? $valeurs_precedentes['erreurs'] : array();
                $donnees['types_especes'] = $triple_dao->getListeTypesEspeces();
                $donnees['evenements'] = $triple_dao->getListeEvenements();
                $donnees['erreurs'] = $erreurs;
                $formulaire = $this->getVue('formulaires/espece_ajout_administration',$donnees);
                $this->setSortie(self::RENDU_CORPS, $formulaire);
        }
        
        public function afficherFormulaireModificationEspeceAdmin($valeurs_precedentes = array()) {
                $id_espece = $_GET['id_espece'];        
                $espece_dao = new EspeceDao();
                $erreurs = isset($valeurs_precedentes['erreurs']) ? $valeurs_precedentes['erreurs'] : array();
                $donnees['espece'] = $espece_dao->getInformationsEspece($id_espece);
                $donnees['espece'] = array_merge($donnees['espece'], $valeurs_precedentes);
                $donnees['erreurs'] = $erreurs;
                $formulaire = $this->getVue('formulaires/espece_modification_administration',$donnees);
                $this->setSortie(self::RENDU_CORPS, $formulaire);
        }
        
        public function afficherFormulaireAjoutImageEspeceAdmin($valeurs_precedentes = array()) {
                $id_espece = $_GET['id_espece'];
                $espece_dao = new EspeceDao();
                $erreurs = isset($valeurs_precedentes['erreurs']) ? $valeurs_precedentes['erreurs'] : array();
                $donnees['espece'] = $espece_dao->getInformationsEspece($id_espece);
                $donnees['espece']['nom_sci_normalise'] = str_replace(' ','_',strtolower($donnees['espece']['nom_scientifique']));
                $donnees['espece'] = array_merge($donnees['espece'], $valeurs_precedentes);
                $donnees['erreurs'] = $erreurs;
                $formulaire = $this->getVue('formulaires/espece_ajout_image_administration',$donnees);
                $this->setSortie(self::RENDU_CORPS, $formulaire);
        }
        
// +---------------------------------------------------------------------------------------------------------------+
    // METHODES DE VALIDATION DE FORMULAIRE 
    public function validerFormulaireAjoutImageEspeceAdmin() {
        $donnees = $_POST;
        unset($donnees['MAX_FILE_SIZE']);
        
        $verification_ou_erreurs = $this->verifierValeursFormulaireImage($donnees);
        if($verification_ou_erreurs !== true) {
                $donnees['erreurs'] = $verification_ou_erreurs;
                $_GET['id_espece'] = $_POST['id_espece'];
                $this->afficherFormulaireAjoutImageEspeceAdmin($donnees);
        } else {        
                $chemin_temp = $this->stockerFichierDansDossierEnAttente($_FILES['image_espece']['tmp_name'], $donnees['nom_fichier']);
                
                if(!$chemin_temp) {
                        $donnees['erreurs']['image_espece'] = 'Impossible de stocker le fichier';
                        $this->afficherFormulaireModificationEspeceAdmin($donnees);
                }
                
                $donnees['chemin'] = $chemin_temp;
                $image_dao = new ImageDao();
                $retour_ajout = $image_dao->ajoutImageEspece($donnees);
                $_GET['id_espece'] = $_POST['id_espece'];
                if($retour_ajout) {
                        $this->afficherFormulaireModificationEspeceAdmin($donnees);
                } else {         
                        $this->afficherFormulaireAjoutImageEspeceAdmin($donnees);
                }
        }
    }
    
    private function verifierValeursFormulaireImage($donnees) {
        $erreurs = array();

        if(empty($_FILES['image_espece']) || $_FILES['image_espece']['size'] == 0) {
                $erreurs['image_espece'] = 'Ce champ est obligatoire';
        }
        
        $type = getimagesize($_FILES['image_espece']['tmp_name']);
        if(empty($_FILES['image_espece']) || $type['mime'] != 'image/jpeg') {
                $erreurs['image_espece'] = 'Le format de l\'image n\'est pas supporté';
        }
        
        if($_FILES['image_espece']['size'] > Config::get('max_taille_fichiers')) {
                $erreurs['image_espece'] = 'La taille de l\'image dépasse la taille maximale autorisée';
        }
        
        if(trim($donnees['credits']) == '') {
                $erreurs['credits'] = 'Ce champ est obligatoire';
        }
        
        if(!empty($erreurs)) {
                return $erreurs;
        }
        
        return true;
    }
    
    private function stockerFichierDansDossierEnAttente($chemin, $nom) {
        $retour = false;
        if(is_uploaded_file($chemin)) {
                $destination = Config::get('chemin_fichiers_temp').'/'.$nom.'.jpg';
                $stockage = move_uploaded_file($chemin, $destination);
                chmod($destination, 0777);
                if($stockage) {
                        $retour = $destination;
                }
        }
        
        return $retour;
    }
        
        public function validerFormulaireModificationEspeceAdmin() {
                $donnees = $_POST;
            $verification_ou_erreurs = $this->verifierValeursEspece($donnees);
        if($verification_ou_erreurs !== true) {                 
                $donnees['erreurs'] = $verification_ou_erreurs;
                $this->afficherFormulaireModificationEspeceAdmin($donnees);
                return;
        }
        
        if(isset($donnees['espece_active'])) {
                $donnees['espece_active'] = 1; 
        } else {
                $donnees['espece_active'] = 0;
        }
        
        $espece_dao = new EspeceDao();
        $id_espece = $donnees['id_espece'];
        unset($donnees['id_espece']);
        $retour_modif_espece = $espece_dao->modifierEspece($id_espece, $donnees);
        
        if($retour_modif_espece) {
                $this->afficherListeEspecesAdministrables();
        } else {         
                $this->afficherFormulaireModificationEspeceAdmin($donnees);
        }
    }
    
    // METHODES DE VALIDATION DE FORMULAIRE
    public function validerFormulaireAjoutEspeceAdmin() {
        $donnees = $_POST;
        $verification_ou_erreurs = $this->verifierValeursEspece($donnees);
        $verifications_supplementaires = $this->verifierPresenceValeurEvenement($donnees);

        $verification_ou_erreurs = $this->mergerErreurs($verification_ou_erreurs, $verifications_supplementaires);
        if($verification_ou_erreurs !== true) {
                $donnees['erreurs'] = $verification_ou_erreurs;
                $this->afficherFormulaireAjoutEspeceAdmin($donnees);
                return;
        }
         
        $donnees['espece_ecole'] = (isset($donnees['espece_ecole'])) ? $donnees['espece_ecole'] = 1 : $donnees['espece_ecole'] = 0; 
        $donnees['espece_active'] = (isset($donnees['espece_active'])) ? $donnees['espece_active'] = 1 : $donnees['espece_active'] = 0;
        $donnees['ce_evenements'] = implode(',', $donnees['ce_evenements']);
        $espece_dao = new EspeceDao();
        $retour_ajout_espece = $espece_dao->ajoutEspece($donnees);
         
        if($retour_ajout_espece) {
                $this->afficherListeEspecesAdministrables();
        } else {
                $this->afficherFormulaireAjoutEspeceAdmin($donnees);
        }
    }
    
    private function mergerErreurs($verifications_commune, $verifications_specifiques) {
        $retour = true;
        if(is_array($verifications_commune) && is_array($verifications_specifiques)) {
                $retour = array_merge($verifications_commune, $verifications_specifiques);
        }
        
        if(is_array($verifications_commune) && !is_array($verifications_specifiques)) {
                $retour = $verifications_commune;
        }
        
        if(!is_array($verifications_commune) && is_array($verifications_specifiques)) {
                $retour = $verifications_specifiques;
        }
        return $retour;
    }
    
    private function verifierPresenceValeurEvenement($donnees) {
        $erreurs = array();
        if(!(isset($donnees['ce_evenements']) && is_array($donnees['ce_evenements']) && !empty($donnees['ce_evenements']))) {
                $erreurs['ce_evenements'] = 'Au moins un évènement doit être sélectionné'; 
        }
        
        if(!empty($erreurs)) {
                return $erreurs;
        }
        
        return true;
    }
    
    private function verifierValeursEspece($donnees) {
        $erreurs = array();
        foreach($donnees as $champ => $valeur) {
                if(!is_array($valeur) && trim($valeur) == '') {
                        $erreurs[$champ] .= ' Ce champ ne peut pas être vide'; 
                }
        }

        if(!empty($erreurs)) {
                return $erreurs;
        }
        
        return true;
    }
}
?>