Location: PHPKode > projects > PhpBoleto > phpBoleto-2.0-beta3/include/db/class.banco.php
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | phpBoleto v2.0                                                       |
// +----------------------------------------------------------------------+
// | Copyright (c) 1999-2001 Pablo Martins F. Costa, João Prado Maia      |
// +----------------------------------------------------------------------+
// | Este arquivo está sujeito a versão 2 da GNU General Public License,  |
// | que foi adicionada nesse pacote no arquivo COPYING e está disponível |
// | pela Web em http://www.gnu.org/copyleft/gpl.txt                      |
// | Você deve ter recebido uma cópia da GNU Public License junto com     |
// | esse pacote; se não, escreva para:                                   |
// |                                                                      |
// | Free Software Foundation, Inc.                                       |
// | 59 Temple Place - Suite 330                                          |
// | Boston, MA 02111-1307, USA.                                          |
// +----------------------------------------------------------------------+
// | Autores: João Prado Maia <hide@address.com>                         |
// +----------------------------------------------------------------------+
//
// @(#) $Id: class.banco.php,v 1.13 2002/03/16 04:48:01 jcpm Exp $
//


/**
 * A classe Boleto_DB_Banco disponibiliza uma API para o
 * o uso de operações com o banco de dados, seja ele na
 * forma de um servidor de banco de dados completo como
 * o PostgreSQL ou até numa interface mais simples de
 * arquivos INI. Essa API serve como um "wrapper" em
 * volta dos métodos reais que lidam diretamente com esses
 * bancos de dados.
 *
 * @version  2
 * @author   João Prado Maia <hide@address.com>
 */

require_once(BOLETO_INC_PATH . "db" . BOLETO_SEPARADOR . "class.comum.php");

class Boleto_DB_Banco extends Boleto_DB_Comum
{
    var $dbh;
    var $inidb;
    var $ini_path;

    /**
     * Constructor da classe. Inicializa algumas variaveis e
     * conecta com o servidor de banco de dados utilizando
     * para isso o pacote PEAR::DB de abstração de acesso
     * a bancos de dados.
     *
     * @see     _pegaCaminhoConfiguracao(), _pegaConfiguracaoINI(), connect()
     */
    function Boleto_DB_Banco()
    {
        $this->_pegaCaminhoConfiguracao();
        $inidata = $this->_pegaConfiguracaoINI();
        require_once("DB.php");
        $dsn = array(
            "phptype"  => $inidata["BOLETO_DBTYPE"],
            "hostspec" => $inidata["BOLETO_DBHOST"],
            'database' => $inidata["BOLETO_DBNAME"],
            'username' => $inidata["BOLETO_DBUSER"],
            'password' => $inidata["BOLETO_DBPASS"]
        );
        $this->dbh = DB::connect($dsn);
        // consertando um bug do DB/common.php
        $this->dbh->prepare_maxstmt = 0;
    }

    /**
     * Método para pegar o nome do arquivo de layout do banco.
     *
     * @access  public
     * @param   string $nome_banco Nome extenso do banco
     * @return  string O nome do arquivo de layout
     * @see     getOne()
     */
    function pegaNomeLayout($nome_banco)
    {
        $stmt = "SELECT
                    layout
                 FROM
                    bancos
                 WHERE
                    nome='$nome_banco'";
        return $this->dbh->getOne($stmt);
    }

