2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
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 413 :AI_Servicio
49 * @var int $servicio_padre
52 var $servicio_padre = 0;
60 var $_hijos = array();
63 * Nombre del servicio.
71 * Descripcin del servicio.
73 * @var string $descripcion
76 var $descripcion = '';
81 * @var HTML_Imagen $icono
87 * Enlace a donde el este servicio.
95 * Enlace a donde se encuentra la ayuda del servicio.
97 * @var string $link_ayuda
100 var $link_ayuda = '';
103 * True si es necesario que el usuario se loguee para usar el servicio.
105 * @var bool $necesita_logueo
108 var $necesita_logueo = false;
111 * Indica si esta habilitado.
113 * @var bool $habilitado
116 var $habilitado = true;
126 return $this->_hijos;
131 // +X2C Operation 465
133 * @param int $servicio ID del servicio.
138 function AI_Servicio($servicio = 0) // ~X2C
140 $this->servicio = $servicio;
144 // +X2C Operation 457
146 * @param mixed $db Base de datos o Resultado a utilizar.
151 function cargar($db) // ~X2C
153 $servicio = intval($this->servicio);
154 if (is_a($db, 'db_result')) {
156 // Si no es un resultado, hago el query.
158 $result = $db->query(
161 WHERE servicio = $servicio"
163 if (DB::isError($result)) {
168 $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
170 return new AI_Error(AI_ERROR_NO_RESULTADOS,
171 "No hay más resultados en la DB [servicio=$servicio]");
173 // Asigno valores al objeto.
175 $this->servicio = $servicio;
176 $this->servicio_padre = $servicio_padre;
177 $this->nombre = $nombre;
178 $this->descripcion = $descripcion;
179 $this->icono = $icono; # FIXME - new HTML_Icono (o no?)
181 $this->link_ayuda = $link_ayuda;
182 $this->necesita_logueo = $necesita_logueo;
183 $this->habilitado = $habilitado;
188 // +X2C Operation 458
190 * @param DB $db DB donde guardar.
191 * @param bool $nuevo Si es true, se fuerza a guardar el Servicio como nuevo.
196 function guardar($db, $nuevo = false) // ~X2C
198 $servicio = intval($this->servicio);
201 'servicio_padre' => intval($this->servicio_padre),
202 'nombre' => $this->nombre,
203 'descripcion' => $this->descripcion,
204 'icono' => $this->icono,
205 'link' => $this->link,
206 'link_ayuda' => $this->link_ayuda,
207 'necesita_logueo' => $this->necesita_logueo ? 1 : 0,
208 'habilitado' => $this->habilitado ? 1 : 0,
210 if ($servicio and !$nuevo) {
211 $accion = DB_AUTOQUERY_UPDATE;
212 $where = "servicio = $servicio";
214 $accion = DB_AUTOQUERY_INSERT;
215 // Si no tiene ID, le asigno uno nuevo.
217 $servicio = $db->nextId('servicio');
218 if (DB::isError($servicio)) {
221 $this->servicio = $servicio;
223 $datos['servicio'] = $servicio;
225 $res = $db->autoExecute('servicio', $datos, $accion, $where);
226 if (DB::isError($res)) {
233 // +X2C Operation 456
235 * @param DB $db DB de donde borrar.
240 function borrar($db) // ~X2C
242 $servicio = intval($this->servicio);
245 "DELETE FROM servicio WHERE servicio = $servicio");
246 if (DB::isError($res)) {
251 return PEAR::raiseError("No hay un servicio válido para borrar");
255 // +X2C Operation 463
257 * @param DB $db DB de donde cargar los hijos.
262 function cargarHijos($db) // ~X2C
264 $servicio = intval($this->servicio);
265 $result = $db->query("SELECT * FROM servicio WHERE servicio_padre = $servicio");
266 if (DB::isError($result)) {
269 $this->_hijos = array();
270 $hijo = new Servicio;
271 $err = $hijo->cargar($result);
272 while (!PEAR::isError($err)) {
273 $this->_hijos[] = $hijo->__clone();
274 $err = $hijo->cargar($result);
276 // Si no hay mas resultados, entonces terminó bien.
277 if (AI_Error::isError($err)
278 and $err->getCode() == AIERROR_NO_RESULTADOS) {
281 // Si no, se devuelve el error.
286 // +X2C Operation 501
291 function __clone() // ~X2C
297 } // -X2C Class :AI_Servicio