From: Leandro Lucarella Date: Fri, 25 Jul 2003 23:13:46 +0000 (+0000) Subject: Se trata de terminar de tomar en cuenta el flag habilitado, pero no anda la X-Git-Tag: svn_import~36 X-Git-Url: https://git.llucax.com/mecon/ai.git/commitdiff_plain/bf3397e09f20d6ee9ea3bfeec51e56f24118aae9 Se trata de terminar de tomar en cuenta el flag habilitado, pero no anda la alta de sistemas. Se hacen joins en todos los querys de AI_Sistema. Se actualiza la TODO list. --- diff --git a/TODO b/TODO index 982b28c..9b20dd7 100644 --- a/TODO +++ b/TODO @@ -4,5 +4,9 @@ $Id$ ícono de la sección que es poco intuitivo. - Ver que se hace con sistemas borrados de SAMURAI con baja lógica. - Resolver tema de JOIN con SAMURAI. -- Hacer que filtre los no habilitados para gonzalo. - Hacer subclase de ArbolDB al estilo de QuickForm. + +-------------------- +URGENTE: +- Ver el tema de AI_Sistema::getSistemasArray() y AI_Form para que ande de + nuevo la alta. diff --git a/doc/uml.xmi b/doc/uml.xmi index 87fe249..85c596e 100644 --- a/doc/uml.xmi +++ b/doc/uml.xmi @@ -9,7 +9,7 @@ - + @@ -27,23 +27,27 @@ - + + + + - + + - + @@ -51,7 +55,7 @@ - + @@ -87,7 +91,7 @@ x2c:include: PEAR.php" name="PEAR_Error" static="0" scope="200" /> - + @@ -113,8 +117,9 @@ x2c:include: PEAR.php" name="PEAR_Error" static="0" scope="200" /> - + + @@ -126,44 +131,44 @@ x2c:get" name="hijos" static="0" scope="202" /> - - - - - - - + + + + + + + - - + + - - + + - - + + - - + + - - + + @@ -181,7 +186,7 @@ x2c:get" name="hijos" static="0" scope="202" /> - + @@ -191,7 +196,7 @@ x2c:get" name="hijos" static="0" scope="202" /> - + @@ -200,16 +205,16 @@ x2c:get" name="hijos" static="0" scope="202" /> - + - + - + @@ -218,13 +223,14 @@ x2c:get" name="hijos" static="0" scope="202" /> - + + - + diff --git a/lib/AI/Sistema.php b/lib/AI/Sistema.php index 54260af..f0e907d 100644 --- a/lib/AI/Sistema.php +++ b/lib/AI/Sistema.php @@ -117,6 +117,46 @@ class AI_Sistema extends AI_DBObject { } // -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. @@ -145,7 +185,7 @@ class AI_Sistema extends AI_DBObject { * 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 bsqueda. * * @return array * @access public @@ -158,12 +198,17 @@ class AI_Sistema extends AI_DBObject { $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 $id - FROM $base.$tabla"; + SELECT SA.nombre_sistema, SA.id_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"; } + $query .= " ORDER BY SA.nombre_sistema ASC"; return $db->getCol($query); } // -X2C @@ -171,13 +216,14 @@ class AI_Sistema extends AI_DBObject { // +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, $where = '') // ~X2C + function getSistemas($db, $soloHabilitados = true, $where = '') // ~X2C { static $conf; if (!$conf) { @@ -189,9 +235,12 @@ class AI_Sistema extends AI_DBObject { $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); diff --git a/sistema/local_lib/AI/Form.php b/sistema/local_lib/AI/Form.php index 804ed27..f17e12d 100644 --- a/sistema/local_lib/AI/Form.php +++ b/sistema/local_lib/AI/Form.php @@ -87,13 +87,7 @@ class AI_Form extends MECON_HTML_QuickForm { if ($tipo == 'sistema') { require_once 'SAMURAI/Sistema.php'; $sistemas = array('' => '--'); - $cargados = AI_Sistema::getSistemasArray($db); - foreach (SAMURAI_Sistema::getArraySistemas($db) as $id => $nom) { - if (!in_array($id, $cargados) - or ($accion & (AI_BAJA | AI_MODIF) and $id == $obj->$tipo)) { - $sistemas[$id] = $nom; - } - } + $sistemas += AI_Sistema::getSistemasArray($db, false); $fId =& $this->addElement('select', $tipo, 'Sistema', $sistemas); $this->addRule($tipo, 'Debe ingresar un sistema.', 'required'); } diff --git a/sistema/www/index.php b/sistema/www/index.php index 81cd6a3..090c6fb 100644 --- a/sistema/www/index.php +++ b/sistema/www/index.php @@ -33,8 +33,8 @@ prepend_include_path('/var/www/sistemas/ai/sistema/local_lib'); // Debug. {{{ require_once 'PEAR.php'; -#PEAR::setErrorHandling(PEAR_ERROR_TRIGGER); -PEAR::setErrorHandling(PEAR_ERROR_RETURN); +PEAR::setErrorHandling(PEAR_ERROR_TRIGGER); +#PEAR::setErrorHandling(PEAR_ERROR_RETURN); // }}} // Creo el Marco. {{{