// +----------------------------------------------------------------------+ // // $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'; //}}} /** * 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 * @param int $id_sistema Identificador del sistema en el cual se esta * trabajando * * @return void */ //SAMURAI_HTML_Usuario {{{ function SAMURAI_HTML_Usuario(&$MARCO, $id_sistema) { $_SESSION['samurai']['id_sistema'] = $id_sistema; $_SESSION['samurai']['login'] = $_SESSION['usuario']; //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_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 ($OPCION == 'listado') { //LINKS {{{ $aHref = ''; $aHrefModif = $aHref.'Modificar Usuario'; $aHrefElim = $aHref.'Eliminar Usuario'; // }}} //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().' SISTEMA: '.$SISTEMA->getNombre().''); $TABLA3->addRow($row,'align=left'); //Agrego el link a nuevo if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_ALTA)) { $row = array ($aHref.'Agregar Nuevo Usuario'); $TABLA2->addRow($row,'align=right'); } //Genero la cabecera de la tabla $row = array ('Login','Nombre'); if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_MODIF)) { $row[] = 'Modif.'; } if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_BAJA)) { $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_PERM_USUARIO_MODIF)) { $row[] = $Modif; } if ($SAMURAI_PERM->tiene(SAMURAI_PERM_USUARIO_BAJA)) { $row[] = $Elim; } $TABLA->addRow($row); } // }}} //DIBUJO LA PAGINA {{{ $MARCO->addBodyContent($TABLA3); $MARCO->addBodyContent($TABLA2->toHtml(1)); $MARCO->addBodyContent($TABLA); // }}} } //}}} //ABM {{{ elseif ($OPCION == 'abm') { //CREO LOS OBJETOS NECESARIOS {{{ if (@$_GET['login']) { $login = $_GET['login']; $validar = 0; } else { $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, $id_sistema); // }}} //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().' SISTEMA: '.$SISTEMA->getNombre().''); $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']); $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'); } 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' ); $perfiles =& $FORM->getElement ('perfiles'); $group =& $FORM->getElement ('botones' ); $group =& $group->getElements('aceptar' ); $aceptar =& $group[0]; $res = ''; if ($login) { $login3 = $login2->_text; $nombre =& $FORM->getElement ('nombre' ); } 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->addBodyContent($TABLA); if (isset($ERROR)) { $MARCO->addBodyContent($ERROR); } $MARCO->addBodyContent($FORM); // }}} } //}}} } //}}} ?>