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