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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 580 - (show annotations)
Fri Nov 2 14:24:05 2012 UTC (12 years, 3 months ago) by nhaye
File size: 13374 byte(s)
Ajout d'un onglet dans les demandes d'avis,
cet onglet liste des documents numérisé du dossier en cours,
création d'une méthode dans utils.class.php pour lister les fichiers d'un dossier.

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 /**
42 * Desctructeur de la classe, cette methode (appelee automatiquement)
43 * permet d'afficher le footer de la page, le footer HTML, et de
44 * deconnecter la base de donnees
45 *
46 * @return void
47 */
48 function __destruct() {
49
50 // Footer
51 if (!defined('REST_REQUEST')) {
52 $this->displayFooter();
53 }
54
55 // Deconnexion SGBD
56 $this->disconnectDatabase();
57
58 // Logger
59 $this->addToLog("__destruct()", EXTRA_VERBOSE_MODE);
60
61 // Logger
62 $this->addToLog("__destruct() : ".$this->elapsedtime()." sec", VERBOSE_MODE);
63
64 // Affichage des logs
65 logger::instance()->displayLog();
66
67 // Footer HTML
68 if (!defined('REST_REQUEST')) {
69 $this->displayHTMLFooter();
70 }
71 }
72
73
74
75
76 /**
77 * Cette méthode permet de vérifier si l'utilisateur est autorisé ou non à
78 * accéder à un élément et permet d'agir en conséquence
79 *
80 * @param
81 * @return mixed
82 */
83 function isAuthorized($obj = NULL, $operator = "AND") {
84
85 //
86 if ($obj == NULL) {
87 $obj = $this->right;
88 }
89 //
90 if ($obj == NULL) {
91 return true;
92 }
93
94 // L'utilisateur n'est pas autorisé à accéder à l'élément
95 if (!$this->isAccredited($obj, $operator)) {
96
97 //
98 $message_class = "error";
99 $message = _("Droits insuffisants. Vous n'avez pas suffisament de ".
100 "droits pour acceder a cette page.");
101 $this->addToMessage($message_class, $message);
102
103 //
104 $this->setFlag(NULL);
105 if (!defined('REST_REQUEST')) {
106 $this->display();
107 }
108
109 // Arrêt du script
110 die();
111
112 }
113
114 // L'utilisateur est autorisé à accéder à l'élément
115 return true;
116
117 }
118
119
120
121 /**
122 *
123 */
124 function setDatabaseConfig() {
125
126 // On recupere la liste des cles du tableau associatif de configuration
127 // de la connexion aux bases de donnees
128 $database_keys = array_keys($this->database);
129 // Si il y a plusieurs cles
130 if (count($database_keys) != 0) {
131 // On configure la premiere par defaut
132 $coll = $database_keys[0];
133 } else { // Si il n'y a aucune cle
134 // Aucune base n'est configuree dans le fichier de configuration
135 // donc on affiche un message d'erreur
136 $class = "error";
137 $message = _("Erreur de configuration. Contactez votre administrateur.");
138 $this->addToMessage($class, $message);
139 // Debug
140 $this->addToLog("setDatabaseConfig(): ERR", DEBUG_MODE);
141 $this->addToLog("ERR: "._("Aucune entree dans le fichier de configuration"), DEBUG_MODE);
142 // On affiche la structure de la page
143 $this->setFlag(NULL);
144 $this->display();
145 // On arrete le traitement en cours
146 die();
147 }
148
149 // Si la variable coll (representant la cle de la base sur laquelle
150 // nous travaillons) n'est pas en variable SESSION ou est en variable
151 // SESSION mais n'existe pas dans les cles du tableau associatif de
152 // configuration de la connexion aux bases de donnees
153 if (!isset($_SESSION['coll']) or
154 (isset($_SESSION['coll']) and
155 !isset($this->database[$_SESSION['coll']]))) {
156 // On configure la premiere par defaut
157 $_SESSION['coll'] = $coll;
158 } else {
159 // On recupere la cle du tableau associatif de configuration de la
160 // connexion aux bases de donnees correspondante a la base de
161 // donnees sur laquelle nous travaillons
162 $coll = $_SESSION['coll'];
163 }
164
165 // On renvoi le tableau de parametres pour la connexion a la base
166 $this->database_config = $this->database[$coll];
167 }
168
169
170 /**
171 * Cette méthode permet de se connecter à la base de données
172 * @return void
173 */
174 function connectDatabase() {
175 // On inclus la classe d'abstraction de base de donnees
176 require_once PATH_OPENMAIRIE."om_database.class.php";
177 // On recupere le tableau de parametres pour la connexion a la base
178 $this->setDatabaseConfig();
179 // On fixe les options
180 $options = array(
181 'debug' => 2,
182 'portability' => DB_PORTABILITY_ALL,
183 );
184 // Instanciation de l'objet connexion a la base de donnees
185 $db = database::connect($this->database_config, $options);
186 // Logger
187 $this->addToLog("connectDatabase(): "._("Tentative de connexion au SGBD"), EXTRA_VERBOSE_MODE);
188 // Traitement particulier de l'erreur en cas d'erreur de connexion a la
189 // base de donnees
190 if (database::isError($db, true)) {
191 // Deconnexion de l'utilisateur
192 $this->logout();
193 // On affiche la page de login a l'ecran
194 $this->setFlag("login");
195 // On affiche un message d'erreur convivial pour l'utilisateur
196 $class = "error";
197 $message = _("Erreur de base de donnees. Contactez votre administrateur.");
198 $this->addToMessage($class, $message);
199 // On affiche la page
200 if (!defined('REST_REQUEST')) {
201 $this->display();
202 }
203 // On arrete le script
204 die();
205 } else {
206 // On affecte la resource a l'attribut de la classe du meme nom
207 $this->db = $db;
208 // Logger
209 $this->addToLog("connectDatabase(): Connexion [".$this->database_config["phptype"]."] '".$this->database_config['database']."' OK", EXTRA_VERBOSE_MODE);
210
211 // Compatibilite anterieure (deprecated)
212 $this->phptype = $this->database_config["phptype"];
213 $this->formatdate = $this->database_config["formatdate"];
214 $this->schema = $this->database_config["schema"];
215
216 // Definition des constantes pour l'acces aux informations de la base
217 // donnees facilement.
218 $temp = "";
219 if ($this->database_config["schema"] != "") {
220 $temp = $this->database_config["schema"].".";
221 }
222 $temp = $temp.$this->database_config["prefixe"];
223 define("DB_PREFIXE", $temp);
224 define("FORMATDATE", $this->database_config["formatdate"]);
225
226 // Definition des constantes pour l'acces aux informations de la base
227 // donnees facilement.
228 define("OM_DB_FORMATDATE", $this->database_config["formatdate"]);
229 define("OM_DB_PHPTYPE", $this->database_config["phptype"]);
230 define("OM_DB_DATABASE", $this->database_config["database"]);
231 define("OM_DB_SCHEMA", $this->database_config["schema"]);
232 define("OM_DB_TABLE_PREFIX", $this->database_config["prefixe"]);
233 }
234
235 }
236
237
238 /**
239 *
240 *
241 */
242 function isDatabaseError($dbobj = NULL, $return = false) {
243
244 //
245 if (database::isError($dbobj, $return)) {
246
247 if ($return == true) {
248
249 //
250 return true;
251
252 }
253
254 //
255 $class = "error";
256 $message = _("Erreur de base de donnees. Contactez votre administrateur.");
257 $this->addToMessage($class, $message);
258
259 // Logger
260 $this->addToLog("isDatabaseError(): ".$dbobj->getDebugInfo(), DEBUG_MODE);
261 $this->addToLog("isDatabaseError(): ".$dbobj->getMessage(), DEBUG_MODE);
262
263 //
264 $this->setFlag(NULL);
265 if (!defined('REST_REQUEST')) {
266 $this->display();
267 //
268 die();
269 }
270
271 }
272
273 //
274 return false;
275
276 }
277
278
279
280 /**
281 *
282 * @return void
283 */
284 function displayMessage($class = "", $message = "") {
285 if (!defined('REST_REQUEST')) {
286 $this->m->displayMessage($class, $message);
287 }
288 }
289
290
291 /**
292 *
293 */
294 function addToLog($message, $type = DEBUG_MODE) {
295 //
296 if (!defined('REST_REQUEST')) {
297 logger::instance()->log("class ".get_class($this)." - ".$message, $type);
298 }
299 }
300
301 /**
302 * Envoie un mail avec piece jointe
303 *
304 * @param string $title Titre du mail
305 * @param string $message Corps du mail
306 * @param string $recipient Destinataire du mail
307 * @param array $file Destinataire du mail
308 * @access public
309 * @return bool True si le mail est correctement envoye, false sinon.
310 */
311 public function sendMail($title, $message, $recipient, $file = array()) {
312
313 @include_once "../php/phpmailer/class.phpmailer.php";
314
315 if (!class_exists("PHPMailer")) {
316 $this->addToLog("sendMail(): !class_exists(\"PHPMailer\")", DEBUG_MODE);
317 return false;
318 }
319
320 //
321 $this->setMailConfig();
322
323 //
324 if ($this->mail_config == false) {
325 $this->addToLog("sendMail(): aucune configuration mail", DEBUG_MODE);
326 return false;
327 }
328
329 //
330 $mail = new PHPMailer(true);
331
332 //
333 $mail->IsSMTP();
334
335 $mail->SMTPAuth = true; // enable SMTP authentication
336 $mail->SMTPSecure = "tls";
337 $mail->Username = $this->mail_config["mail_username"];
338 $mail->Password = $this->mail_config["mail_pass"];
339 if ($this->mail_config["mail_username"] == '') {
340 $mail->SMTPAuth = false;
341 } else {
342 $mail->SMTPAuth = true;
343 }
344 $mail->Port = $this->mail_config["mail_port"];
345 $mail->Host = $this->mail_config["mail_host"];
346 $mail->AddReplyTo($this->mail_config["mail_from"], $this->mail_config["mail_from_name"]);
347 $mail->From = $this->mail_config["mail_from"];
348 $mail->FromName = $this->mail_config["mail_from_name"];
349 foreach (explode(",",$recipient) as $adresse) {
350 if (!$this->checkValidEmailAddress($adresse)) {
351 $this->addToLog("sendMail(): courriel incorrect ".$adresse, DEBUG_MODE);
352 return false;
353 } else
354 $mail->AddAddress(trim($adresse));
355 }
356 $mail->IsHTML(true);
357
358 // Corps du message
359 $mail_body ="<html>";
360 $mail_body .= "<head><title>".$title."</title></head>";
361 $mail_body .= "<body>".$message."</body>";
362 $mail_body .= "</html>";
363
364 $mail->Subject = $title;
365 $mail->MsgHTML($mail_body);
366 foreach($file as $oneFile) {
367
368 if($oneFile['stream']){
369 $mail->AddStringAttachment($oneFile['content'], $oneFile['title'], $oneFile['encoding'] = 'base64',$oneFile['type'] = 'application/octet-stream');
370 } else{
371 $mail->AddAttachment($oneFile['url']);
372 }
373 }
374 // Envoie de l'email
375 if ($mail->Send()) {
376 return true;
377 } else {
378 $this->addToLog("sendMail(): ".$mail->ErrorInfo, DEBUG_MODE);
379 return false;
380 }
381 }
382
383 /**
384 *
385 */
386 function isAccredited($obj = NULL, $operator = "AND") {
387 // Lorsque l'utilisateur a le login 'admin' alors il est authorisé à
388 // accéder à toutes les fonctions du logiciel
389 // XXX à modifier pour changer ça vers un profil et non un login utilisateur
390 if ($_SESSION["login"] == "admin") {
391 return true;
392 }
393 // Fonctionnement standard
394 return parent::isAccredited($obj, $operator);
395 }
396
397 /*
398 * Methode permettant de lister tous les fichiers d'un dossier
399 */
400 function get_folder_file_list($id_folder) {
401
402 $file_list = array();
403 if(is_dir('../trs/'.$id_folder)) {
404 if($dossier = opendir('../trs/'.$id_folder)) {
405
406 while(false !== ($fichier = readdir($dossier))) {
407
408 if($fichier != '.' && $fichier != '..' && !is_dir($fichier)) {
409
410 $file_list[]=$fichier;
411 } // On ferme le if (qui permet de ne pas afficher index.php, etc.)
412
413 } // On termine la boucle
414
415 closedir($dossier);
416
417 } else {
418 $this->displayMessage("error", _("Les documents du dossier ne sont pas accessible."));
419 }
420 } else {
421 $this->displayMessage("error", _("Ce dossier n'a pas de document."));
422 }
423 return $file_list;
424 }
425
426 }
427
428 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26