source: trunk/workflow/inc/report/includes/classes/Formulario.class.php @ 5307

Revision 5307, 46.2 KB checked in by pereira.jair, 12 years ago (diff)

Ticket #2416 - Inclusao da nova ferramenta de relatorios do workflow.

Line 
1<?php
2/**
3 * Formulario
4 *
5 * Implementacao de Formularios Padroes do Sistema.
6 */
7/**
8 * Formulario
9 *
10 * Implementacao de Formularios Padroes do Sistema.
11 *
12 *
13 * @author Jair Pereira <pereira.jair@gmail.com>
14 * @since 25/05/2009
15 *
16 * @package Formulario
17 */
18
19include 'FormularioHtml.class.php';
20include 'FormularioUtil.class.php';
21if (file_exists("../../xajax/xajax.inc.php")) { include_once "../../xajax/xajax.inc.php"; }
22if (file_exists("../../../xajax/xajax.inc.php")) { include_once "../../../xajax/xajax.inc.php"; }
23
24class Formulario {
25
26    /**
27     * FormularioUtil - Instï¿œncia da Classe Formulï¿œrio Util.
28     */
29    public $util = FormularioUtil;
30
31    /**
32     * Array de FormularioHtml do Formulï¿œrio
33     */
34    private $_arrinputs = array();
35
36    /**
37     * Array de funᅵᅵes em Xajax.
38     */
39    private $_arrxajax = array();
40
41    /**
42     * Array de Querys em ajax.
43     */
44    private $_arrxajaxquery = array();
45
46    /**
47     * Array de arquivos que vieram por upload.
48     */
49    private $_arrfilesuploaded = array();
50
51    /**
52     * Array de Quadros pertencentes ao formulï¿œrio.
53     */
54    private $_arrquadros = array();
55    /**
56     * Array de Campos Agrupados.
57     */
58    private $_agruparcampos = array();
59    /**
60     * Array de Campos que Jï¿œ foram Desenhados na tela,
61     * Utilizado para evitar que o mesmo campo seja desenhado duas vezes.
62     */
63    private $_desenhou = array();
64    /**
65     * Nome do Formulï¿œrio.
66     */
67    private $_nomeform;
68    /**
69     * Action do Formulï¿œrio.
70     */
71    private $_action;
72    /**
73     * Mï¿œtodo do Formulï¿œrio.
74     */
75    private $_method;
76    /**
77     * Valor do Onsubmit do formulï¿œrio.
78     */
79    private $_onsubmit;
80    /**
81     * Armazena o Cï¿œdigo HTML A ser impresso na tela.
82     */
83    //private $_htmlForm;
84   
85    private $html;
86
87    /**
88     * A funᅵᅵo desenhar() jï¿œ foi chamada?.
89     */
90    private $_desenhado = false;
91
92    /**
93     * ï¿œ um formulï¿œrio de Upload de arquivos?.
94     */
95    private $_isupload = false;
96
97    /**
98     * Depuraᅵᅵo de Cï¿œdigo ativada?
99     */
100    private $_debug = true;
101   
102    private $_iscachedform = false;
103
104    /**
105     * Array com os erros do debug.
106     */
107    private $_errors = array();
108   
109    private $_microtime;
110
111    private $inputDisplayOptions = array("open_tr" => true,
112                                         "open_td" => true,
113                                         "open_td_colspan" => 1,
114                                         "makedivision" => true,
115                                         "close_td" => true,
116                                         "close_tr" => true);
117
118    private $FirstGroupColsDisplayOptions = array("open_tr" => true,
119                                         "open_td" => true,
120                                         "open_td_colspan" => 1,
121                                         "makedivision" => true,
122                                         "close_td" => false,
123                                         "close_tr" => false);
124     
125    private $FirstGroupDisplayOptions = array("open_tr" => true,
126                                         "open_td" => true,
127                                         "open_td_colspan" => 100,
128                                         "makedivision" => true,
129                                         "close_td" => false,
130                                         "close_tr" => false);
131
132    private $InputGroupDisplayOptions = array("open_tr" => false,
133                                         "open_td" => false,
134                                         "open_td_colspan" => 1,
135                                         "makedivision" => false,
136                                         "close_td" => false,
137                                         "close_tr" => false);
138
139    private $InputGroupColsDisplayOptions = array("open_tr" => false,
140                                         "open_td" => true,
141                                         "open_td_colspan" => 1,
142                                         "makedivision" => true,
143                                         "close_td" => false,
144                                         "close_tr" => false);
145     
146    private $ButtonDisplayOptions = array("open_tr" => false,
147                                         "open_td" => false,
148                                         "makedivision" => false,
149                                         "close_td" => false,
150                                         "close_tr" => false);
151
152    /**
153     * Instancia uma nova Interface de Formulï¿œrio
154     *
155     * @param string $name Nome
156     * @param string $action Action
157     * @param string $method Mï¿œtodo
158     * @param string $onsubmit Funᅵᅵo Javascript do OnSubmit
159     * @return void
160     */
161    function Formulario($name = "frmpadrao",$action = "",$method = "post",$onsubmit = "") {
162        $this->Interface = new FormularioHtml();
163        $this->setForm($name);
164        $this->setAction($action);
165        $this->setMethod($method);
166        $this->setOnSubmit($onsubmit);
167        $this->util = new FormularioUtil();
168       // $microtime = microtime(true);
169        $microtime = rand(0,900);
170        $this->microtime = $microtime;
171        $this->adicionarHidden($name . "_pkey",$microtime);
172     //   $this->adicionarHidden($name . "_lastpkey",$_POST[$name . "_pkey"]);
173    }
174
175    /**
176     * Verifica se o ID passado jï¿œ foi adicionado como sendo um campo do formulï¿œrio.
177     *
178     * @param string $idinput ID Input
179     * @return void
180     */
181    protected function isInput($idinput) {
182        if ($idinput != "") {
183            $achou = false;
184            foreach ($this->_arrinputs as $input) {
185                if ($input->getName() == $idinput)
186                $achou = true;
187            }
188        } else {
189            $achou = true;
190        }
191        return $achou;
192    }
193
194    /**
195     * Retorna o Input para o ID passado.
196     *
197     * @param string $idinput ID Input
198     * @param boolean $retornaposicao Retorna a posiᅵᅵo do input no _arrinputs.
199     * @return void
200     */
201    protected function getInput($idinput,$retornaposicao = false) {
202        if ($idinput != "") {
203            $achou = "-1";
204            $i = 0;
205            foreach ($this->_arrinputs as $input) {
206                 
207                if ($input->getName() == $idinput) {
208                    if ($retornaposicao) {
209                        $achou = $i;
210                    } else {
211                        $achou = $input;
212                    }
213                }
214                $i = i + 1;
215            }
216        } else {
217            $achou = "-1";
218        }
219        return $achou;
220    }
221
222    /**
223     * Agrupar Campos em um Formulï¿œrio
224     *
225     * Posiciona Campos um lado do outro em um formulï¿œrio, em uma mesma linha sem criar divisï¿œes nas tabelas.
226     *
227     * Exemplo:
228     * <code>
229     * $form->adicionarCampo("nome",(.....));
230     * $form->adicionarCampo("cpf",(.....));
231     * $form->adicionarCampo("rg",(.....));
232     * $form->agruparCampos("nome,cpf,rg");
233     * </code>
234     *
235     * @param string $campos Nome dos Campos a serem Agrupados, Separados por vï¿œrgula.
236     */
237    function agruparCampos($camposagrupados,$colunas = true) {
238        $arrcampos1 = explode(";",$camposagrupados);
239        foreach ($arrcampos1 as $campos) {
240            $arrcampos = explode(",",$campos);
241            $agcampos = array($arrcampos[0] => $arrcampos);
242
243            //VERIFICA SE O CAMPO Jï¿œ FOI ADICIONADO E A ORDEM QUE FOI ADICIONADO AO FORMULï¿œRIO.
244            if ($this->_debug) {
245                //$achouprimeiro = false;
246                foreach ($arrcampos as $idcampo) {
247                     
248                    /*  if ($achouprimeiro) {
249                     if (in_array($idcampo,$this->desenhou)) {
250                     $this->adicionarErro("agruparCampos()<br>ID: " . $idcampo . " achou.",false);
251                     }
252                     }
253                     if ($idcampo == $arrcampos[0]) {
254                     $achouprimeiro = true;
255                     } */
256                    if ((!$this->isInput($idcampo)) && ($idcampo != "")) {
257                        $this->adicionarErro("agruparCampos()<br>ID: " . $idcampo . " nï¿œo ï¿œ um campo no formulï¿œrio.",false);
258                    }
259                }
260            }
261
262            $agcampos["colunas"] = $colunas;
263            array_push($this->_agruparcampos,$agcampos);
264        }
265    }
266
267    /**
268     * Adiciona um Quadro ao Formulï¿œrio
269     *
270     * $campos ï¿œ opcional, SOMENTE quando sï¿œ existe um quadro para o Formulï¿œrio, a classe automaticamente entende que ï¿œ todos os campos que jï¿œ foram adicionados.
271     *
272     * @param string $idquadro Id do Quadro
273     * @param string $titulo Tï¿œtulo do Quadro
274     * @param string $campos Campos que Pertencerï¿œo ao Quadro (separados por vï¿œrgula)
275     */
276    function adicionarQuadro($idquadro,$titulo = "",$campos = "") {
277        $arrcampos = explode(",",$campos);
278        if ($this->_debug) {
279            if (is_array($this->_arrquadros[$idquadro])) {
280                $this->adicionarErro("adicionarQuadro()<br>ID: $idquadro jï¿œ foi adicionado no formulï¿œrio.");
281            }
282            foreach ($arrcampos as $campo) {
283                if ($this->isInputInQuadro($campo)) {
284                    $this->adicionarErro("adicionarQuadro()<br>ID: $campo jï¿œ foi adicionado a outro quadro neste formulï¿œrio.");
285                }
286                if (!$this->isInput($campo)) {
287                    $this->adicionarErro("adicionarQuadro()<br>ID: $campo Nï¿œO estï¿œ adicionado no formulï¿œrio.");
288                }
289            }
290        }
291
292        if ($campos == "") {
293            $arrcampos = $this->montaArrayQuadroCampos($idquadro);
294        }
295
296        $quadro = array("idquadro" => $idquadro,"titulo" => $titulo, "campos" => $arrcampos,"botoes" => array());
297        $this->_arrquadros[$idquadro] = $quadro;
298    }
299
300    /**
301     * Funᅵᅵo interna para verificar se um Input jï¿œ foi adicionado em algum quadro.
302     *
303     * @param string $idinput Id do Input
304     * @return boolean
305     */
306    protected function isInputInQuadro($idinput) {
307        $ret = false;
308        foreach ($this->_arrquadros as $quadro) {
309            if (in_array($idinput,$quadro['campos'])) {
310                $ret = true;
311            }
312        }
313        return $ret;
314    }
315   
316    public function setCachedForm($value) {
317        $this->_iscachedform = $value;
318    }
319
320    /**
321     * Adiciona um Botï¿œo ao Rodapï¿œ de um Quadro do Formulï¿œrio
322     *
323     * @param string $idquadro Id do Quadro
324     * @param string $idbutton Id do Botï¿œo
325     */
326    function adicionarQuadroButton($idquadro,$idbutton) {
327        if (!is_array($this->_arrquadros[$idquadro])) {
328            $erro = true;
329            if ($this->_debug) {
330                $this->adicionarErro("adicionarQuadroButton()<br>ID: $idquadro Nï¿œO estï¿œ adicionado no formulï¿œrio.");
331            }
332        }
333        if (!$this->isInput($idbutton)) {
334            $erro = true;
335            if ($this->_debug) {
336                $this->adicionarErro("adicionarQuadroButton()<br>ID: $idbutton Nï¿œO ï¿œ um campo no formulï¿œrio.");
337            }
338        }
339        if (!$erro) {
340            foreach ($this->_arrinputs as $input) {
341                if ($input->getName() == $idbutton) {
342                    array_push($this->_arrquadros[$idquadro]["botoes"],$input);
343                }
344            }
345        }
346    }
347
348    /**
349     * Adiciona Campo
350     *
351     * Funᅵᅵo para adicionar campos no formulï¿œrio, permite vï¿œrios formatos de tipo.
352     *
353     * tipo: text,data,periodo,moeda,cpf,cnpj,hidden,button
354     *
355     * @param  string $name
356     * @param  string $tipo
357     * @param  string $label
358     * @param  string $title
359     * @param  string $value
360     * @param  string $obrigatorio
361     * @param  string $width
362     * @param  string $maxlenght
363     * @param  string $inforight
364     * @return void
365     */
366    function adicionarCampo($name,$tipo,$label,$title,$value = "",$obrigatorio = false,$width = "30",$maxlenght = "100",$inforight = "") {
367        $iface = new FormularioHtml();
368        $iface->setForm($this->_nomeform);
369        $iface->setTipo($tipo);
370        $iface->setName($name);
371        $valores = explode("|",$value);
372        $iface->setValue(str_replace("\'","'",$valores[0]));
373        $iface->setValueAux(str_replace("\'","'",$valores[1]));
374        $iface->setTitle($title);
375        $iface->setLabel($label);
376        $iface->setObrigatorio($obrigatorio);
377        $iface->setSize($width,$maxlenght);
378        $iface->setInfoRight($inforight);
379        if ($this->isInput($name)) {
380            if ($this->_debug) {
381                $this->adicionarErro("adicionarCampo()<br>ID: $name foi adicionado duas vezes ao formulï¿œrio. Remova um campo ou altere seu ID.");
382            }
383        } else {
384            array_push($this->_arrinputs,$iface);
385        }
386    }
387
388    /**
389     * Adiciona Campo Hidden
390     *
391     * Funᅵᅵo para adicionar campos hidden no formulï¿œrio.
392     *
393     * @param  string $name Nome do Campo
394     * @param  string $value Valor do Campo
395     * @return void
396     */
397    function adicionarHidden($name,$value) {
398        $this->adicionarCampo($name,"hidden",$name,"",$value);
399    }
400
401    /**
402     * Adiciona Arquivo
403     *
404     * Funᅵᅵo para adicionar campos file no formulï¿œrio.
405     *
406     * @param  string $name Nome do Campo
407     * @param  string $value Valor do Campo
408     * @return void
409     */
410    function adicionarUploadArquivo($name,$label,$pasta,$prefixo,$obrigatorio = false,$force = false) {
411        $this->_isupload = true;
412        $this->adicionarCampo($name,"file",$label,$pasta,$prefixo,$obrigatorio,$force);
413    }
414
415    /**
416     * Adiciona Campo Select
417     *
418     * Funᅵᅵo para adicionar campos select no formulï¿œrio.
419     *
420     * @param string $name Nome do Campo
421     * @param string $label Label do Campo
422     * @param string $title Tï¿œtulo do Campo
423     * @param string $value Valor Prï¿œ-Selecionado
424     * @param array $data Array com Conteï¿œdo do Select. Veja: $IUtils->MontaArraySelect();
425     * @param boolean $obrigatorio Campo Obrigatï¿œrio
426     * @param string $textoescolha Adiciona um Option com value = '' com o Texto passado na variï¿œvel.
427     * @param string $width Tamanho em pixels do Select
428     * @param string $height Altura em Linhas do Select (Usado para Mï¿œltiplos Campos)
429     * @param boolean $multiplo Indica se pode haver mais de um item selecionado.
430     * @return void
431     */
432    function adicionarSelect($name,$label,$title,$value,$data,$obrigatorio = false,$textoescolha = "",$width = "100",$height = "1",$multiplo = false,$selectCor = "",$arrCores = "") {
433        $iface = new FormularioHtml();
434        $iface->setForm($this->_nomeform);
435        $iface->setName($name);
436        $iface->setValue($value);
437        $iface->setTitle($title);
438        $iface->setValuesSelect($data);
439        $iface->setSize($width,$height);
440        $mostraescolha = true;
441        if ($textoescolha == "") {
442            $mostraescolha = false;
443        }
444        $iface->setMultiplo($multiplo);
445        $iface->setSelectEscolha($mostraescolha, $textoescolha);
446        $iface->setLabel($label);
447        $iface->setObrigatorio($obrigatorio);
448        $iface->setTipo("select");
449       
450        if ($selectCor != "") {
451                $iface->setValuesSelectCor($selectCor,$arrCores);
452        }
453       
454        if ($this->isInput($name)) {
455            if ($this->_debug) {
456                $this->adicionarErro("adicionarSelect()<br>ID: $name foi adicionado duas vezes ao formulï¿œrio. Remova um campo ou altere seu ID.");
457            }
458        } else {
459            array_push($this->_arrinputs,$iface);
460        }
461    }
462
463    /**
464     * Adiciona Campo CheckBox
465     *
466     * Funᅵᅵo para adicionar campos chekcbox no formulï¿œrio.
467     *
468     * @param string $name Nome do Campo
469     * @param string $label Label do Campo
470     * @param string $value Valor Prï¿œ-Selecionado
471     * @param array $data Array com Conteï¿œdo do CheckBox.
472     * @param boolean $obrigatorio Campo Obrigatï¿œrio
473     * @return void
474     */
475    function adicionarCheckBox($name,$label,$data,$obrigatorio = false) {
476        $iface = new FormularioHtml();
477        $iface->setForm($this->_nomeform);
478        $iface->setName($name);
479        $iface->setValuesChecks($data);
480        $iface->setLabel($label);
481        $iface->setObrigatorio($obrigatorio);
482        $iface->setTipo("checkbox");
483        if ($this->isInput($name)) {
484            if ($this->_debug) {
485                $this->adicionarErro("adicionarCheckBox()<br>ID: $name foi adicionado duas vezes ao formulï¿œrio. Remova um campo ou altere seu ID.");
486            }
487        } else {
488            array_push($this->_arrinputs,$iface);
489        }
490    }
491
492    /**
493     * Adiciona Campo Radios
494     *
495     * Funᅵᅵo para adicionar campos radios no formulï¿œrio.
496     *
497     * @param string $name Nome do Campo
498     * @param string $label Label do Campo
499     * @param string $value Valor Prï¿œ-Selecionado
500     * @param array $data Array com Conteï¿œdo do CheckBox.
501     * @param boolean $obrigatorio Campo Obrigatï¿œrio
502     * @return void
503     */
504    function adicionarRadio($name,$label,$data,$obrigatorio = false) {
505        $iface = new FormularioHtml();
506        $iface->setForm($this->_nomeform);
507        $iface->setName($name);
508        $iface->setValuesRadio($data);
509        $iface->setLabel($label);
510        $iface->setObrigatorio($obrigatorio);
511        $iface->setTipo("radio");
512        if ($this->isInput($name)) {
513            if ($this->_debug) {
514                $this->adicionarErro("adicionarRadio()<br>ID: $name foi adicionado duas vezes ao formulï¿œrio. Remova um campo ou altere seu ID.");
515            }
516        } else {
517            array_push($this->_arrinputs,$iface);
518        }
519    }
520
521    /**
522     * Adiciona Campo TextArea
523     *
524     * Funᅵᅵo para adicionar campos TextArea no formulï¿œrio.
525     *
526     * @param string $name Nome do Campo
527     * @param string $label Label do Campo
528     * @param string $value Valor Prï¿œ-Selecionado
529     * @param boolean $obrigatorio Campo Obrigatï¿œrio
530     * @param string $cols Colunas
531     * @param string $rows Linhas
532     * @return void
533     */
534    function adicionarTextarea($name,$label,$value,$obrigatorio = false,$cols = "80",$rows = "6") {
535        $iface = new FormularioHtml();
536        $iface->setForm($this->_nomeform);
537        $iface->setName($name);
538        $iface->setLabel($label);
539        $iface->setObrigatorio($obrigatorio);
540        $iface->setValue(str_replace("\'","'",$value));
541        $iface->setSize($cols,$rows);
542        $iface->setTipo("textarea");
543        if ($this->isInput($name)) {
544            if ($this->_debug) {
545                $this->adicionarErro("adicionarTextarea()<br>ID: $name foi adicionado duas vezes ao formulï¿œrio. Remova um campo ou altere seu ID.");
546            }
547        } else {
548            array_push($this->_arrinputs,$iface);
549        }
550    }
551
552    /**
553     * Adiciona Botï¿œo
554     *
555     * Funᅵᅵo para adicionar campos Button no formulï¿œrio.
556     *
557     * @param string $name Nome do Campo
558     * @param string $value Valor
559     * @return void
560     */
561    function adicionarButton($name,$value) {
562        $iface = new FormularioHtml();
563        $iface->setForm($this->_nomeform);
564        $iface->setName($name);
565        //$iface->setLabel($label);
566        $iface->setValue(str_replace("\'","'",$value));
567        $iface->setTipo("button");
568        if ($this->isInput($name)) {
569            if ($this->_debug) {
570                $this->adicionarErro("adicionarButton()<br>ID: $name foi adicionado duas vezes ao formulï¿œrio. Remova um campo ou altere seu ID.");
571            }
572        } else {
573            array_push($this->_arrinputs,$iface);
574        }
575    }
576
577
578    /**
579     * Adiciona Botï¿œo SUBMIT
580     *
581     * Funᅵᅵo para adicionar SUBMIT no formulï¿œrio.
582     *
583     * @param string $idquadro ID do Quadro
584     * @param string $name Nome do Campo
585     * @param string $value Valor
586     * @param string $acao Aᅵᅵo de Submit
587     * @return void
588     */
589    function adicionarSubmit($idquadro,$name,$value,$acao) {
590        $erro = false;
591        if (!is_array($this->_arrquadros[$idquadro])) {
592            if ($this->_debug) {
593                $this->adicionarErro("adicionarSubmit()<br>Quadro: $idquadro nï¿œo estï¿œ adicionado no formulï¿œrio.");
594            }
595            $erro = true;
596        }
597        if (!$erro) {
598            $this->adicionarButton($name,$value);
599            $this->adicionarCampoAcao($name,"onclick","valida(document." . $this->_nomeform . ",'" . $acao . "',true);");
600            $this->adicionarQuadroButton($idquadro,$name);
601        }
602    }
603
604    /**
605     * Adiciona Subtitulo
606     *
607     * Funᅵᅵo para adicionar Subtitulos no Formulï¿œrio
608     *
609     * @param string $value Subtï¿œtulo
610     * @return void
611     */
612    function adicionarSubTitulo($value) {
613        $iface = new FormularioHtml();
614        $iface->setForm($this->_nomeform);
615        $id = count($this->_arrinputs);
616        $iface->setName("iFace_subtitulo_" . $id);
617        $iface->setValue($value);
618        $iface->setTipo("subtitulo");
619        array_push($this->_arrinputs,$iface);
620    }
621   
622    /**
623     * Adiciona um Div
624     *
625     * Funᅵᅵo para adicionar um Div no Formulï¿œrio
626     *
627     * @param string $value Subtï¿œtulo
628     * @return void
629     */
630    function adicionarDiv($value) {
631        $iface = new FormularioHtml();
632        $iface->setForm($this->_nomeform);
633        $id = count($this->_arrinputs);
634        $iface->setName("iFace_div_" . $id);
635        $iface->setValue($value);
636        $iface->setTipo("div");
637        array_push($this->_arrinputs,$iface);
638    }
639
640    /**
641     * Altera o Nome do Formulï¿œrio
642     *
643     * @param string $name Nome do Formulï¿œrio
644     * @return void
645     */
646    protected function setForm($nome) {
647        $this->_nomeform = $nome;
648    }
649
650    /**
651     * Altera o Action do Formulï¿œrio
652     *
653     * @param string $action Action do Formulï¿œrio
654     * @return void
655     */
656    public function setAction($action) {
657        if ($action == "") { $action = $_SERVER['PHP_SELF']; }
658        $this->_action = $action;
659    }
660
661    /**
662     * Altera o Mï¿œtodo do Formulï¿œrio
663     *
664     * @param string $method Mï¿œtodo do Formulï¿œrio
665     * @return void
666     */
667    protected function setMethod($method) {
668        $this->_method = $method;
669    }
670
671    /**
672     * Altera o OnSubmit do Formulï¿œrio
673     *
674     * @param string $onsubmit OnSubmit do Formulï¿œrio
675     * @return void
676     */
677    protected function setOnSubmit($onsubmit) {
678        $this->_onsubmit = $onsubmit;
679    }
680
681    /**
682     * Escreve o Cï¿œdigo de Abertura do Formulï¿œrio.
683     *
684     * @return void
685     */
686    public function abreForm() {
687        echo "\n\n";
688        if ($this->_isupload) { $adicionarenctype = ' enctype="multipart/form-data"'; }
689        echo '<form name="' .  $this->_nomeform  . '" id="' .  $this->_nomeform  . '" method="'  . $this->_method .'" action="' .  $this->_action  . '"' . $adicionarenctype .'>';
690        echo "\n<input type='hidden' name='" .  $this->_nomeform  . "_acao' id='" .  $this->_nomeform  . "_acao'>";
691        //echo "\n<input type='hidden' name='" .  $this->_nomeform  . "_ordem' id='" .  $this->_nomeform  . "_ordem' value='" . $_POST[$this->_nomeform . "_ordem"] . "'>";
692        //echo "\n<input type='hidden' name='" .  $this->_nomeform  . "_ordemtipo' id='" .  $this->_nomeform  . "_ordemtipo' value='" . $_POST[$this->_nomeform . "_ordemtipo"] . "'>";
693    }
694
695    /**
696     * Escreve o Cï¿œdigo de Fechamento do Formulï¿œrio.
697     *
698     * @return void
699     */
700    public function fechaForm() {
701        //SALVA NA SESSï¿œO A VARIï¿œVEL QUE VERIFï¿œCA SE O FORMULï¿œRIO FOI SUBMETIDO OU SE FOI PRESSIONADO F5.
702//        session_start();
703        $_SESSION[$this->_nomeform . "_pkey"] = $this->microtime;
704        echo "\n</form>";
705    }
706
707    /**
708     * Escreve o Cï¿œdigo de Abertura de um Quadro
709     *
710     * @param string $idquadro ID do quadro a ser Aberto
711     * @return void
712     */
713    public function escreveAbreQuadro($idquadro) {
714        if ($this->_arrquadros[$idquadro]["titulo"] != "") {
715            echo "\n<div align='center'>\n<table class='tableMoldura' width='98%'  id='quadro_$idquadro'>";
716            echo "\n\t<tr class='tableSubTitulo'>\n\t\t<td colspan='4'><h2>" . $this->_arrquadros[$idquadro]["titulo"] . "</h2></td>\n\t</tr>\n\t<tr>\n\t<td>\n\t<table width='100%' border='0'><br>";
717        } else {
718            echo "\n<div align='center'>\n<table width='100%'  id='quadro_$idquadro' cellpadicionaring=0 cellspacing=0><tr><td>\n\t<table width='100%' border='0' cellpadicionaring=0 cellspacing=0>";
719        }
720    }
721
722    /**
723     * Escreve o Cï¿œdigo de Fechamento de um Quadro
724     *
725     * @param string $idquadro ID do quadro a ser Fechado
726     * @return void
727     */
728    public function escreveFechaQuadro($idquadro) {
729        echo "</table>\n\t" .
730                        "\n\t</td></tr>\n";
731
732        if (count($this->_arrquadros[$idquadro]["botoes"])) {
733            echo "\t<tr class='tableRodapeModelo1''>\n
734                        \t\t<td colspan='2' align='center'>\n";
735            foreach ($this->_arrquadros[$idquadro]["botoes"] as $botao) {
736                echo $botao->desenhaHtmlForm($this->ButtonDisplayOptions) . "";
737                array_push($this->_desenhou,$botao->getName());
738            }
739
740            echo "</td>\n\t</tr>\n";
741        }
742
743
744        echo "</table>\n
745                </div>\n";
746    }
747
748
749    /**
750     * Adiciona uma Aᅵᅵo Javascript para qualquer campo do formulï¿œrio
751     *
752     * Exemplo:
753     * <code>
754     * $form->adicionarCampo("nome",(...));
755     * $form->adicionarCampoAcao("nome","onclick","alert('onclick');");
756     * $form->adicionarCampoAcao("nome","onblur","alert('onblur');");
757     * </code>
758     *
759     * Possï¿œveis valores para tipo:
760     * onclick, onchange, onblur, onmouseout, onmousemove, onkeydown, onkeypress, onkeyup
761     *
762     *
763     * @param string $name Nome do Campo
764     * @param string $tipo Tipo de Aᅵᅵo
765     * @param string $javascript Cï¿œdigo em JavaScript a ser Executado.
766     * @return void
767     */
768    public function adicionarCampoAcao($name,$tipo,$javascript) {
769        $i = 0;
770        if (!$this->isInput($name)) {
771            $this->adicionarErro("adicionarCampoAcao()<br>ID: " . $name . " nï¿œo ï¿œ um campo no formulï¿œrio.",false);
772        }
773        foreach ($this->_arrinputs as $input) {
774            $i = $i + 1;
775            if (is_object($this->_arrinputs[$i])) {
776                if ($this->_arrinputs[$i]->getName() == $name) {
777                    $campo = $this->_arrinputs[$i];
778                    $campo->adicionarEvento(strtolower($tipo),$javascript);
779                    $this->_arrinputs[$i] = $campo;
780                }
781            }
782        }
783    }
784
785
786    /**
787     * Funᅵᅵo utilizada internamente para verificar se um botï¿œo faz parte de um quadro.
788     *
789     * @param string $name Nome do Botï¿œo
790     * @return boolean
791     */
792    protected function isInRodapeQuadro($name) {
793        $ret = false;
794        foreach ($this->_arrquadros as $quadro) {
795            foreach ($quadro["botoes"] as $botoes) {
796                if ($botoes->getName() == $name) {
797                    $ret = true;
798                }
799            }
800        }
801        return $ret;
802    }
803
804    /**
805     * Funᅵᅵo utilizada para Desenhar um campo do Formulï¿œrio.
806     *
807     * @param string $name Nome do Botï¿œo
808     * @param boolean true $showtableRow Escreve a Divisï¿œo TR
809     * @param boolean treu $showtableDivision Escreve a Divisï¿œo TD
810     * @return boolean
811     */
812    public function desenhaCampo($name,$options = "") {
813        if ($options == "") { $options = $this->inputDisplayOptions; }
814        if (!is_object($name)) {
815            if (!in_array($name,$this->_desenhou)) {
816                foreach ($this->_arrinputs as $input) {
817                    if ($input->getName() == $name) {
818                        if (!$this->isInRodapeQuadro($input->getName())) {
819                            echo $input->desenhaHtmlForm($options);
820                            array_push($this->_desenhou,$input->getName());
821                        }
822                    }
823                }
824            } else {
825                $this->adicionarErro("desenhaCampo()<br>Nï¿œo ï¿œ possï¿œvel desenhar o ID: $name jï¿œ foi desenhado no formulï¿œrio.");
826            }
827        } else {
828            $input = $name;
829            if (!in_array($input->getName(),$this->_desenhou)) {
830                if (!$this->isInRodapeQuadro($input->getName())) {
831                    echo $input->desenhaHtmlForm($options);
832                    array_push($this->_desenhou,$input->getName());
833                }
834            } else {
835                //$this->adicionarErro("desenhaCampo()<br>Nï¿œo ï¿œ possï¿œvel desenhar o ID: " . $input->getName() . " jï¿œ foi desenhado no formulï¿œrio.");
836            }
837
838        }
839    }
840
841    /**
842     * Funᅵᅵo utilizada internamente para Desenhar campos Agrupados no Formulï¿œrio.
843     *
844     * @param string $name Nome do Botï¿œo
845     * @param boolean true $colunas Escreve a Divisï¿œo TR
846     * @return void
847     */
848    protected function desenhaAgrupados($campo) {
849        foreach ($this->_agruparcampos as $campoagru) {
850            $colunas = $campoagru["colunas"];
851            if ($colunas) {
852                $firstDisplayGroups = $this->FirstGroupColsDisplayOptions;
853                $displaygroups =        $this->InputGroupColsDisplayOptions;
854            } else {
855                $firstDisplayGroups = $this->FirstGroupDisplayOptions;
856                $displaygroups =        $this->InputGroupDisplayOptions;
857            }
858            if (count($campoagru[$campo])) {
859                foreach ($this->_arrinputs as $input) {
860                    if (in_array($input->getName(),$campoagru[$campo])) {
861                        if ($input->getName() == $campo) {
862                            echo $this->desenhaCampo($input,$firstDisplayGroups);
863
864                        } else {
865
866                            if ($this->_debug) {
867                                if (in_array($input->getName(),$this->_desenhou)) {
868                                    $this->adicionarErro("Funᅵᅵo Interna desenhaAgrupados()<br>Nï¿œo ï¿œ possï¿œvel desenhar o ID: " . $input->getName() . " na posiᅵᅵo correta.<br> O ID foi adicionado ao formulï¿œrio antes da chave do agrupamento. Verifique a ordem de criaᅵᅵo dos campos agrupados, ou se o ID nï¿œo foi adicionado a outro quadro.",true);
869                                }
870                            }
871                            echo $this->desenhaCampo($input,$displaygroups);
872                        }
873                    }
874                }
875            }
876        }
877    }
878
879    /**
880     * Funᅵᅵo interna utilizada para montar o array de campos para um quadro quando nï¿œo ï¿œ informado nenhum campo no parï¿œmetro campos na funᅵᅵo adicionarQuadro, asumindo assim que todos os campos restantes serï¿œo adicionados nesse ï¿œltimo quadro.
881     *
882     * @param string $idquadro ID do quadro a ser Desenhado.
883     * @return void
884     */
885    protected function montaArrayQuadroCampos($idquadro) {
886        $arrcampos = array();
887        foreach ($this->_arrinputs as $input) {
888            if (!$this->isInputInQuadro($input->getName())) {
889                //echo $input->getName() . "<br>";
890                array_push($arrcampos,$input->getName());
891            }
892        }
893        return $arrcampos;
894        //print_r($this->_arrquadros);
895    }
896
897    /**
898     * Funᅵᅵo utilizada para desenhar um quadro especï¿œfico.
899     *
900     * @param string $idquadro ID do quadro a ser Desenhado.
901     * @return void
902     */
903    public function desenhaQuadro($idquadro) {
904
905
906
907        $quadro = $this->_arrquadros[$idquadro];
908        $this->escreveAbreQuadro($idquadro);
909         
910         
911        foreach ($this->_arrinputs as $input) {
912               
913            //VERIFICA SE O CAMPO A SER DESENHADO PERTENCE AO QUADRO.
914            if (in_array($input->getName(),$quadro["campos"])) {
915                $desenhou = false;
916                //VERIFICA SE EXISTEM CAMPOS AGRUPADOS
917                if (count($this->_agruparcampos)) {
918                    foreach ($this->_agruparcampos as $campoagru) {
919                        if (count($campoagru[$input->getName()])) {
920                            //CHAMA A FUNᅵᅵO PARA DESENHAR OS CAMPOS AGRUPADOS.
921                            $this->desenhaAgrupados($input->getName());
922                            $desenhou = true;
923                        }
924                    }
925                }
926                 
927                if (!$desenhou) {
928                    //CASO Nï¿œO SEJAM CAMPOS AGRUPADOS DESENHA O CAMPO NORMAL.
929                    echo $this->desenhaCampo($input,$this->inputDisplayOptions);
930                }
931            }
932        }
933        $strcampos = "";
934        foreach ($quadro["campos"] as $campo) {
935            $strcampos .= $campo  . ",";
936        }
937        echo "<div id='" . $idquadro . "_campos' style='display:none;'>$strcampos</div>";
938        $this->escreveFechaQuadro($idquadro);
939    }
940
941    /**
942     * Desenha todos os quadros e todos os campos do formulï¿œrio.
943     *
944     * @return void
945     */
946    public function desenhaCampos() {
947        $this->_desenhado = true;
948        foreach ($this->_arrquadros as $quadro) {
949            $this->desenhaQuadro($quadro["idquadro"]);
950        }
951    }
952
953    /**
954     * Desenha o Formulï¿œrio.
955     *
956     * @return void
957     */
958    function desenhar() {
959        if (!$this->_desenhado) {
960            $this->_desenhado = true;
961            ob_start();
962            $this->abreForm();
963            $this->desenhaCampos();
964            $this->fechaForm();
965            $html = ob_get_contents();
966            ob_end_clean();
967            $this->displayErros();
968            $this->html = $html;
969            echo $html;
970        } else {
971            $this->adicionarErro("desenhar()<br>Formulï¿œrio jï¿œ foi Desenhado anteriormente.",true);
972        }
973    }
974
975    /**
976     * Altera o Valor do DEBUG para fazer Depuraᅵᅵo de Erros.
977     *
978     * @return void
979     */
980    function setDebug($value) {
981        $this->_debug = $value;
982    }
983
984
985    /**
986     * Verifica se o Formulï¿œrio foi Enviado para a aᅵᅵo passada como parï¿œmetro.
987     *
988     * Exemplo:
989     * <code>
990     * if ($form->isSubmit("enviar")) {
991     *   //executa a aᅵᅵo do botï¿œo enviar.
992     * }
993     * </code>
994     *
995     * @param string $acao Aᅵᅵo do Formulï¿œrio.
996     * @return void
997     */
998    public function isSubmit($acao,$permitirf5 = false) {
999        if (!$this->_iscachedform) {
1000                if ($this->_method == "post") {
1001                    $varacao = $_POST[$this->_nomeform . '_acao'];
1002                } else {
1003                    $varacao = $_GET[$this->_nomeform . '_acao'];
1004                }
1005               
1006                $ret = true;
1007               
1008                if ($this->_desenhado) {
1009                    $this->adicionarErro("isSubmit()<br>Ordem da funᅵᅵo isSubmit deve estar antes do formulï¿œrio ser desenhado.",true);
1010                }
1011               
1012               
1013                //VERIFICA SE O F5 FOI PRESSIONADO
1014                //session_start();
1015                if (!$permitirf5) {
1016                        $sesspkey = $_SESSION[$this->_nomeform . '_pkey'];
1017                        $postpkey = $_POST[$this->_nomeform . '_pkey'];
1018                        if ($postpkey != "") {
1019                            if ($postpkey != $sesspkey) {
1020                                 //$this->adicionarErro("isSubmit()<br>Impossï¿œvel fazer aᅵᅵo, F5 pressionado.",false);
1021                                 //$ret = false;
1022                            }
1023                        }
1024                }
1025               
1026                if ($ret) {
1027                    if ($varacao == $acao) {
1028                        if ($this->_isupload) {
1029                            include('UploadFile.class.php');
1030                            foreach ($this->_arrinputs as $input) {
1031                                if ($input->getTipo() == "file") {
1032                                    $fname = $input->getName();
1033                                    $pasta = $input->getTitle();
1034                                    $prefixo = $input->getValue();
1035                                    $force = $input->getWidth();
1036                                    //echo $force;
1037                                    $upload = new UploadFile($_FILES[$fname],$pasta, $prefixo, $force);
1038                                    if($upload->doUpload() === true) {
1039                                        $filename = $upload->getFileNomeFinal();
1040                                        $this->_arrfilesuploaded[$fname] = array( "field" => $fname, "folder" => $pasta, "prefix" => $prefixo, "filename" => $filename, "completefilename" => $pasta . $filename);
1041                                    } else {
1042                                        echo $upload->getSysError();
1043                                        echo $upload->getSysDebug();
1044                                    }
1045                                }
1046                            }
1047                        }
1048                        $ret = true;
1049                    } else {
1050                        $ret = false;
1051                    }
1052                }
1053        }
1054        return $ret;
1055    }
1056    /**
1057     * Funᅵᅵo que retorna os arquivos que foram enviados e salvos por upload.
1058     */
1059    public function getFiles() {
1060        return $this->_arrfilesuploaded;
1061    }
1062
1063
1064    /**
1065     * Funᅵᅵo usada internamente para adicionar um erro ao formulï¿œrio.
1066     *
1067     * @param string $msgerro Mensagem de Erro
1068     * @param boolean $fatal Se ï¿œ um erro Fatal = true ()
1069     * */
1070    protected function adicionarErro($msgerro,$fatal = false) {
1071        if ($fatal) { $this->_errors = array(); }
1072        $erro = array("msgerro" => $msgerro,"fatal" => $fatal);
1073        array_push($this->_errors,$erro);
1074         
1075        if ($fatal) {
1076            $this->displayErros();
1077            exit;
1078        }
1079         
1080    }
1081
1082
1083    /**
1084     * Funᅵᅵo usada para exibir os erros.
1085     *
1086     * */
1087    public function displayErros() {
1088        if ($this->_debug) {
1089            if (count($this->_errors)) {
1090                echo "<style type='text/css'>#erros { background: #BAD0E5; color: #000000; font-size: 12px; Verdana,Arial,Helvetica,sans-serif; font-weight: bold; margin: 15px; padicionaring: 0px; padicionaring-top: 3px; padicionaring-bottom: 3px;  text-align: left; }" .
1091                                        ".erro { background: #E6EAEE; color: #000000; font-size: 12px; Verdana,Arial,Helvetica,sans-serif; font-weight: bold; margin: 2px; padicionaring: 5px; text-align: left; }" .
1092                                        "</style>";
1093                echo "<div id='erros'>";
1094                foreach ($this->_errors as $erro) {
1095                    echo "<div class=erro>";
1096
1097                    if ($erro["fatal"]) {
1098                        $adicionarmsg = "<span style='color: #990000;'><b>ERRO FATAL:</b></span> ";
1099                    } else {
1100                        $adicionarmsg = "ERRO: ";
1101                    }
1102                    echo $adicionarmsg . $erro["msgerro"];
1103                    echo "</div>";
1104                }
1105                echo "</div>";
1106            }
1107        }
1108    }
1109
1110
1111    /**
1112     * Funᅵᅵo utilizada para Desenhar o XAJAX do formulï¿œrio e as funᅵᅵes registradas.
1113     */
1114    public function desenhaXAjax() {
1115         
1116         
1117         
1118        $ajax = new xajax("",$this->_nomeform . "_xajax_",'ISO-8859-1');
1119        $ajax->decodeUTF8InputOn();
1120         
1121         
1122         
1123         
1124        foreach ($this->_arrxajax as $xajax) {
1125             
1126            $findInput = $this->getInput($xajax['idorigem']);
1127
1128            $sql = $this->getSQLXajaxQuery($xajax['idquery']);
1129            $fparametros = '$' . $this->_arrxajaxquery[$xajax['idquery']]["parametros"];
1130            $fparametros = str_replace(",",',$',$fparametros);
1131             
1132            $camposquery = $this->_arrxajaxquery[$xajax['idquery']]["campos"];
1133            $campos = explode(",",$camposquery);
1134            //echo $camposquery;
1135
1136            if ($xajax['funcao'] == "redesenhar") {
1137                 
1138                $funcao = "";
1139                 
1140                if ($findInput->getTipo() == "select") {
1141                    $funcao =
1142                        'function ' . $xajax['idfuncao'] . '(' . $fparametros . '){
1143                                            $objResponse = new xajaxResponse("ISO-8859-1");
1144                                            global $conn;
1145                                            //$objResponse->AddAssign("img_' . $xajax['idcampo'] . '","style.display","");
1146                                                $sql = "' . $sql . '";
1147                                                $IUtils = new FormularioUtil();
1148                                $data = $IUtils->MontaArraySelect($conn,$sql,"' . $campos[0] .'","' . $campos[1] .'");
1149                                                $iface = new FormularioHtml();
1150                                        $iface->setForm("' . $this->_nomeform . '");
1151                                                $iface->setName("' .  $xajax['idorigem'] . '") ;
1152                                                $iface->setValue("' . $findInput->getValue() . '");
1153                                                $iface->setTitle("' . $findInput->getTitle() . '");
1154                                                $iface->setValuesSelect($data);
1155                                                $iface->setSize(' . $findInput->getWidth() .  ',' . $findInput->getHeight()  . ');
1156                                                $mostraescolha = true;
1157                                        $textoescolha = "' . $findInput->getSelectEscolhaValue() . '";
1158                                                if ($textoescolha == "") {
1159                                                        $mostraescolha = false;
1160                                                }
1161                                                $iface->setMultiplo("' . $findInput->getMultiplo() . '");
1162                                                $iface->setSelectEscolha($mostraescolha, $textoescolha);
1163                                                $iface->setLabel("' . $findInput->getLabel() . '");
1164                                                $iface->setObrigatorio("' . $findInput->getObrigatorio() .'");
1165                                                $iface->setTipo("select");
1166                                                $iface->select();
1167                                                $div = $iface->getHtml();
1168                                                $objResponse->AddAssign(\'span_id_' . $xajax['idorigem'] . '\',\'innerHTML\',$div);
1169                                            //$objResponse->AddScript(\'sleep(5000);\');
1170                                                //$objResponse->AddAssign("img_' . $xajax['idcampo'] . '","style.display","");
1171                                            return $objResponse->getXML();
1172                                        }';
1173                }
1174                if ($findInput->getTipo() == "checkbox") {
1175                    $funcao =
1176                        'function ' . $xajax['idfuncao'] . '(' . $fparametros . '){
1177                                            $objResponse = new xajaxResponse("ISO-8859-1");
1178                                            global $conn;
1179                                                $sql = "' . $sql . '";
1180                                                $IUtils = new FormularioUtil();
1181                                $data = $IUtils->MontaArrayCheckBox($conn,$sql,"' . $campos[0] .'","' . $campos[1] .'");
1182                                                $iface = new FormularioHtml();
1183                                        $iface->setForm("' . $this->_nomeform . '");
1184                                                $iface->setName("' .  $xajax['idorigem'] . '") ;
1185                                                $iface->setValuesChecks($data);
1186                                                $iface->setLabel("' . $findInput->getLabel() . '");
1187                                                $iface->setObrigatorio("' . $findInput->getObrigatorio() .'");
1188                                                $iface->setTipo("checkbox");
1189                                                $iface->checkbox();
1190                                                $div = $iface->getHtml();
1191                                                $objResponse->AddAssign(\'span_id_' . $xajax['idorigem'] . '\',\'innerHTML\',$div);
1192                                            return $objResponse->getXML();
1193                                        }';
1194                }
1195                 
1196                if ($findInput->getTipo() == "radio") {
1197                    $funcao =
1198                        'function ' . $xajax['idfuncao'] . '(' . $fparametros . '){
1199                                            $objResponse = new xajaxResponse("ISO-8859-1");
1200                                            global $conn;
1201                                                $sql = "' . $sql . '";
1202                                                $IUtils = new FormularioUtil();
1203                                $data = $IUtils->MontaArrayCheckBox($conn,$sql,"' . $campos[0] .'","' . $campos[1] .'");
1204                                                $iface = new FormularioHtml();
1205                                        $iface->setForm("' . $this->_nomeform . '");
1206                                                $iface->setName("' .  $xajax['idorigem'] . '") ;
1207                                                $iface->setValuesRadio($data);
1208                                                $iface->setLabel("' . $findInput->getLabel() . '");
1209                                                $iface->setObrigatorio("' . $findInput->getObrigatorio() .'");
1210                                                $iface->setTipo("radio");
1211                                                $iface->radio();
1212                                                $div = $iface->getHtml();
1213                                                $objResponse->AddAssign(\'span_id_' . $xajax['idorigem'] . '\',\'innerHTML\',$div);
1214                                            return $objResponse->getXML();
1215                                        }';
1216                }
1217
1218                //echo $funcao;
1219
1220                if ($funcao != "") {
1221                    eval($funcao);
1222                }
1223                 
1224            }
1225
1226
1227
1228        }
1229        foreach ($this->_arrxajax as $xajax) {
1230            $ajax->registerFunction($xajax['idfuncao']);  //38
1231
1232            if ($xajax['idquery'] != "") {
1233                $parametros = $this->_arrxajaxquery[$xajax['idquery']]["valores"];
1234            } else {
1235                $parametros = $xajax["valores"];
1236            }
1237
1238            $this->adicionarCampoAcao($xajax['idcampo'],$xajax['acao']," formUtilExibeImgAjax('" . $xajax['idorigem'] . "'); " . $this->_nomeform . "_xajax_" . $xajax['idfuncao'] . "(" . $parametros .");  setTimeout('formUtilOcultaImgAjax(\'" . $xajax['idorigem'] . "\')',3000); ");
1239        }
1240        $ajax->processRequests();
1241        $ajax->printJavascript();
1242    }
1243
1244
1245    /**
1246     * Funᅵᅵo Utilizada para adicionar ï¿œ um campo especï¿œfico uma funᅵᅵo em XAJAX declarada fora do formulï¿œrio.
1247     * Tambï¿œm faz o registro a funᅵᅵo em XAJAX no formulï¿œrio.
1248     */
1249    public function adicionarCampoXajax($idcampo,$acao,$idfuncao,$valores) {
1250        $ajax = array( "idfuncao" => $idfuncao, "funcao" => "funcao", "idcampo" => $idcampo, "valores" => $valores, "acao" => $acao);
1251        array_push($this->_arrxajax,$ajax);
1252    }
1253
1254    /**
1255     * Funᅵᅵo utilizada para Redesenhar um campo utilizando uma query em XAJAX.
1256     */
1257    public function adicionarXajaxRedesenhar($idorigem,$idquery,$idcampo,$acao) {
1258        $rand = rand(0,999);
1259        $nomefuncao = "redesenhar_" . $idorigem . "_" . $idcampo . "_" . $acao;
1260        $ajax = array( "idfuncao" => $nomefuncao, "funcao" => "redesenhar", "idquery" => $idquery,"idorigem" => $idorigem,"idcampo" => $idcampo, "acao" => $acao);
1261        array_push($this->_arrxajax,$ajax);
1262    }
1263
1264    /**
1265     * Funᅵᅵo utilizada Internamente para retornar o SQL formatado de uma query em XJAX.
1266     */
1267    protected function getSQLXajaxQuery($idquery) {
1268        foreach ($this->_arrxajaxquery as $query) {
1269            if ($query['idquery'] == $idquery) {
1270                $fparametros = '$' . $query["parametros"];
1271                $fparametros = str_replace(",",',$',$fparametros);
1272                $arrparametros = explode(",",$query["parametros"]);
1273                $sql = $query['sql'];
1274                foreach ($arrparametros as $parametro) {
1275                    $sql = str_replace('{' . $parametro. '}','$' . $parametro,$sql);
1276                }
1277            }
1278        }
1279        return $sql;
1280    }
1281
1282    /**
1283     * Funᅵᅵo utilizada para adicionar uma Query em XAJAX ao formulï¿œrio.
1284     */
1285    public function adicionarXajaxQuery($idquery,$sql,$campos,$parametros,$valores) {
1286        $query = array( "idquery" => $idquery, "sql" => $sql, "campos" => $campos, "parametros" => $parametros,"valores" => $valores);
1287        $this->_arrxajaxquery[$idquery] = $query;
1288    }
1289
1290    public function getNome() {
1291        return $this->_nomeform;
1292    }
1293
1294    public function setInFormFieldsAsHidden($form) {
1295        $form->adicionarHidden($this->_nomeform . "_acao",$_POST[$this->_nomeform . "_acao"]);
1296       // $form->adicionarHidden($this->_nomeform . "_ordem",$_POST[$this->_nomeform . "_ordem"]);
1297       // $form->adicionarHidden($this->_nomeform . "_ordemtipo",$_POST[$this->_nomeform . "_ordemtipo"]);
1298        foreach ($this->_arrinputs as $input) {
1299            $valor = "";
1300            if ($_POST[$input->getName()]) {
1301                $valor = $_POST[$input->getName()];
1302            } else {
1303                $valor = $_GET[$input->getName()];
1304            }
1305            $form->adicionarHidden($input->getName(),$valor);
1306        }
1307        return $form;
1308    }
1309
1310}
1311
1312
1313?>
Note: See TracBrowser for help on using the repository browser.