@ -2529,5 +2529,157 @@ function convert_format_strftime( $format ){
return preg_replace( $patterns, $replacements, $format );
}
/**
* Verifica a existencia de uma tabela no banco de dados do sistema.
* @param string $table
* @return bool
*/
function ExistsTableInDb($dbcon, string $table)
{
$query = "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = '$table')";
$result = ExecQueryDb($dbcon, $query);
$true = 't';
if (!$result) {
return false;
}
$row = pg_fetch_row($result);
$existsTable = $row[0];
if ($existsTable == $true) {
return true;
} else {
return false;
}
}
/**
* Executa query no banco de dados.
* @param conexao $dbcon
* @param string $query
*/
function ExecQueryDb($dbcon, string $query, string $pathLog = null)
{
$exception = "\n Falha ao executar a query: \n" . $query;
try {
$begin = BeginTransactionDb($dbcon);
if (!$begin) {
GeraExcept($exception, true);
}
$result = pg_query($dbcon, $query);
if (!$result) {
GeraExcept($exception, true);
}
$commit = CommitTransactionDb($dbcon);
if (!$commit) {
GeraExcept($exception, true);
}
return $result;
} catch(Exception $ex) {
if ($pathLog){
WriteLog($ex->getMessage(), $pathLog);
}
RollbackTransactionDb($dbcon);
return false;
}
}
/**
* Inicia transação com o banco
* @param conexao $dbcon
* @return bollean
*/
function BeginTransactionDb($dbcon, string $pathLog = null){
try {
$result = pg_query($dbcon, 'begin');
if (!$result) {
GeraExcept("\n Falha ao iniciar a transação com o banco! \n", true);
}
return true;
} catch (Exception $ex) {
if ($pathLog){
WriteLog($ex->getMessage(), $pathLog);
}
return false;
}
}
/**
* realiza commit da transação com o banco
* @param conexao $dbcon
* @return bollean
*/
function CommitTransactionDb($dbcon, string $pathLog = null){
try {
$result = pg_query($dbcon, 'commit');
if (!$result) {
GeraExcept("\n Falha ao realizar commit da transação com o banco! \n", true);
}
return true;
} catch (Exception $ex) {
if ($pathLog){
WriteLog($ex->getMessage(), $pathLog);
}
return false;
}
}
/**
* realiza rollback da transação com o banco
* @param conexao $dbcon
* @return bollean
*/
function RollbackTransactionDb($dbcon, string $pathLog = null){
try {
$result = pg_query($dbcon, 'rollback');
if (!$result) {
GeraExcept("\n Falha ao realizar rollback da transação com o banco! \n", true);
}
return true;
} catch (Exception $ex) {
if ($pathLog){
WriteLog($ex->getMessage(), $pathLog);
}
return false;
}
}
/**
* realiza rollback da transação com o banco
* @return string $query
*/
function GetQueryCreateTableCdr(){
$query = "CREATE TABLE cdr (
id SERIAL NOT NULL PRIMARY KEY,
accountcode character varying(32),
src character varying(128),
dst character varying(128),
dcontext character varying(128),
clid character varying(128),
channel character varying(128),
dstchannel character varying(128),
lastapp character varying(128),
lastdata character varying(256),
calldate timestamp without time zone NOT NULL,
answerdate timestamp without time zone,
hangupdate timestamp without time zone,
duration integer DEFAULT 0 NOT NULL,
billsec integer DEFAULT 0 NOT NULL,
disposition character varying(128),
amaflags character varying(256),
uniqueid character varying(32),
userfield character varying(256));";
return $query;
}