From 6c96af7186fde066713c880405778e445eff079b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mart=C3=ADn=20Marrese?= Date: Tue, 26 Aug 2003 20:19:27 +0000 Subject: [PATCH 1/1] Se agrego la funcionalidad para embeber el abm de usuarios en cualquier sistema externo. --- lib/SAMURAI/HTML/Perfil.php | 1 - lib/SAMURAI/HTML/Usuario.php | 267 +++++++++++++++++++++++++++++++++++ 2 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 lib/SAMURAI/HTML/Usuario.php diff --git a/lib/SAMURAI/HTML/Perfil.php b/lib/SAMURAI/HTML/Perfil.php index 931d707..8abccbb 100644 --- a/lib/SAMURAI/HTML/Perfil.php +++ b/lib/SAMURAI/HTML/Perfil.php @@ -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 index 0000000..26b988f --- /dev/null +++ b/lib/SAMURAI/HTML/Usuario.php @@ -0,0 +1,267 @@ + +// +----------------------------------------------------------------------+ +// +// $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 = ''; + $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_ALTA_USUARIO)) { + $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_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().' 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']); + $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); + // }}} + } + //}}} + +} +//}}} +?> -- 2.43.0