/[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 1548 - (show annotations)
Thu Mar 21 17:53:44 2013 UTC (11 years, 10 months ago) by fmichon
File size: 29852 byte(s)
Surcharge des libellés des boutons pour avoir des libellés intelligents pour les utilisateurs

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26