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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 516 - (hide annotations)
Wed Oct 17 17:13:43 2012 UTC (12 years, 3 months ago) by mlimic
File size: 25754 byte(s)
save
1 atreal 305 <?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 mlimic 515
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 mlimic 516 //print '$sql:'.$sql.' ';
107 mlimic 515 // 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     if(isset($val[$this->clePrimaire])) // ***
202     $id = $val[$this->clePrimaire];
203     else
204     $id=$this->id;
205     $message = _("Enregistrement")."&nbsp;".$this->valF[$this->clePrimaire]."&nbsp;";
206     $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
207     $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
208     $message .= _("enregistrement(s) ajoute(s)")."&nbsp;]";
209     $this->addToLog($message, VERBOSE_MODE);
210     // Message de validation
211     $this->addToMessage(_("Vos modifications ont bien ete enregistrees.")."<br/>");
212     // Mise en place du verrou pour ne pas valider plusieurs fois
213     // le meme formulaire
214     $this->verrouille();
215    
216     // Execution du trigger 'after' specifique au MODE 'insert'
217     // Le premier parametre est vide car en MODE 'insert'
218     // l'enregistrement n'existe pas encore donc il n'a pas
219     // d'identifiant
220     $this->triggerajouterapres("", $db, $val, $DEBUG);
221     }
222     } else {
223     // Message d'echec (saut d'une ligne supplementaire avant le
224     // message pour qu'il soit mis en evidence)
225     $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
226     }
227     // Logger
228     $this->addToLog("ajouter() - end", EXTRA_VERBOSE_MODE);
229     }
230    
231    
232     /**
233     *
234     * @param array $val
235     * @param object $db Objet de connexion DB
236     */
237     function verifierAjout($val = array(), &$db = NULL) {
238    
239     // Verifier [verify]
240     // la cle primaire est obligatoire
241     // [primary key is compulsory]
242     if ($this->valF[$this->clePrimaire] == "") {
243     //
244     $this->correct = false;
245     //
246     $this->addToMessage("<br/>");
247     $this->addToMessage( _("L'\"identifiant\" est obligatoire")."&nbsp;");
248     $this->addToMessage("[&nbsp;"._($this->clePrimaire)."&nbsp;]");
249     }
250     if ($this->typeCle == "A") {
251     $sql = "select count(*) from ".DB_PREFIXE.$this->table." ";
252     $sql .= "where ".$this->clePrimaire."='".$this->valF[$this->clePrimaire]."' ";
253     $nb = $db->getone($sql);
254     $this->addToLog("verifierAjout(): db->getone(\"".$sql."\");", VERBOSE_MODE);
255     if (database::isError($nb)) {
256     $this->erreur_db($nb->getDebugInfo(), $nb->getMessage(), '');
257     }else{
258     if ($nb > 0) {
259     $this->correct = false;
260     $this->addToMessage($nb." ");
261     $this->addToMessage( _("cle primaire existante"));
262     $this->addToMessage(" ".$this->table."<br />");
263     }
264     }
265     }
266     }
267    
268    
269     /**
270     * Cette methode permet d'executer la modification (MODE 'update') de
271     * l'objet dans la base de donnees.
272     *
273     * @param array $val
274     * @param object $db Objet de connexion DB
275     * @param boolean $DEBUG Mode debug (@deprecated)
276     */
277     function modifier($val = array(), &$db = NULL, $DEBUG = false) {
278    
279     // Logger
280     $this->addToLog("modifier() - begin", EXTRA_VERBOSE_MODE);
281     // Recuperation de la valeur de la cle primaire de l'objet
282     if(isset($val[$this->clePrimaire]))
283     $id = $val[$this->clePrimaire];
284     else
285     $id=$this->id;
286     // Appel au mutateur de l'attribut valF de l'objet
287     $this->setValF($val);
288     // Verification de la validite des donnees
289     $this->verifier($val, $db, $DEBUG);
290     // Verification du verrou
291     $this->testverrou();
292     // Si les verifications precedentes sont correctes, on procede a
293     // la modification, sinon on ne fait rien et on affiche un message
294     // d'echec
295     if ($this->correct) {
296     // Execution du trigger 'before' specifique au MODE 'update'
297     $this->triggermodifier($id, $db, $val, $DEBUG);
298     // Execution de la requête de modification des donnees de l'attribut
299     // valF de l'objet dans l'attribut table de l'objet
300     $res = $db->autoExecute(DB_PREFIXE.$this->table, $this->valF, DB_AUTOQUERY_UPDATE, $this->getCle($id));
301     // Si une erreur survient
302     if (database::isError($res, true)) {
303     // Appel de la methode de recuperation des erreurs
304     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
305     } else {
306     // Log
307     $this->addToLog(_("Requete executee"), VERBOSE_MODE);
308     // Log
309     $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
310     $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
311     $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
312     $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
313     $this->addToLog($message, VERBOSE_MODE);
314     // Message de validation
315     if ($db->affectedRows() == 0) {
316     $this->addToMessage(_("Attention vous n'avez fait aucune modification.")."<br/>");
317     } else {
318     $this->addToMessage(_("Vos modifications ont bien ete enregistrees.")."<br/>");
319     }
320     // Mise en place du verrou pour ne pas valider plusieurs fois
321     // le meme formulaire
322     $this->verrouille();
323    
324     // Execution du trigger 'after' specifique au MODE 'update'
325     $this->triggermodifierapres($id, $db, $val, $DEBUG);
326     }
327     } else {
328     // Message d'echec (saut d'une ligne supplementaire avant le
329     // message pour qu'il soit mis en evidence)
330     $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
331     }
332     // Logger
333     $this->addToLog("modifier() - end", EXTRA_VERBOSE_MODE);
334     }
335    
336    
337     /**
338     * Cette methode permet d'executer la suppression (MODE 'delete') de
339     * l'objet dans la base de donnees.
340     *
341     * @param array $val
342     * @param object $db Objet de connexion DB
343     * @param boolean $DEBUG Mode debug (@deprecated)
344     */
345     function supprimer($val = array(), &$db = NULL, $DEBUG = false) {
346     // Logger
347     $this->addToLog("supprimer() - begin", EXTRA_VERBOSE_MODE);
348     // Recuperation de la valeur de la cle primaire de l'objet
349     if(isset($val[$this->clePrimaire]))
350     $id = $val[$this->clePrimaire];
351     else
352     $id=$this->id;
353     // Verification des contraintes d'integrite specifique au MODE 'delete'
354     $this->correct=true;
355     $this->cleSecondaire($id, $db, $val, $DEBUG);
356     // Verification du verrou
357     $this->testverrou();
358     // Si les verifications precedentes sont correctes, on procede a
359     // la suppression, sinon on ne fait rien et on affiche un message
360     // d'echec
361     if ($this->correct) {
362     // Execution du trigger 'before' specifique au MODE 'delete'
363     $this->triggersupprimer($id, $db, $val, $DEBUG);
364     // Construction de la requete de suppression de l'objet dans
365     // l'attribut table de l'objet
366     $sql = "delete from ".DB_PREFIXE.$this->table." where ".$this->getCle($id);
367     // Execution de la requete de suppression de l'objet
368     $res = $db->query($sql);
369     // Logger
370     $this->addToLog("supprimer(): db->query(\"".$sql."\");", VERBOSE_MODE);
371     // Si une erreur survient
372     if (database::isError($res, true)) {
373     // Appel de la methode de recuperation des erreurs
374     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
375     } else {
376     // Log
377     $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
378     $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
379     $message .= "[&nbsp;".$db->affectedRows()."&nbsp;";
380     $message .= _("enregistrement(s) supprime(s)")."&nbsp;]";
381     $this->addToLog($message, VERBOSE_MODE);
382     // Message de validation
383     $this->addToMessage(_("La suppression a ete correctement effectuee.")."<br/>");
384     // Mise en place du verrou pour ne pas valider plusieurs fois
385     // le meme formulaire
386     $this->verrouille();
387    
388     // Execution du trigger 'after' specifique au MODE 'delete'
389     $this->triggersupprimerapres($id, $db, $val, $DEBUG);
390     }
391     } else {
392     // Message d'echec (saut d'une ligne supplementaire avant le
393     // message pour qu'il soit mis en evidence)
394     $this->addToMessage("<br/>"._("SUPPRESSION NON EFFECTUEE")."<br/>");
395     }
396     // Logger
397     $this->addToLog("supprimer() - end", EXTRA_VERBOSE_MODE);
398     }
399    
400    
401    
402     /**
403     * Methode de verification de l'unicite d'une valeur pour chaque elements du tableau unique_key,
404     * ainsi que l'unicite de la cle multiple unique_multiple_key.
405     *
406     * @param objet $db Objet Base de donnees
407     */
408     function checkUniqueKey() {
409     $unique=true;
410     //Verification des cles uniques
411     if(!empty($this->unique_key)) {
412     foreach ($this->unique_key as $constraint) {
413     if(!is_array($constraint)) {
414     if(!is_null ($this->valF[$constraint])) {
415     if(!$this->isUnique($constraint,$this->valF[$constraint])) {
416     $this->addToMessage( _("La valeur saisie dans le champ")." <span class=\"bold\">");
417     $this->addToMessage( (!defined('REST_REQUEST')) ? $this->form->lib[$constraint] : $constraint); // $this->REST
418     $this->addToMessage( "</span> "._("existe deja, veuillez saisir une nouvelle valeur.")."<br/>");
419     $unique=false;
420     }
421     }
422     } else {
423     //Verification du groupe de champs uniques
424     $oneIsNull=false;
425     if(!empty($constraint)) {
426     $valueMultiple=array();
427     foreach($constraint as $field) {
428     $valueMultiple[]=$this->valF[$field];
429     if(is_null($this->valF[$field])) {
430     $oneIsNull=true;
431     }
432     }
433     if(!$oneIsNull) {
434     if(!$this->isUnique($constraint,$valueMultiple)) {
435     foreach($constraint as $field) {
436     $temp[] = (!defined('REST_REQUEST')) ? $this->form->lib[$field] : $constraint; // $this->REST
437     }
438     $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/>");
439     $unique=false;
440     }
441     }
442     }
443     }
444     }
445     }
446     if(!$unique) {
447     $this->correct = false;
448     }
449     }
450    
451    
452    
453     /**
454     * Methode permettant de requeter la base afin de definir la validite du champ unique
455     *
456     * @param string $champ nom du champ unique
457     * @param string $value valeur à inserer dans la colonne
458     */
459     function isUnique($champ,$value) {
460     //Test sur un groupe de champs
461     if(is_array($champ) and is_array($value)) {
462     $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".implode(" = ? AND ",$champ)." = ?";
463     } else {
464     //Test sur un champ
465     $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".$champ." = ?";
466     }
467     if($this->getParameter('maj')) {
468     $sql .= " AND ".$this->clePrimaire." \!= ".$this->valF[$this->clePrimaire];
469     }
470     $nb = $this->db->getone($sql,$value);
471     $this->addToLog("isUnique() : db->getone(\"".$sql."\");", VERBOSE_MODE);
472     if (database::isError($nb, true)) {
473     // Affichage de l'erreur
474     $this->erreur_db($nb->getDebugInfo(), $nb->getMessage(), '');
475     return true;
476     } else {
477     //Si superieur a 0, pas unique
478     if ($nb > 0) {
479     return false;
480     } else {
481     return true;
482     }
483     }
484     }
485    
486    
487    
488     /**
489     * Methode de verification des contraintes not null,
490     * affiche une erreur si nul.
491     *
492     * @param objet $db Objet Base de donnees
493     */
494     function checkRequired() {
495     foreach($this->required_field as $field) {
496     //Ne test la cle primaire car n'a pas de valeur a l'ajout
497     // la cle primaire est automatiquement cree
498     if ($field == $this->clePrimaire) {
499     continue;
500     }
501    
502     $error = false;
503    
504     /* En ajout - verification des requis
505    
506     Fonctionnement formel de la condition:
507    
508     SI le champ n'existe pas (est 'unset')
509     OU le champ est vide
510    
511     ALORS le formulaire n'est pas correct
512    
513     SINON le formulaire est correct
514    
515     Explication:
516    
517     Les champs verifies sont les champs requis. S'ils n'existent
518     pas en ajout ou qu'ils sont vide, un message apparait a l'ecran
519     avertissant l'utilisateur que certains champs doivent etre
520     remplis.
521    
522     */
523     if ($this->getParameter('maj') == 0 and
524     (!isset($this->valF[$field]) or $this->valF[$field] == '')) {
525     $error = true;
526     $this->correct = false;
527    
528     /* En modification - verification des requis
529    
530     Fonctionnement formel de la condition:
531    
532     SI le champ existe (est 'set')
533     ET le champ est vide
534    
535     ALORS le formulaire n'est pas correct
536    
537     SINON le formulaire est correct
538    
539     Explication:
540    
541     Les champs verifies sont les champs requis. S'ils existent
542     et qu'ils sont vides alors un message apparait a l'ecran
543     avertissant l'utilisateur que certains champs doivent etre
544     remplis. Si ces champs sont tous saisis, le formulaire est
545     correctement soumis. Par contre, si l'un des champs requis
546     n'existe pas au moment de verification (il aurait ete 'unset'),
547     il ne sera pas verifie, n'entrainera pas de formulaire incorrect
548     et ne sera pas insere dans la base de donnees.
549    
550     Faire un 'unset' permet de ne pas mettre a jour certaines
551     donnees sensibles en base a chaque soumission de formulaire.
552    
553     Faire un 'unset' permet egalement d'outre passer cette condition
554     en mode de modification. On suppose qu'a l'ajout une valeur
555     a ete inseree dans un champ, et qu'il n'est plus necessaire
556     de verifier si ce champ est vide puisque sa valeur ne sera
557     pas modifiee en base. Elle sera donc conservee.
558    
559     */
560     } elseif ($this->getParameter('maj') == 1
561     and isset($this->valF[$field])
562     and $this->valF[$field] == '') {
563     $error = true;
564     $this->correct = false;
565     }
566    
567     // ajout du message d'erreur
568     if ($error == true) {
569     //$this->msg .= _('Le champ').' <span class="bold">'.($this->form->lib[$field]!=""?$this->form->lib[$field]:_($field)).'</span> '._('est obligatoire').".<br/>";
570     $this->addToMessage( _('Le champ').' <span class="bold">'.((!defined('REST_REQUEST')) ? $this->form->lib[$field] :_($field)).'</span> '._('est obligatoire').".<br/>"); // $this->REST
571     }
572     }
573     }
574    
575    
576    
577    
578    
579     /**
580     *
581     */
582     function message() {
583    
584     // do not output anything in case of a REST request
585     if (defined('REST_REQUEST')) {
586     return;
587     }
588    
589     if ($this->msg != "") {
590    
591     //
592     $m = new message();
593    
594     //
595     if ($this->correct) {
596     $class = "valid";
597     } else {
598     $class = "error";
599     }
600     $m->displayMessage($class, $this->msg);
601    
602     }
603    
604     }
605    
606    
607    
608     /**
609     * Cette methode ne doit plus etre appelee, c'est 'message::isError($res)'
610     * qui s'occupe d'afficher le message d'erreur et de faire le 'die()'.
611     *
612     * @deprecated
613     */
614     function erreur_db($debuginfo, $messageDB, $table) {
615     if (!defined('REST_REQUEST')) { // $this->REST
616     die(_("Erreur de base de donnees. Contactez votre administrateur."));
617     } else {
618     $this->errors['db_debuginfo'] = $debuginfo;
619     $this->errors['db_message'] = $messageDB;
620     $this->addToLog("Erreur de BD pour table ".$table ." avec message: \"".$messageDB.
621     "\" et debug info \"".$debuginfo."\"", VERBOSE_MODE);
622     }
623     }
624    
625    
626     /**
627     *
628     */
629     function addToLog($message, $type = DEBUG_MODE) {
630     if (defined('REST_REQUEST')) { // dans le cas d'utilisation du REST $this->REST
631     logger::instance()->log("REST request class ".get_class($this)." - ".$message, $type);
632     } else {
633     logger::instance()->log("class ".get_class($this)." - ".$message, $type);
634     }
635     }
636    
637     // }}}
638    
639     /**
640     * Cette methode vide les valeurs des erreurs du tableau errors.
641     */
642     function clearErrors() {
643     foreach (array_keys($this->errors) as $key) {
644     $this->errors[$key] = '';
645     }
646     }
647    
648    
649 atreal 305 }
650    
651     ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26