]> git.llucax.com Git - mecon/ai.git/blobdiff - sistema/www/index.php
Se corrigio los nuevos nombres para MECON_HTML_Arbol y MECON_HTML_ArbolDB.
[mecon/ai.git] / sistema / www / index.php
index 4e88fabf51871a18ff8991cc046cb7529daf12d7..4983778a0c9f555d8524bfef6ded7ee5a8f8843e 100644 (file)
 // $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 '<DIV style="font-size: 11px; text-align: center; color: red">' . $this->msg . '</DIV>';
-    }
+// 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('<DIV class="texto11_negro" valign="middle" align="center">');
+        $link->addContents($img);
+        $link_text = ' Agregar un nuevo ' . $nombre;
+        $link->addContents($link_text);
+        $marco->addBody($link);
+        $marco->addBody('</DIV>');
+    }
     $marco->addBody($form);
     // }}}
 
-    // }}}
-
 // }}}
 
 // No se está editando nada, agrego la imágen de bienvenida a la página. {{{