]> git.llucax.com Git - mecon/samurai.git/blobdiff - lib/SAMURAI/HTML/Perfil.php
BugFixes despues de tocar los $_SESSION
[mecon/samurai.git] / lib / SAMURAI / HTML / Perfil.php
index 931d707b19bc13999fe1efa78aacefbfbaf8fb2a..372abf88a7591e3044bea152d2a56ce21857f37a 100644 (file)
 // $Id$
 //
 
-//require_once 'MECON/general.php';
-//prepend_include_path('/home/mmarrese/public_html/meconlib/lib/');
+/** \page page_samurai_html_perfil Perfil Embebido
 
-//REQUIRE ONCE GENERALES {{{
+\section page_samurai_html_perfil_descripcion Descripcion
+    Funcion que sirve para embeber la funcionalidad de los perfiles dentro de
+    los sistemas que asi lo requieran (Es una copia de la funcionalidad de la
+    seccion).
+    Necesita para funcionar que se le pase como parametro la referencia al
+    objeto MECON_Marco que se este utilizando, ademas del identificador del
+    sistema del sistema en el cual se esta trabajando.
+    El funcionamiento es completamente independiente del sistema en el cual se
+    trabaje, no es necesario que se ingrese como seccion o subseccion. De hecho
+    como se ve en el ejemplo solo se embebe una tabla o formulario pero se
+    pueden agregar cosas particulares antes y despues de el.
+    
+    \note Trabaja con variables de sesion asi que es necesario que antes de llamar a
+    esta funcion se haya realizado un session_start() (Por ejemplo en el prepend).
+
+\section page_samurai_html_perfil_funcionamiento Funcionamiento
+    Al ser una copia de la seccion de Samurai, los permisos y validaciones que
+    se realizan en esta funcion son las mismas que se realizan en Samurai.
+
+    \subsection page_samurai_html_perfil_funcionamiento_validaciones Validaciones
+        Se realizan las siguientes validaciones:
+            - Los nombres de los perfiles nuevos deben ser distintos. 
+            - Los espacios entre las palabras que componen el nombre de un
+              perfil son eliminados. Ej: Agregar    Usuario
+              se cambia por Agregar Usuario.
+            - Es obligatorio que los perfiles contengan al menos un permiso.
+            - No puede haber dos perfiles con los mismos permisos.
+            - No se pueden borrar perfiles que esten asociados a usuarios.
+
+\section page_samurai_html_perfil_ejemplo Ejemplo
+    La utilizacion de perfiles embebido no genera condiciones, queda a criterio
+    del desarrollador incluir esta funcionalidad en el lugar que quiera.
+
+    De esta manera se agrega la funcionalidad:
+    \code
+    include 'SAMURAI/HTML/Perfil.php';
+
+    SAMURAI_HTML_Perfil($MARCO, $ID_SISTEMA);
+    \endcode
+    
+    En donde $MARCO es el objeto MECON_Marco que utiliza el sistema y
+    $ID_SISTEMA es el identificador numerico del sistema en el cual se esta
+    trabajando.
+
+    Antes o despues de esto se pueden agregar componentes pertenecientes al
+    sistema.
+
+    \note Es necesario para ver el contenido de la pagina hacer 
+    $MARCO->display() al final de la misma.
+*/
+
+//REQUIRE ONCE {{{
 require_once 'SAMURAI/DB.php';
 require_once 'SAMURAI/Perm.php';
 require_once 'SAMURAI/constantes.php';
@@ -37,24 +87,16 @@ require_once 'MECON/HTML/Image.php';
 require_once 'PEAR.php';
 // }}}
 
