// +----------------------------------------------------------------------+ // // $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/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. * * @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_ALTA_USUARIO, SAMURAI_BAJA_USUARIO, SAMURAI_MODI_USUARIO); //}}} 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_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 ($OPCION == '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); // }}} } //}}} } //}}} ?>