]> git.llucax.com Git - mecon/ai.git/blob - sistema/local_lib/GrupoSecciones.php
Se completa el manejo de formularios para GrupoSecciones.
[mecon/ai.git] / sistema / local_lib / GrupoSecciones.php
1 <?php
2 // vim: set expandtab tabstop=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 require_once 'AIError.php';
31
32 // +X2C Class 486 :GrupoSecciones
33 /**
34  * Grupo de secciones.
35  *
36  * @access public
37  */
38 class GrupoSecciones {
39     /**
40      * ID del grupo de secciones.
41      *
42      * @var    int $grupo
43      * @access public
44      */
45     var $grupo = 0;
46
47     /**
48      * Nombre.
49      *
50      * @var    string $nombre
51      * @access public
52      */
53     var $nombre = '';
54
55     /**
56      * @var    int $grupo_padre
57      * @access public
58      */
59     var $grupo_padre = 0;
60
61     /**
62      * Grupos de secciones que tiene este grupo.
63      *
64      * @var    array $hijos
65      * @access protected
66      */
67     var $_hijos = array();
68
69     /**
70      * Secciones que pertenecen a este grupo.
71      *
72      * @var    array $secciones
73      * @access public
74      */
75     var $secciones = array();
76
77     /**
78      * Antigedad (en d?s) de las noticias a mostrar.
79      *
80      * @var    int $antiguedad
81      * @access public
82      */
83     var $antiguedad = 0;
84
85     /**
86      * True si hay que mostrar los grupos hijos (?? FIXME).
87      *
88      * @var    bool $mostrar_hijos
89      * @access public
90      */
91     var $mostrar_hijos = false;
92
93     /**
94      * Indica si esta habilitado.
95      *
96      * @var    bool $habilitado
97      * @access public
98      */
99     var $habilitado = true;
100
101     /**
102      * Gets Hijos.
103      *
104      * @return array
105      * @access public
106      */
107     function getHijos()
108     {
109         return $this->_hijos;
110     }
111
112     // ~X2C
113
114     // +X2C Operation 495
115     /**
116      * @param  int $grupo ID del grupo.
117      *
118      * @return void
119      * @access public
120      */
121     function GrupoSecciones($grupo = 0) // ~X2C
122     {
123         $this->grupo = $grupo;
124     }
125     // -X2C
126
127     // +X2C Operation 496
128     /**
129      * @param  mixed $db Base de datos o Resultado a utilizar.
130      *
131      * @return PEAR_Error
132      * @access public
133      */
134     function cargar($db) // ~X2C
135     {
136         $grupo = intval($this->grupo);
137         if (is_a($db, 'db_result')) {
138             $result = $db;
139             $db     = $result->dbh;
140         // Si no es un resultado, hago el query.
141         } else {
142             $result = $db->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 new AIError(AIERROR_NO_RESULTADOS,
155                 "No hay más resultados en la DB [grupo=$grupo]");
156         }
157         // Asigno valores al objeto.
158         extract($row);
159         $this->grupo        = $grupo;
160         $this->nombre       = $nombre;
161         $this->grupo_padre  = $grupo_padre;
162         $this->habilitado   = $habilitado;
163         $this->antiguedad   = $antiguedad;
164         $this->mostrar_hijos= $mostrar_hijos;
165         // Obtengo secciones.
166         $secciones = $db->getCol(
167             "SELECT seccion
168                 FROM grupo_secciones_seccion
169                 WHERE grupo = $grupo"
170         );
171         if (DB::isError($secciones)) {
172             return $secciones;
173         }
174         if ($secciones) {
175             $this->secciones = $secciones;
176         } else {
177             $this->secciones = array();
178         }
179         return true;
180     }
181     // -X2C
182
183     // +X2C Operation 497
184     /**
185      * @param  DB $db DB donde guardar.
186      *
187      * @return PEAR_Error
188      * @access public
189      */
190     function guardar($db) // ~X2C
191     {
192         $grupo = intval($this->grupo);
193         $where = '';
194         $datos = array(
195             'grupo_padre'   => intval($this->grupo_padre),
196             'nombre'        => $this->nombre,
197             'habilitado'    => $this->habilitado ? 1 : 0,
198             'antiguedad'    => intval($this->antiguedad),
199             'mostrar_hijos' => $this->mostrar_hijos ? 1 : 0,
200         );
201         if ($grupo) {
202             $accion = DB_AUTOQUERY_UPDATE;
203             $where  = "grupo = $grupo";
204         } else {
205             $accion = DB_AUTOQUERY_INSERT;
206             $grupo  = $db->nextId('grupo_secciones');
207             if (DB::isError($grupo)) {
208                 return $grupo;
209             }
210             // Asigno el nuevo id de grupo.
211             $this->grupo = $grupo;
212             $datos['grupo'] = $grupo;
213         }
214         $res = $db->autoExecute('grupo_secciones', $datos, $accion, $where);
215         if (DB::isError($res)) {
216             return $res;
217         }
218         $res = $db->query("DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
219         if (DB::isError($res)) {
220             return $res;
221         }
222         $prepare = $db->prepare("INSERT INTO grupo_secciones_seccion
223             (grupo, seccion) VALUES ($grupo, ?)");
224         if (DB::isError($prepare)) {
225             return $prepare;
226         }
227         $res = $db->executeMultiple($prepare, $this->secciones);
228         if (DB::isError($res)) {
229             return $res;
230         }
231         return true;
232     }
233     // -X2C
234
235     // +X2C Operation 498
236     /**
237      * @param  DB $db DB de donde borrar.
238      *
239      * @return PEAR_Error
240      * @access public
241      */
242     function borrar($db) // ~X2C
243     {
244         $grupo = intval($this->grupo);
245         if ($grupo) {
246             $res = $db->query(
247                 "DELETE FROM grupo_secciones WHERE grupo = $grupo");
248             if (DB::isError($res)) {
249                 return $res;
250             }
251             $res = $db->query(
252                 "DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
253             if (DB::isError($res)) {
254                 return $res;
255             }
256             return true;
257         }
258         return PEAR::raiseError("No hay un grupo válido para borrar");
259     }
260     // -X2C
261
262     // +X2C Operation 499
263     /**
264      * @param  DB $db DB de donde cargar los hijos.
265      *
266      * @return PEAR_Error
267      * @access public
268      */
269     function cargarHijos($db) // ~X2C
270     {
271         $grupo  = intval($this->grupo);
272         $result = $db->query("SELECT * FROM grupo_secciones WHERE grupo_padre = $grupo");
273         if (DB::isError($result)) {
274             return $result;
275         }
276         $this->_hijos = array();
277         $hijo = new GrupoSecciones;
278         $err = $hijo->cargar($result);
279         while (!PEAR::isError($err)) {
280             $this->_hijos[] = $hijo->__clone();
281             $err = $hijo->cargar($result);
282         }
283         // Si no hay mas resultados, entonces terminó bien.
284         if (is_a($err, 'aierror')
285                 and $err->getCode() == AIERROR_NO_RESULTADOS) {
286             return true;
287         }
288         // Si no, se devuelve el error.
289         return $err;
290     }
291     // -X2C
292
293     // +X2C Operation 500
294     /**
295      * @return GrupoSecciones
296      * @access public
297      */
298     function __clone() // ~X2C
299     {
300         return $this;
301     }
302     // -X2C
303
304 } // -X2C Class :GrupoSecciones
305
306 ?>