Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev Author Line No. Line
287 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe d'administration de l'application
5
 *
6
 * @package     Collection
7
 * @category    Php 5.2
8
 * @author      Aurélien PERONNET <aurelien@tela-botanica.org>
9
 * @copyright   2013 Tela-Botanica
10
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version     SVN: $Id: Espece.php 152 2010-09-06 16:19:12Z jpm $
13
 */
14
class Administration extends aControleur {
15
 
16
	public function __construct()  {
17
		parent::__construct();
18
		$this->initialiser();
19
	}
20
 
21
	public function initialiser() {
22
 
23
	}
24
 
292 aurelien 25
	public function executerActionParDefaut() {
26
		$this->afficherListeEspecesAdministrables();
27
	}
28
 
287 aurelien 29
	public function afficherListeEspecesAdministrables() {
30
		$espece_dao = new EspeceDao();
31
		$donnees['especes'] = $espece_dao->getListeEspecesAdminParType();
32
		$liste = $this->getVue('listes/espece_liste_administration',$donnees);
33
		$this->setSortie(self::RENDU_CORPS, $liste);
34
	}
35
 
292 aurelien 36
	public function afficherFormulaireAjoutEspeceAdmin($valeurs_precedentes = array()) {
37
		$triple_dao = new TripleDao();
38
		$erreurs = isset($valeurs_precedentes['erreurs']) ? $valeurs_precedentes['erreurs'] : array();
39
		$donnees['types_especes'] = $triple_dao->getListeTypesEspeces();
40
		$donnees['evenements'] = $triple_dao->getListeEvenements();
41
		$donnees['erreurs'] = $erreurs;
42
		$formulaire = $this->getVue('formulaires/espece_ajout_administration',$donnees);
43
		$this->setSortie(self::RENDU_CORPS, $formulaire);
44
	}
45
 
287 aurelien 46
	public function afficherFormulaireModificationEspeceAdmin($valeurs_precedentes = array()) {
47
		$id_espece = $_GET['id_espece'];
48
		$espece_dao = new EspeceDao();
49
		$erreurs = isset($valeurs_precedentes['erreurs']) ? $valeurs_precedentes['erreurs'] : array();
50
		$donnees['espece'] = $espece_dao->getInformationsEspece($id_espece);
51
		$donnees['espece'] = array_merge($donnees['espece'], $valeurs_precedentes);
52
		$donnees['erreurs'] = $erreurs;
53
		$formulaire = $this->getVue('formulaires/espece_modification_administration',$donnees);
54
		$this->setSortie(self::RENDU_CORPS, $formulaire);
55
	}
56
 
292 aurelien 57
	public function afficherFormulaireAjoutImageEspeceAdmin($valeurs_precedentes = array()) {
58
		$id_espece = $_GET['id_espece'];
59
		$espece_dao = new EspeceDao();
60
		$erreurs = isset($valeurs_precedentes['erreurs']) ? $valeurs_precedentes['erreurs'] : array();
61
		$donnees['espece'] = $espece_dao->getInformationsEspece($id_espece);
62
		$donnees['espece']['nom_sci_normalise'] = str_replace(' ','_',strtolower($donnees['espece']['nom_scientifique']));
63
		$donnees['espece'] = array_merge($donnees['espece'], $valeurs_precedentes);
64
		$donnees['erreurs'] = $erreurs;
65
		$formulaire = $this->getVue('formulaires/espece_ajout_image_administration',$donnees);
66
		$this->setSortie(self::RENDU_CORPS, $formulaire);
67
	}
68
 
287 aurelien 69
// +---------------------------------------------------------------------------------------------------------------+
70
    // METHODES DE VALIDATION DE FORMULAIRE
292 aurelien 71
    public function validerFormulaireAjoutImageEspeceAdmin() {
72
    	$donnees = $_POST;
73
    	unset($donnees['MAX_FILE_SIZE']);
74
 
75
    	$verification_ou_erreurs = $this->verifierValeursFormulaireImage($donnees);
76
    	if($verification_ou_erreurs !== true) {
77
    		$donnees['erreurs'] = $verification_ou_erreurs;
78
    		$_GET['id_espece'] = $_POST['id_espece'];
79
    		$this->afficherFormulaireAjoutImageEspeceAdmin($donnees);
80
    	} else {
81
	    	$chemin_temp = $this->stockerFichierDansDossierEnAttente($_FILES['image_espece']['tmp_name'], $donnees['nom_fichier']);
82
 
83
	    	if(!$chemin_temp) {
84
	    		$donnees['erreurs']['image_espece'] = 'Impossible de stocker le fichier';
85
	    		$this->afficherFormulaireModificationEspeceAdmin($donnees);
86
	    	}
87
 
88
	    	$donnees['chemin'] = $chemin_temp;
89
	    	$image_dao = new ImageDao();
90
	    	$retour_ajout = $image_dao->ajoutImageEspece($donnees);
91
	    	$_GET['id_espece'] = $_POST['id_espece'];
92
	    	if($retour_ajout) {
93
	    		$this->afficherFormulaireModificationEspeceAdmin($donnees);
94
	    	} else {
95
	    		$this->afficherFormulaireAjoutImageEspeceAdmin($donnees);
96
	    	}
97
    	}
98
    }
99
 
100
    private function verifierValeursFormulaireImage($donnees) {
101
    	$erreurs = array();
102
 
103
    	if(empty($_FILES['image_espece']) || $_FILES['image_espece']['size'] == 0) {
104
    		$erreurs['image_espece'] = 'Ce champ est obligatoire';
105
    	}
106
 
107
    	$type = getimagesize($_FILES['image_espece']['tmp_name']);
108
        if(empty($_FILES['image_espece']) || $type['mime'] != 'image/jpeg') {
109
    		$erreurs['image_espece'] = 'Le format de l\'image n\'est pas supporté';
110
    	}
111
 
112
    	if($_FILES['image_espece']['size'] > Config::get('max_taille_fichiers')) {
113
    		$erreurs['image_espece'] = 'La taille de l\'image dépasse la taille maximale autorisée';
114
    	}
115
 
116
    	if(trim($donnees['credits']) == '') {
117
    		$erreurs['credits'] = 'Ce champ est obligatoire';
118
    	}
119
 
120
    	if(!empty($erreurs)) {
121
    		return $erreurs;
122
    	}
123
 
124
    	return true;
125
    }
126
 
127
    private function stockerFichierDansDossierEnAttente($chemin, $nom) {
128
    	$retour = false;
129
    	if(is_uploaded_file($chemin)) {
130
    		$destination = Config::get('chemin_fichiers_temp').'/'.$nom.'.jpg';
131
    		$stockage = move_uploaded_file($chemin, $destination);
132
    		chmod($destination, 0777);
133
    		if($stockage) {
134
    			$retour = $destination;
135
    		}
136
    	}
137
 
138
    	return $retour;
139
    }
140
 
287 aurelien 141
	public function validerFormulaireModificationEspeceAdmin() {
142
		$donnees = $_POST;
143
	    $verification_ou_erreurs = $this->verifierValeursEspece($donnees);
144
    	if($verification_ou_erreurs !== true) {
145
    		$donnees['erreurs'] = $verification_ou_erreurs;
146
    		$this->afficherFormulaireModificationEspeceAdmin($donnees);
147
    		return;
148
    	}
149
 
150
    	if(isset($donnees['espece_active'])) {
151
    		$donnees['espece_active'] = 1;
152
    	} else {
153
    		$donnees['espece_active'] = 0;
154
    	}
155
 
156
    	$espece_dao = new EspeceDao();
157
    	$id_espece = $donnees['id_espece'];
158
    	unset($donnees['id_espece']);
159
    	$retour_modif_espece = $espece_dao->modifierEspece($id_espece, $donnees);
160
 
161
    	if($retour_modif_espece) {
162
    		$this->afficherListeEspecesAdministrables();
163
    	} else {
164
    		$this->afficherFormulaireModificationEspeceAdmin($donnees);
165
    	}
166
    }
167
 
292 aurelien 168
    // METHODES DE VALIDATION DE FORMULAIRE
169
    public function validerFormulaireAjoutEspeceAdmin() {
170
    	$donnees = $_POST;
171
    	$verification_ou_erreurs = $this->verifierValeursEspece($donnees);
172
    	$verifications_supplementaires = $this->verifierPresenceValeurEvenement($donnees);
173
 
174
    	$verification_ou_erreurs = $this->mergerErreurs($verification_ou_erreurs, $verifications_supplementaires);
175
    	if($verification_ou_erreurs !== true) {
176
    		$donnees['erreurs'] = $verification_ou_erreurs;
177
    		$this->afficherFormulaireAjoutEspeceAdmin($donnees);
178
    		return;
179
    	}
180
 
181
    	$donnees['espece_ecole'] = (isset($donnees['espece_ecole'])) ? $donnees['espece_ecole'] = 1 : $donnees['espece_ecole'] = 0;
182
    	$donnees['espece_active'] = (isset($donnees['espece_active'])) ? $donnees['espece_active'] = 1 : $donnees['espece_active'] = 0;
183
    	$donnees['ce_evenements'] = implode(',', $donnees['ce_evenements']);
184
    	$espece_dao = new EspeceDao();
185
    	$retour_ajout_espece = $espece_dao->ajoutEspece($donnees);
186
 
187
    	if($retour_ajout_espece) {
188
    		$this->afficherListeEspecesAdministrables();
189
    	} else {
190
    		$this->afficherFormulaireAjoutEspeceAdmin($donnees);
191
    	}
192
    }
193
 
194
    private function mergerErreurs($verifications_commune, $verifications_specifiques) {
195
    	$retour = true;
196
    	if(is_array($verifications_commune) && is_array($verifications_specifiques)) {
197
    		$retour = array_merge($verifications_commune, $verifications_specifiques);
198
    	}
199
 
200
    	if(is_array($verifications_commune) && !is_array($verifications_specifiques)) {
201
    		$retour = $verifications_commune;
202
    	}
203
 
204
    	if(!is_array($verifications_commune) && is_array($verifications_specifiques)) {
205
    		$retour = $verifications_specifiques;
206
    	}
207
    	return $retour;
208
    }
209
 
210
    private function verifierPresenceValeurEvenement($donnees) {
211
    	$erreurs = array();
212
    	if(!(isset($donnees['ce_evenements']) && is_array($donnees['ce_evenements']) && !empty($donnees['ce_evenements']))) {
213
    		$erreurs['ce_evenements'] = 'Au moins un évènement doit être sélectionné';
214
    	}
215
 
216
    	if(!empty($erreurs)) {
217
    		return $erreurs;
218
    	}
219
 
220
    	return true;
221
    }
222
 
287 aurelien 223
    private function verifierValeursEspece($donnees) {
224
    	$erreurs = array();
225
    	foreach($donnees as $champ => $valeur) {
292 aurelien 226
    		if(!is_array($valeur) && trim($valeur) == '') {
287 aurelien 227
    			$erreurs[$champ] .= ' Ce champ ne peut pas être vide';
228
    		}
229
    	}
292 aurelien 230
 
287 aurelien 231
    	if(!empty($erreurs)) {
232
    		return $erreurs;
233
    	}
234
 
235
    	return true;
236
    }
237
}
238
?>