// +----------------------------------------------------------------------+
//
// $Id$
//
//VERIFICO SI SE TIENE ACCESO A LA PAGINA{{{
$SAMURAI_PERM->setSistema(SAMURAI_PERM);
if (!$SAMURAI_PERM->tiene(SAMURAI_PERM_DEVELOPER)) {
$SAMURAI_PERM->setSistema($_SESSION['samurai']['id_sistema']);
$SAMURAI_PERM->chequear(SAMURAI_PERM_USUARIO_ALTA, SAMURAI_PERM_USUARIO_BAJA, SAMURAI_PERM_USUARIO_MODIF, SAMURAI_PERM_DEVELOPER);
}
$MARCO =& new MECON_Marco ('/var/www/sistemas/samurai/sistema/conf/confSecciones.php', $SAMURAI_PERM);
//}}}
//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;
}
//}}}
//REQUIRE ONCE {{{
//MECON {{{
require_once 'MECON/HTML/QuickForm.php';
require_once 'MECON/HTML/Tabla.php';
require_once 'MECON/HTML/Image.php';
require_once 'MECON/HTML/Error.php';
//}}}
//SAMURAI {{{
require_once 'SAMURAI/Perfil.php';
require_once 'SAMURAI/Usuario.php';
require_once 'SAMURAI/Sistema.php';
//}}}
// }}}
//VEO SI HAY QUE ELEGIR EN QUE SISTEMA TRABAJAR {{{
if (!@$_SESSION['samurai']['id_sistema']) {
header('Location: ./../sel-sistema?redirect=usuarios/usuarios');
}
// }}}
//CREO LOS OBJETOS NECESARIOS {{{
if (@$accion) {
$login = $_GET['_login'];
$validar = 0;
}
else {
$validar = 1;
$login = null;
}
$TABLA = new MECON_HTML_Tabla ('cellspacing=0');
$FORM = new MECON_HTML_QuickForm ('usuarios_abm','post','usuarios-abm');
$FORM->renderer->updateAttributes('width="400"');
$USUARIO = new SAMURAI_Usuario($DB, $login, $_SESSION['samurai']['id_sistema']);
// }}}
//VIÑETA CON EL SISTEMA EN EL CUAL SE ESTA TRABAJANDO {{{
$SISTEMA =& new SAMURAI_Sistema($DB, $_SESSION['samurai']['id_sistema']);
$tmp =& new MECON_HTML_Image('/MECON/images/vinetas_flecha_doble.gif', '>>');
$VINETA = '
'. $tmp->toHTML() .' SISTEMA: '.
$SISTEMA->getNombre().'
';
//}}}
//OBTENGO LOS DATOS DE LA BASE {{{
$tmps = SAMURAI_Perfil::getPerfiles($DB, null, $_SESSION['samurai']['id_sistema']);
foreach ($tmps as $tmp) {
$PERFILES[$tmp->getId()] = $tmp->getDescripcion();
}
//}}}
//AGREGO LOS ELEMENTOS DEL FORM {{{
if (@$PERFILES) {
$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['usuario']);
$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 = \'usuarios\';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']) && $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: usuarios');
}
// }}}
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->freeze();
header('Location: usuarios');
}
}
}
}
//}}}
//DIBUJO LA PAGINA {{{
$MARCO->addBody($VINETA);
$MARCO->addBody($TABLA);
if (isset($ERROR)) {
$MARCO->addBody($ERROR);
}
$MARCO->addBody($FORM);
$MARCO->display();
// }}}
?>