Subversion Repositories Applications.annuaire

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
96 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Annuaire est le controlleur principal de l'application.
5
 * Il repartit les demandes utilisateurs dans les différents modules, execute les actions et redistribue le code
6
 * html dans les différentes fonctions d'affichage.
7
 * C'est un Singleton.
8
 *
9
 * @category    PHP5
10
 * @package     Annuaire
11
 * @author      Aurélien Peronnet <aurelien@tela-botanica.org>
12
 * @copyright   2010 Tela-Botanica
13
 * @license     GPL-v3 et CECILL-v2
14
 * @version     SVN:<svn_id>
15
 */
16
 
17
class Annuaire extends Controleur {
18
 
19
    /**
20
     * Instance de la classe pointant sur elle même (pour le pattern singleton)
21
     */
22
    private static $instance = null;
23
 
24
    /**
25
     * Paramètres pour l'annuaire
26
     */
27
    private static $parametres = array();
28
 
29
    /**
30
     * Constructeur vide
31
     */
32
    public function __construct() {
33
        $sortie = array('titre' => '', 'description' => '', 'tags' => '',
34
            'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => '');
35
        $url = new Url(Config::get('url_base'));
36
        self::$parametres = array(  'module' => 'AnnuaireControleur',
37
            'action' => 'executerActionParDefaut',
38
            'sortie' => $sortie,
39
            'url' => $url);
40
        parent::__construct();
41
    }
42
 
43
    /**
44
     * Initialisation du controleur principal en fonction des paramêtres de l'url.
45
     */
46
    public static function initialiser($admin = false) {
47
 
48
        self::verifierCreationInstance();
49
        self::gererSession();
50
        self::gererIdentification($admin);
51
 
52
        if (isset($_GET['m'])) {
53
            self::$parametres['m'] = $_GET['m'];
54
        } else {
55
			if(isset($_POST['m'])) {
56
				self::$parametres['m'] = $_POST['m'];
57
			}
58
        }
59
 
60
        $registre = Registre::getInstance();
61
        $registre->set('parametres', &self::$parametres);
62
 
63
		// Traiter les paramètre de methode selon une expression régulière
64
 
65
        self::fusionnerSortie(self::traiterMethode(self::$parametres['m'])/*$module->getSortie()*/);
66
    }
67
 
68
    private static function traiterMethode($methode) {
69
 
70
    	switch ($methode) {
71
 
72
			case 'annuaire_inscrits':
73
				$controleur = new AnnuaireControleur();
74
				$id = $_GET['id_annuaire'];
75
 
76
				if(isset($_GET['taille_page'])) {
77
					$taille_page = $_GET['taille_page'];
78
				} else  {
79
					$taille_page = 50;
80
				}
81
 
82
				if(isset($_GET['numero_page'])) {
83
					$numero_page = $_GET['numero_page'];
84
				} else {
85
					$numero_page = 1;
86
				}
87
				$retour = $controleur->afficherFormulaireRecherche($id);
88
				$retour .= $controleur->chargerAnnuaireListeInscrits($id, $numero_page, $taille_page);
89
				break;
90
 
91
			case 'annuaire_formulaire_inscription':
92
				$controleur = new AnnuaireControleur();
93
				$id = $_GET['id_annuaire'];
94
				$retour = $controleur->afficherFormulaireInscription($id);
95
				break;
96
 
97
			case 'annuaire_ajout_inscription':
98
				$valeurs = $_POST;
99
				$controleur = new AnnuaireControleur();
100
				$retour = $controleur->ajouterInscriptionTemporaire($valeurs);
101
				break;
102
 
103
			case 'annuaire_inscription_confirmation':
104
				$identifiant = $_GET['id'];
105
				$controleur = new AnnuaireControleur();
106
				$retour = $controleur->ajouterNouvelleInscription($identifiant);
107
				break;
108
 
109
			case 'annuaire_fiche_utilisateur_consultation':
110
				$identifiant_annuaire = $_GET['id_annuaire'];
111
				$controleur = new AnnuaireControleur();
112
				$retour = $controleur->afficherFicheUtilisateur($identifiant_annuaire,$GLOBALS['id_utilisateur']);
113
				break;
114
 
115
			case 'annuaire_fiche_resume_consultation':
116
				$identifiant_annuaire = $_GET['id_annuaire'];
117
				$controleur = new AnnuaireControleur();
118
				$retour = $controleur->afficherFicheResumeUtilisateur($identifiant_annuaire,$GLOBALS['id_utilisateur']);
119
				break;
120
 
121
			case 'annuaire_fiche_gestion_consultation':
122
				$identifiant_annuaire = $_GET['id_annuaire'];
123
				$controleur = new AnnuaireControleur();
124
				$retour = $controleur->gererInscriptionExterne($identifiant_annuaire,$GLOBALS['id_utilisateur']);
125
				break;
126
 
127
 
128
			case 'annuaire_formulaire_modification_inscription':
129
				$controleur = new AnnuaireControleur();
130
				$id_annuaire = $_GET['id_annuaire'];
131
				$retour = $controleur->afficherFormulaireModificationInscription($id_annuaire, $GLOBALS['id_utilisateur']);
132
				break;
133
 
134
			case 'annuaire_modification_inscription':
135
				$controleur = new AnnuaireControleur();
136
				$valeurs = $_POST;
137
				$retour = $controleur->modifierInscription($_POST);
138
 
139
				break;
140
 
141
			case 'annuaire_afficher_formulaire_ajout_image':
142
				$identifiant_annuaire = $_GET['id_annuaire'];
143
				$controleur = new AnnuaireControleur();
144
				$id_champ_image = $_GET['id_champ_image'];
145
				$retour = $controleur->afficherFormulaireUploadImage($identifiant_annuaire,$GLOBALS['id_utilisateur'], $id_champ_image);
146
				break;
147
 
148
			case 'annuaire_ajouter_image':
149
				$identifiant_annuaire = $_GET['id_annuaire'];
150
				$GLOBALS['id_utilisateur'] = $_GET['id_utilisateur'];
151
				$infos_images = $_FILES;
152
				$controleur = new AnnuaireControleur();
153
				$retour = $controleur->ajouterImageUtilisateur($identifiant_annuaire,$GLOBALS['id_utilisateur'],$infos_images);
154
				break;
155
 
156
 
157
			case 'annuaire_suppression_inscription':
158
				$identifiant_annuaire = $_GET['id_annuaire'];
159
				$controleur = new AnnuaireControleur();
160
				$retour = $controleur->supprimerInscription($identifiant_annuaire,$GLOBALS['id_utilisateur']);
161
				break;
162
 
163
			case 'annuaire_afficher_formulaire_oubli_mdp':
164
				$identifiant_annuaire = $_GET['id_annuaire'];
165
				$controleur = new AnnuaireControleur();
166
				$retour = $controleur->afficherFormulaireOubliMotDePasse($identifiant_annuaire);
167
				break;
168
 
169
			case 'annuaire_oubli_mdp':
170
				$identifiant_annuaire = $_GET['id_annuaire'];
171
				$mail = $_POST['mail'];
172
				$controleur = new AnnuaireControleur();
173
				$retour = $controleur->reinitialiserMotDePasse($identifiant_annuaire, $mail);
174
				break;
175
 
176
			case 'annuaire_afficher_formulaire_recherche':
177
				$identifiant_annuaire = $_GET['id_annuaire'];
178
				$controleur = new AnnuaireControleur();
179
				$retour = $controleur->afficherFormulaireRecherche($identifiant_annuaire);
180
				break;
181
 
182
			case 'annuaire_recherche_inscrit':
183
				$identifiant_annuaire = $_GET['id_annuaire'];
184
				unset($_GET['id_annuaire']);
185
 
186
				if(isset($_GET['inclusive'])) {
187
					$exclusive = false;
188
					unset($_GET['inclusive']);
189
				} else {
190
					$exclusive = true;
191
				}
192
 
193
				$criteres = $_GET;
194
 
195
				$controleur = new AnnuaireControleur();
196
				$retour = $controleur->rechercherInscrit($identifiant_annuaire,$criteres, $exclusive);
197
				break;
198
 
199
			case 'annuaire_inscrits_carto':
200
				$identifiant_annuaire = $_GET['id_annuaire'];
201
				$criteres = $_GET;
202
				$controleur = new AnnuaireControleur();
203
				$retour = $controleur->rechercherInscritParlocalisation($identifiant_annuaire,$criteres);
204
			break;
205
 
206
			default:
207
				$controleur = new AnnuaireControleur();
208
				$retour = $controleur->index();
209
				break;
210
 
211
			case 'annuaire_afficher_carte':
212
				$identifiant_annuaire = $_GET['id_annuaire'];
213
 
214
				$continent = null;
215
				$pays = null;
216
				$departement = null;
217
 
218
				if(isset($_GET['continent'])) {
219
					$continent = $_GET['continent'];
220
				}
221
 
222
				if(isset($_GET['pays'])) {
223
					$pays = $_GET['pays'];
224
				}
225
 
226
				if(isset($_GET['departement'])) {
227
					$departement = $_GET['departement'];
228
				}
229
 
230
				$controleur = new CartoControleur();
231
				$retour = $controleur->cartographier($identifiant_annuaire, $continent, $pays, $departement);
232
			break;
233
 
234
			case 'annuaire_envoyer_message':
235
 
236
				$id_annuaire = $_GET['id_annuaire'];
237
				$contenu_message = $_GET['contenu_message'];
238
				$sujet_message = $_GET['sujet_message'];
239
				$destinataires = array_keys($_GET['destinataires']);
240
 
241
				$controleur = new MessageControleur();
242
				$retour = $controleur->envoyerMailDirectOuModere($id_annuaire ,Config::get('identification'), $destinataires, $sujet_message, $contenu_message);
243
			break;
244
 
245
			case 'inscription_lettre_actualite':
246
				$controleur = new AnnuaireControleur();
247
				$id_annuaire = $_GET['id_annuaire'];
248
				$retour = $controleur->inscriptionLettreActualite($id_annuaire, $GLOBALS['id_utilisateur']);
249
 
250
				if(isset($_GET['retour'])) {
251
					$retour = $controleur->gererInscriptionExterne($identifiant_annuaire,$GLOBALS['id_utilisateur']);
252
				}
253
			break;
254
 
255
			case 'desinscription_lettre_actualite':
256
				$controleur = new AnnuaireControleur();
257
				$id_annuaire = $_GET['id_annuaire'];
258
				$retour = $controleur->desinscriptionLettreActualite($id_annuaire, $GLOBALS['id_utilisateur']);
259
 
260
				if(isset($_GET['retour'])) {
261
					$retour = $controleur->gererInscriptionExterne($identifiant_annuaire,$GLOBALS['id_utilisateur']);
262
				}
263
			break;
264
 
265
			default:
266
				$controleur = new AnnuaireControleur();
267
				$retour = $controleur->afficherFicheUtilisateur(Config::get('annuaire_defaut'),$GLOBALS['id_utilisateur']);
268
			break;
269
		}
270
 
271
		return $retour;
272
 
273
    }
274
 
275
    private static function gererIdentification($admin) {
276
 
277
		$identification = Config::get('identification');
278
		$annuaire_controleur = new AnnuaireControleur();
279
 
280
		$annuaire_controleur->chargerModele('AnnuaireModele');
281
		$id = $annuaire_controleur->AnnuaireModele->obtenirIdParMail('1',$identification);
282
 
283
		//ajout des variables d'identification
284
		Registre::getInstance()->set('est_admin',$admin);
285
		Registre::getInstance()->set('identification_id',$id);
286
		Registre::getInstance()->set('identification_mail',$identification);
287
 
288
		if(isset($_GET['id_utilisateur'])) {
289
			$GLOBALS['id_utilisateur'] = $_GET['id_utilisateur'];
290
		} else if ($_POST['id_utilisateur']) {
291
			$GLOBALS['id_utilisateur'] = $_POST['id_utilisateur'];
292
		} else {
293
			$GLOBALS['id_utilisateur'] = $id;
294
		}
295
    }
296
 
297
    private static function gererSession() {
298
        if (Config::get('session_demarrage')) {
299
            // Attribution d'un nom à la session
300
            session_name(Config::get('session_nom'));
301
            // Démarrage de la session
302
            session_start();
303
        }
304
    }
305
 
306
    /**
307
     * Fusionne un tableau de sortie par défaut avec le tableau renvoyé par l'action du module.
308
     * @param array le tableau à fusionner
309
     */
310
    private static function fusionnerSortie($sortie) {
311
        self::$parametres['sortie'] = array_merge(self::$parametres['sortie'], $sortie);
312
    }
313
 
314
 
315
    /**
316
     * Vérifie si l'instance de classe à été crée, si non la crée.
317
     */
318
    private static function verifierCreationInstance() {
319
        if (empty(self::$instance)) {
320
            self::$instance = new Annuaire();
321
        }
322
    }
323
 
324
    /**
325
     * Retourne le titre du contenu de l'application.
326
     */
327
    public static function getMetaTitre() {
328
        $sortie = self::$parametres['sortie']['titre'];
329
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
330
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
331
        }
332
        return $sortie;
333
    }
334
 
335
    /**
336
     * Retourne la description du contenu de l'application.
337
     */
338
    public static function getMetaDescription() {
339
        $sortie = self::$parametres['sortie']['description'];
340
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
341
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
342
        }
343
        return $sortie;
344
    }
