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