]> git.llucax.com Git - mecon/samurai.git/blobdiff - lib/SAMURAI/HTML/Usuario.php
Se agrega un método para obtener todos los usuarios que tienen un determinado permiso...
[mecon/samurai.git] / lib / SAMURAI / HTML / Usuario.php
index bf322a6119e457234f4ec6c95e169ad94de00cf7..8206fda995402d159a5fb4732d5b19e5ade452de 100644 (file)
 //
 // $Id$
 //
+//
+//
+
+/** \page page_samurai_html_usuario Usuario Embebido
+
+\section page_samurai_html_usuario_descripcion Descripcion
+    Samurai provee de una funcion que permite embeber la funcionalidad de 
+    usuarios dentro de aquellos sistemas que asi lo requieran.
+    Es completamente independiente del sistema en el cual trabaja y puede ser
+    agregado de cualquier manera (Seccion, Subseccion o Contenido) al sistema.
+        
+    \note Es necesario para embeber los usuarios que se haya realizado un
+    session_start().
+
+\section page_samurai_html_usuario_funcionamiento Funcionamiento
+    Es una copia de la seccion Usuarios dentro de SAMURAI. Se relizan las mismas
+    verificaciones, tiene las mismas condiciones y se utilizan los mismos 
+    permisos que en este.
+
+    \subsection page_samurai_html_usuario_funcionamiento_validaciones Validaciones y Condiciones
+        - Cualquier usuario que se quiera agregar debe haberse logueado al
+          menos una vez a la intranet.
+        - No puede cargarse dos veces el mismo usuario en un sistema.
+        - Cada vez que se carga un usuario es necesario asignarle al menos
+          un perfil, sino no va a permitir que se ingrese el mismo.
+
+\section page_samurai_html_usuario_ejemplo Ejemplo
+    SAMURAI_HTML_Usuario agrega el contenido directamente en el marco que se 
+    este utilizando.
+    Para embeber los usuarios hay que hacerlo de la siguiente manera
+    
+    \code
+    include 'SAMURAI/HTML/Usuario.php';
+    SAMURAI_HTML_Usuario($MARCO, $ID_SISTEMA);
+    \endcode
+     
+    \note $MARCO es el objeto MECON_Marco o el objeto HTML_DietMarco de
+    intranet. 
+    $ID_SISTEMA es el identificador numerico en el cual se esta realizando la
+    accion de embeber.
+
+\section page_samurai_html_usuario_permisos Pasos Finales
+    Para que los usuarios puedan acceder a los usuarios embebidos es necesario
+    que en el sistema en el cual se este embebiendo se agregen los permisos que
+    utiliza la seccion Usuarios (enumerados mas abajo), y que estos mediante
+    perfiles se asignen a usuarios.
+    Esto implica que por lo menos un usuario tendra que ser cargado desde
+    SAMURAI para que este tenga acceso a la zona embebida.
+
+    Permisos
+        - usuario alta
+        - usuario baja
+        - usuario modificacion
+*/
 
 //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/Perm.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.
