conexao =& $Conexao; $this->conexao->debug = $Debug; } else { $this->conexao =& ConexaoAdoDbFactory::obterConexao($Debug); } $ADODB_CACHE_DIR = ADODB_VAR_DIR; $ADODB_COUNTRECS = false; $this->conexao->SetFetchMode(ADODB_FETCH_ASSOC); $this->mensagens = array(); } /** * Obtem o próximo Id disponível no momento * * @param String $Tabela Nome da tabela * @param String $CampoId Campo que queremos obter o próximo Id * @param Array $ConsiderarCamposValores Pares Chave/Valor contendo os campos que devemos considerar para gerar o ID e seus valores */ function obterProximoId($Tabela, $CampoId, $ConsiderarCamposValores = array()) { $arrayValores = array(); $parametros = array(); if ($ConsiderarCamposValores) { foreach ($ConsiderarCamposValores as $chave => $valor) { $arrayWhere[] = "$chave = ?"; $parametros[] = $valor; } $where = implode(" AND ", $arrayWhere); } $sqlQuery = " SELECT MAX($CampoId) AS proximo_id FROM $Tabela " . ($where ? "WHERE $where" : "") . " "; if ($id = $this->conexao->GetOne($sqlQuery, $parametros)) { $proximoId = $id + 1; return $proximoId; } return false; } /** * Insere um registro na Tabela especificada, * utilizando os campos e valores contidos no array * $CamposValores * * @param String $Tabela Nome da tabela * @param Array $CamposValores Array com Pares Chave/Valor, contendo os campos e valores que serão inseridos * @return Boolean */ function inserir($Tabela, $CamposValores) { $campos = implode(", ", array_keys($CamposValores)); $arrayValores = array(); $parametros = array(); foreach ($CamposValores as $chave => $valor) { $arrayValores[] = "?"; $parametros[] = $valor; } $valores = implode(", ", $arrayValores); $sqlQuery = " INSERT INTO $Tabela ($campos) VALUES ($valores) "; // die($sqlQuery); return $this->conexao->Execute($sqlQuery, $parametros); } /** * Altera um registro na Tabela especificada, * utilizando os campos e valores contidos no array * $CamposValores, e tendo como critério o array * $ChavePrimariaCamposValores * * @param String $Tabela Nome da tabela * @param Array $CamposValores Array com Pares Chave/Valor, contendo os campos e valores que serão atualizados * @param Array $ChavePrimariaCamposValores Array com Pares Chave/Valor, contendo os campos Chave Primária e seus valores que servirão de critério para o UPDATE * @return Boolean */ function alterar($Tabela, $CamposValores, $ChavePrimariaCamposValores) { $campos = implode(", ", ArrayUtils::keyValueArrayToParameteredList($CamposValores, $parametrosCampos)); $where = implode(", ", ArrayUtils::keyValueArrayToParameteredList($ChavePrimariaCamposValores, $parametrosWhere)); $sqlQuery = " UPDATE $Tabela SET $campos " . ($where ? "WHERE $where" : "") . " "; // die($sqlQuery); $parametros = array_merge($parametrosCampos, $parametrosWhere); return $this->conexao->Execute($sqlQuery, $parametros); } /** * Exclui um registro na Tabela específica, * tendo como critério o array $ChavePrimariaCamposValores * * @param String $Tabela Nome da tabela * @param Array $ChavePrimariaCamposValores Array com Pares Chave/Valor, contendo os campos Chave Primária e seus valores que servirão de critério para o DELETE * @return unknown */ function excluir($Tabela, $ChavePrimariaCamposValores) { $where = implode(", ", ArrayUtils::keyValueArrayToParameteredList($ChavePrimariaCamposValores, $parametros)); $sqlQuery = " DELETE FROM $Tabela " . ($where ? "WHERE $where" : "") . " "; /*echo($sqlQuery); print_r($parametros); die;*/ return $this->conexao->Execute($sqlQuery, $parametros); } /** * Exclui registros de uma Tabela específica, * usando como critério as restrições WHERE contidas * no array $Where * * @param String $Tabela Nome da tabela * @param Array $Where Array com Cláusulas WHERE * @return Boolean */ function excluirLista($Tabela, $Where = array()) { $where = implode(", ", $Where); $sqlQuery = " DELETE FROM $Tabela " . ($where ? "WHERE $where" : "") . " "; // die($sqlQuery); return $this->conexao->Execute($sqlQuery); } /** * Obtem um registro da Tabela especificada, * usando como critério de busca os valores da chave * primária contidas no campo $ChavePrimariaCamposValores * * @param String $Tabela Nome da tabela * @param Array $ChavePrimariaCamposValores Array com Pares Chave/Valor, contendo os campos Chave Primária e seus valores que servirão de critério para o SELECT * @param Array $Campos Lista contendo os campos que serão retornados * @param Boolean $Cache Determina se será feito um cache dos resultados * @param Integer $TempoCache Tempo em segundos de duração do cache * @return Array */ function consultar($Tabela, $ChavePrimariaCamposValores, $Campos = array("*"), $Cache = false, $TempoCache = CACHE_EXPIRE_TIME) { $where = ArrayUtils::keyValueArrayToList($ChavePrimariaCamposValores); $dados = $this->carregarLista($Tabela, $Campos, $where, array(), false, false, $Cache, $TempoCache); return $dados[0]; } /** * Obtem uma lista de registros da Tabela especificada * * @param String $Tabela Nome da tabela * @param Array $Campos Lista de campos que serão retornados * @param Array $Where Lista de cláusulas WHERE * @param Array $OrderBy Lista de cláusulas ORDER BY * @param Boolean $Paginar Determina se consulta será paginada * @param Integer $RegistrosPorPagina Quantidade de registros por página * @param Boolean $Cache Determina se será feito um cache dos resultados * @param Integer $TempoCache Tempo em segundos de duração do cache * @return Array */ function carregarLista($Tabela, $Campos = array("*"), $Where = array(), $OrderBy = array(), $Paginar = true, $RegistrosPorPagina = RECS_PER_PAGE, $Cache = false, $TempoCache = CACHE_EXPIRE_TIME) { foreach ($OrderBy as $chave => $valor) { $OrderBy[$chave] = str_replace(ORDER_BY_SEPARATOR, " ", $OrderBy[$chave]); } $campos = implode(", ", $Campos); $where = implode(" AND ", $Where); $orderBy = implode(", ", $OrderBy); $sqlQuery = " SELECT $campos FROM $Tabela " . ($where ? "WHERE $where" : "") . " " . ($orderBy ? "ORDER BY $orderBy" : "") . " "; if ($Paginar && $Cache) { $rstQuery = $this->conexao->CachePageExecute($TempoCache, $sqlQuery, $RegistrosPorPagina, DBUtils::getActivePage()); } elseif ($Paginar) { $rstQuery = $this->conexao->PageExecute($sqlQuery, $RegistrosPorPagina, DBUtils::getActivePage()); } elseif ($Cache) { $rstQuery = $this->conexao->CacheExecute($TempoCache, $sqlQuery); } else { $rstQuery = $this->conexao->Execute($sqlQuery); } if ($rstQuery && !$rstQuery->EOF) { $this->totalRegistros = $this->conexao->GetOne("SELECT COUNT(1) AS total_registros FROM ($sqlQuery) Contador"); $dados = $rstQuery->GetRows(); return $dados; } return false; } } ?>