]> git.llucax.com Git - mecon/ai.git/blob - lib/AI/Servicio.php
Se borran directorios que no se van a usar.
[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      *
192      * @return PEAR_Error
193      * @access public
194      */
195     function guardar($db) // ~X2C
196     {
197         $servicio = intval($this->servicio);
198         $where    = '';
199         $datos    = array(
200             'servicio_padre'    => intval($this->servicio_padre),
201             'nombre'            => $this->nombre,
202             'descripcion'       => $this->descripcion,
203             'icono'             => $this->icono,
204             'link'              => $this->link,
205             'link_ayuda'        => $this->link_ayuda,
206             'necesita_logueo'   => $this->necesita_logueo ? 1 : 0,
207             'habilitado'        => $this->habilitado ? 1 : 0,
208         );
209         if ($servicio) {
210             $accion = DB_AUTOQUERY_UPDATE;
211             $where  = "servicio = $servicio";
212         } else {
213             $accion   = DB_AUTOQUERY_INSERT;
214             $servicio = $db->nextId('servicio');
215             if (DB::isError($servicio)) {
216                 return $servicio;
217             }
218             // Asigno el nuevo id de servicio.
219             $this->servicio    = $servicio;
220             $datos['servicio'] = $servicio;
221         }
222         $res = $db->autoExecute('servicio', $datos, $accion, $where);
223         if (DB::isError($res)) {
224             return $res;
225         }
226         return true;
227     }
228     // -X2C
229
230     // +X2C Operation 456
231     /**
232      * @param  DB $db DB de donde borrar.
233      *
234      * @return PEAR_Error
235      * @access public
236      */
237     function borrar($db) // ~X2C
238     {
239         $servicio = intval($this->servicio);
240         if ($servicio) {
241             $res = $db->query(
242                 "DELETE FROM servicio WHERE servicio = $servicio");
243             if (DB::isError($res)) {
244                 return $res;
245             }
246             return true;
247         }
248         return PEAR::raiseError("No hay un servicio válido para borrar");
249     }
250     // -X2C
251
252     // +X2C Operation 463
253     /**
254      * @param  DB $db DB de donde cargar los hijos.
255      *
256      * @return PEAR_Error
257      * @access public
258      */
259     function cargarHijos($db) // ~X2C
260     {
261         $servicio = intval($this->servicio);
262         $result   = $db->query("SELECT * FROM servicio WHERE servicio_padre = $servicio");
263         if (DB::isError($result)) {
264             return $result;
265         }
266         $this->_hijos = array();
267         $hijo = new Servicio;
268         $err  = $hijo->cargar($result);
269         while (!PEAR::isError($err)) {
270             $this->_hijos[] = $hijo->__clone();
271             $err = $hijo->cargar($result);
272         }
273         // Si no hay mas resultados, entonces terminó bien.
274         if (AI_Error::isError($err)
275                 and $err->getCode() == AIERROR_NO_RESULTADOS) {
276             return true;
277         }
278         // Si no, se devuelve el error.
279         return $err;
280     }
281     // -X2C
282
283     // +X2C Operation 501
284     /**
285      * @return Servicio
286      * @access public
287      */
288     function __clone() // ~X2C
289     {
290         return $this;
291     }
292     // -X2C
293
294 } // -X2C Class :AI_Servicio
295
296 ?>