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