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