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