* @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; } } ?>