<?php
// vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker:
/**
 * Objeto asociado a una tabla de la base de datos.
 * Parcialmente generado por DB_DataObject.
 *
 * 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: Clase.php,v 1.23 2009/05/02 03:15:45 vtamara Exp $
 * @link      http://sivel.sf.net
 */

/**
 * Definicion para la tabla clase.
 */
require_once 'DB/DataObject.php';

/**
 * Definicion para la tabla clase.
 * Ver documentación de DataObjects_Caso.
 *
 * @category SIVeL
 * @package  SIVeL
 * @author   Vladimir Támara <vtamara@pasosdeJesus.org>
 * @license  http://creativecommons.org/licenses/publicdomain/ Dominio Público.
 * @link     http://sivel.sf.net/tec
 * @see      DataObjects_Caso
 */
class DataObjects_Clase extends DB_DataObject 
{
    // START_AUTOCODE
    /* the code below is auto generated do not remove the above tag */

    var $__table = 'clase';                           // table name
    var $id;                              // int4(4)  multiple_key
    var $nombre;                          // varchar(-1)  not_null
    var $id_municipio;                    // int4(4)  multiple_key
    var $id_tipo_clase;                   // varchar(-1)  
    var $id_departamento;                 // int4(4)  multiple_key

    /**
     * ZE2 compatibility trick
     *
     * @return copia del objeto
     */
    function __clone() 
    {
        return $this;
    }

    /**
     * Static get
     *
     * @param mixed $k Llave
     * @param mixed $v Valor
     *
     * @return Registro cuya llave sea el valor.
     */
    function staticGet($k, $v = null) 
    {
        return DB_DataObject::staticGet('DataObjects_Clase', $k, $v);
    }

    /* the code above is auto generated do not remove the tag below */
    // END_AUTOCODE
    var $fb_select_display_field = 'nombre';
    var $fb_linkDisplayFields = array('nombre', 'id_departamento', 
        'id_municipio');
    var $fb_preDefOrder = array('nombre', 'id_municipio', 
        'id_tipo_clase');
    var $fb_fieldsToRender = array('nombre', 'id_municipio',
        'id_tipo_clase');
    var $fb_fieldLabels = array('id_municipio'=>'Municipio',
        'id_tipo_clase'=>'Tipo Clase'
    );

    var $nom_tabla = 'Clase';

    /**
     * Convierte valor de base a formulario.
     *
     * @param string &$valor Valor en base
     *
     * @return Valor para formulario
     */
    function getid_municipio(&$valor)
    {
        $valor = $this->id_municipio."-" . $this->id_departamento;
        return $valor;
    }

    /**
     * Pone un valor en la base diferente al recibido del formulario.
     *
     * @param string $valor Valor en formulario
     *
     * @return Valor para BD
     */
    function setid_municipio($valor)
    {
        // Si se cambia la identificación del municipio, se cambia la
        // llave por lo que más bien debe hacerse una eliminación y
        // después añadir uno nuevo.
        $v = explode("-", $valor);
        $this->id_municipio = $v[0];
        $this->id_departamento = $v[1];
    }

    /**
     * Prepara antes de generar formulario.
     *
     * @param object &$formbuilder Generador DataObject_FormBuilder
     *
     * @return void
     */
    function preGenerateForm(&$formbuilder)
    {
        $s =& HTML_QuickForm::createElement('select', 'id_municipio',
            'Municipio: ', array());
        $db = $this->getDatabaseConnection();
        $result = $db->query("SELECT municipio.id, municipio.id_departamento, " .
            "municipio.nombre, departamento.nombre " .
            "FROM municipio, departamento " .
            " WHERE id_departamento=departamento.id " .
            " ORDER BY municipio.nombre, departamento.nombre");
        $options = array();
        $row = array();
        while ($result != null && !PEAR::isError($result) &&
            $result->fetchInto($row)) {
            $options[$row[0] . "-" . $row[1]] = $row[2] . " (" . $row[3] . ")";
        }
        $k = $this->id_municipio . "-" . $this->id_departamento;
        $s->loadArray($options, $k);

        $this->fb_preDefElements = array('id_municipio' => $s,
            'id_departamento' => HTML_QuickForm::createElement('hidden', 
                'id_departamento'),
            'id' => HTML_QuickForm::createElement('hidden', 'id')
        );
    }

    /**
     * Ajusta formulario generado.
     *
     * @param object &$form        Formulario HTML_QuickForm
     * @param object &$formbuilder Generador DataObject_FormBuilder
     *
     * @return void
     */
    function postGenerateForm(&$form, &$formbuilder)
    {
        $h =& $form->getElement('__header__');
        if (PEAR::isError($h)) {
            $h =& $form->getElement(null);
        }
        $h->setValue($this->nom_tabla);

        if (isset($this->id_municipio)) {
            $h =& $form->getElement('id_municipio');
            $k= $this->id_municipio."-" . $this->id_departamento;
            $h->setValue($k);
        }
    }

}

?>
