// +----------------------------------------------------------------------+
//
// $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) {
$_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);
//}}}
//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.'';
$aHrefElim = $aHref.'';
// }}}
//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);
// }}}
}
//}}}
}
//}}}
?>