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