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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 556 - (hide annotations)
Tue Oct 30 15:30:20 2012 UTC (12 years, 3 months ago) by fmichon
File size: 14125 byte(s)
Suppression de la surcharge de la méthode setParamsFormFile suite à l'application de la modification dans le core d'openmairie (révision 1881).

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     /**
168     * Cette méthode permet de vérifier si l'utilisateur est autorisé ou non à
169     * accéder à un élément et permet d'agir en conséquence
170     *
171     * @param
172     * @return mixed
173     */
174     function isAuthorized($obj = NULL, $operator = "AND") {
175    
176     //
177     if ($obj == NULL) {
178     $obj = $this->right;
179     }
180     //
181     if ($obj == NULL) {
182     return true;
183     }
184    
185     // L'utilisateur n'est pas autorisé à accéder à l'élément
186     if (!$this->isAccredited($obj, $operator)) {
187    
188     //
189     $message_class = "error";
190     $message = _("Droits insuffisants. Vous n'avez pas suffisament de ".
191     "droits pour acceder a cette page.");
192     $this->addToMessage($message_class, $message);
193    
194     //
195     $this->setFlag(NULL);
196     if (!defined('REST_REQUEST')) {
197     $this->display();
198     }
199    
200     // Arrêt du script
201     die();
202    
203     }
204    
205     // L'utilisateur est autorisé à accéder à l'élément
206     return true;
207    
208     }
209    
210    
211    
212     /**
213     *
214     */
215     function setDatabaseConfig() {
216    
217     // On recupere la liste des cles du tableau associatif de configuration
218     // de la connexion aux bases de donnees
219     $database_keys = array_keys($this->database);
220     // Si il y a plusieurs cles
221     if (count($database_keys) != 0) {
222     // On configure la premiere par defaut
223     $coll = $database_keys[0];
224     } else { // Si il n'y a aucune cle
225     // Aucune base n'est configuree dans le fichier de configuration
226     // donc on affiche un message d'erreur
227     $class = "error";
228     $message = _("Erreur de configuration. Contactez votre administrateur.");
229     $this->addToMessage($class, $message);
230     // Debug
231     $this->addToLog("setDatabaseConfig(): ERR", DEBUG_MODE);
232     $this->addToLog("ERR: "._("Aucune entree dans le fichier de configuration"), DEBUG_MODE);
233     // On affiche la structure de la page
234     $this->setFlag(NULL);
235     $this->display();
236     // On arrete le traitement en cours
237     die();
238     }
239    
240     // Si la variable coll (representant la cle de la base sur laquelle
241     // nous travaillons) n'est pas en variable SESSION ou est en variable
242     // SESSION mais n'existe pas dans les cles du tableau associatif de
243     // configuration de la connexion aux bases de donnees
244     if (!isset($_SESSION['coll']) or
245     (isset($_SESSION['coll']) and
246     !isset($this->database[$_SESSION['coll']]))) {
247     // On configure la premiere par defaut
248     $_SESSION['coll'] = $coll;
249     } else {
250     // On recupere la cle du tableau associatif de configuration de la
251     // connexion aux bases de donnees correspondante a la base de
252     // donnees sur laquelle nous travaillons
253     $coll = $_SESSION['coll'];
254     }
255    
256     // On renvoi le tableau de parametres pour la connexion a la base
257     $this->database_config = $this->database[$coll];
258     }
259    
260    
261     /**
262     * Cette méthode permet de se connecter à la base de données
263     * @return void
264     */
265     function connectDatabase() {
266     // On inclus la classe d'abstraction de base de donnees
267     require_once PATH_OPENMAIRIE."om_database.class.php";
268     // On recupere le tableau de parametres pour la connexion a la base
269     $this->setDatabaseConfig();
270     // On fixe les options
271     $options = array(
272     'debug' => 2,
273     'portability' => DB_PORTABILITY_ALL,
274     );
275     // Instanciation de l'objet connexion a la base de donnees
276     $db = database::connect($this->database_config, $options);
277     // Logger
278     $this->addToLog("connectDatabase(): "._("Tentative de connexion au SGBD"), EXTRA_VERBOSE_MODE);
279     // Traitement particulier de l'erreur en cas d'erreur de connexion a la
280     // base de donnees
281     if (database::isError($db, true)) {
282     // Deconnexion de l'utilisateur
283     $this->logout();
284     // On affiche la page de login a l'ecran
285     $this->setFlag("login");
286     // On affiche un message d'erreur convivial pour l'utilisateur
287     $class = "error";
288     $message = _("Erreur de base de donnees. Contactez votre administrateur.");
289     $this->addToMessage($class, $message);
290     // On affiche la page
291     if (!defined('REST_REQUEST')) {
292     $this->display();
293     }
294     // On arrete le script
295     die();
296     } else {
297     // On affecte la resource a l'attribut de la classe du meme nom
298     $this->db = $db;
299     // Logger
300     $this->addToLog("connectDatabase(): Connexion [".$this->database_config["phptype"]."] '".$this->database_config['database']."' OK", EXTRA_VERBOSE_MODE);
301    
302     // Compatibilite anterieure (deprecated)
303     $this->phptype = $this->database_config["phptype"];
304     $this->formatdate = $this->database_config["formatdate"];
305     $this->schema = $this->database_config["schema"];
306    
307     // Definition des constantes pour l'acces aux informations de la base
308     // donnees facilement.
309     $temp = "";
310     if ($this->database_config["schema"] != "") {
311     $temp = $this->database_config["schema"].".";
312     }
313     $temp = $temp.$this->database_config["prefixe"];
314     define("DB_PREFIXE", $temp);
315     define("FORMATDATE", $this->database_config["formatdate"]);
316    
317     // Definition des constantes pour l'acces aux informations de la base
318     // donnees facilement.
319     define("OM_DB_FORMATDATE", $this->database_config["formatdate"]);
320     define("OM_DB_PHPTYPE", $this->database_config["phptype"]);
321     define("OM_DB_DATABASE", $this->database_config["database"]);
322     define("OM_DB_SCHEMA", $this->database_config["schema"]);
323     define("OM_DB_TABLE_PREFIX", $this->database_config["prefixe"]);
324     }
325    
326     }
327    
328    
329     /**
330     *
331     *
332     */
333     function isDatabaseError($dbobj = NULL, $return = false) {
334    
335     //
336     if (database::isError($dbobj, $return)) {
337    
338     if ($return == true) {
339    
340     //
341     return true;
342    
343     }
344    
345     //
346     $class = "error";
347     $message = _("Erreur de base de donnees. Contactez votre administrateur.");
348     $this->addToMessage($class, $message);
349    
350     // Logger
351     $this->addToLog("isDatabaseError(): ".$dbobj->getDebugInfo(), DEBUG_MODE);
352     $this->addToLog("isDatabaseError(): ".$dbobj->getMessage(), DEBUG_MODE);
353    
354     //
355     $this->setFlag(NULL);
356     if (!defined('REST_REQUEST')) {
357     $this->display();
358     //
359     die();
360     }
361    
362     }
363    
364     //
365     return false;
366    
367     }
368    
369    
370    
371     /**
372     *
373     * @return void
374     */
375     function displayMessage($class = "", $message = "") {
376     if (!defined('REST_REQUEST')) {
377     $this->m->displayMessage($class, $message);
378     }
379     }
380    
381    
382     /**
383     *
384     */
385     function addToLog($message, $type = DEBUG_MODE) {
386     //
387     if (!defined('REST_REQUEST')) {
388     logger::instance()->log("class ".get_class($this)." - ".$message, $type);
389     }
390     }
391    
392 nhaye 531 /**
393     * Envoie un mail avec piece jointe
394     *
395     * @param string $title Titre du mail
396     * @param string $message Corps du mail
397     * @param string $recipient Destinataire du mail
398     * @param array $file Destinataire du mail
399     * @access public
400     * @return bool True si le mail est correctement envoye, false sinon.
401     */
402     public function sendMail($title, $message, $recipient, $file = array()) {
403    
404     @include_once "../php/phpmailer/class.phpmailer.php";
405    
406     if (!class_exists("PHPMailer")) {
407     $this->addToLog("sendMail(): !class_exists(\"PHPMailer\")", DEBUG_MODE);
408     return false;
409     }
410 mlimic 515
411 nhaye 531 //
412     $this->setMailConfig();
413    
414     //
415     if ($this->mail_config == false) {
416     $this->addToLog("sendMail(): aucune configuration mail", DEBUG_MODE);
417     return false;
418     }
419    
420     //
421     $mail = new PHPMailer(true);
422    
423     //
424     $mail->IsSMTP();
425 nhaye 532
426     $mail->SMTPAuth = true; // enable SMTP authentication
427     $mail->SMTPSecure = "tls";
428 nhaye 531 $mail->Username = $this->mail_config["mail_username"];
429     $mail->Password = $this->mail_config["mail_pass"];
430     if ($this->mail_config["mail_username"] == '') {
431     $mail->SMTPAuth = false;
432     } else {
433     $mail->SMTPAuth = true;
434     }
435     $mail->Port = $this->mail_config["mail_port"];
436     $mail->Host = $this->mail_config["mail_host"];
437     $mail->AddReplyTo($this->mail_config["mail_from"], $this->mail_config["mail_from_name"]);
438     $mail->From = $this->mail_config["mail_from"];
439     $mail->FromName = $this->mail_config["mail_from_name"];
440     foreach (explode(",",$recipient) as $adresse) {
441     if (!$this->checkValidEmailAddress($adresse)) {
442     $this->addToLog("sendMail(): courriel incorrect ".$adresse, DEBUG_MODE);
443     return false;
444     } else
445     $mail->AddAddress(trim($adresse));
446     }
447     $mail->IsHTML(true);
448    
449     // Corps du message
450     $mail_body ="<html>";
451     $mail_body .= "<head><title>".$title."</title></head>";
452     $mail_body .= "<body>".$message."</body>";
453     $mail_body .= "</html>";
454    
455     $mail->Subject = $title;
456     $mail->MsgHTML($mail_body);
457     foreach($file as $oneFile) {
458    
459     if($oneFile['stream']){
460     $mail->AddStringAttachment($oneFile['content'], $oneFile['title'], $oneFile['encoding'] = 'base64',$oneFile['type'] = 'application/octet-stream');
461     } else{
462     $mail->AddAttachment($oneFile['url']);
463     }
464     }
465     // Envoie de l'email
466     if ($mail->Send()) {
467     return true;
468     } else {
469     $this->addToLog("sendMail(): ".$mail->ErrorInfo, DEBUG_MODE);
470     return false;
471     }
472     }
473    
474 fraynaud 96 }
475 fraynaud 3
476 fraynaud 96 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26