X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/61fdd4f7e9019fdd5c4e3b5d9c43ab5d3506a11c..493cf2effdb418f10f2ae77cec0786c5cef0bbcc:/sistema/www/index.php?ds=sidebyside
diff --git a/sistema/www/index.php b/sistema/www/index.php
index 4e88fab..11dede8 100644
--- a/sistema/www/index.php
+++ b/sistema/www/index.php
@@ -27,51 +27,67 @@
// $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());
+}
+// }}}
+
+// Si no está logueado, se redirige a la Intranet. {{{
+if (!@$_SESSION['usuario']) {
+ header('Location: /sistemas/intranet/sistemas');
}
// }}}
+// Creo el objeto de permisos y chequeo que tenga al menos un permiso para seguir. {{{
+require_once 'SAMURAI/Perm.php';
+$perm = new SAMURAI_Perm($_SESSION['usuario'], AI_PERM, $db);
+$perm->chequear(AI_PERM_NOTICIAS, AI_PERM_SERVICIOS, AI_PERM_SISTEMAS);
+// }}}
+
// 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';
+ $perm->chequear(AI_PERM_NOTICIAS);
} elseif ($tmp == 'servicio') {
$tipo = $tmp;
$clase = 'AI_Servicio';
$require = 'AI/Servicio.php';
$tabla = $tipo;
$nombre = $tipo;
+ $perm->chequear(AI_PERM_SERVICIOS);
} elseif ($tmp == 'sistema') {
$tipo = $tmp;
$clase = 'AI_Sistema';
$require = 'AI/Sistema.php';
$tabla = $tipo;
$nombre = $tipo;
+ $perm->chequear(AI_PERM_SISTEMAS);
} else { // No hay un objeto válido para administrar.
header('Location: '.$_SERVER['SCRIPT_NAME']);
}
@@ -129,24 +145,16 @@ 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());
- }
- // }}}
-
// Inicio el formulario, cargando datos de ser necesario. {{{
if ($accion & (AI_BAJA | AI_MODIF)) {
$err =& $obj->cargar($db);
if (PEAR::isError($err)) {
die($err->getMessage());
}
- $form->iniciar($obj, $accion);
+ $form->iniciar($obj, $accion, $db);
} else {
$accion = AI_ALTA;
- $form->iniciar($obj);
+ $form->iniciar($obj, $accion, $db);
}
// }}}
@@ -163,11 +171,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 +192,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 +214,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,38 +228,35 @@ 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');
- $marco->addMenuVertical($arbol);
+ require_once 'AI/Arbol.php';
+ $arbol = new AI_Arbol($obj, $db, false);
// }}}
- // Agrego el formulario a la página. {{{
+ // Agrego el menu, link para nuevo y formulario a la página. {{{
+ $marco->addMenuVertical($arbol);
+ if ($accion & ~AI_ALTA) {
+ require_once 'MECON/HTML/Image.php';
+ require_once 'MECON/HTML/Link.php';
+ $marco->addBody('');
+ $link = new MECON_HTML_Link($tipo);
+ $link->addContents('Nuevo');
+ $img = new MECON_HTML_Image('/MECON/images/general_nuevo', 'Agregar nuevo',
+ array('border' => 0, 'align' => 'middle',));
+ $link->addContents($img);
+ $marco->addBody($link);
+ $marco->addBody('
');
+ }
$marco->addBody($form);
// }}}
- // }}}
-
// }}}
// No se está editando nada, agrego la imágen de bienvenida a la página. {{{
} else {
- require_once 'HTML/Image.php';
+ require_once 'MECON/HTML/Image.php';
$marco->setEspacios(false);
- $marco->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
+ $marco->addBody(new MECON_HTML_Image('images/home', 'Adminitrador de Intranet'));
}
// }}}