| // +--------------------------------------------------------------------+ // // $Id$ // // +X2C includes require_once 'AI/DBObject.php'; // ~X2C require_once 'AI/Error.php'; /** * Archivo de configuración. */ define('AI_SISTEMA_CONFFILE', dirname(__FILE__).'/Sistema.ini'); // +X2C Class 416 :AI_Sistema /** * Sistema. * * @package AI * @access public */ class AI_Sistema extends AI_DBObject { /** * ID del sistema (ID en SAMURAI). * * @var int $sistema * @access public */ var $sistema = 0; /** * Nombre del sistema (slo de lectura, extra?o de SAMURAI). * * @var string $nombre * @access public */ var $nombre = ''; /** * Descripcin del sistema (slo de lectura, extra?o de SAMURAI). * * @var string $descripcion * @access public */ var $descripcion = ''; /** * ?ono del sistema. * * @var string $icono * @access public */ var $icono = ''; /** * Enlace a donde se encuentra el sistema. * * @var string $link * @access public */ var $link = ''; /** * Enlace a la ayuda del sistema. * * @var string $link_ayuda * @access public */ var $link_ayuda = ''; /** * Indica si esta habilitado. * * @var bool $habilitado * @access public */ var $habilitado = true; // ~X2C // +X2C Operation 466 /** * @param int $sistema ID del sistema. * * @return void * @access public */ function AI_Sistema($sistema = 0) // ~X2C { parent::AI_DBObject($sistema, AI_SISTEMA_CONFFILE); } // -X2C // +X2C Operation 536 /** * @param mixed $db Base de datos o resultado de donde cargar el sistema. * * @return PEAR_Error * @access public */ function cargar($db) // ~X2C { $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 { // FIXME - ver como manejar JOINs - Ver de hacer el JOIN tambien en cargar. $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; } // -X2C // +X2C Operation 459 /** * @param DB $db DB donde guardar. * @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 { $datos = array( 'icono' => $this->icono, 'link' => $this->link, 'link_ayuda' => $this->link_ayuda, 'habilitado' => $this->habilitado ? 1 : 0, ); $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 la bsqueda. * * @return array * @access public * @static */ function getSistemasArray($db, $where = '') // ~X2C { static $conf; if (!$conf) { $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true); } extract($conf); // FIXME - ver como manejar JOINs - Ver de hacer el JOIN tambien en cargar. $query = " 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 .= " AND $where"; } $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 bool $soloHabilitados Clausula WHERE para filtrar la bsqueda. * @param string $where Clausula WHERE para filtrar la bsqueda. * * @return array * @access public * @static */ function getSistemas($db, $soloHabilitados = true, $where = '') // ~X2C { static $conf; if (!$conf) { $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true); } $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"; if ($soloHabilitados) { $query .= ' AND AI.habilitado = 1'; } if ($where) { $query .= " AND $where"; } $query .= ' ORDER BY nombre ASC'; $result = $db->query($query); if (DB::isError($result)) { return $result; } $sistemas = array(); $sistema = new AI_Sistema; $err = $sistema->cargar($result); while (!PEAR::isError($err)) { $sistemas[] = $sistema->__clone(); $err = $sistema->cargar($result); } // Si no hay mas resultados (terminó bien) devuelve el array de // sistemas. if (AI_Error::isError($err) and $err->getCode() == AI_ERROR_NO_RESULTADOS) { return $sistemas; } // Si no, se devuelve el error. return $err; } // -X2C } // -X2C Class :AI_Sistema ?>