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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (show annotations)
Tue Oct 23 10:43:49 2012 UTC (12 years, 3 months ago) by nhaye
File size: 17039 byte(s)
Modification de la méthode d'envoi de mail.
Agrandissement du champ valeur de la table om_parametre + régénération
Envoi de notification lors de l'ajout de consultation

1 <?php
2 /**
3 * 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 *
6 * @package openmairie_exemple
7 * @version SVN : $Id: utils.class.php 547 2011-08-25 12:03:42Z fmichon $
8 */
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
40 /**
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
130
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
141 // 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 // Si il y a plusieurs cles
324 if (count($database_keys) != 0) {
325 // On configure la premiere par defaut
326 $coll = $database_keys[0];
327 } else { // Si il n'y a aucune cle
328 // Aucune base n'est configuree dans le fichier de configuration
329 // donc on affiche un message d'erreur
330 $class = "error";
331 $message = _("Erreur de configuration. Contactez votre administrateur.");
332 $this->addToMessage($class, $message);
333 // Debug
334 $this->addToLog("setDatabaseConfig(): ERR", DEBUG_MODE);
335 $this->addToLog("ERR: "._("Aucune entree dans le fichier de configuration"), DEBUG_MODE);
336 // On affiche la structure de la page
337 $this->setFlag(NULL);
338 $this->display();
339 // On arrete le traitement en cours
340 die();
341 }
342
343 // Si la variable coll (representant la cle de la base sur laquelle
344 // nous travaillons) n'est pas en variable SESSION ou est en variable
345 // SESSION mais n'existe pas dans les cles du tableau associatif de
346 // configuration de la connexion aux bases de donnees
347 if (!isset($_SESSION['coll']) or
348 (isset($_SESSION['coll']) and
349 !isset($this->database[$_SESSION['coll']]))) {
350 // On configure la premiere par defaut
351 $_SESSION['coll'] = $coll;
352 } else {
353 // On recupere la cle du tableau associatif de configuration de la
354 // connexion aux bases de donnees correspondante a la base de
355 // donnees sur laquelle nous travaillons
356 $coll = $_SESSION['coll'];
357 }
358
359 // On renvoi le tableau de parametres pour la connexion a la base
360 $this->database_config = $this->database[$coll];
361 }
362
363
364 /**
365 * Cette méthode permet de se connecter à la base de données
366 * @return void
367 */
368 function connectDatabase() {
369 // On inclus la classe d'abstraction de base de donnees
370 require_once PATH_OPENMAIRIE."om_database.class.php";
371 // On recupere le tableau de parametres pour la connexion a la base
372 $this->setDatabaseConfig();
373 // On fixe les options
374 $options = array(
375 'debug' => 2,
376 'portability' => DB_PORTABILITY_ALL,
377 );
378 // Instanciation de l'objet connexion a la base de donnees
379 $db = database::connect($this->database_config, $options);
380 // Logger
381 $this->addToLog("connectDatabase(): "._("Tentative de connexion au SGBD"), EXTRA_VERBOSE_MODE);
382 // Traitement particulier de l'erreur en cas d'erreur de connexion a la
383 // base de donnees
384 if (database::isError($db, true)) {
385 // Deconnexion de l'utilisateur
386 $this->logout();
387 // On affiche la page de login a l'ecran
388 $this->setFlag("login");
389 // On affiche un message d'erreur convivial pour l'utilisateur
390 $class = "error";
391 $message = _("Erreur de base de donnees. Contactez votre administrateur.");
392 $this->addToMessage($class, $message);
393 // On affiche la page
394 if (!defined('REST_REQUEST')) {
395 $this->display();
396 }
397 // On arrete le script
398 die();
399 } else {
400 // On affecte la resource a l'attribut de la classe du meme nom
401 $this->db = $db;
402 // Logger
403 $this->addToLog("connectDatabase(): Connexion [".$this->database_config["phptype"]."] '".$this->database_config['database']."' OK", EXTRA_VERBOSE_MODE);
404
405 // Compatibilite anterieure (deprecated)
406 $this->phptype = $this->database_config["phptype"];
407 $this->formatdate = $this->database_config["formatdate"];
408 $this->schema = $this->database_config["schema"];
409
410 // Definition des constantes pour l'acces aux informations de la base
411 // donnees facilement.
412 $temp = "";
413 if ($this->database_config["schema"] != "") {
414 $temp = $this->database_config["schema"].".";
415 }
416 $temp = $temp.$this->database_config["prefixe"];
417 define("DB_PREFIXE", $temp);
418 define("FORMATDATE", $this->database_config["formatdate"]);
419
420 // Definition des constantes pour l'acces aux informations de la base
421 // donnees facilement.
422 define("OM_DB_FORMATDATE", $this->database_config["formatdate"]);
423 define("OM_DB_PHPTYPE", $this->database_config["phptype"]);
424 define("OM_DB_DATABASE", $this->database_config["database"]);
425 define("OM_DB_SCHEMA", $this->database_config["schema"]);
426 define("OM_DB_TABLE_PREFIX", $this->database_config["prefixe"]);
427 }
428
429 }
430
431
432 /**
433 *
434 *
435 */
436 function isDatabaseError($dbobj = NULL, $return = false) {
437
438 //
439 if (database::isError($dbobj, $return)) {
440
441 if ($return == true) {
442
443 //
444 return true;
445
446 }
447
448 //
449 $class = "error";
450 $message = _("Erreur de base de donnees. Contactez votre administrateur.");
451 $this->addToMessage($class, $message);
452
453 // Logger
454 $this->addToLog("isDatabaseError(): ".$dbobj->getDebugInfo(), DEBUG_MODE);
455 $this->addToLog("isDatabaseError(): ".$dbobj->getMessage(), DEBUG_MODE);
456
457 //
458 $this->setFlag(NULL);
459 if (!defined('REST_REQUEST')) {
460 $this->display();
461 //
462 die();
463 }
464
465 }
466
467 //
468 return false;
469
470 }
471
472
473
474 /**
475 *
476 * @return void
477 */
478 function displayMessage($class = "", $message = "") {
479 if (!defined('REST_REQUEST')) {
480 $this->m->displayMessage($class, $message);
481 }
482 }
483
484
485 /**
486 *
487 */
488 function addToLog($message, $type = DEBUG_MODE) {
489 //
490 if (!defined('REST_REQUEST')) {
491 logger::instance()->log("class ".get_class($this)." - ".$message, $type);
492 }
493 }
494
495 /**
496 * Envoie un mail avec piece jointe
497 *
498 * @param string $title Titre du mail
499 * @param string $message Corps du mail
500 * @param string $recipient Destinataire du mail
501 * @param array $file Destinataire du mail
502 * @access public
503 * @return bool True si le mail est correctement envoye, false sinon.
504 */
505 public function sendMail($title, $message, $recipient, $file = array()) {
506
507 @include_once "../php/phpmailer/class.phpmailer.php";
508
509 if (!class_exists("PHPMailer")) {
510 $this->addToLog("sendMail(): !class_exists(\"PHPMailer\")", DEBUG_MODE);
511 return false;
512 }
513
514 //
515 $this->setMailConfig();
516
517 //
518 if ($this->mail_config == false) {
519 $this->addToLog("sendMail(): aucune configuration mail", DEBUG_MODE);
520 return false;
521 }
522
523 //
524 $mail = new PHPMailer(true);
525
526 //
527 $mail->IsSMTP();
528
529 $mail->SMTPAuth = true; // enable SMTP authentication
530 $mail->SMTPSecure = "tls";
531 $mail->Username = $this->mail_config["mail_username"];
532 $mail->Password = $this->mail_config["mail_pass"];
533 if ($this->mail_config["mail_username"] == '') {
534 $mail->SMTPAuth = false;
535 } else {
536 $mail->SMTPAuth = true;
537 }
538 $mail->Port = $this->mail_config["mail_port"];
539 $mail->Host = $this->mail_config["mail_host"];
540 $mail->AddReplyTo($this->mail_config["mail_from"], $this->mail_config["mail_from_name"]);
541 $mail->From = $this->mail_config["mail_from"];
542 $mail->FromName = $this->mail_config["mail_from_name"];
543 foreach (explode(",",$recipient) as $adresse) {
544 if (!$this->checkValidEmailAddress($adresse)) {
545 $this->addToLog("sendMail(): courriel incorrect ".$adresse, DEBUG_MODE);
546 return false;
547 } else
548 $mail->AddAddress(trim($adresse));
549 }
550 $mail->IsHTML(true);
551
552 // Corps du message
553 $mail_body ="<html>";
554 $mail_body .= "<head><title>".$title."</title></head>";
555 $mail_body .= "<body>".$message."</body>";
556 $mail_body .= "</html>";
557
558 $mail->Subject = $title;
559 $mail->MsgHTML($mail_body);
560 foreach($file as $oneFile) {
561
562 if($oneFile['stream']){
563 $mail->AddStringAttachment($oneFile['content'], $oneFile['title'], $oneFile['encoding'] = 'base64',$oneFile['type'] = 'application/octet-stream');
564 } else{
565 $mail->AddAttachment($oneFile['url']);
566 }
567 }
568 // Envoie de l'email
569 if ($mail->Send()) {
570 return true;
571 } else {
572 $this->addToLog("sendMail(): ".$mail->ErrorInfo, DEBUG_MODE);
573 return false;
574 }
575 }
576
577 }
578
579 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26