-// Funciones para agregar la seccion SAMURAI_Perfil en los sistemas.
-// Con esto se pueden embeber el abm de perfiles como una seccion/subseccion mas
-// de un sistema cualquiera.
-// Es necesario para que funcione que se haya realizado un session_start()
-// antes, por ejemplo en el prepend.
-
-    /**
-     * Funcion que se encarga agregar los componentes necesarios al sistema para que
-     * se pueda realizar un abm de perfiles.
-     * Sin los parametros no funciona
-     *
-     * @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_Perfil_Html {{{
-function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
+/** Funcion que se encarga agregar los componentes necesarios al sistema para
+ * que se pueda realizar un abm de perfiles.  Sin los parametros no funciona
+ *
+ * @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_HTML_Perfil {{{
+function SAMURAI_HTML_Perfil(&$MARCO, $id_sistema) {
 
     //INICIALIZO OBJETOS GENERALES {{{
     //REALIZO CONEXION
@@ -64,13 +106,23 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
     $SAMURAI_PERM = new SAMURAI_Perm ($_SESSION['usuario'], $id_sistema, $DB);
     //}}}
 
+    if (@$_POST['samurai_accion'] == 'abm' || @$_GET['samurai_perfiles'] == 'abm') {
+        $OPCION = 'abm';
+    }
+    elseif (@$_POST['samurai_accion'] == 'nuevo' || @$_GET['samurai_perfiles'] == 'nuevo') {
+        $OPCION = 'nuevo';
+    }
+    else {
+        $OPCION = 'listado';
+    }
+    
     //POSIBLES ACCIONES
     // listado -> Listado de los perfiles ya creados en el sistema.
     // nuevo   -> Pantalla de seleccion o de ingreso de un nuevo nombre.
     // abm     -> Formulario para la carga de la info del perfil.
 
     //LISTADO {{{
-    if ((!@$_GET['samurai_perfiles'] && !@$_POST['samurai_accion'])|| @$_GET['samurai_perfiles'] == 'listado') {
+    if ($OPCION == 'listado') {
         //VEO SI PUEDE ACCEDER{{{
         $SAMURAI_PERM->chequear(SAMURAI_ALTA_PERFIL,SAMURAI_BAJA_PERFIL,SAMURAI_MODI_PERFIL);
         //}}}
@@ -139,7 +191,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
     }
     //}}}
     //NUEVO {{{
-    elseif (@$_GET['samurai_perfiles'] == 'nuevo' || @$_POST['samurai_accion'] == 'nuevo') {
+    elseif ($OPCION == 'nuevo') {
         //VEO SI PUEDE ACCEDER{{{
         $SAMURAI_PERM->chequear(SAMURAI_ALTA_PERFIL);
         //}}}
@@ -150,7 +202,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
         //AGREGO LOS ELEMENTOS DEL FORM {{{
             $FORM->addElement ('hidden', 'samurai_accion', 'nuevo');
             $FORM->addElement ('header', 'cabecera'   , 'Nuevo Perfil');
-            $FORM->addElement ('select', 'perfiles'   , 'Perfiles', '', array('size' => '1'));
+            $FORM->addElement ('select', 'perfiles'   , 'Perfiles', null, array('size' => '1'));
             $FORM->addElement ('text'  , 'filtro'     , 'Filtrar' , array('size' => '50'));
             $FORM->addElement ('text'  , 'descripcion', 'Nombre'  , array('size' => '50'));
             $group[] = HTML_QuickForm::createElement('submit', 'continuar', 'Continuar');
@@ -166,7 +218,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
             $perfiles    =& $FORM->getElement('perfiles');
             $descripcion =& $FORM->getElement('descripcion');
             if (@$botones['cancelar']) {
-                header('Location: '.$_SERVER['PHP_SELF']);
+                header('Location: '.$_SERVER['PHP_SELF'].'/');
             }
             if (!isset($botones['filtrar'])) {
                 $PERFILES = SAMURAI_Perfil::getArrayPerfiles($DB);
@@ -245,7 +297,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
     }
     //}}}
     //ABM {{{
-    elseif (@$_GET['samurai_perfiles'] == 'abm' || @$_POST['samurai_accion'] == 'abm') {
+    elseif ($OPCION == 'abm') {
         //VEO SI PUEDE ACCEDER{{{
         $SAMURAI_PERM->chequear(SAMURAI_ALTA_PERFIL,SAMURAI_BAJA_PERFIL,SAMURAI_MODI_PERFIL);
         //}}}
@@ -261,7 +313,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
             }
             $FORM    =& new MECON_HTML_QuickForm ('samurai_perfiles','post',$_SERVER['PHP_SELF']);
             $SISTEMA =& new SAMURAI_Sistema ($DB, $id_sistema);
-            $PERFIL  =& new SAMURAI_Perfil ($DB, $id_perfil);
+            $PERFIL  =& new SAMURAI_Perfil ($DB, $id_perfil, $id_sistema);
 
             if ($PERFIL->getResponsable()) {
                 $responsable = $PERFIL->getResponsable();
@@ -357,6 +409,8 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
                 }
                 // }}}
                 else {
+                    $samurai_accion =& $FORM->getElement('samurai_accion');
+                    $samurai_accion->setValue('listado');
                     $id_perfil    =& $FORM->getElement  ('id_perfil'  );
                     $desc_perfil  =& $FORM->getElement  ('desc_perfil');
                     $permisos     =& $FORM->getElement  ('permisos'   );
@@ -375,7 +429,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
                     $PERFIL->setPermisos   ($permisos->getSelected()); //Le asigno al perfil los permisos seleccionados
                     
                     if ($SAMURAI_PERM->tiene(SAMURAI_TIPO_PERFIL)) {
-                        $PERFIL->setTipo       ($tipo_perfil_tmp['0']   );
+                        $PERFIL->setTipo($tipo_perfil_tmp['0']);
                     }
                     
                     //Grabo y verifico si se produjo algun error
@@ -389,7 +443,8 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
                     }
                     else {
                         $FORM->freeze();
-                        header('Location: '.$_SERVER['PHP_SELF']);
+                        header('Location: '.$_SERVER ['PHP_SELF'].'/');
+                        exit;
                     }
                 }
             }
@@ -400,7 +455,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);
@@ -410,4 +464,5 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) {
     }
     //}}}
 }
+//}}}
 ?>