+/** 
+ * Funcion que se encarga agregar los componentes necesarios al sistema para
+ * que se pueda realizar un abm de usuarios.
+@see \ref page_samurai_html_usuario
  *
  * @param MECON_Marco &$MARCO      Referencia al objeto MECON_Marco que se este
  *                                 utilizando en la pagina
@@ -60,16 +112,23 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
     $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);
+    $SAMURAI_PERM->chequear(SAMURAI_PERM_USUARIO_ALTA, SAMURAI_PERM_USUARIO_BAJA, SAMURAI_PERM_USUARIO_MODIF);
     //}}}
+    
+    if (@$_POST['samurai_accion'] == 'abm' || @$_GET['samurai_usuarios'] == 'abm') {
+        $OPCION = 'abm';
+    }
+    else {
+        $OPCION = 'listado';
+    }
 
     //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') {
+    if ($OPCION == 'listado') {
         //LINKS {{{
-            $aHref      = '<a href="'.$_SERVER['PHP_SELF'].'?accion=##ACCION##&login=##NUEVO##&samurai_usuarios=abm">';
+            $aHref      = '<a href="'.$_SERVER['PHP_SELF'].'?samurai_usuarios=abm&accion=##ACCION##&login=##NUEVO##">';
             $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>';
         // }}}
@@ -88,16 +147,16 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
             $TABLA3->addRow($row,'align=left');    
 
             //Agrego el link a nuevo
-            if ($SAMURAI_PERM->tiene(SAMURAI_ALTA_USUARIO)) {
+            if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_ALTA)) {
                 $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)) {
+            if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_MODIF)) {
                 $row[] = 'Modif.';
             }
-            if ($SAMURAI_PERM->tiene(SAMURAI_BAJA_USUARIO)) {
+            if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_BAJA)) {
                 $row[] = 'Elim.';
             }
             $TABLA->addRow($row,'cabecera');
@@ -107,10 +166,10 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
                 $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)) {
+                if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_MODIF)) {
                     $row[] = $Modif;
                 }
-                if ($SAMURAI_PERM->tiene(SAMURAI_BAJA_USUARIO)) {
+                if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_BAJA)) {
                     $row[] = $Elim;
                 }
 
@@ -118,15 +177,14 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
             }
         // }}}
         //DIBUJO LA PAGINA {{{
-            $MARCO->addBody($TABLA3);
-            $MARCO->addBody($TABLA2->toHtml(1));
-            $MARCO->addBody($TABLA);
-            
+            $MARCO->addBodyContent($TABLA3);
+            $MARCO->addBodyContent($TABLA2->toHtml(1));
+            $MARCO->addBodyContent($TABLA);
         // }}}
     }
     //}}}
     //ABM {{{
-    elseif (@$_GET['samurai_usuarios'] == 'abm' || @$_POST['samurai_accion'] == 'abm') {
+    elseif ($OPCION == 'abm') {
         //CREO LOS OBJETOS NECESARIOS {{{
             if (@$_GET['login']) {
                 $login = $_GET['login'];
@@ -136,10 +194,26 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
                 $validar = 1;
                 $login = null;
             }
+            //XXX OBTENGO LA ACCION {{{
+            switch (@$_REQUEST['accion']) {
+                case 'm':
+                    $b_accion = 'Modificar';
+                    $accion = 'm';
+                    break;
+                case 'e':
+                    $b_accion = 'Eliminar';
+                    $accion = 'e';
+                    break;
+                default:
+                    $b_accion = 'Grabar';
+                    $accion = '';
+                    break;
+            }       
+            //}}}        
             $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);
+            $USUARIO = new SAMURAI_Usuario($DB, $login, $id_sistema);
         // }}}
         //OBTENGO LOS DATOS DE LA BASE {{{
             $tmps = SAMURAI_Perfil::getPerfiles($DB, null, $id_sistema);
@@ -166,7 +240,8 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
                 }
                 $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');
+                $FORM->addElement ('hidden', 'accion', $accion);
+                $group[] = HTML_QuickForm::createElement('submit', 'aceptar', $b_accion);
                 $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar', array ('onClick' => 'javascript:window.location = \''.$_SERVER['PHP_SELF'].'\';return false;'));
                 $FORM->addGroup($group,'botones');
             }
@@ -207,12 +282,11 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
                 // VEO SI SE CANCELO {{{
                 $botones = $FORM->getSubmitValue('botones');
                 if (@$botones['cancelar']) {
-                    header('Location: '.$_SERVER['PHP_SELF']);
+                    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' );
@@ -221,6 +295,7 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
 
                     if ($login) {
                         $login3 = $login2->_text;
+                        $nombre   =& $FORM->getElement  ('nombre'  );
                     }
                     else {
                         $login3 = $login2->getValue();
@@ -248,20 +323,20 @@ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) {
                             }
                         }
                         else {
-                            $FORM->removeElement();
+//                            $FORM->removeElement();
                             $FORM->freeze();
-                            header('Location: '.$_SERVER['PHP_SELF']);
+                            header('Location: '.$_SERVER['PHP_SELF'].'/');
                         }
                     }
                 }
             }
         // }}}
         //DIBUJO LA PAGINA {{{
-            $MARCO->addBody($TABLA);
+            $MARCO->addBodyContent($TABLA);
             if (isset($ERROR)) {
-                $MARCO->addBody($ERROR);
+                $MARCO->addBodyContent($ERROR);
             }
-            $MARCO->addBody($FORM);
+            $MARCO->addBodyContent($FORM);
         // }}}
     }
     //}}}