X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/61fdd4f7e9019fdd5c4e3b5d9c43ab5d3506a11c..ef1da2e8ecfb3480a55cd70cb42ab9acb36fd1cc:/sistema/www/index.php diff --git a/sistema/www/index.php b/sistema/www/index.php index 4e88fab..4983778 100644 --- a/sistema/www/index.php +++ b/sistema/www/index.php @@ -27,51 +27,66 @@ // $Id$ // +require_once 'MECON/general.php'; +prepend_include_path('/var/www/sistemas/ai/sistema/local_lib'); +require_once 'MECON/HTML/Error.php'; +require_once 'permisos.php'; + // Debug. {{{ require_once 'PEAR.php'; #PEAR::setErrorHandling(PEAR_ERROR_TRIGGER); PEAR::setErrorHandling(PEAR_ERROR_RETURN); // }}} -// Clase de error HTML (para mostrar errores) TODO - ver si se pasa a meconlib {{{ -class HTML_Error { - var $msg = ''; - function HTML_Error($msg) { - $this->msg = $msg; - } - function toHtml() { - return '
' . $this->msg . '
'; - } +// Creo la base de datos. {{{ +require_once 'AI/DB.php'; +$db =& AI_DB::connect('../conf/DB.ini'); +if (DB::isError($db)) { + die($db->getMessage()); } // }}} +// Creo el objeto de permisos - FIXME - esto debería venir de intranet. {{{ +require_once 'SAMURAI/Perm.php'; +$perm = new SAMURAI_Perm(@$_GET['login'] ? $_GET['login'] : 'llucar@mecon', AI_PERM, $db); +// }}} + // Creo el Marco. {{{ require_once 'MECON/Marco.php'; -$marco = new Marco('../conf/Marco.php'); +$marco = new MECON_Marco('../conf/Marco.php', $perm); // }}} -// Averiguo si estoy administrando algún tipo de objeto. XXX - desafear {{{ +// Averiguo si estoy administrando algún tipo de objeto. {{{ $tipo = null; if (@$_SERVER['PATH_INFO']) { $tmp = ltrim($_SERVER['PATH_INFO'], '/'); if ($tmp == 'grupo') { $tipo = $tmp; - $clase = "AI_GrupoSecciones"; + $clase = 'AI_GrupoSecciones'; $require = 'AI/GrupoSecciones.php'; $tabla = 'grupo_secciones'; - $nombre = "grupo de secciones"; + $nombre = 'grupo de secciones'; + if (!$perm->tiene(AI_PERM_NOTICIAS)) { + die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo? + } } elseif ($tmp == 'servicio') { $tipo = $tmp; $clase = 'AI_Servicio'; $require = 'AI/Servicio.php'; $tabla = $tipo; $nombre = $tipo; + if (!$perm->tiene(AI_PERM_SERVICIOS)) { + die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo? + } } elseif ($tmp == 'sistema') { $tipo = $tmp; $clase = 'AI_Sistema'; $require = 'AI/Sistema.php'; $tabla = $tipo; $nombre = $tipo; + if (!$perm->tiene(AI_PERM_SISTEMAS)) { + die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo? + } } else { // No hay un objeto válido para administrar. header('Location: '.$_SERVER['SCRIPT_NAME']); } @@ -129,12 +144,9 @@ if ($tipo) { } // }}} - // Creo la base de datos. {{{ - require_once 'AI/DB.php'; - $db =& AI_DB::connect('../conf/DB.ini'); - if (DB::isError($db)) { - die($db->getMessage()); - } + // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{ + require_once 'AI/Arbol.php'; + $arbol = new AI_Arbol($obj, $db); // }}} // Inicio el formulario, cargando datos de ser necesario. {{{ @@ -143,10 +155,10 @@ if ($tipo) { if (PEAR::isError($err)) { die($err->getMessage()); } - $form->iniciar($obj, $accion); + $form->iniciar($obj, $accion, $arbol, $db); } else { $accion = AI_ALTA; - $form->iniciar($obj); + $form->iniciar($obj, $accion, $arbol, $db); } // }}} @@ -163,11 +175,14 @@ if ($tipo) { $form->llenarObjeto($obj); $err =& $obj->guardar($db, true); if (PEAR::isError($err)) { - if (DB::isError($err) and $err->getCode() == DB_ERROR_ALREADY_EXISTS) { - $error = new HTML_Error("Ya existe un $nombre con el identificador " + if (DB::isError($err) + and $err->getCode() == DB_ERROR_ALREADY_EXISTS) { + $error = new MECON_HTML_Error( + "Ya existe un $nombre con el identificador " . $obj->$tipo); } else { - $error = new HTML_Error('Error no esperado: ' . $err->getMessage()); + $error = new MECON_HTML_Error('Error no esperado: ' + . $err->getMessage()); } $marco->addBody($error); } else { @@ -181,8 +196,15 @@ if ($tipo) { if (!@$a_confirmar) { $form->llenarObjeto($obj); $err =& $obj->borrar($db); - if (PEAR::isError($err)) { - $error = new HTML_Error('Error no esperado: ' . $err->getMessage()); + if (AI_Error::isError($err) + and $err->getCode() == AI_ERROR_TIENE_HIJOS) { + $error = new MECON_HTML_Error('No se puede borrar el ' + . $nombre . ' porque todavía tiene "hijos".' + . ' Elimine todos los "hijos" y pruebe otra vez.'); + $marco->addBody($error); + } elseif (PEAR::isError($err)) { + $error = new MECON_HTML_Error('Error no esperado: ' + . $err->getMessage()); $marco->addBody($error); } else { header("Location: $tipo"); @@ -196,7 +218,7 @@ if ($tipo) { $form->llenarObjeto($obj); $err =& $obj->guardar($db); if (PEAR::isError($err)) { - $error = new HTML_Error('Error no esperado: ' . $err->getMessage()); + $error = new MECON_HTML_Error('Error no esperado: ' . $err->getMessage()); $marco->addBody($error); } else { header(sprintf('Location: %s?accion=%d&id=%d', @@ -210,31 +232,24 @@ if ($tipo) { } // }}} - // Agrego el menu y el formulario a la página. {{{ - - // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{ - require_once 'MECON/HTML/Arbol/ArbolDB.php'; - $dbdata = array( - 'db' => &$db, - 'tabla' => $tabla, - 'id' => $tipo, - 'nombre' => $tipo, - 'prepend_link' => $tipo.'?accion='.AI_MODIF.'&id=' - ); - if ($tipo == 'grupo' or $tipo == 'servicio') { - $dbdata['nombre'] = 'nombre'; - $dbdata['id_padre'] = $tipo . '_padre'; - } - $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif'); + // Agrego el menu, link para nuevo y formulario a la página. {{{ $marco->addMenuVertical($arbol); - // }}} - - // Agrego el formulario a la página. {{{ + if ($accion & ~AI_ALTA) { + require_once 'HTML/Image.php'; + require_once 'HTML/Link.php'; + $img = new HTML_Image('/MECON/images/general_nuevo', 'Agregar nuevo', + array('border' => 0, 'align' => 'middle',)); + $link = new HTML_Link($tipo); + $marco->addBody('
'); + $link->addContents($img); + $link_text = ' Agregar un nuevo ' . $nombre; + $link->addContents($link_text); + $marco->addBody($link); + $marco->addBody('
'); + } $marco->addBody($form); // }}} - // }}} - // }}} // No se está editando nada, agrego la imágen de bienvenida a la página. {{{