<?php
// vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker:

/**
* Editar usuarios y roles de usuario
 *
 * PHP version 5
 *
 * @category  SIVeL
 * @package   SIVeL
 * @author    Vladimir Támara <vtamara@pasosdeJesus.org>
 * @copyright 2004 Dominio público. Sin garantías.
 * @license   http://creativecommons.org/licenses/publicdomain/ Dominio Público. Sin garantías.
 * @version   $Id: detusyrol.php,v 1.28 2009/05/03 12:23:21 vtamara Exp $
 * @link      http://sivel.sf.net
*/


/**
 * Editar usuarios y roles de usuario
 */
require_once 'aut/aut.php';
require_once 'aut/conf.php';
require_once "misc.php";
require_once "DB/DataObject/FormBuilder.php";

$aut_usuario = "";
autenticaUsuario($dsn, $accno, $aut_usuario, 12);

$tabla = 'usuario';

$d = DB_DataObject::factory($tabla);
if (PEAR::isError($d)) {
    die($d->getMessage());
}
$db = $d->getDatabaseConnection();
if (isset($_GET['id'])) {
    $a = explode(',', varEscapa($_GET['id'], $db));
    foreach ($a as $v) {
        $r = explode('=', $v);
        $n = $r[0];
        $d->$n = $r[1];
    } 
    if ($d->find()!=1) {
        die("Se esperaba un sólo registro");
    }
    $d->fetch();
}

$b =& DB_DataObject_FormBuilder::create($d);
$b->createSubmit = 0;
$b->useMutators = true;
$f = $b->getForm(htmlspecialchars($_SERVER['REQUEST_URI']));
$f->setRequiredNote($mreq);

$ed = array();
if (!isset($_GET['id'])) {
    $e =& $f->createElement('submit', 'añadir', 'Añadir');
    $ed[] =& $e;
} else {
    $s=& $f->getElement('id_usuario');
    $s->freeze();
    $e =& $f->createElement('submit', 'actualizar', 'Actualizar');
    $ed[] =& $e;
    $e =& $f->createElement('submit', 'eliminar', 'Eliminar');
    $ed[] =& $e;
}
$f->addGroup($ed, null, '', '&nbsp;', false);
$f->addElement('header', null, '<div align=right>' .
    '<a href = "index.php">Menú Principal</a></div>');



if ((isset($f->_submitValues['actualizar']) && 
    $f->_submitValues['password'] == '') || $f->validate()) {

    if (!isset($f->_submitValues['evita_csrf']) ||
        $f->_submitValues['evita_csrf'] != $_SESSION['sin_csrf']) {
        die("Datos enviados no pasaron verificación CSRF (" .
            $_SESSION['sin_csrf'] . ", " . $f->_submitValues['evita_csrf'] . ")");
    }

    if (isset($f->_submitValues['actualizar'])) {
        $b->forceQueryType(DB_DATAOBJECT_FORMBUILDER_QUERY_FORCEUPDATE);
    } else {
        $b->forceQueryType(DB_DATAOBJECT_FORMBUILDER_QUERY_FORCEINSERT);
    }
    if (isset($f->_submitValues['actualizar']) || 
        isset($f->_submitValues['añadir']) ) {
        $res = $f->process(array($b, 'processForm'), false);
        if (isset($f->_submitValues['añadir']) ) {
            $db = $d->getDatabaseConnection();
            if (PEAR::isError($db)) {
                die($db->getMessage());
            }
            $q = "INSERT INTO funcionario (anotacion, nombre) VALUES ('" .
                $f->_submitValues['descripcion'] . "', '" .
                $f->_submitValues['id_usuario'] . "')";
    //        echo $q;
            $db->query($q);
        }
    } else {
        foreach ($f->_submitValues as $k => $v) {
            $d->$k = $v;
        }
        $res=& $d->delete();
    }
    if ($res) {
        /*ambiente();
        die("OJO quitar");*/
        header('Location: usyroles.php');
    }
    if (PEAR::isError($d->_lastError)) {
        echo $d->_lastError->getMessage()."<br>";
        echo $d->_lastError->userinfo."<br>";
    }
}

$_SESSION['sin_csrf'] = mt_rand(0, 1000);
$f->addElement('hidden', 'evita_csrf', $_SESSION['sin_csrf']);

echo $f->toHtml();

?>
