+ /**
+ * 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 búsqueda.
+ *
+ * @return array
+ * @access public
+ * @static
+ */
+ function getSistemasArray($db, $where = '')
+ {
+ static $conf;
+ if (!$conf) {
+ $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true);
+ }
+ extract($conf);
+ $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);
+ }
+
+ /**
+ * @param $db Base de datos de donde obtener los sistemas.
+ * @param $soloHabilitados Si es true devuelve solo los sistemas marcados como habilitados.
+ * @param $where Clausula WHERE para filtrar la búsqueda.
+ *
+ * @return Un array de sistemas cuya clave es el id del sistema y el valor es un objeto AI_Sistema.
+ * @access public
+ * @static
+ */
+ function getSistemas($db, $soloHabilitados = true, $where = '')
+ {
+ static $conf;
+ if (!$conf) {
+ $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true);
+ }
+ $id_field = $conf['id'];
+ $tabla = $conf['base'].'.'.$conf['tabla'];
+ $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->sistema] = $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;
+ }
+
+}