Subversion Repositories Applications.framework

Rev

Rev 311 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
311 jpm 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * AppControleur est le controlleur principal 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		exemple
11
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @copyright	2010 Tela-Botanica
13
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
14
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
15
 * @version		$Id$
16
 */
17
 
18
class AppControleur extends Controleur {
19
 
20
    /**
21
     * Instance de la classe pointant sur elle même (pour le pattern singleton)
22
     */
23
    private static $instance = null;
24
 
25
    /**
26
     * Paramètres pour les collections
27
     */
28
    private static $parametres = array();
29
 
30
    /**
31
     * Constructeur vide
32
     */
33
    public function __construct() {
34
        $sortie = array('titre' => '', 'description' => '', 'tags' => '',
35
            'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => '');
36
        $url = new Url(Config::get('url_base_index'));
317 jpm 37
        self::$parametres = array(
38
        	'module' => Config::get('module_defaut'),
39
            'action' => Config::get('action_defaut'),
311 jpm 40
            'sortie' => $sortie,
41
            'url' => $url);
42
        parent::__construct();
43
    }
44
 
45
    /**
46
     * Initialisation du controleur principal en fonction des paramêtres de l'url.
47
     */
48
    public static function initialiser() {
49
        self::verifierCreationInstance();
50
        self::gererSession();
51
 
52
        if (isset($_GET['module'])) {
53
            self::$parametres['module'] = $_GET['module'];
54
        }
55
        if (isset($_GET['action'])) {
56
            self::$parametres['action'] = $_GET['action'];
57
        }
58
        self::$parametres['url']->setRequete(array('action' => self::$parametres['action'], 'module' => self::$parametres['module']));
59
 
317 jpm 60
        Registre::set('parametres', &self::$parametres);
311 jpm 61
 
62
        $ClasseModule = self::$parametres['module'];
63
        $action = self::$parametres['action'];
64
        $module = new $ClasseModule();
65
        $module->$action();
66
        self::fusionnerSortie($module->getSortie());
67
    }
68
 
69
    private static function gererSession() {
70
        if (Config::get('session_demarrage')) {
71
            // Attribution d'un nom à la session
72
            session_name(Config::get('session_nom'));
73
            // Démarrage de la session
74
            session_start();
75
        }
76
    }
77
 
78
    /**
79
     * Fusionne un tableau de sortie par défaut avec le tableau renvoyé par l'action du module.
80
     * @param array le tableau à fusionner
81
     */
82
    private static function fusionnerSortie($sortie) {
83
        self::$parametres['sortie'] = array_merge(self::$parametres['sortie'], $sortie);
84
    }
85
 
86
 
87
    /**
88
     * Vérifie si l'instance de classe à été crée, si non la crée.
89
     */
90
    private static function verifierCreationInstance() {
91
        if (empty(self::$instance)) {
92
            self::$instance = new AppControleur();
93
        }
94
    }
95
 
96
    /**
97
     * Retourne le titre du contenu de l'application.
98
     */
99
    public static function getMetaTitre() {
100
        $sortie = self::$parametres['sortie']['titre'];
101
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
102
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
103
        }
104
        return $sortie;
105
    }
106
 
107
    /**
108
     * Retourne la description du contenu de l'application.
109
     */
110
    public static function getMetaDescription() {
111
        $sortie = self::$parametres['sortie']['description'];
112
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
113
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
114
        }
115
        return $sortie;
116
    }
117
 
118
    /**
119
     * Retourne les mots-clés (tags) du contenu de l'application.
120
     */
121
    public static function getMetaTags() {
122
        $sortie = self::$parametres['sortie']['tags'];
123
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
124
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
125
        }
126
        return $sortie;
127
    }
128
 
129
    /**
130
     * Retourne le contenu du corps de l'application.
131
     */
132
    public static function getContenuCorps() {
133
        $sortie = self::$parametres['sortie']['corps'];
134
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
135
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
136
        }
137
        return $sortie;
138
    }
139
 
140
    /**
141
     * Retourne le contenu de la tête de l'application.
142
     */
143
    public static function getContenuTete() {
144
        $sortie = self::$parametres['sortie']['tete'];
145
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
146
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
147
        }
148
        return $sortie;
149
    }
150
 
151
    /**
152
     * Retourne le contenu du pied de l'application.
153
     */
154
    public static function getContenuPied() {
155
        $sortie = self::$parametres['sortie']['pied'];
156
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
157
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
158
        }
159
        return $sortie;
160
    }
161
 
162
    /**
163
     * Retourne les éléments de navigation de l'application.
164
     */
165
    public static function getContenuNavigation() {
166
        $sortie = self::$parametres['sortie']['navigation'];
167
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
168
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
169
        }
170
        return $sortie;
171
    }
172
 
173
    /**
174
     * Retourne les chronos pris dans l'appli
175
     */
176
    public static function getChrono() {
177
        $sortie = '';
178
        if (Config::get('chronometrage')) {
179
            $chrono = Chronometre::afficherChrono();
180
            $sortie = mb_convert_encoding($chrono, Config::get('sortie_encodage'), Config::get('appli_encodage'));
181
        }
182
        return $sortie;
183
    }
184
 
185
    /**
186
     * Retourne les messages d'exceptions et d'erreurs.
187
     */
188
    public static function getExceptions() {
189
        $sortie = (Config::get('fw_debogage')) ? GestionnaireException::getExceptions() : '';
190
        if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
191
            $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
192
        }
193
        return $sortie;
194
    }
195
}
196
?>