Subversion Repositories Sites.obs-saisons.fr

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
206 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe mère des controleurs de l'application.
5
 * Elle repartie les demandes utilisateurs dans les différents modules, executent les actions et redistribue le code
6
 * html dans les différentes fonctions d'affichage.
7
 * C'est une Singleton.
8
 *
9
 * @category    PHP 5.2
10
 * @package     saisie
11
 * @author      Aurélien Peronnet <aurelien@tela-botanica.org>
12
 * @copyright   2010 Tela-Botanica
13
 * @license     GPL-v3 et CECILL-v2
14
 * @version     $Id: AppControleur.php 160 2010-09-13 13:10:41Z aurelien $
15
 */
16
 
17
class AppControleur 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
     * Instance de l'utilisateur en cours
26
     */
27
   private static $utilisateur = null;
28
 
29
    /**
30
     * Paramètres
31
     */
32
    private static $parametres = array();
33
 
34
    /**
35
     * Constructeur vide
36
     */
37
    public function __construct() {
38
        $sortie = array('titre' => '', 'description' => '', 'tags' => '',
39
            'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => '');
40
        $url = new Url(Config::get('url_base_index'));
41
        self::$parametres = array(  'module' => 'Rendu',
42
            'action' => 'executerActionParDefaut',
43
            'sortie' => $sortie,
44
            'url' => $url);
45
        parent::__construct();
46
    }
47
 
48
    /**
49
     * Initialisation du controleur principal en fonction des paramètres de l'url.
50
     */
51
    public static function initialiser() {
52
 
53
        self::verifierCreationInstance();
54
        self::gererSession();
55
 
56
        if (isset($_GET['module'])) {
57
            self::$parametres['module'] = $_GET['module'];
58
        }
59
        self::$parametres['url']->setVariableRequete('module', self::$parametres['module']);
60
        if (isset($_GET['action'])) {
61
            self::$parametres['action'] = $_GET['action'];
62
        }
63
        self::$parametres['url']->setVariableRequete('action', self::$parametres['action']);
64
 
65
        $registre = Registre::getInstance();
66
        $registre->set('parametres', &self::$parametres);
67
 
68
        $ClasseModule = self::$parametres['module'];
69
        $action = self::$parametres['action'];
70
 
71
        $module = new $ClasseModule();
72
        $module->$action();
73
 
74
        self::fusionnerSortie($module->getSortie());
75
    }
76
 
77
    private static function gererSession() {
78
        if (Config::get('session_demarrage')) {
79
 
80
            // Attribution d'un nom à la session
81
            session_name(Config::get('session_nom'));
82
 
83
            if(!isset($_SESSION)){
84
            	// Démarrage de la session si besoin
85
            	session_start();
86
            }
87
        }
88
    }
89
 
90
    /**
91
     * Fusionne un tableau de sortie par défaut avec le tableau renvoyé par l'action du module.
92
     * @param array le tableauàfusionner
93
     */
94
    private static function fusionnerSortie($sortie) {
95
        self::$parametres['sortie'] = array_merge(self::$parametres['sortie'], $sortie);
96
    }
97
 
98
 
99
    /**
100
     * Vérifie si l'instance de classe été crée, si non la crée.
101
     */
102
    private static function verifierCreationInstance() {
103
        if (empty(self::$instance)) {
104
            self::$instance = new AppControleur();
105
        }
106
    }
107
 
108
    public static function getInstance() {
109
    	self::verifierCreationInstance();
110
    	return self::$instance;
111
    }
112
 
113
    /**
114
     * Retourne le titre du contenu de l'application.
115
     */
116
    public static function getMetaTitre() {
117
        $sortie = self::$parametres['sortie']['titre'];
118
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
119
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
120
        }
121
        return $sortie;
122
    }
123
 
124
    /**
125
     * Retourne la description du contenu de l'application.
126
     */
127
    public static function getMetaDescription() {
128
        $sortie = self::$parametres['sortie']['description'];
129
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
130
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
131
        }
132
        return $sortie;
133
    }
134
 
135
    /**
136
     * Retourne les mots-clés (tags) du contenu de l'application.
137
     */
138
    public static function getMetaTags() {
139
        $sortie = self::$parametres['sortie']['tags'];
140
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
141
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
142
        }
143
        return $sortie;
144
    }
145
 
146
    /**
147
     * Retourne le contenu du corps de l'application.
148
     */
149
    public static function getContenuCorps() {
150
        $sortie = self::$parametres['sortie']['corps'];
151
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
152
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
153
        }
154
        return $sortie;
155
    }
156
 
157
    /**
158
     * Retourne le contenu de la tête de l'application.
159
     */
160
    public static function getContenuTete() {
161
        $sortie = self::$parametres['sortie']['tete'];
162
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
163
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
164
        }
165
        return $sortie;
166
    }
167
 
168
    /**
169
     * Retourne le contenu des styles de l'application.
170
     */
171
    public static function getContenuStyle() {
172
        $sortie = self::$parametres['sortie']['tete'];
173
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
174
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
175
        }
176
        return $sortie;
177
    }
178
 
179
    /**
180
     * Retourne le contenu des script de l'application.
181
     */
182
	public static function getContenuScript() {
183
        $sortie = self::$parametres['sortie']['script'];
184
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
185
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
186
        }
187
        return $sortie;
188
    }
189
 
190
    /**
191
     * Retourne le contenu du pied de l'application.
192
     */
193
    public static function getContenuPied() {
194
        $sortie = self::$parametres['sortie']['pied'];
195
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
196
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
197
        }
198
        return $sortie;
199
    }
200
 
201
    /**
202
     * Retourne les éléments de navigation de l'application.
203
     */
204
    public static function getContenuNavigation() {
205
 
206
        $sortie = self::$parametres['sortie']['navigation'];
207
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
208
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
209
        }
210
        return $sortie;
211
    }
212
 
213
    /**
214
     * Retourne les chronos pris dans l'appli
215
     */
216
    public static function getChrono() {
217
        $sortie = '';
218
        if (Config::get('chronometrage')) {
219
            $chrono = Chronometre::afficherChrono();
220
            $sortie = mb_convert_encoding($chrono, Config::get('sortie_encodage'), Config::get('appli_encodage'));
221
        }
222
        return $sortie;
223
    }
224
 
225
    /**
226
     * Retourne les messages d'exceptions et d'erreurs.
227
     */
228
    public static function getExceptions() {
229
        $sortie = (Config::get('fw_debogage')) ? GestionnaireException::getExceptions() : '';
230
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
231
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
232
        }
233
        return $sortie;
234
    }
235
}
236
 
237
?>