/[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 1201 - (hide annotations)
Wed Jan 9 17:03:07 2013 UTC (12 years ago) by fmichon
File size: 27775 byte(s)
Suppression/ajout de sauts de ligne et de commentaires pour rendre les comparaisons avec la classe parent plus faciles

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26