]> git.llucax.com Git - mecon/ai.git/blob - lib/AI/Sistema.php
6211577c1dbf8e9c48c4ec1a280d2f61e510d9fa
[mecon/ai.git] / lib / AI / Sistema.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 // +X2C includes
31 require_once 'AI/DBObject.php';
32 // ~X2C
33
34 require_once 'AI/Error.php';
35 // TODO - preguntar a gmeray si le sirve, yo no lo uso...
36 require_once 'SAMURAI/Sistema.php';
37
38 /**
39  * Archivo de configuración.
40  */
41 define('AI_SISTEMA_CONFFILE', dirname(__FILE__).'/Sistema.ini');
42
43 // +X2C Class 416 :AI_Sistema
44 /**
45  * Sistema.
46  *
47  * @package AI
48  * @access public
49  */
50 class AI_Sistema extends AI_DBObject {
51     /**
52      * ID del sistema (ID en SAMURAI).
53      *
54      * @var    int $sistema
55      * @access public
56      */
57     var $sistema = 0;
58
59     /**
60      * Nombre del sistema (slo de lectura, extra?o de SAMURAI).
61      *
62      * @var    string $nombre
63      * @access public
64      */
65     var $nombre = '';
66
67     /**
68      * Descripcin del sistema (slo de lectura, extra?o de SAMURAI).
69      *
70      * @var    string $descripcion
71      * @access public
72      */
73     var $descripcion = '';
74
75     /**
76      * ?ono del sistema.
77      *
78      * @var    string $icono
79      * @access public
80      */
81     var $icono = '';
82
83     /**
84      * Enlace a donde se encuentra el sistema.
85      *
86      * @var    string $link
87      * @access public
88      */
89     var $link = '';
90
91     /**
92      * Enlace a la ayuda del sistema.
93      *
94      * @var    string $link_ayuda
95      * @access public
96      */
97     var $link_ayuda = '';
98
99     /**
100      * Indica si esta habilitado.
101      *
102      * @var    bool $habilitado
103      * @access public
104      */
105     var $habilitado = true;
106
107     // ~X2C
108
109     // +X2C Operation 466
110     /**
111      * @param  int $sistema ID del sistema.
112      *
113      * @return void
114      * @access public
115      */
116     function AI_Sistema($sistema = 0) // ~X2C
117     {
118         parent::AI_DBObject($sistema, AI_SISTEMA_CONFFILE);
119     }
120     // -X2C
121
122     // +X2C Operation 459
123     /**
124      * @param  DB $db DB donde guardar.
125      * @param  bool $nuevo Si es true, se fuerza a guardar el servicio como nuevo.
126      *
127      * @return PEAR_Error
128      * @access public
129      */
130     function guardar($db, $nuevo = false) // ~X2C
131     {
132         $datos = array(
133             'icono'      => $this->icono,
134             'link'       => $this->link,
135             'link_ayuda' => $this->link_ayuda,
136             'habilitado' => $this->habilitado ? 1 : 0,
137         );
138         $err = parent::guardar($db, $datos, $nuevo);
139         if (PEAR::isError($err)) {
140             return $err;
141         }
142     }
143     // -X2C
144
145     // +X2C Operation 528
146     /**
147      * Obtiene un array con los identificadores de los sistemas cargados.
148      *
149      * @param  DB $db Base de datos de la cual obtener los sistemas.
150      * @param  string $where Clausula WHERE para filtrar resultados.
151      *
152      * @return array
153      * @access public
154      * @static
155      */
156     function getSistemasArray($db, $where = '') // ~X2C
157     {
158         static $conf;
159         if (!$conf) {
160             $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true);
161         }
162         extract($conf);
163         $query = "
164             SELECT   $id
165             FROM     $base.$tabla";
166         if ($where) {
167             $query .= "WHERE $where";
168         }
169         return $db->getCol($query);
170     }
171     // -X2C
172
173     // +X2C Operation 531
174     /**
175      * @param  DB $db Base de datos de donde obtener los sistemas.
176      * @param  string $where Clausula WHERE para filtrar la bsqueda.
177      *
178      * @return array
179      * @access public
180      * @static
181      */
182     function getSistemas($db, $where = '') // ~X2C
183     {
184         static $conf;
185         if (!$conf) {
186             $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true);
187         }
188         $id_field = $conf['id'];
189         $tabla    = $conf['base'].'.'.$conf['tabla'];
190         // FIXME - ver como manejar JOINs - Ver de hacer el JOIN tambien en cargar.
191         $query = "
192             SELECT AI.*, SA.nombre_sistema as nombre, SA.desc_sistema as descripcion
193             FROM   $tabla as AI, samurai.sistema as SA
194             WHERE  SA.id_sistema = AI.sistema and SA.estado = 1";
195         if ($where) {
196             $query .= " WHERE $where";
197         }
198         $query  .= ' ORDER BY nombre ASC';
199         $result  = $db->query($query);
200         if (DB::isError($result)) {
201             return $result;
202         }
203         $sistemas = array();
204         $sistema  = new AI_Sistema;
205         $err      = $sistema->cargar($result);
206         while (!PEAR::isError($err)) {
207             $sistemas[] = $sistema->__clone();
208             $err = $sistema->cargar($result);
209         }
210         // Si no hay mas resultados (terminó bien) devuelve el array de
211         // sistemas.
212         if (AI_Error::isError($err)
213                 and $err->getCode() == AI_ERROR_NO_RESULTADOS) {
214             return $sistemas;
215         }
216         // Si no, se devuelve el error.
217         return $err;
218     }
219     // -X2C
220
221 } // -X2C Class :AI_Sistema
222
223 ?>