    /**
     * Método usado na interface de geração de boletos
     * para determinar as opções editadas na interface
     * de administração.
     *
     * @access  public
     * @param   int $id_boleto ID do Boleto
     * @return  array Vetor associativo com o result-set
     * @see     getRow()
     */
    function pegaOpcoesBoleto($id_boleto)
    {
        $stmt = "SELECT 
                    A.nome AS nome_banco, 
                    A.codigo AS codigo_banco, 
                    A.uso_do_banco, 
                    B.cid, 
                    B.agencia, 
                    B.cedente, 
                    B.conta_cedente, 
                    B.especie_documento, 
                    B.codigo, 
                    B.sacado, 
                    B.cpf, 
                    B.local_pagamento, 
                    B.sacador, 
                    B.carteira, 
                    B.instrucoes_linha1, 
                    B.instrucoes_linha2, 
                    B.instrucoes_linha3, 
                    B.instrucoes_linha4, 
                    B.instrucoes_linha5 
                 FROM
                    bancos A, 
                    boletos B 
                 WHERE 
                    B.bnid=A.bnid AND 
                    B.bid=$id_boleto";
        $opcoes = $this->dbh->getRow($stmt, DB_FETCHMODE_ASSOC);
        if ($opcoes == false) {
            return "Boleto_Erro";
        } else {
            return $opcoes;
        }
    }

