// ~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.
class AI_Sistema extends AI_DBObject {
/**
* ID del sistema (ID en SAMURAI).
-FIXME - preguntar a gonzalo si le sirve.
*
* @var int $sistema
* @access public
var $sistema = 0;
/**
- * Nombre del sistema (slo de lectura, extra?o de SAMURAI).
-FIXME - preguntar a gonzalo si le sirve.
+ * Nombre del sistema (sólo de lectura, extraído de SAMURAI).
*
* @var string $nombre
* @access public
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
var $descripcion = '';
/**
- * ?ono del sistema.
+ * Ícono del sistema.
*
* @var string $icono
* @access public
*/
var $habilitado = true;
+ /**
+ * @var string $tipo
+ * @access public
+ */
+ var $tipo = 'php';
+
// ~X2C
// +X2C Operation 466
}
// -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 {
+ $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.
'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)) {
* 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
}
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 = '') // ~X2C
{
static $conf;
if (!$conf) {
}
$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";
+ $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 .= " WHERE $where";
+ $query .= " AND $where";
}
$query .= ' ORDER BY nombre ASC';
$result = $db->query($query);
} // -X2C Class :AI_Sistema
-?>
+?>
\ No newline at end of file