]> git.llucax.com Git - mecon/ai.git/blob - sistema/local_lib/GrupoSecciones.php
be0548868539bba86a0c3e069e86c126fbdf0783
[mecon/ai.git] / sistema / local_lib / GrupoSecciones.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // |                      Ministerio de Economía                        |
5 // |                  AI (Administrador de Intranet)                    |
6 // +--------------------------------------------------------------------+
7 // | This file is part of AI.                                           |
8 // |                                                                    |
9 // | AI is free software; you can redistribute it and/or modify         |
10 // | it under the terms of the GNU General Public License as published  |
11 // | by the Free Software Foundation; either version 2 of the License,  |
12 // | or (at your option) any later version.                             |
13 // |                                                                    |
14 // | AI is distributed in the hope that it will be useful, but          |
15 // | WITHOUT ANY WARRANTY; without even the implied warranty of         |
16 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
17 // | General Public License for more details.                           |
18 // |                                                                    |
19 // | You should have received a copy of the GNU General Public License  |
20 // | along with Hooks; if not, write to the Free Software Foundation,   |
21 // | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
22 // +--------------------------------------------------------------------+
23 // | Creado: Tue Jun 24 16:22:07 2003                                   |
24 // | Autor:  Leandro Lucarella <llucar@mecon.gov.ar>                    |
25 // +--------------------------------------------------------------------+
26 //
27 // $Id$
28 //
29
30 // +X2C Class 414 :GrupoSecciones
31 /**
32  * Grupo de secciones.
33  *
34  * @access public
35  */
36 class GrupoSecciones {
37     /**
38      * ID del grupo de secciones.
39      *
40      * @var    int $grupo
41      * @access public
42      */
43     var $grupo = 0;
44
45     /**
46      * Nombre.
47      *
48      * @var    string $nombre
49      * @access public
50      */
51     var $nombre = '';
52
53     /**
54      * @var    int $padre
55      * @access public
56      */
57     var $padre = 0;
58
59     /**
60      * Grupos de secciones que tiene este grupo.
61      *
62      * @var    array $hijos
63      * @access protected
64      */
65     var $_hijos = array();
66
67     /**
68      * Secciones que pertenecen a este grupo.
69      *
70      * @var    array $secciones
71      * @access public
72      */
73     var $secciones = array();
74
75     /**
76      * Antigedad (en d?s) de las noticias a mostrar.
77      *
78      * @var    int $antiguedad
79      * @access public
80      */
81     var $antiguedad = 0;
82
83     /**
84      * True si hay que mostrar los grupos hijos (?? FIXME).
85      *
86      * @var    bool $mostrarHijos
87      * @access public
88      */
89     var $mostrarHijos = false;
90
91     /**
92      * Indica si esta habilitado.
93      *
94      * @var    bool $habilitado
95      * @access public
96      */
97     var $habilitado = true;
98
99     /**
100      * Gets Hijos.
101      *
102      * @return array
103      * @access public
104      */
105     function getHijos()
106     {
107         return $this->_hijos;
108     }
109
110     // ~X2C
111
112     // +X2C Operation 464
113     /**
114      * @param  int $grupo ID del grupo.
115      *
116      * @return void
117      * @access public
118      */
119     function GrupoSecciones($grupo = 0)// ~X2C
120     {
121         $this->grupo = $grupo;
122     }
123     // -X2C
124
125
126     // +X2C Operation 453
127     /**
128      * @param  mixed &$db Base de datos o Resultado a utilizar.
129      *
130      * @return bool
131      * @access public
132      */
133     function cargar(&$db)// ~X2C
134     {
135         $grupo = intval($this->grupo);
136         if (is_a($db, 'db_result')) {
137             $dbh    =& $db->dbh;
138             $result =& $db;
139         // Si no es un resultado, hago el query.
140         } else {
141             $dbh    =& $db;
142             $result =& $dbh->query(
143                 "SELECT *
144                     FROM grupo_secciones
145                     WHERE grupo = $grupo"
146             );
147             if (DB::isError($result)) {
148                 return $result;
149             }
150         }
151         // Obtengo la fila.
152         $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
153         if (!$row) {
154             return PEAR::raiseError("No hay más resultados en la DB [grupo=$grupo]", CODIGO DE ERROR);
155         }
156         // Asigno valores al objeto.
157         extract($row);
158         $this->grupo        = $grupo;
159         $this->nombre       = $nombre;
160         $this->padre        = $grupo_padre;
161         $this->antiguedad   = $antiguedad;
162         $this->mostrarHijos = $mostrar_hijos;
163         // Obtengo secciones.
164         $secciones =& $dbh->getCol(
165             "SELECT seccion
166                 FROM grupo_secciones_seccion
167                 WHERE grupo = $grupo"
168         );
169         if (DB::isError($secciones)) {
170             return $secciones;
171         }
172         if ($secciones) {
173             $this->secciones = $secciones;
174         } else {
175             $this->secciones = array();
176         }
177         return true;
178     }
179     // -X2C
180
181     // +X2C Operation 454
182     /**
183      * @param  DB &$db DB donde guardar.
184      *
185      * @return bool
186      * @access public
187      */
188     function guardar(&$db)// ~X2C
189     {
190         $grupo = intval($this->grupo);
191         $where = '';
192         $datos = array(
193             'grupo_padre'   => intval($this->padre),
194             'nombre'        => $this->nombre,
195             'habilitado'    => $this->habilitado ? 1 : 0,
196             'antiguedad'    => intval($this->antiguedad),
197             'mostrar_hijos' => $this->mostrar_hijos ? 1 : 0,
198         );
199         if ($grupo) {
200             $accion = DB_AUTOQUERY_UPDATE;
201             $where  = "grupo = $grupo";
202         } else {
203             $accion = DB_AUTOQUERY_INSERT;
204             $grupo  = $db->nextId('grupo_secciones');
205             if (DB::isError($grupo)) {
206                 return $grupo;
207             }
208             // Asigno el nuevo id de grupo.
209             $this->grupo = $grupo;
210             $datos['grupo'] = $grupo;
211         }
212         $res =& $db->autoExecute('grupo_secciones', $datos, $accion, $where);
213         if (DB::isError($res)) {
214             return $res;
215         }
216         $res =& $db->query("DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
217         if (DB::isError($res)) {
218             return $res;
219         }
220         $prepare =& $db->prepare("INSERT INTO grupo_secciones_seccion
221             (grupo, seccion) VALUES ($grupo, ?)");
222         if (DB::isError($prepare)) {
223             return $prepare;
224         }
225         $res =& $db->executeMultiple($prepare, $this->secciones);
226         if (DB::isError($res)) {
227             return $res;
228         }
229         return true;
230     }
231     // -X2C
232
233     // +X2C Operation 455
234     /**
235      * @param  int $db DB de donde borrar.
236      *
237      * @return bool
238      * @access public
239      */
240     function borrar($db)// ~X2C
241     {
242         $grupo = intval($this->grupo);
243         if ($grupo) {
244             $res =& $db->query(
245                 "DELETE FROM grupo_secciones WHERE grupo = $grupo");
246             if (DB::isError($res)) {
247                 return $res;
248             }
249             $res =& $db->query(
250                 "DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
251             if (DB::isError($res)) {
252                 return $res;
253             }
254             return true;
255         }
256         return PEAR::raiseError("No hay un grupo valido para borrar");
257     }
258     // -X2C
259
260     // +X2C Operation 462
261     /**
262      * @param  DB &$db DB de donde cargar los hijos.
263      *
264      * @return bool
265      * @access public
266      */
267     function cargarHijos(&$db)// ~X2C
268     {
269         $grupo = intval($this->grupo);
270         $hijos = array();
271         $result =& $db->query("SELECT * FROM grupo_secciones WHERE grupo_padre = $grupo");
272         if (DB::isError($result)) {
273             return $result;
274         }
275         $hijo =& new GrupoSecciones;
276         $err  =& $hijo->cargar($result);
277         while (!PEAR::isError($err)) {
278             $hijos[] =& $hijo;
279             $err = $hijo->cargar($result);
280         }
281         if (!$err->getCode() == CODIGO DE ERROR DE NO HAY MAS ELEMENTOS) {
282             return $err;
283         }
284         return true;
285     }
286     // -X2C
287
288 } // -X2C Class :GrupoSecciones
289
290 ?>