X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/0ef0677af2bf0524273dc9867fad510a84e61099..5a7d316bd32d92dfdd72f118cd544e13a27b98cd:/lib/AI/Sistema.php?ds=sidebyside diff --git a/lib/AI/Sistema.php b/lib/AI/Sistema.php index 6211577..bb3be57 100644 --- a/lib/AI/Sistema.php +++ b/lib/AI/Sistema.php @@ -27,20 +27,14 @@ // $Id$ // -// +X2C includes require_once 'AI/DBObject.php'; -// ~X2C - require_once 'AI/Error.php'; -// TODO - preguntar a gmeray si le sirve, yo no lo uso... -require_once 'SAMURAI/Sistema.php'; /** * Archivo de configuración. */ define('AI_SISTEMA_CONFFILE', dirname(__FILE__).'/Sistema.ini'); -// +X2C Class 416 :AI_Sistema /** * Sistema. * @@ -57,7 +51,7 @@ class AI_Sistema extends AI_DBObject { var $sistema = 0; /** - * Nombre del sistema (slo de lectura, extra?o de SAMURAI). + * Nombre del sistema (sólo de lectura, extraído de SAMURAI). * * @var string $nombre * @access public @@ -65,7 +59,7 @@ class AI_Sistema extends AI_DBObject { var $nombre = ''; /** - * Descripcin del sistema (slo de lectura, extra?o de SAMURAI). + * Descripción del sistema (sólo de lectura, extraído de SAMURAI). * * @var string $descripcion * @access public @@ -73,7 +67,7 @@ class AI_Sistema extends AI_DBObject { var $descripcion = ''; /** - * ?ono del sistema. + * Ícono del sistema. * * @var string $icono * @access public @@ -104,56 +98,94 @@ class AI_Sistema extends AI_DBObject { */ var $habilitado = true; - // ~X2C + /** + * @var string $tipo + * @access public + */ + var $tipo = 'php'; - // +X2C Operation 466 /** * @param int $sistema ID del sistema. * * @return void * @access public */ - function AI_Sistema($sistema = 0) // ~X2C + function AI_Sistema($sistema = 0) { parent::AI_DBObject($sistema, AI_SISTEMA_CONFFILE); } - // -X2C - // +X2C Operation 459 + /** + * @param mixed $db Base de datos o resultado de donde cargar el sistema. + * + * @return PEAR_Error + * @access public + */ + function cargar($db) + { + $id_field = $this->conf['id']; + $id = intval($this->$id_field); + if (is_a($db, 'db_result')) { + $result = $db; + $db = $result->dbh; + // Si no es un resultado, hago el query. + } else { + $result = $db->query( + "SELECT AI.*, SA.nombre_sistema as nombre, SA.desc_sistema as descripcion + FROM {$this->conf['base']}.{$this->conf['tabla']} as AI, samurai.sistema as SA + WHERE AI.$id_field = $id AND AI.$id_field = SA.id_sistema" + ); + if (DB::isError($result)) { + return $result; + } + } + // Obtengo la fila. + $row = $result->fetchRow(DB_FETCHMODE_ASSOC); + if (!$row) { + return new AI_Error(AI_ERROR_NO_RESULTADOS, + "No hay más resultados en la DB [id=$id]"); + } + // Asigno valores al objeto. + foreach ($row as $key => $val) { + $this->$key = $val; + } + return true; + } + /** * @param DB $db DB donde guardar. - * @param bool $nuevo Si es true, se fuerza a guardar el servicio como nuevo. + * @param bool $nuevo Si es true, se fuerza a guardar el servicio como + * nuevo. * * @return PEAR_Error * @access public */ - function guardar($db, $nuevo = false) // ~X2C + function guardar($db, $nuevo = false) { $datos = array( 'icono' => $this->icono, 'link' => $this->link, 'link_ayuda' => $this->link_ayuda, 'habilitado' => $this->habilitado ? 1 : 0, + 'tipo' => $this->tipo, ); $err = parent::guardar($db, $datos, $nuevo); if (PEAR::isError($err)) { return $err; } } - // -X2C - // +X2C Operation 528 /** * Obtiene un array con los identificadores de los sistemas cargados. * * @param DB $db Base de datos de la cual obtener los sistemas. - * @param string $where Clausula WHERE para filtrar resultados. + * @param string $where Clausula WHERE para filtrar la búsqueda. * * @return array * @access public * @static */ - function getSistemasArray($db, $where = '') // ~X2C + function getSistemasArray($db, $where = '') { static $conf; if (!$conf) { @@ -161,25 +193,28 @@ class AI_Sistema extends AI_DBObject { } extract($conf); $query = " - SELECT $id - FROM $base.$tabla"; + SELECT SA.id_sistema, SA.nombre_sistema + FROM samurai.sistema as SA + LEFT JOIN $base.$tabla as AI + ON AI.sistema = SA.id_sistema + WHERE AI.sistema IS NULL AND SA.estado = 1"; if ($where) { - $query .= "WHERE $where"; + $query .= " AND $where"; } - return $db->getCol($query); + $query .= " ORDER BY SA.nombre_sistema ASC"; + return $db->getAssoc($query); } - // -X2C - // +X2C Operation 531 /** * @param DB $db Base de datos de donde obtener los sistemas. - * @param string $where Clausula WHERE para filtrar la bsqueda. + * @param bool $soloHabilitados Clausula WHERE para filtrar la búsqueda. + * @param string $where Clausula WHERE para filtrar la búsqueda. * * @return array * @access public * @static */ - function getSistemas($db, $where = '') // ~X2C + function getSistemas($db, $soloHabilitados = true, $where = '') { static $conf; if (!$conf) { @@ -187,13 +222,15 @@ class AI_Sistema extends AI_DBObject { } $id_field = $conf['id']; $tabla = $conf['base'].'.'.$conf['tabla']; - // FIXME - ver como manejar JOINs - Ver de hacer el JOIN tambien en cargar. $query = " SELECT AI.*, SA.nombre_sistema as nombre, SA.desc_sistema as descripcion FROM $tabla as AI, samurai.sistema as SA - WHERE SA.id_sistema = AI.sistema and SA.estado = 1"; + WHERE SA.id_sistema = AI.sistema AND SA.estado = 1"; + if ($soloHabilitados) { + $query .= ' AND AI.habilitado = 1'; + } if ($where) { - $query .= " WHERE $where"; + $query .= " AND $where"; } $query .= ' ORDER BY nombre ASC'; $result = $db->query($query); @@ -216,8 +253,7 @@ class AI_Sistema extends AI_DBObject { // Si no, se devuelve el error. return $err; } - // -X2C -} // -X2C Class :AI_Sistema +} ?> \ No newline at end of file