/[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 1895 - (show annotations)
Thu May 23 14:58:09 2013 UTC (11 years, 8 months ago) by nhaye
File size: 31277 byte(s)
Mise à jour du paramétrage du filestorage, ainsi que des objet qui utilisent le widget de formulaire upload

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26