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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 920 - (show annotations)
Thu Nov 29 19:19:09 2012 UTC (12 years, 2 months ago) by nhaye
File size: 25802 byte(s)
Ajout d'une méthode de conversion de date dans dbform,
Optimisation de la création du dossier d'autorisation, ajout de la création du dossier d'instruction
Optimisation de la création du lien entre dossier_autorisation et demandeur,
ajout du lien entre dossier et demandeur

1 <?php
2 /**
3 * Ce fichier est destine a permettre la surcharge de certaines methodes de
4 * la classe om_dbform pour des besoins specifiques de l'application
5 *
6 * @package openmairie_exemple
7 * @version SVN : $Id$
8 */
9
10 /**
11 *
12 */
13 require_once PATH_OPENMAIRIE."om_dbform.class.php";
14
15 /**
16 *
17 */
18 require_once "om_formulaire.class.php";
19
20 /**
21 *
22 */
23 class om_dbform extends dbForm {
24
25 /**
26 *
27 */
28 var $om_formulaire = "om_formulaire";
29
30
31
32 /**
33 * Constructeur
34 *
35 * @param string $id
36 * @param object $db Objet de connexion DB
37 * @param boolean $DEBUG Mode debug (@deprecated)
38 */
39 function constructeur($id, &$db, $DEBUG = false) {
40 if (defined('REST_REQUEST')) { // $this->REST
41 logger::instance()->display_log = false;
42 }
43 //
44 if (isset($GLOBALS["f"])) {
45 $this->f = $GLOBALS["f"];
46 }
47 // Le framework REST est utilisee
48 $this->errors = array();
49
50 // Affectation de l'identifiant de base de donnees dans l'attribut db
51 // de l'objet
52 $this->db = $db;
53 // Inclusion du fichier de parametre de la table pour recuperer les
54 // trois parametres permettant de construire la requete de selection
55 // $champs - clause select
56 // $tableSelect - clause from
57 // $selection - clause where
58 $fichier = "../sql/".$this->db->phptype."/".$this->table.".form.inc.php";
59 if (file_exists($fichier)) {
60 include $fichier;
61 } else {
62 $fichier = "../sql/".$this->db->phptype."/".$this->table.".form.inc";
63 if (file_exists($fichier)) {
64 include $fichier;
65 }
66 }
67 // Sauvegarde des actions contextuelles supplementaires
68 if (isset($portlet_actions)) {
69 $this->actions_sup = $portlet_actions;
70 }
71 //Si le flag $archivable est posé
72 //if(isset($archivable) and $archivable){
73 // $this->archivable=TRUE;
74 //} else {
75 // $this->archivable=FALSE;
76 //}
77 // Concatenation des champs pour constitution de la clause select
78 $listeChamp = "";
79 foreach ($champs as $elem) {
80 $listeChamp .= $elem.",";
81 }
82 // Suppresion de la derniere virgule
83 $listeChamp = substr($listeChamp, 0, strlen($listeChamp)-1);
84 // Initialisation de la variable selection
85 if (!isset($selection)) {
86 $selection = "";
87 }
88 // Concatenation de la requete de selection
89 $sql = " select ".$listeChamp." from ".$tableSelect." ";
90 // Si mode ajout
91 if ($id == "]") {
92 // Remplacement du 'and' par 'where' dans la varibale $selection
93 $selection = ltrim($selection);
94 if (strtolower(substr($selection, 0, 3)) == "and") {
95 $selection = " where ".substr($selection, 4, strlen($selection));
96 }
97 } else { // Si mode modification ou suppression
98 // Clause where en fonction du type de la cle primaire
99 if ($this->typeCle == "A") {
100 $sql .= " where ".$this->clePrimaire." like '".$id."' ";
101 } else {
102 $sql .= " where ".$this->table.".".$this->clePrimaire." = ".$id." ";
103 }
104 }
105 $sql .= " ".$selection." ";
106 //print '$sql:'.$sql.' ';
107 // Execution de la requete
108 $res = $db->limitquery($sql, 0, 1);
109 // Logger
110 $this->addToLog("constructeur(): db->limitquery(\"".str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
111 // Si une erreur survient
112 if (database::isError($res, true)) {
113 // Appel de la methode de recuperation des erreurs
114 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), $tableSelect);
115 } else {
116 // Recuperation des informations sur la structure de la table
117 // ??? compatibilite POSTGRESQL (len = -1, type vide, flags vide)
118 $info = $res->tableInfo();
119 // Initialisation de la cle a 0
120 $i = 0;
121 // Recuperation du nom de chaque champ dans l'attribut 'champs'
122 foreach ($info as $elem) {
123 $this->champs[$i++] = $elem['name'];
124 }
125 // ??? Le $i devrait etre initialises a 0 pour chaque attribut suivant
126 // Recuperation de la taille de chaque champ dans l'attibut 'longueurMax'
127 foreach ($info as $elem) {
128 $this->longueurMax[$i++] = $elem['len'];
129 }
130 // Recuperation du type de chaque champ dans l'attribut 'type'
131 // ??? Non utilise
132 foreach ($info as $elem) {
133 $this->type[$i++] = $elem['type'];
134 }
135 // Recuperation du flag de chaque champ dans l'attribut 'flags'
136 // ??? Non utilise
137 foreach ($info as $elem) {
138 $this->flags[$i++] = $elem['flags'];
139 }
140 // Recuperation de l'enregistrement resultat de la requete
141 while ($row =& $res->fetchRow()) {
142 // Initialisation de la cle a 0
143 $i = 0;
144 // Recuperation de la valeur de chaque champ dans l'attribut 'val'
145 foreach ($row as $elem) {
146 $this->val[$i] = $elem;
147 if (defined('REST_REQUEST')) { // $this->REST
148 $this->valF[$this->champs[$i]] = $elem;
149 }
150 $i++;
151 }
152 }
153 }
154 }
155
156
157
158 /**
159 * Cette methode permet d'executer l'ajout (MODE 'insert') de l'objet dans
160 * la base de donnees.
161 *
162 * @param array $val
163 * @param object $db Objet de connexion DB
164 * @param boolean $DEBUG Mode debug (@deprecated)
165 */
166 function ajouter($val, &$db = NULL, $DEBUG = false) {
167 // Logger
168 $this->addToLog("ajouter() - begin", EXTRA_VERBOSE_MODE);
169 // Mutateur de valF
170 $this->setValF($val);
171 // Mutateur de valF specifique a l'ajout
172 $this->setValFAjout($val);
173 // Verification de la validite des donnees
174 $this->verifier($val, $db, $DEBUG);
175 // Verification specifique au MODE 'insert' de la validite des donnees
176 $this->verifierAjout($val, $db);
177 // Verification du verrou
178 $this->testverrou();
179 // Si les verifications precedentes sont correctes, on procede a
180 // l'ajout, sinon on ne fait rien et on affiche un message d'echec
181 if ($this->correct) {
182 // Appel au mutateur pour le calcul de la cle primaire (si la cle
183 // est automatique) specifique au MODE 'insert'
184 $this->setId($db);
185 // Execution du trigger 'before' specifique au MODE 'insert'
186 // Le premier parametre est vide car en MODE 'insert'
187 // l'enregistrement n'existe pas encore donc il n'a pas
188 // d'identifiant
189 $this->triggerajouter("", $db, $val, $DEBUG);
190 // Execution de la requete d'insertion des donnees de l'attribut
191 // valF de l'objet dans l'attribut table de l'objet
192 $res = $db->autoExecute(DB_PREFIXE.$this->table, $this->valF, DB_AUTOQUERY_INSERT);
193 // Si une erreur survient
194 if (database::isError($res, true)) {
195 // Appel de la methode de recuperation des erreurs
196 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
197 } else {
198 // Log
199 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
200 // Log
201 $message = _("Enregistrement")."&nbsp;".$this->valF[$this->clePrimaire]."&nbsp;";
202 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
203 $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
204 $message .= _("enregistrement(s) ajoute(s)")."&nbsp;]";
205 $this->addToLog($message, VERBOSE_MODE);
206 // Message de validation
207 $this->addToMessage(_("Vos modifications ont bien ete enregistrees.")."<br/>");
208 // Mise en place du verrou pour ne pas valider plusieurs fois
209 // le meme formulaire
210 $this->verrouille();
211
212 // Execution du trigger 'after' specifique au MODE 'insert'
213 // Le premier parametre est vide car en MODE 'insert'
214 // l'enregistrement n'existe pas encore donc il n'a pas
215 // d'identifiant
216 $this->triggerajouterapres("", $db, $val, $DEBUG);
217 }
218 } else {
219 // Message d'echec (saut d'une ligne supplementaire avant le
220 // message pour qu'il soit mis en evidence)
221 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
222 }
223 // Logger
224 $this->addToLog("ajouter() - end", EXTRA_VERBOSE_MODE);
225 }
226
227
228 /**
229 *
230 * @param array $val
231 * @param object $db Objet de connexion DB
232 */
233 function verifierAjout($val = array(), &$db = NULL) {
234
235 // Verifier [verify]
236 // la cle primaire est obligatoire
237 // [primary key is compulsory]
238 if ($this->valF[$this->clePrimaire] == "") {
239 //
240 $this->correct = false;
241 //
242 $this->addToMessage("<br/>");
243 $this->addToMessage( _("L'\"identifiant\" est obligatoire")."&nbsp;");
244 $this->addToMessage("[&nbsp;"._($this->clePrimaire)."&nbsp;]");
245 }
246 if ($this->typeCle == "A") {
247 $sql = "select count(*) from ".DB_PREFIXE.$this->table." ";
248 $sql .= "where ".$this->clePrimaire."='".$this->valF[$this->clePrimaire]."' ";
249 $nb = $db->getone($sql);
250 $this->addToLog("verifierAjout(): db->getone(\"".$sql."\");", VERBOSE_MODE);
251 if (database::isError($nb)) {
252 $this->erreur_db($nb->getDebugInfo(), $nb->getMessage(), '');
253 }else{
254 if ($nb > 0) {
255 $this->correct = false;
256 $this->addToMessage($nb." ");
257 $this->addToMessage( _("cle primaire existante"));
258 $this->addToMessage(" ".$this->table."<br />");
259 }
260 }
261 }
262 }
263
264
265 /**
266 * Cette methode permet d'executer la modification (MODE 'update') de
267 * l'objet dans la base de donnees.
268 *
269 * @param array $val
270 * @param object $db Objet de connexion DB
271 * @param boolean $DEBUG Mode debug (@deprecated)
272 */
273 function modifier($val = array(), &$db = NULL, $DEBUG = false) {
274
275 // Logger
276 $this->addToLog("modifier() - begin", EXTRA_VERBOSE_MODE);
277 // Recuperation de la valeur de la cle primaire de l'objet
278 if(isset($val[$this->clePrimaire]))
279 $id = $val[$this->clePrimaire];
280 else
281 $id=$this->id;
282 // Appel au mutateur de l'attribut valF de l'objet
283 $this->setValF($val);
284 // Verification de la validite des donnees
285 $this->verifier($val, $db, $DEBUG);
286 // Verification du verrou
287 $this->testverrou();
288 // Si les verifications precedentes sont correctes, on procede a
289 // la modification, sinon on ne fait rien et on affiche un message
290 // d'echec
291 if ($this->correct) {
292 // Execution du trigger 'before' specifique au MODE 'update'
293 $this->triggermodifier($id, $db, $val, $DEBUG);
294 // Execution de la requête de modification des donnees de l'attribut
295 // valF de l'objet dans l'attribut table de l'objet
296 $res = $db->autoExecute(DB_PREFIXE.$this->table, $this->valF, DB_AUTOQUERY_UPDATE, $this->getCle($id));
297 // Si une erreur survient
298 if (database::isError($res, true)) {
299 // Appel de la methode de recuperation des erreurs
300 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
301 } else {
302 // Log
303 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
304 // Log
305 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
306 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
307 $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
308 $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
309 $this->addToLog($message, VERBOSE_MODE);
310 // Message de validation
311 if ($db->affectedRows() == 0) {
312 $this->addToMessage(_("Attention vous n'avez fait aucune modification.")."<br/>");
313 } else {
314 $this->addToMessage(_("Vos modifications ont bien ete enregistrees.")."<br/>");
315 }
316 // Mise en place du verrou pour ne pas valider plusieurs fois
317 // le meme formulaire
318 $this->verrouille();
319
320 // Execution du trigger 'after' specifique au MODE 'update'
321 $this->triggermodifierapres($id, $db, $val, $DEBUG);
322 }
323 } else {
324 // Message d'echec (saut d'une ligne supplementaire avant le
325 // message pour qu'il soit mis en evidence)
326 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
327 }
328 // Logger
329 $this->addToLog("modifier() - end", EXTRA_VERBOSE_MODE);
330 }
331
332
333 /**
334 * Cette methode permet d'executer la suppression (MODE 'delete') de
335 * l'objet dans la base de donnees.
336 *
337 * @param array $val
338 * @param object $db Objet de connexion DB
339 * @param boolean $DEBUG Mode debug (@deprecated)
340 */
341 function supprimer($val = array(), &$db = NULL, $DEBUG = false) {
342 // Logger
343 $this->addToLog("supprimer() - begin", EXTRA_VERBOSE_MODE);
344 // Recuperation de la valeur de la cle primaire de l'objet
345 if(isset($val[$this->clePrimaire]))
346 $id = $val[$this->clePrimaire];
347 else
348 $id=$this->id;
349 // Verification des contraintes d'integrite specifique au MODE 'delete'
350 $this->correct=true;
351 $this->cleSecondaire($id, $db, $val, $DEBUG);
352 // Verification du verrou
353 $this->testverrou();
354 // Si les verifications precedentes sont correctes, on procede a
355 // la suppression, sinon on ne fait rien et on affiche un message
356 // d'echec
357 if ($this->correct) {
358 // Execution du trigger 'before' specifique au MODE 'delete'
359 $this->triggersupprimer($id, $db, $val, $DEBUG);
360 // Construction de la requete de suppression de l'objet dans
361 // l'attribut table de l'objet
362 $sql = "delete from ".DB_PREFIXE.$this->table." where ".$this->getCle($id);
363 // Execution de la requete de suppression de l'objet
364 $res = $db->query($sql);
365 // Logger
366 $this->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
367 // Si une erreur survient
368 if (database::isError($res, true)) {
369 // Appel de la methode de recuperation des erreurs
370 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
371 } else {
372 // Log
373 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
374 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
375 $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
376 $message .= _("enregistrement(s) supprime(s)")."&nbsp;]";
377 $this->addToLog($message, VERBOSE_MODE);
378 // Message de validation
379 $this->addToMessage(_("La suppression a ete correctement effectuee.")."<br/>");
380 // Mise en place du verrou pour ne pas valider plusieurs fois
381 // le meme formulaire
382 $this->verrouille();
383
384 // Execution du trigger 'after' specifique au MODE 'delete'
385 $this->triggersupprimerapres($id, $db, $val, $DEBUG);
386 }
387 } else {
388 // Message d'echec (saut d'une ligne supplementaire avant le
389 // message pour qu'il soit mis en evidence)
390 $this->addToMessage("<br/>"._("SUPPRESSION NON EFFECTUEE")."<br/>");
391 }
392 // Logger
393 $this->addToLog("supprimer() - end", EXTRA_VERBOSE_MODE);
394 }
395
396 /**
397 * Methode de verification de l'unicite d'une valeur pour chaque elements du tableau unique_key,
398 * ainsi que l'unicite de la cle multiple unique_multiple_key.
399 *
400 * @param objet $db Objet Base de donnees
401 */
402 function checkUniqueKey() {
403 $unique=true;
404 //Verification des cles uniques
405 if(!empty($this->unique_key)) {
406 foreach ($this->unique_key as $constraint) {
407 if(!is_array($constraint)) {
408 if(!is_null ($this->valF[$constraint])) {
409 if(!$this->isUnique($constraint,$this->valF[$constraint])) {
410 $this->addToMessage( _("La valeur saisie dans le champ")." <span class=\"bold\">");
411 $this->addToMessage( (!defined('REST_REQUEST')) ? $this->form->lib[$constraint] : $constraint); // $this->REST
412 $this->addToMessage( "</span> "._("existe deja, veuillez saisir une nouvelle valeur.")."<br/>");
413 $unique=false;
414 }
415 }
416 } else {
417 //Verification du groupe de champs uniques
418 $oneIsNull=false;
419 if(!empty($constraint)) {
420 $valueMultiple=array();
421 foreach($constraint as $field) {
422 $valueMultiple[]=$this->valF[$field];
423 if(is_null($this->valF[$field])) {
424 $oneIsNull=true;
425 }
426 }
427 if(!$oneIsNull) {
428 if(!$this->isUnique($constraint,$valueMultiple)) {
429 foreach($constraint as $field) {
430 $temp[] = (!defined('REST_REQUEST')) ? $this->form->lib[$field] : $constraint; // $this->REST
431 }
432 $this->addToMessage( _("Les valeurs saisies dans les champs")." <span class=\"bold\">".implode("</span>, <span class=\"bold\">",$temp)."</span> "._("existent deja, veuillez saisir de nouvelles valeurs.")."<br/>");
433 $unique=false;
434 }
435 }
436 }
437 }
438 }
439 }
440 if(!$unique) {
441 $this->correct = false;
442 }
443 }
444
445
446
447 /**
448 * Methode permettant de requeter la base afin de definir la validite du champ unique
449 *
450 * @param string $champ nom du champ unique
451 * @param string $value valeur à inserer dans la colonne
452 */
453 function isUnique($champ,$value) {
454 //Test sur un groupe de champs
455 if(is_array($champ) and is_array($value)) {
456 $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".implode(" = ? AND ",$champ)." = ?";
457 } else {
458 //Test sur un champ
459 $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".$champ." = ?";
460 }
461 if($this->getParameter('maj')) {
462 $sql .= " AND ".$this->clePrimaire." \!= ".$this->valF[$this->clePrimaire];
463 }
464 $nb = $this->db->getone($sql,$value);
465 $this->addToLog("isUnique() : db->getone(\"".$sql."\");", VERBOSE_MODE);
466 if (database::isError($nb, true)) {
467 // Affichage de l'erreur
468 $this->erreur_db($nb->getDebugInfo(), $nb->getMessage(), '');
469 return true;
470 } else {
471 //Si superieur a 0, pas unique
472 if ($nb > 0) {
473 return false;
474 } else {
475 return true;
476 }
477 }
478 }
479
480
481
482 /**
483 * Methode de verification des contraintes not null,
484 * affiche une erreur si nul.
485 *
486 * @param objet $db Objet Base de donnees
487 */
488 function checkRequired() {
489 foreach($this->required_field as $field) {
490 //Ne test la cle primaire car n'a pas de valeur a l'ajout
491 // la cle primaire est automatiquement cree
492 if ($field == $this->clePrimaire) {
493 continue;
494 }
495
496 $error = false;
497
498 /* En ajout - verification des requis
499
500 Fonctionnement formel de la condition:
501
502 SI le champ n'existe pas (est 'unset')
503 OU le champ est vide
504
505 ALORS le formulaire n'est pas correct
506
507 SINON le formulaire est correct
508
509 Explication:
510
511 Les champs verifies sont les champs requis. S'ils n'existent
512 pas en ajout ou qu'ils sont vide, un message apparait a l'ecran
513 avertissant l'utilisateur que certains champs doivent etre
514 remplis.
515
516 */
517 if ($this->getParameter('maj') == 0 and
518 (!isset($this->valF[$field]) or $this->valF[$field] == '')) {
519 $error = true;
520 $this->correct = false;
521
522 /* En modification - verification des requis
523
524 Fonctionnement formel de la condition:
525
526 SI le champ existe (est 'set')
527 ET le champ est vide
528
529 ALORS le formulaire n'est pas correct
530
531 SINON le formulaire est correct
532
533 Explication:
534
535 Les champs verifies sont les champs requis. S'ils existent
536 et qu'ils sont vides alors un message apparait a l'ecran
537 avertissant l'utilisateur que certains champs doivent etre
538 remplis. Si ces champs sont tous saisis, le formulaire est
539 correctement soumis. Par contre, si l'un des champs requis
540 n'existe pas au moment de verification (il aurait ete 'unset'),
541 il ne sera pas verifie, n'entrainera pas de formulaire incorrect
542 et ne sera pas insere dans la base de donnees.
543
544 Faire un 'unset' permet de ne pas mettre a jour certaines
545 donnees sensibles en base a chaque soumission de formulaire.
546
547 Faire un 'unset' permet egalement d'outre passer cette condition
548 en mode de modification. On suppose qu'a l'ajout une valeur
549 a ete inseree dans un champ, et qu'il n'est plus necessaire
550 de verifier si ce champ est vide puisque sa valeur ne sera
551 pas modifiee en base. Elle sera donc conservee.
552
553 */
554 } elseif ($this->getParameter('maj') == 1
555 and isset($this->valF[$field])
556 and $this->valF[$field] == '') {
557 $error = true;
558 $this->correct = false;
559 }
560
561 // ajout du message d'erreur
562 if ($error == true) {
563 //$this->msg .= _('Le champ').' <span class="bold">'.($this->form->lib[$field]!=""?$this->form->lib[$field]:_($field)).'</span> '._('est obligatoire').".<br/>";
564 $this->addToMessage( _('Le champ').' <span class="bold">'.((!defined('REST_REQUEST')) ? $this->form->lib[$field] :_($field)).'</span> '._('est obligatoire').".<br/>"); // $this->REST
565 }
566 }
567 }
568
569
570
571
572
573 /**
574 *
575 */
576 function message() {
577
578 // do not output anything in case of a REST request
579 if (defined('REST_REQUEST')) {
580 return;
581 }
582
583 if ($this->msg != "") {
584
585 //
586 $m = new message();
587
588 //
589 if ($this->correct) {
590 $class = "valid";
591 } else {
592 $class = "error";
593 }
594 $m->displayMessage($class, $this->msg);
595
596 }
597
598 }
599
600
601
602 /**
603 * Cette methode ne doit plus etre appelee, c'est 'message::isError($res)'
604 * qui s'occupe d'afficher le message d'erreur et de faire le 'die()'.
605 *
606 * @deprecated
607 */
608 function erreur_db($debuginfo, $messageDB, $table) {
609 if (!defined('REST_REQUEST')) { // $this->REST
610 die(_("Erreur de base de donnees. Contactez votre administrateur."));
611 } else {
612 $this->errors['db_debuginfo'] = $debuginfo;
613 $this->errors['db_message'] = $messageDB;
614 $this->addToLog("Erreur de BD pour table ".$table ." avec message: \"".$messageDB.
615 "\" et debug info \"".$debuginfo."\"", VERBOSE_MODE);
616 }
617 }
618
619
620 /**
621 *
622 */
623 function addToLog($message, $type = DEBUG_MODE) {
624 if (defined('REST_REQUEST')) { // dans le cas d'utilisation du REST $this->REST
625 logger::instance()->log("REST request class ".get_class($this)." - ".$message, $type);
626 } else {
627 logger::instance()->log("class ".get_class($this)." - ".$message, $type);
628 }
629 }
630
631 // }}}
632
633 /**
634 * Cette methode vide les valeurs des erreurs du tableau errors.
635 */
636 function clearErrors() {
637 foreach (array_keys($this->errors) as $key) {
638 $this->errors[$key] = '';
639 }
640 }
641
642 /**
643 * Méthode pour convertir une date Y-m-d en d/m/Y
644 */
645 function dateDBToForm($date) {
646 $date = new DateTime($this->valF['date_demande']);
647 return $date->format('d/m/Y');
648 }
649
650 }
651
652 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26