]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MLIB/HTML/ArbolDB.php
Se agrega a la clase MLIB_PDF_Tabla y MLIB_PDF_Tabla_Estilo la posibilidad de
[mecon/meconlib.git] / lib / MLIB / HTML / ArbolDB.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                                     mlib
4 -------------------------------------------------------------------------------
5 This file is part of mlib.
6
7 mlib is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2 of the License, or (at your option)
10 any later version.
11
12 mlib is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15  
16 You should have received a copy of the GNU General Public License; if not,
17 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 Boston, MA  02111-1307  USA
19 -------------------------------------------------------------------------------
20 Creado: jue jul 17 15:33:41 ART 2003
21 Autor:  Gonzalo Merayo <gmeray@mecon.gov.ar>
22         Leandro Lucarella <llucar@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'MLIB/HTML/Arbol.php';
28 require_once 'DB.php';
29
30 /**
31  * DESC
32  *
33  * @access public
34  */
35 class MLIB_HTML_ArbolDB extends MLIB_HTML_Arbol
36 {
37     
38     /**
39      * DESC
40      *
41      * @var string $padre
42      * @access public
43      */
44     var $padre = '';
45     
46     /**
47      * DESC
48      *
49      * @var TIPO $tabla
50      * @access public
51      */
52     var $tabla;
53     
54     /**
55      * DESC
56      *
57      * @var string $nombre
58      * @access public
59      */
60     var $nombre;
61     
62     /**
63      * DESC
64      *
65      * @var TIPO $id   
66      * @access public
67      */
68     var $id;
69     
70     /**
71      * DESC
72      *
73      * @var TIPO $id_activo
74      * @access public
75      */
76     var $id_activo;
77     
78     /**
79      * DESC
80      *
81      * @var string $link 
82      * @access public
83      */
84     var $link = '';
85     
86     /**
87      * DESC
88      *
89      * @var string $link_append
90      * @access public
91      */
92     var $link_append = '';
93     
94     /**
95      * DESC
96      *
97      * @var string $where
98      * @access public
99      */
100     var $where = '';
101     
102     /**
103      * DESC
104      *
105      * @var string $order 
106      * @access public
107      */
108     var $order = '';
109     
110     /**
111      * DESC
112      *
113      * @var DB $db   
114      * @access public
115      */
116     var $db;
117     
118     /**
119      * Constructor
120      *
121      * @param TIPO $dbdata DESC
122      * @param TIPO $titulo DESC
123      * @param string $link_append DESC
124      *
125      * @return void
126      * @access public
127      */
128     function MLIB_HTML_ArbolDB($dbdata, $titulo, $link_append = '', $expandir = false)
129     {
130         if(isset($dbdata['id_padre']))
131             $this->padre = $dbdata['id_padre'];
132         $this->tabla = $dbdata['tabla'];
133         $this->nombre = $dbdata['nombre'];
134         $this->id = $dbdata['id'];
135         $this->id_activo = @$dbdata['id_activo'];
136         // FIXME - Deprecated!
137         if(isset($dbdata['prepend_link']))
138             $link_append = $dbdata['prepend_link']; 
139         if(isset($dbdata['link']))
140             $this->link = $dbdata['link']; 
141         if(isset($dbdata['where']))
142             $this->where = $dbdata['where'];
143         if(isset($dbdata['habilitado']))
144             $this->habilitado = $dbdata['habilitado'];
145         if(isset($dbdata['order']))
146             $this->order = ' ORDER BY '.$dbdata['nombre'].' '.$dbdata['order']; 
147         $this->db = $dbdata['db']; 
148         
149         if(!$expandir)
150         {
151           $this->expandir = array($this->id_activo);
152           if(isset($this->id_activo))
153           {
154             $id = $this->id_activo;
155             while($id != 0)
156             {
157               $sql = "SELECT $this->padre
158                       FROM $this->tabla
159                       WHERE $this->id = '".$id."'";
160               $id = $this->db->getOne($sql);
161               $this->expandir[] = $id;
162             }
163           }
164         }
165
166         parent::MLIB_HTML_Arbol(array(), $titulo, $link_append);
167         $this->datos = $this->BuscarHijos(0);
168     }
169      
170     /**
171      * DESC
172      *
173      * @param TIPO $id DESC
174      *
175      * @return TIPO
176      * @access public
177      */
178     function BuscarHijos($id)
179     {
180         $sql = "SELECT $this->nombre, $this->id ";
181         if($this->link)
182             $sql .=  ", $this->link ";
183         $sql .=  "FROM $this->tabla ";
184         if($this->padre or $this->where)
185           $sql .= 'WHERE ';
186         if($this->padre) {
187           $sql .= "$this->padre = '$id'";
188           if ($this->where)
189             $sql .= ' AND';
190         } elseif ($this->where)
191           $sql .= $this->where;
192         if(isset($this->habilitado))
193           $sql .= " AND ".$this->habilitado." = 1 ";
194         $sql .= $this->order;
195         $result = $this->db->query($sql);
196         if(DB::isError($result))
197           die($result->getMessage());
198         $dat = array();
199         while($row = $result->fetchRow())
200         {
201             $titulo = $row[0];
202             $id = $row[1];
203             if(!$this->padre || !(!isset($this->expandir) ||
204                               in_array($id, $this->expandir)))
205                        $sub = array();
206             else $sub = $this->BuscarHijos($id);
207             $link = strval(@$row[2]);
208             $d = array(
209             'titulo'=> $titulo,
210             'link' => $link,
211             'id' => $id,
212             'sub' => $sub 
213             );
214         if(isset($this->expandir) && in_array($id, $this->expandir) && $id != $this->id_activo)
215           $d['bold'] = 1;
216         if (!is_null($this->id_activo) and $id == $this->id_activo) {
217             $d['activo'] = 1;
218         }
219         $dat[] = $d;
220         }
221         return $dat;
222
223     }
224
225 }
226
227 ?>