345
 
346
    /**
347
     * Retourne les mots-clés (tags) du contenu de l'application.
348
     */
349
    public static function getMetaTags() {
350
        $sortie = self::$parametres['sortie']['tags'];
351
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
352
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
353
        }
354
        return $sortie;
355
    }
356
 
357
    /**
358
     * Retourne le contenu du corps de l'application.
359
     */
360
    public static function getContenuCorps() {
361
 
362
    	Debug::printr($this->parametres['sortie']);
363
        $sortie = self::$parametres['sortie']['corps'];
364
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
365
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
366
        }
367
        return $sortie;
368
    }
369
 
370
    /**
371
     * Retourne le contenu de la tête de l'application.
372
     */
373
    public static function getContenuTete() {
374
        $sortie = self::$parametres['sortie']['tete'];
375
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
376
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
377
        }
378
        return $sortie;
379
    }
380
 
381
    /**
382
     * Retourne le contenu du pied de l'application.
383
     */
384
    public static function getContenuPied() {
385
        $sortie = self::$parametres['sortie']['pied'];
386
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
387
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
388
        }
389
        return $sortie;
390
    }
391
 
392
    /**
393
     * Retourne les éléments de navigation de l'application.
394
     */
395
    public static function getContenuNavigation() {
396
        $sortie = self::$parametres['sortie']['navigation'];
397
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
398
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
399
        }
400
        return $sortie;
401
    }
402
 
403
    /**
404
     * Retourne les chronos pris dans l'appli
405
     */
406
    public static function getChrono() {
407
        $sortie = '';
408
        if (Config::get('chronometrage')) {
409
            $chrono = Chronometre::afficherChrono();
410
            $sortie = mb_convert_encoding($chrono, Config::get('sortie_encodage'), Config::get('appli_encodage'));
411
        }
412
        return $sortie;
413
    }
414
 
415
    /**
416
     * Retourne les messages d'exceptions et d'erreurs.
417
     */
418
    public static function getExceptions() {
419
        $sortie = GestionnaireException::getExceptions();
420
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
421
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
422
        }
423
        return $sortie;
424
    }
425
}