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. |
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. |
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. |
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 // +--------------------------------------------------------------------+
30 require_once 'AI/DBObject.php';
31 require_once 'AI/Error.php';
34 * Archivo de configuración.
36 define('AI_SISTEMA_CONFFILE', dirname(__FILE__).'/Sistema.ini');
44 class AI_Sistema extends AI_DBObject {
46 * ID del sistema (ID en SAMURAI).
54 * Nombre del sistema (sólo de lectura, extraído de SAMURAI).
62 * Descripción del sistema (sólo de lectura, extraído de SAMURAI).
64 * @var string $descripcion
67 var $descripcion = '';
78 * Enlace a donde se encuentra el sistema.
86 * Enlace a la ayuda del sistema.
88 * @var string $link_ayuda
94 * Indica si esta habilitado.
96 * @var bool $habilitado
99 var $habilitado = true;
108 * @param int $sistema ID del sistema.
113 function AI_Sistema($sistema = 0)
115 parent::AI_DBObject($sistema, AI_SISTEMA_CONFFILE);
119 * @param mixed $db Base de datos o resultado de donde cargar el sistema.
126 $id_field = $this->conf['id'];
127 $id = intval($this->$id_field);
128 if (is_a($db, 'db_result')) {
131 // Si no es un resultado, hago el query.
133 $result = $db->query(
134 "SELECT AI.*, SA.nombre_sistema as nombre, SA.desc_sistema as descripcion
135 FROM {$this->conf['base']}.{$this->conf['tabla']} as AI, samurai.sistema as SA
136 WHERE AI.$id_field = $id AND AI.$id_field = SA.id_sistema"
138 if (DB::isError($result)) {
143 $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
145 return new AI_Error(AI_ERROR_NO_RESULTADOS,
146 "No hay más resultados en la DB [id=$id]");
148 // Asigno valores al objeto.
149 foreach ($row as $key => $val) {
156 * @param DB $db DB donde guardar.
157 * @param bool $nuevo Si es true, se fuerza a guardar el servicio como
163 function guardar($db, $nuevo = false)
166 'icono' => $this->icono,
167 'link' => $this->link,
168 'link_ayuda' => $this->link_ayuda,
169 'habilitado' => $this->habilitado ? 1 : 0,
170 'tipo' => $this->tipo,
172 $err = parent::guardar($db, $datos, $nuevo);
173 if (PEAR::isError($err)) {
179 * Obtiene un array con los identificadores de los sistemas cargados.
181 * @param DB $db Base de datos de la cual obtener los sistemas.
182 * @param string $where Clausula WHERE para filtrar la búsqueda.
188 function getSistemasArray($db, $where = '')
192 $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true);
196 SELECT SA.id_sistema, SA.nombre_sistema
197 FROM samurai.sistema as SA
198 LEFT JOIN $base.$tabla as AI
199 ON AI.sistema = SA.id_sistema
200 WHERE AI.sistema IS NULL AND SA.estado = 1";
202 $query .= " AND $where";
204 $query .= " ORDER BY SA.nombre_sistema ASC";
205 return $db->getAssoc($query);
209 * @param $db Base de datos de donde obtener los sistemas.
210 * @param $soloHabilitados Si es true devuelve solo los sistemas marcados como habilitados.
211 * @param $where Clausula WHERE para filtrar la búsqueda.
213 * @return Un array de sistemas cuya clave es el id del sistema y el valor es un objeto AI_Sistema.
217 function getSistemas($db, $soloHabilitados = true, $where = '')
221 $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true);
223 $id_field = $conf['id'];
224 $tabla = $conf['base'].'.'.$conf['tabla'];
226 SELECT AI.*, SA.nombre_sistema as nombre, SA.desc_sistema as descripcion
227 FROM $tabla as AI, samurai.sistema as SA
228 WHERE SA.id_sistema = AI.sistema AND SA.estado = 1";
229 if ($soloHabilitados) {
230 $query .= ' AND AI.habilitado = 1';
233 $query .= " AND $where";
235 $query .= ' ORDER BY nombre ASC';
236 $result = $db->query($query);
237 if (DB::isError($result)) {
241 $sistema = new AI_Sistema;
242 $err = $sistema->cargar($result);
243 while (!PEAR::isError($err)) {
244 $sistemas[$sistema->sistema] = $sistema->__clone();
245 $err = $sistema->cargar($result);
247 // Si no hay mas resultados (terminó bien) devuelve el array de
249 if (AI_Error::isError($err)
250 and $err->getCode() == AI_ERROR_NO_RESULTADOS) {
253 // Si no, se devuelve el error.