]> git.llucax.com Git - mecon/ai.git/blob - lib/AI/GrupoSecciones.php
- Se agrega un TODO list.
[mecon/ai.git] / lib / AI / GrupoSecciones.php
1 <?php
2 // vim: set binary 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 // +X2C includes
31 require_once 'AI/DBTreeObject.php';
32 // ~X2C
33
34 require_once 'AI/Error.php';
35
36 // +X2C Class 486 :AI_GrupoSecciones
37 /**
38  * Grupo de secciones.
39  *
40  * @package AI
41  * @access public
42  */
43 class AI_GrupoSecciones extends AI_DBTreeObject {
44     /**
45      * ID del grupo de secciones.
46      *
47      * @var    int $grupo
48      * @access public
49      */
50     var $grupo = 0;
51
52     /**
53      * Nombre.
54      *
55      * @var    string $nombre
56      * @access public
57      */
58     var $nombre = '';
59
60     /**
61      * @var    int $grupo_padre
62      * @access public
63      */
64     var $grupo_padre = 0;
65
66     /**
67      * Secciones que pertenecen a este grupo.
68      *
69      * @var    array $secciones
70      * @access public
71      */
72     var $secciones = array();
73
74     /**
75      * Antigedad (en d?s) de las noticias a mostrar.
76      *
77      * @var    int $antiguedad
78      * @access public
79      */
80     var $antiguedad = 0;
81
82     /**
83      * True si hay que mostrar los grupos hijos (?? FIXME).
84      *
85      * @var    bool $mostrar_hijos
86      * @access public
87      */
88     var $mostrar_hijos = false;
89
90     /**
91      * Indica si esta habilitado.
92      *
93      * @var    bool $habilitado
94      * @access public
95      */
96     var $habilitado = true;
97
98     // ~X2C
99
100     // +X2C Operation 495
101     /**
102      * @param  int $grupo ID del grupo.
103      *
104      * @return void
105      * @access public
106      */
107     function AI_GrupoSecciones($grupo = 0) // ~X2C
108     {
109         parent::AI_DBTreeObject($grupo, dirname(__FILE__) . '/GrupoSecciones.ini');
110     }
111     // -X2C
112
113     // +X2C Operation 496
114     /**
115      * @param  mixed $db Base de datos o Resultado a utilizar.
116      *
117      * @return PEAR_Error
118      * @access public
119      */
120     function cargar($db) // ~X2C
121     {
122         // Obtengo campos comunes.
123         $err = parent::cargar($db);
124         if (PEAR::isError($err)) {
125             return $err;
126         }
127         // Obtengo secciones.
128         $id = intval($this->grupo);
129         extract($this->conf['secciones'], EXTR_PREFIX_ALL, 'cnf');
130         $secciones = $db->getCol(
131             "SELECT $cnf_campo
132                 FROM $cnf_base.$cnf_tabla
133                 WHERE $cnf_id = $id"
134         );
135         if (DB::isError($secciones)) {
136             return $secciones;
137         }
138         if ($secciones) {
139             $this->secciones = $secciones;
140         } else {
141             $this->secciones = array();
142         }
143         return true;
144     }
145     // -X2C
146
147     // +X2C Operation 497
148     /**
149      * @param  DB $db DB donde guardar.
150      * @param  bool $nuevo Si es true, se fuerza a guardar el Grupo de Secciones como nuevo.
151      *
152      * @return PEAR_Error
153      * @access public
154      */
155     function guardar($db, $nuevo = false) // ~X2C
156     {
157         // Guardo datos generales.
158         $datos = array(
159             'grupo_padre'   => intval($this->grupo_padre),
160             'nombre'        => $this->nombre,
161             'habilitado'    => $this->habilitado ? 1 : 0,
162             'antiguedad'    => intval($this->antiguedad),
163             'mostrar_hijos' => $this->mostrar_hijos ? 1 : 0,
164         );
165         $err = parent::guardar($db, $datos, $nuevo);
166         if (PEAR::isError($err)) {
167             return $err;
168         }
169         // Guardo datos de secciones.
170                 $id_field = $this->conf['id'];
171         $id = intval($this->$id_field);
172         extract($this->conf['secciones'], EXTR_PREFIX_ALL, 'cnf');
173         $res = $db->query("DELETE FROM $cnf_base.$cnf_tabla WHERE $cnf_id = $id");
174         if (DB::isError($res)) {
175             return $res;
176         }
177         $prepare = $db->prepare("INSERT INTO $cnf_base.$cnf_tabla
178             ($cnf_id, $cnf_campo) VALUES ($id, ?)");
179         if (DB::isError($prepare)) {
180             return $prepare;
181         }
182         $res = $db->executeMultiple($prepare, $this->secciones);
183         if (DB::isError($res)) {
184             return $res;
185         }
186         return true;
187     }
188     // -X2C
189
190     // +X2C Operation 498
191     /**
192      * @param  DB $db DB de donde borrar.
193      *
194      * @return PEAR_Error
195      * @access public
196      */
197     function borrar($db) // ~X2C
198     {
199         // Obtengo campos comunes.
200         $err = parent::borrar($db);
201         if (PEAR::isError($err)) {
202             return $err;
203         }
204         // Obtengo secciones.
205         $id = intval($this->grupo);
206         extract($this->conf['secciones'], EXTR_PREFIX_ALL, 'cnf');
207         $res = $db->query(
208             "DELETE FROM $cnf_base.$cnf_tabla WHERE $cnf_id = $id");
209         if (DB::isError($res)) {
210             return $res;
211         }
212         return true;
213     }
214     // -X2C
215
216
217     // +X2C Operation 512
218     /**
219      * Obtiene un array con una lista de secciones.
220      *
221      * @param  DB $db Base de datos a usar para obtener los datos.
222      *
223      * @return array
224      * @access public
225      * @static
226      */
227     function getSeccionesArray($db = null) // ~X2C
228     {
229                 if ($db === null) {
230                         $db =& DB::connect('mysql://mark:mark@intranet-db.mecon.ar/MEconDAV',
231                                 array('persistent' => true));
232                 }
233                 if (DB::isError($db)) {
234                         return $db;
235                 }
236                 return $db->getAssoc('
237             SELECT   S.section_id, S.description
238             FROM     MEconDAV.Sections as S
239             ORDER BY description');
240     }
241     // -X2C
242
243 } // -X2C Class :AI_GrupoSecciones
244
245 ?>