/[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 1205 - (hide annotations)
Wed Jan 9 17:49:26 2013 UTC (12 years ago) by fmichon
File size: 27736 byte(s)
Mise en cohérence du code avec la classe parent

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 fmichon 1201 /**
31 mlimic 515 * 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 fmichon 1201
66 mlimic 515 // Sauvegarde des actions contextuelles supplementaires
67     if (isset($portlet_actions)) {
68     $this->actions_sup = $portlet_actions;
69     }
70 fmichon 1201
71 mlimic 515 // 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 vpihour 1130 $sql .= " where ".$this->table.".".$this->clePrimaire." like '".$id."' ";
95 mlimic 515 } 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 nhaye 684 /**
345 mlimic 515 * 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 fmichon 1201
351 mlimic 515 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 fmichon 1201 //Test sur un groupe de champs
402 mlimic 515 if(is_array($champ) and is_array($value)) {
403     $sql = 'SELECT count(*) FROM '.DB_PREFIXE.$this->table." WHERE ".implode(" = ? AND ",$champ)." = ?";
404     } else {
405 fmichon 1201 //Test sur un champ
406 mlimic 515 $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 fmichon 1201
437 mlimic 515 // 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 fmichon 1201
466 mlimic 515 $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 fmichon 1201
505 mlimic 515 $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 fmichon 1073 $this->f->displayMessage($class, $this->msg);
540 mlimic 515
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 nhaye 920
587     /**
588     * Méthode pour convertir une date Y-m-d en d/m/Y
589     */
590     function dateDBToForm($date) {
591     $date = new DateTime($this->valF['date_demande']);
592     return $date->format('d/m/Y');
593     }
594    
595 vpihour 1130
596     function init_select(&$form = null, &$db = null, $maj, $debug, $field, $sql,
597     $sql_by_id, $om_validite = false) {
598    
599     if ($maj < 2) {
600    
601     $contenu = array();
602     $res = $db->query($sql);
603    
604     // logger
605     $this->addToLog("setSelect()[gen/obj]: db->query(\"".$sql."\");",
606     VERBOSE_MODE);
607    
608     // verification d'une eventuelle erreur
609     if (database::isError($res)) {
610     die($res->getMessage().$sql);
611     } else {
612    
613     if ($debug == 1) {
614     echo ' la requete '.$sql.' est executee';
615     echo "<br />";
616     }
617    
618     $contenu[0][0] = '';
619     $contenu[1][0] = _('choisir')."&nbsp;"._($field);
620    
621     $k=1;
622     while($row =& $res->fetchRow()){
623     $contenu[0][$k] = $row[0];
624     $contenu[1][$k] = $row[1];
625     $k++;
626     }
627    
628     // gestion des objets a date de validite
629     if ($om_validite == true) {
630    
631     // ajout de la valeur manquante a $contenu si necessaire
632     if ($maj == 1) {
633    
634     if (!in_array($this->form->val[$field], $contenu[0])) {
635    
636     //
637     $this->getSelectOldValue($form, $maj, $db, $contenu,
638     $sql_by_id, $field);
639     } else {
640    
641     $empty = true;
642     foreach ($this->form->val as $f => $value) {
643     if (!empty($value)) {
644     $empty = false;
645     }
646     }
647    
648     //
649     if ($empty == true and
650     $_POST[$field] != '') {
651    
652     $this->getSelectOldValue($form, $maj, $db,
653     $contenu, $sql_by_id,
654     $field,
655     $_POST[$field]);
656     }
657     }
658     }
659     }
660    
661     $form->setSelect($field, $contenu);
662     }
663     }
664    
665     if ($maj == 2 or $maj == 3) {
666    
667     $contenu[0][0] = '';
668     $contenu[1][0] = '';
669    
670     if (isset($this->form->val[$field]) and
671     !empty($this->form->val[$field]) and $sql_by_id) {
672    
673     // ajout de l'identifiant recherche a la requete
674     $sql_by_id = str_replace('<idx>', $this->form->val[$field],
675     $sql_by_id);
676    
677     // execution
678     $result = $db->query($sql_by_id);
679    
680     // logger
681     $this->addToLog("setSelect()[gen/obj]: db->query(".$sql_by_id.");",
682     VERBOSE_MODE);
683    
684     if (database::isError($result)) {
685     die($result->getMessage().$sql_by_id);
686     }
687    
688     $row =& $result->fetchRow();
689     $contenu[0][0] = $row[0];
690     $contenu[1][0] = $row[1];
691    
692     $k=1;
693     while($row =& $result->fetchRow()){
694     $contenu[0][$k] = $row[0];
695     $contenu[1][$k] = $row[1];
696     $k++;
697     }
698     }
699    
700     $form->setSelect($field, $contenu);
701     }
702     }
703 atreal 305 }
704    
705     ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26