]> git.llucax.com Git - mecon/samurai.git/commitdiff
Se agrego la funcionalidad para embeber el abm de usuarios en cualquier sistema externo.
authorMartín Marrese <marrese@gmail.com>
Tue, 26 Aug 2003 20:19:27 +0000 (20:19 +0000)
committerMartín Marrese <marrese@gmail.com>
Tue, 26 Aug 2003 20:19:27 +0000 (20:19 +0000)
lib/SAMURAI/HTML/Perfil.php
lib/SAMURAI/HTML/Usuario.php [new file with mode: 0644]

index 931d707b19bc13999fe1efa78aacefbfbaf8fb2a..8abccbb4fbbee874ac086725986d5e209a88c434 100644 (file)
@@ -400,7 +400,6 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
             $TABLA3 = new MECON_HTML_Tabla ('cellspacing=0');
             $TABLA3->addRow($row,'align=left');    
 
-            $MARCO->addTitle('ABM Perfil');
             $MARCO->addBody($TABLA3);
             if (isset($ERROR)) {
                 $MARCO->addBody($ERROR);
diff --git a/lib/SAMURAI/HTML/Usuario.php b/lib/SAMURAI/HTML/Usuario.php
new file mode 100644 (file)
index 0000000..26b988f
--- /dev/null
@@ -0,0 +1,267 @@
+<?php
+// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4 foldmethod=marker textwidth=80:
+// +----------------------------------------------------------------------+
+// | PHP Version 4                                                        |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2003 The PHP Group                                |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license,      |
+// | that is bundled with this package in the file LICENSE, and is        |
+// | available at through the world-wide-web at                           |
+// | http://www.php.net/license/2_02.txt.                                 |
+// | If you did not receive a copy of the PHP license and are unable to   |
+// | obtain it through the world-wide-web, please send a note to          |
+// | license@php.net so we can mail you a copy immediately.               |
+// +----------------------------------------------------------------------+
+// | Created: mar ago 26 13:18:26 ART 2003
+// | Author:  Martin Marrese <mmarre@mecon.gov.ar>
+// +----------------------------------------------------------------------+
+//
+// $Id$
+//
+
+//REQUIRE ONCE {{{
+    require_once 'MECON/HTML/QuickForm.php';
+    require_once 'MECON/HTML/Error.php';
+    require_once 'MECON/HTML/Tabla.php';
+    require_once 'MECON/HTML/Image.php';
+    require_once 'SAMURAI/Perfil.php';
+    require_once 'SAMURAI/Usuario.php';
+    require_once 'SAMURAI/Sistema.php';
+    require_once 'SAMURAI/constantes.php';
+//}}}
+
+// Funciones para agregar la seccion SAMURAI_Usuario en los sistemas.
+// Con esto se pueden embeber el abm de usuarios como una seccion/subseccion mas
+// de un sistema cualquiera.
+
+/**
+ * Funcion que se encarga agregar los componentes necesarios al sistema para que
+ * se pueda realizar un abm de usuarios.
+ *
+ * @param MECON_Marco &$MARCO      Referencia al objeto MECON_Marco que se este
+ *                                 utilizando en la pagina
+ * @param int          $id_sistema Identificador del sistema en el cual se esta
+ *                                 trabajando
+ *
+ * @return void
+ */
+//SAMURAI_Usuario_Html {{{
+function SAMURAI_Usuario_Html(&$MARCO, $id_sistema) {
+    //INICIALIZO OBJETOS GENERALES {{{
+    //REALIZO CONEXION
+    $tmp = new SAMURAI_DB();
+    $DB  =& $tmp->connect();
+    //CREAR EL OBJETO SAMURAI_Perm
+    $SAMURAI_PERM = new SAMURAI_Perm ($_SESSION['usuario'], $id_sistema, $DB);
+    //}}}
+    //VERIFICO SI SE TIENE ACCESO A LA PAGINA{{{
+    $SAMURAI_PERM->chequear(SAMURAI_ALTA_USUARIO, SAMURAI_BAJA_USUARIO, SAMURAI_MODI_USUARIO);
+    //}}}
+
+    //POSIBLES ACCIONES
+    // listado -> Listado de los usuarios ya creados en el sistema.
+    // abm     -> Formulario para la carga de la info del usuario.
+    //LISTADO {{{
+    if ((!@$_GET['samurai_usuarios'] && !@$_POST['samurai_accion'])|| @$_GET['samurai_usuarios'] == 'listado') {
+        //LINKS {{{
+            $aHref      = '<a href="'.$_SERVER['PHP_SELF'].'?accion=##ACCION##&login=##NUEVO##&samurai_usuarios=abm">';
+            $aHrefModif = $aHref.'<img src="/MECON/images/general_modificar.gif" border="0" alt="Modificar Usuario"></a>';
+            $aHrefElim  = $aHref.'<img src="/MECON/images/general_eliminar.gif"  border="0" alt="Eliminar Usuario" ></a>';
+        // }}}
+        //CREO LOS OBJETOS NECESARIOS {{{
+            $TABLA2 = new MECON_HTML_Tabla ('cellspacing=0');
+            $TABLA  = new MECON_HTML_Tabla ('cellpadding=2');
+            $TABLA3 = new MECON_HTML_Tabla ('cellspacing=0');
+            $SISTEMA = new SAMURAI_Sistema($DB, $id_sistema);
+        // }}}
+        //OBTENGO LA INFORMACION DE LA BASE {{{
+            $usuarios = SAMURAI_Usuario::getUsuarios($DB, $id_sistema);
+        // }}}
+        //AGREGO LOS DATOS A LAS TABLAS {{{
+            $imagen = new MECON_HTML_Image('/MECON/images/vinetas_flecha_doble.gif');
+            $row    = array ($imagen->toHtml().'&nbsp;<b>SISTEMA: '.$SISTEMA->getNombre().'</b>');
+            $TABLA3->addRow($row,'align=left');    
+
+            //Agrego el link a nuevo
+            if ($SAMURAI_PERM->tiene(SAMURAI_ALTA_USUARIO)) {
+                $row   = array ($aHref.'<img src="/MECON/images/general_nuevo.gif" border="0">Agregar Nuevo Usuario</a>');
+                $TABLA2->addRow($row,'align=right');    
+            }
+            //Genero la cabecera de la tabla
+            $row  = array ('Login','Nombre');
+            if ($SAMURAI_PERM->tiene(SAMURAI_MODI_USUARIO)) {
+                $row[] = 'Modif.';
+            }
+            if ($SAMURAI_PERM->tiene(SAMURAI_BAJA_USUARIO)) {
+                $row[] = 'Elim.';
+            }
+            $TABLA->addRow($row,'cabecera');
+            foreach ($usuarios as $usuario) {
+                $Modif = ereg_replace('##NUEVO##' , $usuario->getLogin(), $aHrefModif);
+                $Elim  = ereg_replace('##NUEVO##' , $usuario->getLogin(), $aHrefElim );
+                $Modif = ereg_replace('##ACCION##', 'm'                 , $Modif     );
+                $Elim  = ereg_replace('##ACCION##', 'e'                 , $Elim      );
+                $row = array ($usuario->getLogin(), $usuario->getNombre());
+                if ($SAMURAI_PERM->tiene(SAMURAI_MODI_USUARIO)) {
+                    $row[] = $Modif;
+                }
+                if ($SAMURAI_PERM->tiene(SAMURAI_BAJA_USUARIO)) {
+                    $row[] = $Elim;
+                }
+
+                $TABLA->addRow($row);
+            }
+        // }}}
+        //DIBUJO LA PAGINA {{{
+            $MARCO->addBody($TABLA3);
+            $MARCO->addBody($TABLA2->toHtml(1));
+            $MARCO->addBody($TABLA);
+            
+        // }}}
+    }
+    //}}}
+    //ABM {{{
+    elseif (@$_GET['samurai_usuarios'] == 'abm' || @$_POST['samurai_accion'] == 'abm') {
+        //CREO LOS OBJETOS NECESARIOS {{{
+            if (@$_GET['login']) {
+                $login = $_GET['login'];
+                $validar = 0;
+            }
+            else {
+                $validar = 1;
+                $login = null;
+            }
+            $TABLA   = new MECON_HTML_Tabla ('cellspacing=0');
+            $FORM    = new MECON_HTML_QuickForm ('samurai_usuarios','post', $_SERVER['PHP_SELF']);
+            $SISTEMA = new SAMURAI_Sistema($DB, $id_sistema);
+            $USUARIO = new SAMURAI_Usuario($DB, $login);
+        // }}}
+        //OBTENGO LOS DATOS DE LA BASE {{{
+            $tmps = SAMURAI_Perfil::getPerfiles($DB, null, $id_sistema);
+            foreach ($tmps as $tmp) {
+                $PERFILES[$tmp->getId()] = $tmp->getDescripcion();
+            }
+        //}}}
+        //AGREGO LOS DATOS A LAS TABLAS {{{
+            $imagen = new MECON_HTML_Image('/MECON/images/vinetas_flecha_doble.gif');
+            $row    = array ($imagen->toHtml().'&nbsp;<b>SISTEMA: '.$SISTEMA->getNombre().'</b>');
+            $TABLA->addRow($row,'align=left');    
+        //}}}
+        //AGREGO LOS ELEMENTOS DEL FORM {{{
+            if (@$PERFILES) {
+                $FORM->addElement ('hidden', 'samurai_accion', 'abm');
+                $FORM->addElement ('header', 'cabecera'   , 'ABM Usuarios');
+                if ($login) { //Si esta el login solo permito modificar los perfiles asociados
+                    $FORM->addElement ('static', 'login2', 'Login@Organismo' , $login );
+                    $FORM->addElement ('hidden', 'login' , $login );
+                    $FORM->addElement ('static', 'nombre', 'Nombre', $USUARIO->getNombre());
+                }
+                else {
+                    $FORM->addElement ('text'  , 'login' , 'Login@Organismo' , array( 'value' => $login , 'size' => '20'));
+                }
+                $FORM->addElement ('select', 'perfiles'   , 'Perfiles', $PERFILES, array('size' => '5', 'multiple' => 'true'));
+                $FORM->addElement ('hidden', 'responsable', $_SESSION['samurai']['login']);
+                $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar');
+                $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar', array ('onClick' => 'javascript:window.location = \''.$_SERVER['PHP_SELF'].'\';return false;'));
+                $FORM->addGroup($group,'botones');
+            }
+            else {
+                $ERROR = new MECON_HTML_Error('El sistema no posee perfiles.');
+            }
+        // }}}
+        //AGREO LAS REGLAS DE VALIDACION {{{
+            if (@$PERFILES) {
+                if (@$validar) {
+                    $FORM->addRule ('login', 'Se debe ingresar el login del usuario', 'required');
+                }
+                $FORM->addRule ('perfiles', 'Se debe seleccionar al menos un perfil', 'required');
+            }
+        // }}}
+        //SETEO LOS PERFILES SELECCIONADOS {{{
+            if (isset($_GET['accion']) && $_GET['accion'] != '') {
+                $perfiles =& $FORM->getElement  ('perfiles');
+                $group    =& $FORM->getElement  ('botones' );
+                $group    =& $group->getElements('aceptar' );
+                $aceptar  =& $group[0];
+                
+                $perfiles->setSelected($USUARIO->getPerfiles());
+                
+                //Modifico el valor del boton
+                $aceptar->setValue('Modificar');
+                    
+                //ELIMINACION -> modifico el valor del boton
+                if ($_GET['accion'] == 'e') {
+                    $aceptar->updateAttributes(array ('onClick' => 'javascript:if (confirm(\'¿Esta Seguro?\')) return true;return false;'));
+                    $aceptar->setValue('Eliminar');
+                    $FORM->freeze();
+                }
+            }
+        // }}}
+        //VALIDO EL FORMULARIO {{{
+            if ($FORM->validate()) {
+                // VEO SI SE CANCELO {{{
+                $botones = $FORM->getSubmitValue('botones');
+                if (@$botones['cancelar']) {
+                    header('Location: '.$_SERVER['PHP_SELF']);
+                }
+                // }}}
+                else {
+                    $login2   =& $FORM->getElement  ('login'   ); 
+                    $nombre   =& $FORM->getElement  ('nombre'  );
+                    $perfiles =& $FORM->getElement  ('perfiles');
+                    $group    =& $FORM->getElement  ('botones' );
+                    $group    =& $group->getElements('aceptar' );
+                    $aceptar  =& $group[0];
+                    $res = '';
+
+                    if ($login) {
+                        $login3 = $login2->_text;
+                    }
+                    else {
+                        $login3 = $login2->getValue();
+                    }
+                    $USUARIO->setLogin($login3);
+                    $res  = $USUARIO->verificarLogin();
+                    if ($aceptar->getValue() == 'Grabar') {
+                        $res2 = $USUARIO->verificarAsociacionExistente();
+                    }
+                    if (@PEAR::isError($res)) {
+                        $ERROR = new MECON_HTML_Error($res->getMessage());
+                    }
+                    elseif (@PEAR::isError($res2)) {
+                        $ERROR =new MECON_HTML_Error($res2->getMessage());
+                    }
+                    else {
+                        $USUARIO->setPerfiles($perfiles->getSelected());
+
+                        $res = $USUARIO->guardarDatos($aceptar->getValue());
+
+                        if (PEAR::isError($res)) {
+                            $ERROR = new MECON_HTML_Error($res->getMessage());
+                            if ($aceptar->getValue() == 'Eliminar') {
+                                $FORM->freeze();
+                            }
+                        }
+                        else {
+                            $FORM->removeElement();
+                            $FORM->freeze();
+                            header('Location: '.$_SERVER['PHP_SELF']);
+                        }
+                    }
+                }
+            }
+        // }}}
+        //DIBUJO LA PAGINA {{{
+            $MARCO->addBody($TABLA);
+            if (isset($ERROR)) {
+                $MARCO->addBody($ERROR);
+            }
+            $MARCO->addBody($FORM);
+        // }}}
+    }
+    //}}}
+    
+}
+//}}}
+?>