/[openfoncier]/trunk/obj/reqmo.class.php
ViewVC logotype

Annotation of /trunk/obj/reqmo.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4218 - (hide annotations)
Thu May 19 12:41:50 2016 UTC (8 years, 8 months ago) by nhaye
File size: 35319 byte(s)
Merge branche evo_stats_evoluees

1 mbroquet 3730 <?php
2     /**
3     * Classe permettant de factoriser la génération du rendu des requêtes mémorisées
4     *
5     * Requêteur
6     * principe de REQMO (requête memorisée):
7     * permet de faire des requêtes memorisées
8     * la requête est paramétrée en sql/typedebase/langue/obj.reqmo.inc.php
9     * $reqmo['sql'] = requête paramétrable
10     * les paramètres sont entre crochets
11     * type de paramètre = $reqmo['parametre']
12     * checked : case à cocher pour que la zone soit prise en compte
13     * liste : liste de valeur proposé pour paramétrer une sélection ou un tri
14     * select : liste de valeur proposé pour paramétrer une sélection ou un tri
15     * d'après une requête dans une table
16     * $reqmo['libelle'] = libéllé de la requête
17     * $reqmo['separateur'] = séparateur pour fichier csv
18     *
19     * @package openfoncier
20     * @version SVN : $Id: reqmo.class.php 6046 2016-02-26 15:27:06Z fmichon $
21     */
22    
23     class reqmo {
24    
25     // utils
26     var $f = "";
27    
28     // Liste des fichiers reqmo
29     var $tab_reqmo = array();
30    
31     // Type de rendu
32     var $sortie = "";
33    
34     var $info;
35    
36     var $obj;
37    
38     var $extension;
39    
40     function __construct($f, $obj, $extension = "reqmo") {
41     $this->f = $f;
42     $this->obj = $obj;
43     $this->extension = $extension;
44     }// fin constructeur
45    
46     private function getReqmoFile() {
47     $dir = getcwd();
48     $dir = substr($dir, 0, strlen($dir) - 4)."/sql/".OM_DB_PHPTYPE."/";
49     $dossier = opendir($dir);
50     while ($entree = readdir($dossier)) {
51     if (strstr($entree, $this->extension)) {
52    
53     // Si l'extention du fichier $entree est .inc.php
54     if (strpos($entree, ".inc.php")) {
55     $filext = strlen($this->extension)+9;
56     }
57     // Sinon on considere qu'elle est -> .inc (compatibilite)
58     else {
59     $filext = strlen($this->extension)+5;
60     }
61    
62     array_push($this->tab_reqmo,
63     array('file' => substr($entree, 0, strlen($entree) - $filext)));
64     }
65     }
66     closedir($dossier);
67     asort($this->tab_reqmo);
68    
69     return $this->tab_reqmo;
70     }
71    
72     function displayReqmoList($url = "../scr/requeteur.php") {
73     $this->getReqmoFile();
74     echo "\n<div id=\"".$this->extension."\">\n";
75     //
76     echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">\n";
77     //
78     echo "\t<legend class=\"ui-corner-all ui-widget-content ui-state-active\">";
79     echo _("Choix de la requete memorisee");
80     echo "</legend>\n";
81     //
82     echo "\t<div class=\"list\">\n";
83     if (count($this->tab_reqmo) == 0) {
84     echo "<p>";
85     echo _("Il n'y a aucun element de ce type dans l'application.");
86     echo "</p>";
87     }
88     //
89     $this->f->layout->display_start_liste_responsive();
90     //
91     $nbr_elements=0;
92     foreach ($this->tab_reqmo as $elem) {
93     $nbr_elements=$nbr_elements+1;
94     $this->f->layout->display_start_block_liste_responsive($nbr_elements);
95     echo "<span>\n";
96     //
97     $params = array(
98     "file" => $elem['file']
99     );
100     // XXX passe plus par le layout dans le cas ou l'url est passée en paramètre
101     // $this->f->layout->display_reqmo_lien($params);
102     echo "<a ";
103     echo " class=\"om-prev-icon reqmo-16\" href=\"".$url."?obj=".$params['file']."\">";
104     echo _($params['file']);
105     echo "</a>";
106    
107     echo "</span>\n";
108     $this->f->layout->display_close_block_liste_responsive();
109     //
110     }
111     $this->f->layout->display_close_liste_responsive();
112     echo "\t</div>\n";
113     //
114     echo "</fieldset>\n";
115     //
116     echo "</div>\n";
117    
118     }
119    
120     /**
121     * Ouverture du conteneur de contenu
122     * @return [type] [description]
123     */
124     private function openContent() {
125     /**
126     * Ouverture du conteneur de la page
127     */
128     //
129     echo "\n<div id=\"generator-generate\">\n";
130     //
131     echo "<div id=\"formulaire\">\n\n";
132     //
133     $this->f->layout->display_start_navbar();
134     echo "<ul>\n";
135     if (isset($reqmo["reqmo_libelle"])) {
136     echo "\t<li><a href=\"#tabs-1\">".
137     _("Export de : ").
138     _($reqmo["reqmo_libelle"])."</a></li>\n";
139     } elseif (isset($reqmo["libelle"])) {
140     echo "\t<li><a href=\"#tabs-1\">".
141     _("Export de : ").
142     _($reqmo["libelle"])."</a></li>\n";
143     } else {
144     echo "\t<li><a href=\"#tabs-1\">".
145     _("Export de : ")._($this->obj).
146     "</a></li>\n";
147     }
148     echo "</ul>\n";
149     //
150     $this->f->layout->display_stop_navbar();
151     echo "\n<div id=\"tabs-1\">\n";
152     }
153    
154     /**
155     * Affichage du formulaire de la requête mémorisée
156     * @param [type] $validation [description]
157     * @return [type] [description]
158     */
159     function displayForm(
160     $validation,
161     $urlRequet = "../scr/requeteur.php",
162     $urlRetour = "../scr/reqmo.php", $error = false) {
163    
164     $this->openContent();
165     /**
166     * Ouverture du formulaire
167     */
168     // Ouverture de la balise formulaire
169     echo "<form method=\"post\" action=\"".$urlRequet."?obj=".$this->obj.
170     "&amp;step=1\" name=\"f1\">\n";
171     $param["obj"]=$this->obj;
172     $param["db"]= $this->f->db;
173     $param["validation"]=$validation;
174     $param["cptemp"]= 0;
175     $param["cpts"]=0;
176     $param["cptsel"]=0;
177     $param["extension"]=$this->extension;
178     $param["error"]=$error;
179     // XXX Plus possible d'utiliser cette méthode
180     // $this->f->layout->display_requeteur_formulaire($param, $this->f);
181     $this->display_requeteur_formulaire($param, $this->f);
182     //
183     // Affichage des actions de controles du formulaire
184     echo "<div class=\"formControls\">";
185     // Bouton de validation du formulaire
186     $param["input"]="<input type=\"submit\" name=\"valid.reqmo\" value=\"".
187     _("Executer la requete sur :")." '"._($this->obj)."'\" />";
188     $this->f->layout->display_input($param);
189     // Lien retour
190     // XXX Plus possible
191     $param["lien"]="<a href=\"".$urlRetour."\" class=\"retour\">"._("Retour")."</a>";
192     $this->f->layout->display_lien_retour($param);
193     // Fermeture du conteneur des actions de controles du formulaire
194     echo "</div>";
195     // Fermeture de la balise formulaire
196     echo "\n</form>\n";
197     $this->closeContent();
198     }
199    
200     /**
201     * Fermeture du conteneur de contenu
202     * @return [type] [description]
203     */
204     private function displayBoutonRetour($url) {
205     // Affichage des actions de controles du formulaire
206     echo "<div class=\"formControls\">";
207     // Lien retour
208     $param["lien"]="<a href=\"".$url."?obj=".$this->obj.
209     "&amp;step=0\" class=\"retour\">"._("Retour")."</a>";
210     $this->f->layout->display_lien_retour($param);
211     // Fermeture du conteneur des actions de controles du formulaire
212     echo "</div>";
213     }
214    
215     /**
216     * Fermeture du conteneur de contenu
217     * @return [type] [description]
218     */
219     private function closeContent() {
220     //
221     echo "</div>\n";
222     //
223     echo "</div>\n";
224     //
225     echo "</div>\n";
226     }
227    
228     function prepareRequest($reqmo) {
229 nhaye 4218 // Gestion éventuelle du multi-collectivités
230     if (strpos($reqmo['sql'], 'IN (<idx_collectivite>)') !== false) {
231     // Par défaut comportement mono
232     $idx_collectivite = $_SESSION['collectivite'];
233     // Si utilisateur multi
234     if ($this->f->has_collectivite_multi() === true) {
235     $idx_collectivite = $this->f->get_list_id_collectivites();
236     // si échec
237     if ($idx_collectivite === false) {
238     return _("Erreur de base de donnees. Contactez votre administrateur.");
239     }
240     }
241     // Remplacement
242     $reqmo['sql']=str_replace('<idx_collectivite>', $idx_collectivite, $reqmo['sql']);
243     }
244     // Variable qui sert à vérifier qu'au moins un des critères a été sélectionné
245 mbroquet 3730 $checked = false;
246     $hasCritere = false;
247     //
248     $temp = explode ("[", $reqmo["sql"]);
249     for($i = 1; $i < count($temp); $i++) {
250     $temp1 = explode ("]", $temp [$i]);
251     $temp4 = explode (" as ", $temp1 [0]);
252     if (isset ($temp4 [1])) {
253     $temp5 = $temp4 [1]; // uniquement as
254     } else {
255     $temp5 = $temp1 [0]; // en entier
256     }
257    
258     if ($this->f->get_submitted_post_value($temp5) !== null &&
259     $this->f->get_submitted_post_value($temp5) !== '') {
260     $temp2 = $this->f->get_submitted_post_value($temp5);
261 nhaye 4218 } elseif (isset($reqmo['required'][$temp1[0]])
262     && $reqmo['required'][$temp1[0]] === false
263     && isset($reqmo['default'][$temp1[0]])) {
264     // récupération de l'éventuel défaut
265     $temp2 = $reqmo['default'][$temp1[0]];
266 mbroquet 3730 } else {
267     $temp2 = "";
268     }
269     // ****
270     if(isset($reqmo[$temp5])){
271     if($reqmo[$temp5]=="checked") {
272     $hasCritere = true;
273     if ($this->f->get_submitted_post_value($temp5) == 'Oui'||
274     $this->f->get_submitted_post_value($temp5) === '') {
275     $reqmo ['sql'] = str_replace ("[".$temp1[0]."]",
276     $temp1[0],
277     $reqmo['sql']);
278     //
279     $checked=true;
280     } else {
281     $reqmo['sql']=str_replace("[".$temp1[0]."],",
282     '',
283     $reqmo['sql']);
284     $reqmo['sql']=str_replace(",[".$temp1[0]."]",
285     '',
286     $reqmo['sql']);
287     $reqmo['sql']=str_replace(", [".$temp1[0]."]",
288     '',
289     $reqmo['sql']);
290     $reqmo['sql']=str_replace("[".$temp1[0]."]",
291     '',
292     $reqmo['sql']);
293     }
294     } else {
295     if ($temp2=="") return _("Veuillez saisir toutes les valeurs du formulaire.");
296     elseif (!$this->hasType($temp2, $reqmo['type'][$temp1[0]])) return _("Veuillez saisir les valeurs au bon format.");
297     $reqmo['sql']=str_replace("[".$temp1[0]."]",
298     $temp2,
299     $reqmo['sql']);
300     }
301     //****
302     } else {
303     if ($temp2=="") return _("Veuillez saisir toutes les valeurs du formulaire.");
304     elseif (!$this->hasType($temp2, $reqmo['type'][$temp1[0]])) return _("Veuillez saisir les valeurs au bon format.");
305     $reqmo['sql']=str_replace("[".$temp1[0]."]",
306     $temp2,
307     $reqmo['sql']);
308     }
309     //****
310     $temp1[0]="";
311     }
312     //
313     if (!$checked&&$hasCritere) return _("Veuillez choisir au moins un critère.");
314     //
315     $blanc = 0;
316     $temp = "";
317     for($i=0;$i<strlen($reqmo['sql']);$i++) {
318     if (substr($reqmo['sql'], $i, 1)==chr(13) or
319     substr($reqmo['sql'], $i, 1)==chr(10) or
320     substr($reqmo['sql'], $i, 1)==chr(32)) {
321     if ($blanc==0){
322     $temp=$temp.chr(32);
323     }
324     $blanc=1;
325     } else {
326     $temp=$temp.substr($reqmo['sql'],$i,1);
327     $blanc=0;
328     }
329     }
330     $reqmo['sql']=$temp ;
331     $reqmo['sql']=str_replace(',,', ',', $reqmo['sql']);
332     $reqmo['sql']=str_replace(', ,', ',', $reqmo['sql']);
333     $reqmo['sql']=str_replace(', from', ' from', $reqmo['sql']);
334     $reqmo['sql']=str_replace(', FROM', ' FROM', $reqmo['sql']);
335     $reqmo['sql']=str_replace('select ,', 'select ', $reqmo['sql']);
336     $reqmo['sql']=str_replace('SELECT ,', 'SELECT ', $reqmo['sql']);
337     // post limite
338     if ($this->f->get_submitted_post_value('limite') !== null) {
339     $limite = $this->f->get_submitted_post_value('limite');
340     } else {
341     $limite = 100;
342     }
343     // post sortie
344     if ($this->f->get_submitted_post_value('sortie') !== null) {
345     $sortie= $this->f->get_submitted_post_value('sortie');
346     } else {
347     $sortie ='tableau';
348     }
349     //
350     if($sortie =='tableau'&&!is_numeric($limite)){
351     return _("Veuillez saisir une valeur numérique pour le nombre limite d'enregistrement à afficher.");
352     }
353     // limite uniquement pour tableau
354     if ($sortie =='tableau') {
355     $reqmo['sql']= $reqmo['sql']." limit ".$limite;
356     }
357 nhaye 4218 // s'il y a des conditions à supprimer
358     if (isset($reqmo['conditions_to_delete'])
359     && is_array($reqmo['conditions_to_delete'])) {
360     // on supprime chacune que l'on trouve
361     foreach ($reqmo['conditions_to_delete'] as $condition) {
362     $condition = trim($condition);
363     if (strpos($reqmo['sql'], $condition) !== false) {
364     $reqmo['sql']=str_replace($condition, '', $reqmo['sql']);
365     }
366     }
367     }
368 mbroquet 3730 $this->reqmo = $reqmo;
369     return true;
370     }
371    
372     function displayTable($url = "../scr/requeteur.php") {
373     // execution de la requete
374     $res_reqmo = $this->f->db-> query ($this->reqmo['sql']);
375     $this->f->isDatabaseError($res_reqmo);
376    
377     $this->info = $res_reqmo -> tableInfo ();
378     //
379     echo "&nbsp;";
380     $param['class']="tab";
381     $param['idcolumntoggle']="requeteur";
382     $this->f->layout->display_table_start($param);
383     //echo "<table class=\"tab-tab\">\n";
384     //
385     echo "<thead><tr class=\"ui-tabs-nav ui-accordion ui-state-default tab-title\">";
386     $key=0;
387     foreach($this->info as $elem) {
388     $param = array(
389     "key" => $key,
390     "info" => $this->info
391     );
392     $this->f->layout->display_table_cellule_entete_colonnes($param);
393     echo "<center>"._($elem['name'])."</center></th>";
394     $key=$key+1;
395     }
396     echo "</tr></thead>\n";
397     //
398     $cptenr = 0;
399     while ($row=& $res_reqmo->fetchRow()) {
400     //
401     echo "<tr class=\"tab-data ".($cptenr % 2 == 0 ? "odd" : "even")."\">\n";
402     //
403     $cptenr = $cptenr + 1;
404     $i = 0;
405     foreach ($row as $elem) {
406     if (is_numeric($elem)) {
407     echo "<td class='resultrequete' align='right'>";
408     } else {
409     echo "<td class='resultrequete'>";
410     }
411     $tmp="";
412     $tmp=str_replace(chr(13).chr(10), '<br>', $elem);
413     echo $tmp."</td>";
414     $i++;
415     }
416     echo "</tr>\n";
417     }
418     //
419     echo "</tbody></table>\n";
420     if ($cptenr==0){
421     echo "<br>"._('aucun')."&nbsp;"._('enregistrement')."<br>";
422     }
423     $this->displayBoutonRetour($url);
424     }
425    
426     function displayCSV($separateur, $url = "../scr/requeteur.php") {
427    
428     // execution de la requete
429     $res_reqmo = $this->f->db-> query ($this->reqmo['sql']);
430     $this->f->isDatabaseError($res_reqmo);
431    
432     $this->info = $res_reqmo -> tableInfo ();
433    
434     $inf="";
435     foreach ($this->info as $elem) {
436     $inf=$inf.$elem['name'].$separateur;
437     }
438     $inf .= "\n";
439     $cptenr=0;
440     while ($row=& $res_reqmo->fetchRow()) {
441     $cptenr=$cptenr+1;
442     $i=0;
443     foreach($row as $elem) {
444     //****
445     $tmp="";
446     $tmp=str_replace(chr(13).chr(10), ' / ', $elem);
447     $tmp=str_replace(';', ' ', $tmp);
448     //*****
449     $inf .= $tmp.$separateur;
450     $i++;
451     }
452     $inf .= "\n";
453     }
454     if ($cptenr==0){
455     $inf .="\n"._('aucun')."&nbsp;"._('enregistrement')."\n";
456     }
457    
458     /**
459     * Écriture de l'export dans un fichier sur le disque et affichage du
460     * lien de téléchargement.
461     */
462     // Composition du nom du fichier
463     $nom_fichier = "export_".$this->obj.".csv";
464     // Composition des métadonnées du fichier
465     $metadata_fichier = array(
466     "filename" => $nom_fichier,
467     "size" => strlen($inf),
468     "mimetype" => "text/csv",
469     );
470     // Écriture du fichier
471     $uid_fichier = $this->f->storage->create_temporary($inf, $metadata_fichier);
472     //
473     echo _("Le fichier a ete exporte, vous pouvez l'ouvrir immediatement en cliquant sur : ");
474     $msg = "<a class=\"om-prev-icon trace-16\" href=\"../spg/file.php?uid=".$uid_fichier."&amp;mode=temporary\" target=\"_blank\">";
475     $msg .= _("Telecharger le fichier")." [".$nom_fichier."]";
476     $msg .= "</a>";
477     //
478     $param['lien']=$msg;
479     $this->f->layout->display_lien($param);
480     $msg .= "<br />";
481     $this->displayBoutonRetour($url);
482     }
483    
484     function displayPDF($url = "../scr/requeteur.php") {
485     require_once "../core/fpdf_etat.php";
486    
487     $pdf = new PDF($this->reqmo['om_sousetat_orientation'], "mm", $this->reqmo['om_sousetat_format'],
488     true,
489     'UTF-8');
490     $pdf->setPrintHeader(false);
491     // Affichage de la mention Page X/X en pied de page
492     $pdf->startPageGroup();
493     $pdf->set_footer(array(
494     "offset" => 12,
495     "html" => sprintf(
496     '<p style="text-align:center;font-size:8pt;"><em>Page %s/%s</em></p>',
497     $pdf->getPageNumGroupAlias(),
498     $pdf->getPageGroupAlias()
499     ),
500     ));
501     // Ajoute une nouvelle page à l'édition
502     $pdf->AddPage();
503     // On récupère l'enregistrement 'om_sousetat' de la collectivité en cours dans
504     // l'état 'actif'
505     $niveau = $_SESSION['niveau'];
506     $sql = " select * from ".DB_PREFIXE."om_sousetat ";
507     $sql .= " where id='".$this->reqmo["om_sousetat"]."' ";
508     $sql .= " and actif IS TRUE ";
509     $sql .= " and om_collectivite='".$_SESSION['collectivite']."' ";
510     $res2 = $this->f->db->query($sql);
511     $this->f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE);
512     $this->f->isDatabaseError($res2);
513     // Si on obtient aucun résultat
514     if ($res2->numrows() == 0) {
515     // On libère le résultat de la requête précédente
516     $res2->free();
517     //
518     if ($niveau == "") {
519     // On récupère l'identifiant de la collectivité de niveau 2
520     $sql = "select om_collectivite from ".DB_PREFIXE."om_collectivite ";
521     $sql .= " where niveau='2' ";
522     $niveau = $this->f->db->getone($sql);
523     $this->f->addToLog("pdfetat.php: db->getone(\"".$sql."\");", VERBOSE_MODE);
524     $this->f->isDatabaseError($niveau);
525     }
526     // On récupère l'enregistrement 'om_sousetat' de la collectivité de niveau
527     // 2 dans l'état 'actif'
528     $sql = " select * from ".DB_PREFIXE."om_sousetat ";
529     $sql .= " where id='".$this->reqmo["om_sousetat"]."'";
530     $sql .= " and actif IS TRUE ";
531     $sql .= " and om_collectivite='".$niveau."' ";
532     $res2 = $this->f->db->query($sql);
533     $this->f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE);
534     $this->f->isDatabaseError($res2);
535     // Si on obtient aucun résultat
536     if ($res2->numrows() == 0) {
537     // On libère le résultat de la requête précédente
538     $res2->free();
539     // On récupère l'enregistrement 'om_sousetat' de la collectivité de
540     // niveau 2 dans n'importe quel état
541     $sql = " select * from ".DB_PREFIXE."om_sousetat ";
542     $sql .= " where id='".$this->reqmo["om_sousetat"]."' ";
543     $sql .= " and om_collectivite='".$niveau."' ";
544     $res2 = $this->f->db->query($sql);
545     $this->f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE);
546     $this->f->isDatabaseError($res2);
547     }
548     }
549    
550     //
551     while ($sousetat =& $res2->fetchRow(DB_FETCHMODE_ASSOC)) {
552     $idx = "";
553     $_GET['idx'] = "";
554     //
555     $titre = '';
556     $titre = $sousetat['titre'];
557     $titre = str_replace("&aujourdhui", date('d/m/Y'), $titre);
558     $collectivite = isset($collectivite)&&$collectivite != array()?
559     $collectivite:
560     $this->f->getCollectivite();
561     if (isset($collectivite) && $collectivite != array()) {
562     //
563     foreach (array_keys($collectivite) as $elem) {
564     //
565     $temp = "&".$elem;
566     $titre = str_replace($temp, $collectivite[$elem], $titre);
567     $sql = str_replace($temp, $collectivite[$elem], $sql);
568     if ( strstr($elem, "ged_") === false && strstr($elem, "erp_") === false
569     && strstr($elem, "id_") === false && strstr($elem, "sig_") === false
570     && strstr($elem, "option_") === false ) {
571     $champs_remplacement_etat[] = "&amp;".$elem;
572     }
573     }
574     }
575     //Date au format jour_de_la_semaine jour_du_mois mois_de_l'année
576     //Ex. Lundi 12 Mars
577     $jourSemaine = array(_('Dimanche'),_('Lundi'),_('Mardi'),_('Mercredi'),_('Jeudi'),
578     _('Vendredi'),_('Samedi'));
579     $moisAnnee = array(_('Janvier'),_('Fevrier'),_('Mars'),_('Avril'),_('Mai'),
580     _('Juin'),_('Juillet'),_('Aout'),_('Septembre'),_('Octobre'),_('Novembre')
581     ,_('Decembre'));
582     $titre=str_replace("&jourSemaine",$jourSemaine[date('w')]." ".date('d')." ".$moisAnnee[date('n')-1]." ".date('Y'),$titre);
583     $sousetat['titre'] = $titre;
584     $sousetat['om_sql'] = $this->reqmo['sql'];
585     // imprime les colonnes de la requete
586     $edition = array(
587     'se_font' => 'helvetica',
588     'se_couleurtexte' => array(0,0,0)
589     );
590     $pdf->sousetatdb($this->f->db, $edition, $sousetat);
591     }
592    
593     // Construction du nom du fichier
594     $filename = date("Ymd-His");
595     $filename .= "-reqmo";
596     $filename .= "-".$this->obj;
597     $filename .= ".pdf";
598     $contenu = $pdf->Output($filename, "S");
599    
600     // Métadonnées du fichier csv résultat
601     $metadata['filename'] = $filename;
602     $metadata['size'] = strlen($contenu);
603     $metadata['mimetype'] = "application/pdf";
604     // Création du fichier sur le storage temporaire
605     $pdf_res_uid = $this->f->storage->create_temporary($contenu, $metadata);
606     // Affichage du message d'erreur ou de validation
607     if($pdf_res_uid === "OP_FAILURE" ){
608     $this->f->addToMessage("error", _("Erreur de configuration. Contactez votre administrateur."));
609     } else {
610     $msg = _("Le fichier a ete exporte, vous pouvez l'ouvrir immediatement en cliquant sur : ");
611     $msg .= "<a class='bold' target='_blanc' href=\"../spg/file.php?uid=".$pdf_res_uid."&mode=temporary\">";
612     $msg .= _("Telecharger le fichier")." [".$filename."]";
613     $msg .= "</a>";
614     $this->f->addToMessage("ok", $msg);
615     }
616     $this->f->displayMessages();
617     //
618     echo "<br />";
619     $this->displayBoutonRetour($url);
620     }
621    
622     public function display_requeteur_formulaire($param,$f) {
623     //
624     // requeteur formulaire
625     //
626     $db=$param["db"];
627     $extension = $param["extension"];
628     if (file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->obj.".".$extension.".inc.php")) {
629     include ("../sql/".OM_DB_PHPTYPE."/".$this->obj.".".$extension.".inc.php");
630     }
631     elseif (file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->obj.".".$extension.".inc")) {
632     include ("../sql/".OM_DB_PHPTYPE."/".$this->obj.".".$extension.".inc");
633     }
634     $validation = $param["validation"];
635     $cptemp = $param["cptemp"];
636     $cpts=$param["cpts"];
637     $cptsel=$param["cptsel"];
638     $error = $param["error"];
639     echo "<table cellpadding=\"0\" class=\"formEntete ui-corner-all\">\n";
640     //
641     if ($error !== false){
642 nmeucci 3988 $this->f->displayMessage("error", $error);
643 mbroquet 3730 }
644     echo "<tr><td colspan=\"2\">";
645     //
646     echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">\n";
647     //
648     echo "\t<legend class=\"ui-corner-all ui-widget-content ui-state-active\">";
649     echo _("Criteres de la requete");
650     echo "</legend>\n";
651     //
652     echo "<table>";
653     // On separe tous les champs entre crochets dans la requête
654     $temp = explode ("[", $reqmo["sql"]);
655     //
656     for ($i = 1; $i < sizeof($temp); $i++) {
657     // On vire le crochet de la fin
658     $temp1 = explode("]", $temp[$i]);
659     // On check si alias
660     $temp4 = explode (" as ", $temp1[0]);
661     if (isset($temp4[1])) {
662     $temp1[0] = $temp4[1];
663     }
664     //
665     $temp6 = $temp1[0];
666    
667     if (!isset($reqmo[$temp1[0]])) {
668     // saisie criteres where
669     //
670     if ($cpts == 0) {
671     echo "<tr>\n";
672     } elseif ($cpts == 4) {
673     echo "</tr>\n<tr>\n";
674     $cpts = 0;
675     }
676     //
677     echo "\t<td class=\"tri\">";
678     echo "&nbsp;"._($temp6)."&nbsp;<input type=\"text\" name=\"".$temp1[0]."\" value=\"\" size=\"30\" class=\"champFormulaire\" />";
679     echo "</td>\n";
680     //
681     $cpts++;
682     } else {
683     //
684    
685     if ($reqmo[$temp1[0]] == "checked") {
686     //
687     if ($cptemp == 0) {
688     echo "<tr>\n";
689     echo "\t<td colspan=\"4\"><b>";
690     echo _("Choix des champs a afficher");
691     echo "</b></td>\n";
692     echo "</tr>\n<tr>\n";
693     } elseif ($cptemp == 4) {
694     echo "</tr>\n<tr>\n";
695     $cptemp = 0;
696     }
697     //
698     echo "\t<td colspan='2' class='champs'>";
699     echo "<input type=\"checkbox\" value=\"".(($this->f->get_submitted_post_value($temp1[0])!==null||$this->f->get_submitted_get_value('step')===null||$this->f->get_submitted_get_value('step')=="0")?"Oui":"")."\" name=\"".$temp1[0]."\" size=\"40\" class=\"champFormulaire\" ".(($this->f->get_submitted_post_value($temp1[0])=="Oui"||$this->f->get_submitted_get_value('step')===null||$this->f->get_submitted_get_value('step')=="0")?"checked=\"checked\"":"")." />";
700     echo "&nbsp;&nbsp;"._($temp6)."&nbsp;";
701     echo "</td>\n";
702     //
703     $cptemp++;
704     } else {
705     //
706     $temp3 = "";
707     $temp3 = $reqmo[$temp1[0]];
708     if(!is_array($temp3)) {
709     $temp3 = substr($temp3, 0, 6);
710     }
711     //
712     if ($temp3 == "select") {
713     //
714     if ($cptsel == 0) {
715     echo "</tr><tr>\n";
716     echo "\t<td colspan=\"4\"><b>";
717     echo _("Choix des criteres de tri");
718     echo "</b></td>\n";
719     echo "</tr>\n";
720     } elseif ($cptsel == 4) {
721     echo "</tr>\n<tr>\n";
722     $cptsel = 0;
723     }
724     //
725     echo "\t<td class=\"tri\">";
726     echo _($temp6)."&nbsp;";
727     echo "<select name=\"".$temp1[0]."\" class=\"champFormulaire\">";
728     $res1 = $db->query($reqmo[$temp1[0]]);
729     $f->isDatabaseError($res1);
730     while ($row1 =& $res1->fetchRow()) {
731     echo "<option value=\"".$row1[0]."\" ".(($this->f->get_submitted_post_value($temp1[0])==$row1[0])?"selected=\"selected\"":"").">".$row1[1]."</option>";
732     }
733     echo "</select>";
734     echo "</td>\n";
735     //
736     $cptsel++;
737     }
738     //Si un tableau est fourni
739     elseif(is_array($temp3)) {
740     //
741     if ($cptsel == 0) {
742     echo "</tr><tr>\n";
743     echo "\t<td colspan=\"4\"><b>";
744     echo _("Choix des criteres de tri");
745     echo "</b></td>\n";
746     echo "</tr><tr>\n";
747     } elseif ($cptsel == 4) {
748     echo "</tr>\n<tr>\n";
749     $cptsel = 0;
750     }
751     //
752     echo "\t<td class=\"tri\">";
753     echo _($temp6)."&nbsp;";
754     echo "<select name=\"".$temp1[0]."\" class=\"champFormulaire\">";
755     foreach ($reqmo [$temp1 [0]] as $elem) {
756     echo "<option value='".$elem."' ".(($this->f->get_submitted_post_value($temp1[0])==$elem)?"selected='selected'":"").">"._($elem)."</option>";
757     }
758     echo "</select>";
759     echo "</td>\n";
760     //
761     $cptsel++;
762     }
763     // Si un input est fourni
764     else {
765     //
766     if ($cptsel == 0) {
767     echo "</tr><tr>\n";
768     echo "\t<td colspan=\"4\"><b>";
769     echo _("Choix des criteres de tri");
770     echo "</b></td>\n";
771     echo "</tr><tr>\n";
772     } elseif ($cptsel == 4) {
773     echo "</tr>\n<tr>\n";
774     $cptsel = 0;
775     }
776     //
777     echo "\t<td class=\"tri\">";
778     echo _($temp6)."&nbsp;";
779     echo "<input type=\"text\" name=\""._($temp6)."\" placeholder=\"".$reqmo[$temp6]."\" value=\"".$this->f->get_submitted_post_value($temp1[0])."\" size=\"10\" class=\"champFormulaire\" />";
780     echo "</td>\n";
781     //
782     $cptsel++;
783     }
784     }
785     }
786     // re initialisation
787     $temp1[0] = "";
788     }
789     echo "</tr>";
790     echo "</table>";
791     //
792     echo "</fieldset>\n";
793     //
794     //echo "<table>\n";
795     //
796     echo "<tr><td colspan=\"2\">";
797     //
798     echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">\n";
799     //
800     echo "\t<legend class=\"ui-corner-all ui-widget-content ui-state-active\">";
801     echo _("Parametres de sortie");
802     echo "</legend>\n";
803     //
804     echo "<table>";
805     //
806     echo "<tr>";
807     //
808     echo "<td class=\"params\">"._("Choix du format de sortie")."&nbsp;";
809     echo "<select name=\"sortie\" class=\"champFormulaire\">";
810     echo "<option value=\"tableau\" ".(($this->f->get_submitted_post_value('sortie')=="tableau")?"selected='selected'":"").">"._("Tableau - Affichage a l'ecran")."</option>";
811     echo "<option value=\"csv\" ".(($this->f->get_submitted_post_value('sortie')=="csv")?"selected='selected'":"").">"._("CSV - Export vers logiciel tableur")."</option>";
812    
813     if(isset($reqmo["om_sousetat"]) AND $reqmo["om_sousetat"] != "") {
814     echo "<option value=\"pdf\" ".(($this->f->get_submitted_post_value('sortie')=="pdf")?"selected='selected'":"").">"._("PDF - Version imprimable")."</option>";
815     }
816     echo "</select>";
817     echo "</td>";
818     //
819     echo "</tr>";
820     echo "<tr>";
821     //
822     echo "<td class=\"params\">"._("Separateur de champs (pour le format CSV)")."&nbsp;";
823     echo "<select name=\"separateur\" class=\"champFormulaire\">";
824     echo "<option ".(($this->f->get_submitted_post_value('separateur')==";")?"selected='selected'":"").">;</option>";
825     echo "<option ".(($this->f->get_submitted_post_value('separateur')=="|")?"selected='selected'":"").">|</option>";
826     echo "<option ".(($this->f->get_submitted_post_value('separateur')==",")?"selected='selected'":"").">,</option>";
827     echo "</select>";
828     echo "</td>";
829     //
830     echo "</tr>";
831     echo "<tr>";
832     //
833     echo "<td class=\"params\" >"._("Nombre limite d'enregistrements a afficher (pour le format Tableau)")."&nbsp;";
834     echo "<input type=\"text\" name=\"limite\" value=\"".(($this->f->get_submitted_post_value('limite')!==""&&$this->f->get_submitted_get_value('step')!==null&&$this->f->get_submitted_get_value('step')!="0")?$this->f->get_submitted_post_value('limite'):"100")."\" size=\"5\" class=\"champFormulaire\" />";
835     echo "</td>";
836     echo "</tr>";
837     echo "</table>";
838     //
839     echo "</fieldset>\n";
840     //
841     echo "</td></tr>\n";
842     // Fermeture de la balise table
843     echo "</table>\n";
844     }
845    
846     /**
847     * Test si la valeur passée en argument est du type attendu
848     * @param type $valeur Valeur à tester
849     * @param type $type Type attendu de la donnée
850     */
851     function hasType($valeur, $type){
852    
853     switch ($type){
854     case 'date' :
855     $d = DateTime::createFromFormat('d/m/Y', $valeur);
856     return $d && $d->format('d/m/Y') == $valeur;
857     case 'integer' :
858     return is_numeric($valeur);
859     case 'string' :
860     return is_string($valeur);
861     default :
862     return false;
863     }
864     }
865    
866     }// fin classe
867     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26