    /**
     * Método usado na interface de geração de boletos
     * para determinar as opções editadas na interface
     * de administração.
     *
     * @access  public
     * @param   int $id_config ID da configuração
     * @return  array Vetor associativo com o result-set
     * @see     getRow()
     */
    function pegaOpcoesConfig($id_config)
    {
        $stmt = "SELECT * FROM config WHERE cid=$id_config";
        $opcoes = $this->dbh->getRow($stmt, DB_FETCHMODE_ASSOC);
        if ($opcoes == false) {
            return "Boleto_Erro";
        } else {
            return $opcoes;
        }
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para listar os boletos existentes. Um vetor multi-
     * dimensional será retornado.
     *
     * @access  public
     * @return  array Vetor multi-dimensional com o result-set
     * @see     simpleQuery(), numRows(), fetchRow()
     */
    function listaBoletos()
    {
        $temp = array();

        $stmt = "SELECT
                    A.nome AS nome_banco,
                    B.titulo,
                    B.bid
                 FROM
                    bancos A,
                    boletos B
                 WHERE
                    A.bnid=B.bnid";
        $result = $this->dbh->simpleQuery($stmt);
        for ($i = 0; $i < $this->dbh->numRows($result); $i++) {
            $row = $this->dbh->fetchRow($result, DB_FETCHMODE_ASSOC);
            $temp[$i] = $row;
        }
        return $temp;
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para listar os bancos existentes.
     *
     * @access  public
     * @return  array Vetor multi-dimensional com o result-set
     * @see     getAll()
     */
    function listaBancos()
    {
        $stmt = "SELECT bnid, layout, nome, codigo FROM bancos ORDER BY nome ASC";
        return $this->dbh->getAll($stmt, DB_FETCHMODE_ASSOC);
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para listar as configurações existentes.
     *
     * @access  public
     * @return  array Vetor multi-dimensional com o result-set
     * @see     getAll()
     */
    function listaConfiguracoes()
    {
        $stmt = "SELECT cid, titulo, enviar_email, enviar_pdf FROM config ORDER BY titulo ASC";
        return $this->dbh->getAll($stmt, DB_FETCHMODE_ASSOC);
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para deletar boletos.
     *
     * @access  public
     * @param   array $boletos Vetor com IDs de boletos
     * @return  void
     * @see     simpleQuery()
     */
    function deletarBoletos($boletos)
    {
        $lista = implode(", ", $boletos);
        $stmt = "DELETE FROM boletos ";
        $stmt .= "WHERE bid IN ($lista)";
        $this->dbh->simpleQuery($stmt);
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para deletar bancos.
     *
     * @access  public
     * @param   array $bancos Vetor com IDs de bancos
     * @return  void
     * @see     simpleQuery()
     */
    function deletarBancos($bancos)
    {
        $lista = implode(", ", $bancos);
        $stmt = "DELETE FROM bancos ";
        $stmt .= "WHERE bnid IN ($lista)";
        $this->dbh->simpleQuery($stmt);
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para deletar configurações.
     *
     * @access  public
     * @param   array $configs Vetor com IDs de configurações
     * @return  void
     * @see     simpleQuery()
     */
    function deletarConfiguracoes($configs)
    {
        $lista = implode(", ", $configs);
        $stmt = "DELETE FROM config ";
        $stmt .= "WHERE cid IN ($lista)";
        $this->dbh->simpleQuery($stmt);
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para popular o formulário de edição de boletos.
     *
     * @access  public
     * @param   int $bid ID do boleto
     * @return  array Vetor multi-dimensional com o result-set
     * @see     getRow()
     */
    function pegaDadosBoleto($bid)
    {
        $stmt = "SELECT
                    titulo,
                    bnid,
                    cid,
                    agencia,
                    cedente,
                    conta_cedente,
                    especie_documento,
                    codigo,
                    sacado,
                    cpf,
                    local_pagamento,
                    sacador,
                    carteira,
                    instrucoes_linha1,
                    instrucoes_linha2,
                    instrucoes_linha3,
                    instrucoes_linha4,
                    instrucoes_linha5
                 FROM
                    boletos
                 WHERE
                    bid=$bid";
        return $this->dbh->getRow($stmt, DB_FETCHMODE_ASSOC);
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para popular o formulário de edição de bancos.
     *
     * @access  public
     * @param   int $bnid ID do banco
     * @return  array Vetor multi-dimensional com o result-set
     * @see     getRow()
     */
    function pegaDadosBanco($bnid)
    {
        $stmt = "SELECT * FROM bancos WHERE bnid=$bnid";
        return $this->dbh->getRow($stmt, DB_FETCHMODE_ASSOC);
    }

    /**
     * Método usado pela interface de administração do phpBoleto
     * para popular o formulário de edição de configurações
     * personalizadas.
     *
     * @access  public
     * @param   int $cid ID da configuração
     * @return  array Vetor multi-dimensional com o result-set
     * @see     getRow()
     */
    function pegaDadosConfiguracao($cid)
    {
        $stmt = "SELECT * FROM config WHERE cid=$cid";
        return $this->dbh->getRow($stmt, DB_FETCHMODE_ASSOC);
    }

    /**
     * Método usado pela interface de administração para adicionar
     * novos boletos ao banco de dados.
     *
     * @access  public
     * @return  void
     * @see     simpleQuery()
     */
    function adicionarBoleto()
    {
        global $HTTP_POST_VARS;

        $stmt = "INSERT INTO boletos
                    (bnid, cid, titulo, agencia, cedente, conta_cedente, especie_documento, codigo, sacado,
                    cpf, local_pagamento, sacador, carteira, instrucoes_linha1,
                    instrucoes_linha2, instrucoes_linha3, instrucoes_linha4, instrucoes_linha5)
                 VALUES
                    (" . $HTTP_POST_VARS["bnid"] . ", " . $HTTP_POST_VARS["cid"] . ", '" .
                    rodaSlashes($HTTP_POST_VARS["titulo"]) . "', '" . rodaSlashes($HTTP_POST_VARS["agencia"]) . "', '" . 
                    rodaSlashes($HTTP_POST_VARS["cedente"]) . "', '" . rodaSlashes($HTTP_POST_VARS["conta_cedente"]) . "', '" .
                    rodaSlashes($HTTP_POST_VARS["especie_documento"]) . "', '" . rodaSlashes($HTTP_POST_VARS["codigo"]) . "', '" .
                    rodaSlashes($HTTP_POST_VARS["sacado"]) . "', '" . rodaSlashes($HTTP_POST_VARS["cpf"]) . "', '" .
                    rodaSlashes($HTTP_POST_VARS["local_pagamento"]) . "', '" . rodaSlashes($HTTP_POST_VARS["sacador"]) . "', '" .
                    rodaSlashes($HTTP_POST_VARS["carteira"]) . "', '" . rodaSlashes($HTTP_POST_VARS["instrucoes_linha1"]) . "', '" .
                    rodaSlashes($HTTP_POST_VARS["instrucoes_linha2"]) . "', '" . rodaSlashes($HTTP_POST_VARS["instrucoes_linha3"]) . "', '" .
                    rodaSlashes($HTTP_POST_VARS["instrucoes_linha4"]) . "', '" . rodaSlashes($HTTP_POST_VARS["instrucoes_linha5"]) . "')";
        $this->dbh->simpleQuery($stmt);
    }

    /**
     * Método usado pela interface de administração para adicionar
     * novos bancos ao banco de dados.
     *
     * @access  public
     * @return  void
     * @see     simpleQuery()
     */
    function adicionarBanco()
    {
        global $HTTP_POST_VARS;

        $stmt = "INSERT INTO bancos
                    (layout, nome, codigo, uso_do_banco)
                 VALUES
                    ('" . rodaSlashes($HTTP_POST_VARS["layout"]) . "', '" . 
                    rodaSlashes($HTTP_POST_VARS["nome"]) . "', '" . 
                    rodaSlashes($HTTP_POST_VARS["codigo"]) . "', '" . 
                    rodaSlashes($HTTP_POST_VARS["uso_do_banco"]) . "')";
        $this->dbh->simpleQuery($stmt);
    }

    /**
     * Método usado pela interface de administração para adicionar
     * novas configurações ao banco de dados.
     *
     * @access  public
     * @return  void
     * @see     simpleQuery()
     */
    function adicionarConfiguracao()
    {
        global $HTTP_POST_VARS;

        $stmt = "INSERT INTO config
                    (titulo, enviar_email, remetente, remetente_email, assunto, servidor_smtp, servidor_http,
                    imagem_tipo, usar_truetype, enviar_pdf, mensagem_texto, mensagem_html)
                 VALUES
                    ('" . rodaSlashes($HTTP_POST_VARS["titulo"]) . "', ". $HTTP_POST_VARS["enviar_email"] . ", '" . rodaSlashes($HTTP_POST_VARS["remetente"]) . "', '" . 
                    rodaSlashes($HTTP_POST_VARS["remetente_email"]) . "', '" . rodaSlashes($HTTP_POST_VARS["assunto"]) . "', '" . 
                    rodaSlashes($HTTP_POST_VARS["servidor_smtp"]) . "', '" . rodaSlashes($HTTP_POST_VARS["servidor_http"]) . "', '" . 
                    rodaSlashes($HTTP_POST_VARS["imagem_tipo"]) . "', " . $HTTP_POST_VARS["usar_truetype"] . ", " . $HTTP_POST_VARS["enviar_pdf"] . ", '" . 
                    rodaSlashes($HTTP_POST_VARS["mensagem_texto"]) . "', '" . rodaSlashes($HTTP_POST_VARS["mensagem_html"]) . "')";
        $this->dbh->simpleQuery($stmt);
    }

    /**
     * Método usado pela interface de administração para modificar
     * os dados específicos de um boleto.
     *
     * @access  public
     * @return  void
     * @see     simpleQuery()
     */
    function atualizarBoleto()
    {
        global $HTTP_POST_VARS;

        $stmt = "UPDATE
                    boletos
                 SET
                    bnid=" . $HTTP_POST_VARS["bnid"] . ",
                    cid=" . $HTTP_POST_VARS["cid"] . ",
                    titulo='" . rodaSlashes($HTTP_POST_VARS["titulo"]) . "',
                    agencia='" . rodaSlashes($HTTP_POST_VARS["agencia"]) . "',
                    cedente='" . rodaSlashes($HTTP_POST_VARS["cedente"]) . "',
                    conta_cedente='" . rodaSlashes($HTTP_POST_VARS["conta_cedente"]) . "',
                    especie_documento='" . rodaSlashes($HTTP_POST_VARS["especie_documento"]) . "',
                    codigo='" . rodaSlashes($HTTP_POST_VARS["codigo"]) . "',
                    sacado='" . rodaSlashes($HTTP_POST_VARS["sacado"]) . "',
                    cpf='" . rodaSlashes($HTTP_POST_VARS["cpf"]) . "',
                    local_pagamento='" . rodaSlashes($HTTP_POST_VARS["local_pagamento"]) . "',
                    sacador='" . rodaSlashes($HTTP_POST_VARS["sacador"]) . "',
                    carteira='" . rodaSlashes($HTTP_POST_VARS["carteira"]) . "',
                    instrucoes_linha1='" . rodaSlashes($HTTP_POST_VARS["instrucoes_linha1"]) . "',
                    instrucoes_linha2='" . rodaSlashes($HTTP_POST_VARS["instrucoes_linha2"]) . "',
                    instrucoes_linha3='" . rodaSlashes($HTTP_POST_VARS["instrucoes_linha3"]) . "',
                    instrucoes_linha4='" . rodaSlashes($HTTP_POST_VARS["instrucoes_linha4"]) . "',
                    instrucoes_linha5='" . rodaSlashes($HTTP_POST_VARS["instrucoes_linha5"]) . "'
                 WHERE
                    bid=" . $HTTP_POST_VARS["bid"];
        $this->dbh->simpleQuery($stmt);
    }

    /**
     * Método usado pela interface de administração para modificar
     * os dados específicos de um banco.
     *
     * @access  public
     * @return  void
     * @see     simpleQuery()
     */
    function atualizarBanco()
    {
        global $HTTP_POST_VARS;

        $stmt = "UPDATE
                    bancos
                 SET
                    layout='" . rodaSlashes($HTTP_POST_VARS["layout"]) . "',
                    nome='" . rodaSlashes($HTTP_POST_VARS["nome"]) . "',
                    codigo='" . rodaSlashes($HTTP_POST_VARS["codigo"]) . "',
                    uso_do_banco='" . rodaSlashes($HTTP_POST_VARS["uso_do_banco"]) . "'
                 WHERE
                    bnid=" . $HTTP_POST_VARS["bnid"];
        $this->dbh->simpleQuery($stmt);
    }

    /**
     * Método usado pela interface de administração para modificar
     * os dados específicos de uma configuração.
     *
     * @access  public
     * @return  void
     * @see     simpleQuery()
     */
    function atualizarConfiguracao()
    {
        global $HTTP_POST_VARS;

        $stmt = "UPDATE
                    config
                 SET
                    titulo='" . rodaSlashes($HTTP_POST_VARS["titulo"]) . "',
                    enviar_email=" . $HTTP_POST_VARS["enviar_email"] . ",
                    remetente='" . rodaSlashes($HTTP_POST_VARS["remetente"]) . "',
                    remetente_email='" . rodaSlashes($HTTP_POST_VARS["remetente_email"]) . "',
                    assunto='" . rodaSlashes($HTTP_POST_VARS["assunto"]) . "',
                    servidor_smtp='" . rodaSlashes($HTTP_POST_VARS["servidor_smtp"]) . "',
                    servidor_http='" . rodaSlashes($HTTP_POST_VARS["servidor_http"]) . "',
                    imagem_tipo='" . rodaSlashes($HTTP_POST_VARS["imagem_tipo"]) . "',
                    usar_truetype=" . $HTTP_POST_VARS["usar_truetype"] . ",
                    enviar_pdf=" . $HTTP_POST_VARS["enviar_pdf"] . ",
                    mensagem_texto='" . rodaSlashes($HTTP_POST_VARS["mensagem_texto"]) . "',
                    mensagem_html='" . rodaSlashes($HTTP_POST_VARS["mensagem_html"]) . "'
                 WHERE
                    cid=" . $HTTP_POST_VARS["cid"];
        $this->dbh->simpleQuery($stmt);
    }
}
?>
Return current item: PhpBoleto