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

/**
 * Presenta registros de una tabla básica
 * Referencias: 
 * - http://www.21st.de/downloads/rapidprototyping.pdf
 * - http://pear.php.net/manual/en/package.database.db-dataobject.intro-purpose.php
 *
 * 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: tabla.php,v 1.31 2009/05/03 12:23:21 vtamara Exp $
 * @link      http://sivel.sf.net
 */

/**
 * Presenta registros de una tabla básica
 */
require_once "aut/aut.php";
require_once "aut/conf.php";
require_once "misc.php";

$aut_usuario = "";
$db = autenticaUsuario($dsn, $accno, $aut_usuario, 11);

if (!isset($_GET['tabla'])) {
    die('Por favor especificar parametro "tabla"');
}
$tabla = varEscapa($_GET['tabla'], $db);

$u = HTML_Menu_toma_url($GLOBALS['menu_tablas_basicas']);
if (!in_array($tabla, $u)) {
    die("La tabla '$tabla' no es básica");
}



$d = DB_DataObject::factory($tabla);
if (PEAR::isError($d)) {
    die($d->getMessage());
}
if (isset($d->nom_tabla)) {
    $nom_tabla=  $d->nom_tabla;
} else if (isset($GLOBALS['etiqueta'][$d->__table])) {
    $nom_tabla= $GLOBALS['etiqueta'][$d->__table];
} else {
    $nom_tabla = $tabla;
}

encabezado_envia("Tabla " . $nom_tabla);

echo '<table border = "0" width = "100%"><tr><td style = "white-space: nowrap;' .
    'background-color:#CCCCCC;" align = "center" valign = "top" colspan = "2"><b>' .
    $nom_tabla. '</b></td></tr></table>';

$k = $d->keys();
$titulo = $_DB_DATAOBJECT_FORMBUILDER['CONFIG']['select_display_field'];

if (isset($d->fb_linkDisplayFields)) {
    $titulo = $d->fb_linkDisplayFields;
} else if (isset($d->fb_select_display_field)) {
    $titulo = $d->fb_select_display_field;
}

if (is_array($titulo)) {
    $d->orderBy(implode(",", $titulo));
} else {
    $d->orderBy($titulo);
}

$d->find();

while ($d->fetch()) {
    $vd = get_object_vars($d);
    if (is_array($titulo)) {
        $t = "";$sep=$psep = "";
        $p = " (";
        foreach ($titulo as $c) {
            // getLink no soporta llaves foraneas múltiples
            // Debemos hacerlo a mano en caso de clase y categoria
            $ds = null;
            if ($c == 'id_municipio') {
                $ds = DB_DataObject::factory('Municipio');
                $ds->id = $d->id_municipio;
                $ds->id_departamento = $d->id_departamento;
                $ds->find(1);
            } else if ($c == 'id_supracategoria') {
                $ds = DB_DataObject::factory('Supracategoria');
                $ds->id = $d->id_supracategoria;
                $ds->id_tipo_violencia = $d->id_tipo_violencia;
                $ds->find(1);
            } else if (in_array($c, $k)) {
                $ds = $d->getLink($c);
            }
            if ($ds != null && !PEAR::isError($ds)) {
                $n = $ds->fb_select_display_field;
                $p .= $psep . $ds->$n;
                $psep = ", ";
            } else {
                $t .= $sep . $vd[$c];
            }
            $sep = ", ";
        }
        if ($p != " (") {
            $t .= $p . ")";
        }
    } else {
        $t = $vd[$titulo];
    }

    $pk = "";
    if (is_array($k)) {
        $sep = "";
        foreach ($k as $nl) {
            $pk .= $sep . $nl . "=".($d->$nl);
            $sep = ",";
        }
    }
    echo sprintf('&nbsp;&nbsp;<a href = "detalle.php?id=%s&tabla=%s">%s</a><br>',
        $pk,
        $tabla,
        $t);
}

echo '<pr>&nbsp;</pr><table border="0" width="100%" ' .
    'style="white-space: nowrap; background-color:#CCCCCC;"><tr>' .
    '<td align = "left">' .
    '<a href="detalle.php?tabla=' . $tabla . '">Nuevo</a>' .
    '</td><td align="right">' .
    '<a href="index.php"><b>Menú Principal</b></a>' .
    '</td></tr></table>';
    pie_envia();
?> 
