/[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 1913 - (hide annotations)
Mon May 27 14:27:23 2013 UTC (11 years, 8 months ago) by fmichon
File size: 31479 byte(s)
Récupération des derenières modifications de la classe dbform du core de la méthode supprimer

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26