]> git.llucax.com Git - mecon/ai.git/blob - lib/AI/GrupoSecciones.php
Se corrige el path de los iconos.
[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 /**
37  * Archivo de configuración.
38  */
39 define('AI_GRUPOSECCIONES_CONFFILE', dirname(__FILE__).'/GrupoSecciones.ini');
40
41 // +X2C Class 486 :AI_GrupoSecciones
42 /**
43  * Grupo de secciones.
44  *
45  * @package AI
46  * @access public
47  */
48 class AI_GrupoSecciones extends AI_DBTreeObject {
49     /**
50      * ID del grupo de secciones.
51      *
52      * @var    int $grupo
53      * @access public
54      */
55     var $grupo = 0;
56
57     /**
58      * Nombre.
59      *
60      * @var    string $nombre
61      * @access public
62      */
63     var $nombre = '';
64
65     /**
66      * @var    int $grupo_padre
67      * @access public
68      */
69     var $grupo_padre = 0;
70
71     /**
72      * Secciones que pertenecen a este grupo.
73      *
74      * @var    array $secciones
75      * @access public
76      */
77     var $secciones = array();
78
79     /**
80      * Antigüedad (en días) de las noticias a mostrar.
81      *
82      * @var    int $antiguedad
83      * @access public
84      */
85     var $antiguedad = 0;
86
87     /**
88      * True si hay que mostrar los grupos hijos (?? FIXME).
89      *
90      * @var    bool $mostrar_hijos
91      * @access public
92      */
93     var $mostrar_hijos = false;
94
95     /**
96      * Indica si esta habilitado.
97      *
98      * @var    bool $habilitado
99      * @access public
100      */
101     var $habilitado = true;
102
103     // ~X2C
104
105     // +X2C Operation 495
106     /**
107      * @param  int $grupo ID del grupo.
108      *
109      * @return void
110      * @access public
111      */
112     function AI_GrupoSecciones($grupo = 0) // ~X2C
113     {
114         parent::AI_DBTreeObject($grupo, AI_GRUPOSECCIONES_CONFFILE);
115     }
116     // -X2C
117
118     // +X2C Operation 496
119     /**
120      * @param  mixed $db Base de datos o Resultado a utilizar.
121      *
122      * @return PEAR_Error
123      * @access public
124      */
125     function cargar($db) // ~X2C
126     {
127         // Obtengo campos comunes.
128         $err = parent::cargar($db);
129         if (PEAR::isError($err)) {
130             return $err;
131         }
132         // Obtengo secciones.
133         $id = intval($this->grupo);
134         extract($this->conf['secciones'], EXTR_PREFIX_ALL, 'cnf');
135         $secciones = $db->getCol(
136             "SELECT $cnf_campo
137                 FROM $cnf_base.$cnf_tabla
138                 WHERE $cnf_id = $id"
139         );
140         if (DB::isError($secciones)) {
141             return $secciones;
142         }
143         if ($secciones) {
144             $this->secciones = $secciones;
145         } else {
146             $this->secciones = array();
147         }
148         return true;
149     }
150     // -X2C
151
152     // +X2C Operation 497
153     /**
154      * @param  DB $db DB donde guardar.
155      * @param  bool $nuevo Si es true, se fuerza a guardar el Grupo de Secciones como nuevo.
156      *
157      * @return PEAR_Error
158      * @access public
159      */
160     function guardar($db, $nuevo = false) // ~X2C
161     {
162         // Guardo datos generales.
163         $datos = array(
164             'grupo_padre'   => intval($this->grupo_padre),
165             'nombre'        => $this->nombre,
166             'habilitado'    => $this->habilitado ? 1 : 0,
167             'antiguedad'    => intval($this->antiguedad),
168             'mostrar_hijos' => $this->mostrar_hijos ? 1 : 0,
169         );
170         $err = parent::guardar($db, $datos, $nuevo);
171         if (PEAR::isError($err)) {
172             return $err;
173         }
174         // Guardo datos de secciones.
175                 $id_field = $this->conf['id'];
176         $id = intval($this->$id_field);
177         extract($this->conf['secciones'], EXTR_PREFIX_ALL, 'cnf');
178         $res = $db->query("DELETE FROM $cnf_base.$cnf_tabla WHERE $cnf_id = $id");
179         if (DB::isError($res)) {
180             return $res;
181         }
182         $prepare = $db->prepare("INSERT INTO $cnf_base.$cnf_tabla
183             ($cnf_id, $cnf_campo) VALUES ($id, ?)");
184         if (DB::isError($prepare)) {
185             return $prepare;
186         }
187         $res = $db->executeMultiple($prepare, $this->secciones);
188         if (DB::isError($res)) {
189             return $res;
190         }
191         return true;
192     }
193     // -X2C
194
195     // +X2C Operation 498
196     /**
197      * @param  DB $db DB de donde borrar.
198      *
199      * @return PEAR_Error
200      * @access public
201      */
202     function borrar($db) // ~X2C
203     {
204         // Obtengo campos comunes.
205         $err = parent::borrar($db);
206         if (PEAR::isError($err)) {
207             return $err;
208         }
209         // Obtengo secciones.
210         $id = intval($this->grupo);
211         extract($this->conf['secciones'], EXTR_PREFIX_ALL, 'cnf');
212         $res = $db->query(
213             "DELETE FROM $cnf_base.$cnf_tabla WHERE $cnf_id = $id");
214         if (DB::isError($res)) {
215             return $res;
216         }
217         return true;
218     }
219     // -X2C
220
221     // +X2C Operation 512
222     /**
223      * Obtiene un array con una lista de secciones.
224 Sólo se obtienen las secciones que todavía no pertenecen a ningún grupo. Si se especifica un grupo, se agregan las secciones de ese grupo al <em>array</em> resultante.
225      *
226      * @param  DB $db Base de datos a usar para obtener los datos.
227      * @param  int $grupo Grupo del cual obtener las secciones.
228      *
229      * @return array
230      * @access public
231      * @static
232      */
233     function getSeccionesArray($db = null, $grupo = 0) // ~X2C
234     {
235         static $conf_dav, $conf_sec;
236         if (!$conf_dav or !$conf_sec) {
237             $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true);
238             $conf_dav = $conf['mecondav'];
239             $conf_sec = $conf['secciones'];
240         }
241         extract($conf_dav, EXTR_PREFIX_ALL, 'dav');
242         extract($conf_sec, EXTR_PREFIX_ALL, 'sec');
243                 return $db->getAssoc("
244             SELECT d.$dav_id, d.$dav_campo 
245             FROM $dav_base.$dav_tabla as d
246             LEFT JOIN $sec_base.$sec_tabla AS s
247             ON s.$sec_campo = d.$dav_id
248             WHERE s.$sec_campo IS NULL OR s.$sec_id = $grupo
249             ORDER BY d.$dav_campo ASC");
250     }
251     // -X2C
252
253     // +X2C Operation 537
254     /**
255      * Obtiene el grupo al que pertenece una sección.
256      *
257      * @param  int $seccion Sección a buscar.
258      * @param  DB $db DB a usar.
259      *
260      * @return AI_GrupoSecciones
261      * @access public
262      * @static
263      */
264     function getGrupo($seccion, $db = null) // ~X2C
265     {
266         static $conf;
267         if (!$conf) {
268             $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true);
269             $conf = $conf['secciones'];
270         }
271         extract($conf);
272                 return $db->getOne("
273             SELECT  $id
274             FROM    $base.$tabla
275             WHERE   $campo = " . $db->quote($seccion));
276     }
277     // -X2C
278
279 } // -X2C Class :AI_GrupoSecciones
280
281 ?>