2 // vim: set expandtab tabstop=4 shiftwidth=4 binary:
3 // +--------------------------------------------------------------------+
4 // | Ministerio de Economía |
5 // | AI (Administrador de Intranet) |
6 // +--------------------------------------------------------------------+
7 // | This file is part of AI. |
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. |
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. |
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 // +--------------------------------------------------------------------+
30 require_once 'AI/Error.php';
32 // +X2C Class 486 :AI_GrupoSecciones
39 class AI_GrupoSecciones {
41 * ID del grupo de secciones.
57 * @var int $grupo_padre
63 * Grupos de secciones que tiene este grupo.
68 var $_hijos = array();
71 * Secciones que pertenecen a este grupo.
73 * @var array $secciones
76 var $secciones = array();
79 * Antigedad (en d?s) de las noticias a mostrar.
81 * @var int $antiguedad
87 * True si hay que mostrar los grupos hijos (?? FIXME).
89 * @var bool $mostrar_hijos
92 var $mostrar_hijos = false;
95 * Indica si esta habilitado.
97 * @var bool $habilitado
100 var $habilitado = true;
110 return $this->_hijos;
115 // +X2C Operation 495
117 * @param int $grupo ID del grupo.
122 function AI_GrupoSecciones($grupo = 0) // ~X2C
124 $this->grupo = $grupo;
128 // +X2C Operation 496
130 * @param mixed $db Base de datos o Resultado a utilizar.
135 function cargar($db) // ~X2C
137 $grupo = intval($this->grupo);
138 if (is_a($db, 'db_result')) {
141 // Si no es un resultado, hago el query.
143 $result = $db->query(
146 WHERE grupo = $grupo"
148 if (DB::isError($result)) {
153 $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
155 return new AI_Error(AI_ERROR_NO_RESULTADOS,
156 "No hay más resultados en la DB [grupo=$grupo]");
158 // Asigno valores al objeto.
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(
169 FROM grupo_secciones_seccion
170 WHERE grupo = $grupo"
172 if (DB::isError($secciones)) {
176 $this->secciones = $secciones;
178 $this->secciones = array();
184 // +X2C Operation 497
186 * @param DB $db DB donde guardar.
187 * @param bool $nuevo Si es true, se fuerza a guardar el Grupo de Secciones como nuevo.
192 function guardar($db, $nuevo = false) // ~X2C
194 $grupo = intval($this->grupo);
197 'grupo_padre' => intval($this->grupo_padre),
198 'nombre' => $this->nombre,
199 'habilitado' => $this->habilitado ? 1 : 0,
200 'antiguedad' => intval($this->antiguedad),
201 'mostrar_hijos' => $this->mostrar_hijos ? 1 : 0,
203 if ($grupo and !$nuevo) {
204 $accion = DB_AUTOQUERY_UPDATE;
205 $where = "grupo = $grupo";
207 $accion = DB_AUTOQUERY_INSERT;
208 // Si no tiene ID, le asigno uno nuevo.
210 $grupo = $db->nextId('grupo_secciones');
211 if (DB::isError($grupo)) {
214 $this->grupo = $grupo;
216 $datos['grupo'] = $grupo;
218 $res = $db->autoExecute('grupo_secciones', $datos, $accion, $where);
219 if (DB::isError($res)) {
222 $res = $db->query("DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
223 if (DB::isError($res)) {
226 $prepare = $db->prepare("INSERT INTO grupo_secciones_seccion
227 (grupo, seccion) VALUES ($grupo, ?)");
228 if (DB::isError($prepare)) {
231 $res = $db->executeMultiple($prepare, $this->secciones);
232 if (DB::isError($res)) {
239 // +X2C Operation 498
241 * @param DB $db DB de donde borrar.
246 function borrar($db) // ~X2C
248 $grupo = intval($this->grupo);
251 "DELETE FROM grupo_secciones WHERE grupo = $grupo");
252 if (DB::isError($res)) {
256 "DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
257 if (DB::isError($res)) {
262 return PEAR::raiseError("No hay un grupo válido para borrar");
266 // +X2C Operation 499
268 * @param DB $db DB de donde cargar los hijos.
273 function cargarHijos($db) // ~X2C
275 $grupo = intval($this->grupo);
276 $result = $db->query("SELECT * FROM grupo_secciones WHERE grupo_padre = $grupo");
277 if (DB::isError($result)) {
280 $this->_hijos = array();
281 $hijo = new GrupoSecciones;
282 $err = $hijo->cargar($result);
283 while (!PEAR::isError($err)) {
284 $this->_hijos[] = $hijo->__clone();
285 $err = $hijo->cargar($result);
287 // Si no hay mas resultados, entonces terminó bien.
288 if (AI_Error::isError($err)
289 and $err->getCode() == AI_ERROR_NO_RESULTADOS) {
292 // Si no, se devuelve el error.
297 // +X2C Operation 512
299 * Obtiene un array con una lista de secciones.
301 * @param DB $db Base de datos a usar para obtener los datos.
307 function getSeccionesArray($db = null) // ~X2C
310 $db =& DB::connect('mysql://mark:mark@intranet-db.mecon.ar/MEconDAV',
311 array('persistent' => true));
313 if (DB::isError($db)) {
316 return $db->getAssoc('
317 SELECT S.section_id, S.description
318 FROM MEconDAV.Sections as S
319 ORDER BY description');
323 // +X2C Operation 500
325 * @return GrupoSecciones
328 function __clone() // ~X2C
334 } // -X2C Class :AI_GrupoSecciones