/[openfoncier]/trunk/obj/utils.class.php
ViewVC logotype

Annotation of /trunk/obj/utils.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 515 - (hide annotations)
Wed Oct 17 16:22:13 2012 UTC (12 years, 3 months ago) by mlimic
File size: 14360 byte(s)
Addition of services and function overrides into: obj/om_dbform.class.php, obj/utils.class.php
1 fraynaud 3 <?php
2     /**
3 fraynaud 96 * Ce fichier est destine a permettre la surcharge de certaines methodes de
4     * la classe om_application pour des besoins specifiques de l'application
5 fraynaud 3 *
6     * @package openmairie_exemple
7 fraynaud 96 * @version SVN : $Id: utils.class.php 547 2011-08-25 12:03:42Z fmichon $
8 fraynaud 3 */
9    
10     /**
11     *
12     */
13     require_once "../dyn/locales.inc.php";
14    
15     /**
16     *
17     */
18     require_once "../dyn/include.inc.php";
19    
20     /**
21     *
22     */
23     require_once "../dyn/debug.inc.php";
24    
25     /**
26     *
27     */
28     (defined("PATH_OPENMAIRIE") ? "" : define("PATH_OPENMAIRIE", ""));
29    
30     /**
31     *
32     */
33     require_once PATH_OPENMAIRIE."om_application.class.php";
34    
35     /**
36     *
37     */
38     class utils extends application {
39 fraynaud 96
40 mlimic 515 /**
41     * Constructeur
42     *
43     * @param
44     * @param
45     * @param
46     * @param
47     * @param
48     */
49     function __construct($flag = NULL, $right = NULL, $title = NULL, $icon = NULL, $help = NULL) {
50    
51     //
52     $this->timestart = microtime(true);
53    
54     // Logger
55     $this->addToLog("__construct() : 0.000 sec", VERBOSE_MODE);
56    
57     // Logger
58     $this->addToLog("__construct()", EXTRA_VERBOSE_MODE);
59    
60     // Instanciation de la classe message
61     $this->m = new message();
62    
63     //
64     $this->setParamsFromFiles();
65     $this->checkParams();
66    
67     //
68     $this->setDefaultValues();
69    
70     // Transformation des cinq éléments paramètres en attribut de l'objet
71     $this->setFlag($flag);
72     $this->setTitle($title);
73     $this->setRight($right);
74     $this->setHelp($help);
75     $this->setIcon($icon);
76    
77     // Vérification de l'authentification de l'utilisateur et stockage du
78     // résultat en attribut de l'objet
79     $this->authenticated = $this->isAuthenticated();
80    
81     // Déconnexion de l'utilisateur
82     if ($this->flag == "logout") {
83     $this->logout();
84     }
85    
86     // Connexion de l'utilisateur
87     if ($this->flag == "login") {
88     $this->login();
89     }
90    
91     // Demande de redéfinition du mot de passe
92     if ($this->flag == "password_reset") {
93     if ($this->authenticated) {
94     $this->redirectAuthenticatedUsers();
95     }
96     }
97    
98     //
99     if ($this->authenticated) {
100     // Connexion à la base de données si l'utilisateur est authentifié
101     $this->connectDatabase();
102     // on verifie que l'utilisateur connecté est toujours valide
103     if (!defined('REST_REQUEST')) {
104     $this->checkIfUserIsAlwaysValid();
105     }
106     }
107    
108     //
109     if (!in_array($this->flag, $this->special_flags)) {
110    
111     //
112     $this->getAllRights();
113    
114     //
115     $this->getCollectivite();
116    
117     //
118     $this->isAuthorized();
119    
120     }
121    
122     //
123     $this->setMoreParams();
124    
125     // Affichage HTML
126     $this->display();
127    
128     }
129 fraynaud 3
130 mlimic 515
131    
132     /**
133     * Desctructeur de la classe, cette methode (appelee automatiquement)
134     * permet d'afficher le footer de la page, le footer HTML, et de
135     * deconnecter la base de donnees
136     *
137     * @return void
138     */
139     function __destruct() {
140 fraynaud 3
141 mlimic 515 // Footer
142     if (!defined('REST_REQUEST')) {
143     $this->displayFooter();
144     }
145    
146     // Deconnexion SGBD
147     $this->disconnectDatabase();
148    
149     // Logger
150     $this->addToLog("__destruct()", EXTRA_VERBOSE_MODE);
151    
152     // Logger
153     $this->addToLog("__destruct() : ".$this->elapsedtime()." sec", VERBOSE_MODE);
154    
155     // Affichage des logs
156     logger::instance()->displayLog();
157    
158     // Footer HTML
159     if (!defined('REST_REQUEST')) {
160     $this->displayHTMLFooter();
161     }
162     }
163    
164    
165    
166     /**
167     * Cette methode permet de charger les differents fichiers de configs dans
168     * des attributs de la classe
169     *
170     * @return void
171     */
172     function setParamsFromFiles() {
173    
174     //
175     if (file_exists("../dyn/config.inc.php")) {
176     include_once("../dyn/config.inc.php");
177     }
178     if (isset($config)) {
179     $this->config = $config;
180     }
181    
182     //
183     if (file_exists("../dyn/database.inc.php")) {
184     include("../dyn/database.inc.php");
185     }
186    
187     if (isset($conn)) {
188     $this->conn = $conn;
189     //
190     foreach($this->conn as $key => $conn) {
191     $this->database[$key] = array(
192     'title' => $conn[0],
193     'phptype' => $conn[1],
194     'dbsyntax' => $conn[2],
195     'username' => $conn[3],
196     'password' => $conn[4],
197     'protocol' => $conn[5],
198     'hostspec' => $conn[6],
199     'port' => $conn[7],
200     'socket' => $conn[8],
201     'database' => $conn[9],
202     'formatdate' => $conn[10],
203     'schema' => $conn[11],
204     'prefixe' => (isset($conn[12]) ? $conn[12]: ""),
205     'directory' => (isset($conn[13]) ? $conn[13]: ""),
206     'mail' => (isset($conn[14]) ? $conn[14]: ""),
207     );
208     }
209     }
210    
211     //
212     if (file_exists("../dyn/directory.inc.php")) {
213     include_once("../dyn/directory.inc.php");
214     }
215     if (isset($directory)) {
216     $this->directory = $directory;
217     }
218    
219     //
220     if (file_exists("../dyn/mail.inc.php")) {
221     include_once("../dyn/mail.inc.php");
222     }
223     if (isset($mail)) {
224     $this->mail = $mail;
225     }
226    
227     //
228     if (file_exists("../dyn/menu.inc.php")) {
229     include_once("../dyn/menu.inc.php");
230     }
231     if (isset($menu)) {
232     $this->menu = $menu;
233     }
234    
235     //
236     if (file_exists("../dyn/actions.inc.php")) {
237     include_once("../dyn/actions.inc.php");
238     }
239     if (isset($actions)) {
240     $this->actions = $actions;
241     }
242    
243     //
244     if (file_exists("../dyn/shortlinks.inc.php")) {
245     include_once("../dyn/shortlinks.inc.php");
246     }
247     if (isset($shortlinks)) {
248     $this->shortlinks = $shortlinks;
249     }
250    
251     //
252     if (file_exists("../dyn/footer.inc.php")) {
253     include_once("../dyn/footer.inc.php");
254     }
255     if (isset($footer)) {
256     $this->footer = $footer;
257     }
258    
259     //
260     if (file_exists("../dyn/version.inc.php")) {
261     include_once("../dyn/version.inc.php");
262     }
263     if (isset($version)) {
264     $this->version = $version;
265     }
266    
267     }
268    
269    
270     /**
271     * Cette méthode permet de vérifier si l'utilisateur est autorisé ou non à
272     * accéder à un élément et permet d'agir en conséquence
273     *
274     * @param
275     * @return mixed
276     */
277     function isAuthorized($obj = NULL, $operator = "AND") {
278    
279     //
280     if ($obj == NULL) {
281     $obj = $this->right;
282     }
283     //
284     if ($obj == NULL) {
285     return true;
286     }
287    
288     // L'utilisateur n'est pas autorisé à accéder à l'élément
289     if (!$this->isAccredited($obj, $operator)) {
290    
291     //
292     $message_class = "error";
293     $message = _("Droits insuffisants. Vous n'avez pas suffisament de ".
294     "droits pour acceder a cette page.");
295     $this->addToMessage($message_class, $message);
296    
297     //
298     $this->setFlag(NULL);
299     if (!defined('REST_REQUEST')) {
300     $this->display();
301     }
302    
303     // Arrêt du script
304     die();
305    
306     }
307    
308     // L'utilisateur est autorisé à accéder à l'élément
309     return true;
310    
311     }
312    
313    
314    
315     /**
316     *
317     */
318     function setDatabaseConfig() {
319    
320     // On recupere la liste des cles du tableau associatif de configuration
321     // de la connexion aux bases de donnees
322     $database_keys = array_keys($this->database);
323     //print ' database keys:';
324     //print_r($database_keys);
325     // Si il y a plusieurs cles
326     if (count($database_keys) != 0) {
327     // On configure la premiere par defaut
328     $coll = $database_keys[0];
329     } else { // Si il n'y a aucune cle
330     // Aucune base n'est configuree dans le fichier de configuration
331     // donc on affiche un message d'erreur
332     $class = "error";
333     $message = _("Erreur de configuration. Contactez votre administrateur.");
334     $this->addToMessage($class, $message);
335     // Debug
336     $this->addToLog("setDatabaseConfig(): ERR", DEBUG_MODE);
337     $this->addToLog("ERR: "._("Aucune entree dans le fichier de configuration"), DEBUG_MODE);
338     // On affiche la structure de la page
339     $this->setFlag(NULL);
340     $this->display();
341     // On arrete le traitement en cours
342     die();
343     }
344    
345     // Si la variable coll (representant la cle de la base sur laquelle
346     // nous travaillons) n'est pas en variable SESSION ou est en variable
347     // SESSION mais n'existe pas dans les cles du tableau associatif de
348     // configuration de la connexion aux bases de donnees
349     if (!isset($_SESSION['coll']) or
350     (isset($_SESSION['coll']) and
351     !isset($this->database[$_SESSION['coll']]))) {
352     // On configure la premiere par defaut
353     $_SESSION['coll'] = $coll;
354     } else {
355     // On recupere la cle du tableau associatif de configuration de la
356     // connexion aux bases de donnees correspondante a la base de
357     // donnees sur laquelle nous travaillons
358     $coll = $_SESSION['coll'];
359     }
360    
361     // On renvoi le tableau de parametres pour la connexion a la base
362     //print ' $coll:'.$coll.' ';
363     //print ' database:';
364     //print_r($this->database[$coll]);
365     $this->database_config = $this->database[$coll];
366     }
367    
368    
369     /**
370     * Cette méthode permet de se connecter à la base de données
371     * @return void
372     */
373     function connectDatabase() {
374     // On inclus la classe d'abstraction de base de donnees
375     require_once PATH_OPENMAIRIE."om_database.class.php";
376     // On recupere le tableau de parametres pour la connexion a la base
377     $this->setDatabaseConfig();
378     // On fixe les options
379     $options = array(
380     'debug' => 2,
381     'portability' => DB_PORTABILITY_ALL,
382     );
383     // Instanciation de l'objet connexion a la base de donnees
384     $db = database::connect($this->database_config, $options);
385     // Logger
386     $this->addToLog("connectDatabase(): "._("Tentative de connexion au SGBD"), EXTRA_VERBOSE_MODE);
387     // Traitement particulier de l'erreur en cas d'erreur de connexion a la
388     // base de donnees
389     if (database::isError($db, true)) {
390     // Deconnexion de l'utilisateur
391     $this->logout();
392     // On affiche la page de login a l'ecran
393     $this->setFlag("login");
394     // On affiche un message d'erreur convivial pour l'utilisateur
395     $class = "error";
396     $message = _("Erreur de base de donnees. Contactez votre administrateur.");
397     $this->addToMessage($class, $message);
398     // On affiche la page
399     if (!defined('REST_REQUEST')) {
400     $this->display();
401     }
402     // On arrete le script
403     //print 'and we die';
404     die();
405     } else {
406     // On affecte la resource a l'attribut de la classe du meme nom
407     $this->db = $db;
408     // Logger
409     $this->addToLog("connectDatabase(): Connexion [".$this->database_config["phptype"]."] '".$this->database_config['database']."' OK", EXTRA_VERBOSE_MODE);
410    
411     // Compatibilite anterieure (deprecated)
412     $this->phptype = $this->database_config["phptype"];
413     $this->formatdate = $this->database_config["formatdate"];
414     $this->schema = $this->database_config["schema"];
415    
416     // Definition des constantes pour l'acces aux informations de la base
417     // donnees facilement.
418     $temp = "";
419     if ($this->database_config["schema"] != "") {
420     $temp = $this->database_config["schema"].".";
421     }
422     $temp = $temp.$this->database_config["prefixe"];
423     define("DB_PREFIXE", $temp);
424     define("FORMATDATE", $this->database_config["formatdate"]);
425    
426     // Definition des constantes pour l'acces aux informations de la base
427     // donnees facilement.
428     define("OM_DB_FORMATDATE", $this->database_config["formatdate"]);
429     define("OM_DB_PHPTYPE", $this->database_config["phptype"]);
430     define("OM_DB_DATABASE", $this->database_config["database"]);
431     define("OM_DB_SCHEMA", $this->database_config["schema"]);
432     define("OM_DB_TABLE_PREFIX", $this->database_config["prefixe"]);
433     }
434    
435     }
436    
437    
438     /**
439     *
440     *
441     */
442     function isDatabaseError($dbobj = NULL, $return = false) {
443    
444     //
445     if (database::isError($dbobj, $return)) {
446    
447     if ($return == true) {
448    
449     //
450     return true;
451    
452     }
453    
454     //
455     $class = "error";
456     $message = _("Erreur de base de donnees. Contactez votre administrateur.");
457     $this->addToMessage($class, $message);
458    
459     // Logger
460     $this->addToLog("isDatabaseError(): ".$dbobj->getDebugInfo(), DEBUG_MODE);
461     $this->addToLog("isDatabaseError(): ".$dbobj->getMessage(), DEBUG_MODE);
462    
463     //
464     $this->setFlag(NULL);
465     if (!defined('REST_REQUEST')) {
466     $this->display();
467     //
468     die();
469     }
470    
471     }
472    
473     //
474     return false;
475    
476     }
477    
478    
479    
480     /**
481     *
482     * @return void
483     */
484     function displayMessage($class = "", $message = "") {
485     if (!defined('REST_REQUEST')) {
486     $this->m->displayMessage($class, $message);
487     }
488     }
489    
490    
491     /**
492     *
493     */
494     function addToLog($message, $type = DEBUG_MODE) {
495     //
496     if (!defined('REST_REQUEST')) {
497     logger::instance()->log("class ".get_class($this)." - ".$message, $type);
498     }
499     }
500    
501    
502 fraynaud 96 }
503 fraynaud 3
504 fraynaud 96 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26