#!/usr/bin/php -q '07980651000134'; IP -> 180 * NEW TELECOM -> "21843508000121"; IP -> 181 * MARTECC CELULAR -> "12324775000100"; IP -> 183 * SAICON-TEL -> "05029136000300"; IP -> 194 * PRIME TELECOM -> "18731324000165"; IP -> 198 */ $cnpjCliente = isset($argv[2]) ? trim($argv[2]) : $cnpjClienteAlgar; /* * Id do cliente cadastrado na base remota, este parametro é importante para * não haver conflito na base. */ $idCliente = 0; /* * Simples flag para o arquivo de pid nao ser apagado antes do inicios da execucao do script. */ $encerra = 0; /* * Deixa ativo apenas o nao pereturbe. */ $atvNaoPerturbe = isset($naoPerturbeApenas) ? $naoPerturbeApenas : false; /* * Arquivo para impedir a execução de dois scripts ao mesmo tempo. */ $dataFile = date("Y-m-d"); $fileProcess = "/tmp/vendas_{$dataFile}_$cnpjCliente.pid"; //$fileProcess = ''; try { /* * Impede duas instancias do mesmo arquivo. * */ // */30 * * * * root /var/lib/asterisk/scripts/vendas/consolidaVendas.php if (vdsEmExecucao($fileProcess)) { __GeraExcept__("Script já em execução!"); } @vdsIniciaExec($fileProcess); $encerra = true; /* * Aguarda um tempo aleatório para iniciar. */ //$tmp = rand(0, 120); //sleep($tmp); /* * Realiza a conexao com o banco de dados local; */ /* * Funcao garente que parametros de configuracao esteja peresentes, * nao modifique os valores nesta funcao, utilize o arquivo configVendasAlgar.php. */ __VerificaDefault(); /* * Configurações do servidor de banco de dados, as informações omitidas serão * retornadas pela função padrão; */ __GetParams($paramLocalConn); $connL = vdsGetConnectionL(); /* * Realiza a conexao com o banco de dados remoto; */ /* * Modifique esses valores antes da chamada para as funções de conexao para forçar uma * conexao diferente da padrao. */ __GetParams($paramRemoteConn); $connR = vdsGetConnectionR(); /* * Valida as filas passadas para base compartilhada. */ $filasValidas = ValidaFilas($connL, $filas); /* * Recupera o id do cliente na base remota. */ $idCliente = GetIdCliente($connR, $cnpjCliente); // VerificaReproc($connR, $connL, $idCliente); /* * Verifica lista nao perturbe. */ if (!$desativaNpb && (!$cnpjClienteAlgarNbp || ($cnpjClienteAlgarNbp == $cnpjCliente))) { ImportaNaoPerturbe($connL); } /* * Importação dos dados. */ if (!$atvNaoPerturbe) { ImportaUsuarios($connL, $connR, $filasValidas); } /* * Importação das classificações. */ if (!$atvNaoPerturbe) { Importaclassificacoes($connL, $connR, $filasValidas); } /* * Importação dos protocolos. */ if (!$atvNaoPerturbe) { ImportaProtocolos($connL, $connR, $filasValidas); } /* * Importa as chamadas. */ if (!$atvNaoPerturbe) { ImportaChamadas($connL, $connR, $filasValidas); } /* * Importa as chamadas. */ if (!$atvNaoPerturbe) { ImportaPesquisa($connL, $connR, $filasValidas); } /* * Grava a data da ultima atualização no cloud; * */ RegistraAtualizacao($connR, $idCliente); /* * Libera a execuçaõ para uma nova instancia. */ @vdsEncerraExec($fileProcess); } catch (Exception $ex) { $log = sprintf("%s\n[%s]\n", __RemoveAcentos__($ex->getMessage()), __RemoveAcentos__(__GetLasterror__())); __WriteLog__($log, $pathLog); /* * Libera a execuçaõ para uma nova instancia. */ if ($encerra) { @vdsEncerraExec($fileProcess); } } function GravaPacote($pacote, $nome) { global $pathLog; $result = CreateDir('/var/log/asterisk/vendas/rejeitados/'); if ($result) { $result = file_put_contents($dir . $nome, $pacote); } if (!$result) { __WriteLog__("Erro ao gravar pacote rejeitado: $nome \n [$pacote]\n", $pathLog); } } function GetIdCliente($conn, $cnpjCliente) { $query = sprintf("select emp_id from vds_empresas where emp_cnpj = %s", __QuotedStr__($cnpjCliente)); $result = pg_query($conn, $query); if (!$result) { __GeraExcept__("Erro ao consultar o cliente na base remota!"); } if (!pg_num_rows($result)) { __GeraExcept__("Cliente não cadastrado na base remota!"); } $dadosR = pg_fetch_row($result); return $dadosR[0]; } function VerificaReproc($connR, $connL, $idCliente) { global $pathLog; __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "VerificaReproc", date("Y-m-d H:i:s"), "Inicio"), $pathLog); $query = sprintf("select '' from vds_empresas where emp_id = %s and emp_reproc = 9", __QuotedStr__($idCliente)); $result = pg_query($connR, $query); if (!$result) { __GeraExcept__("Erro ao consultar reprocessamento remoto na vase remota!"); } if (pg_num_rows($result)) { __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "VerificaReproc", date("Y-m-d H:i:s"), "Exec", "Reprocessamento servidor configurado!!!!"), $pathLog); exit(0); } $query = sprintf("select '' from vds_empresas where emp_id = %s and emp_reproc = 1", __QuotedStr__($idCliente)); $result = pg_query($connR, $query); if (!$result) { __GeraExcept__("Erro ao consultar reprocessamnto local na base remota!"); } if (pg_num_rows($result)) { __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "VerificaReproc", date("Y-m-d H:i:s"), "Exec", "Executando o reprocessamento!!!!"), $pathLog); try { if (!pg_query($connL, 'begin')) { __GeraExcept__("Erro ao iniciar o reprocessamento da base local!"); } $query = " update pbx_bilhetes set integra_vendas = 0 where integra_vendas = 1; update pbx_usuarios set integra_vendas = 0 where integra_vendas = 1; update pbx_classifica_reg set integra_vendas = 0 where integra_vendas = 1; update pbx_protocolo_reg set integra_vendas = 0 where integra_vendas = 1;"; if (!pg_query($connL, $query)) { __GeraExcept__("Erro ao reprocessar base local!"); } $query = "update vds_empresas set emp_reproc = 2 where emp_id = '{$idCliente}'"; if (!pg_query($connR, $query)) { __GeraExcept__("Erro ao confirmar reprocessamento na base remota!!!!!"); } if (!pg_query($connL, 'commit')) { __GeraExcept__("Erro ao finalizar o reprocessamento da base local!"); } } catch (Exception $ex) { $log = sprintf("%s\n[%s]\n", __RemoveAcentos__($ex->getMessage()), __RemoveAcentos__(__GetLasterror__())); __WriteLog__($log, $pathLog); } } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "VerificaReproc", date("Y-m-d H:i:s"), "Fim"), $pathLog); } function RegistraAtualizacao($connR, $idCliente, $erro = false) { global $pathLog; __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "RegistraAtualizacao", date("Y-m-d H:i:s"), "Inicio"), $pathLog); $query = "update vds_empresas set emp_ult_atualizacao = now() where emp_id = '{$idCliente}'"; pg_query($connR, $query); __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "RegistraAtualizacao", date("Y-m-d H:i:s"), "Fim"), $pathLog); } function ValidaFilas($connL, $filas) { if (!$filas) { return false; } $aFilas = preg_split('/[,;|]/', $filas); $filasValidas = ''; /* * Valida a fila individualmente. */ foreach ($aFilas as $fila) { if (!is_numeric($fila)) { $query = sprintf("select id from pbx_dacs where nome = %s and status = 'A'", __QuotedStr__($fila)); } else { $query = sprintf("select id from pbx_dacs where id = %s and status = 'A'", __QuotedStr__($fila)); } $result = pg_query($connL, $query); if (!pg_num_rows($result)) { __GeraExcept__(sprintf("A fila \"%s\" informada é inválida!", $fila)); } $dados = pg_fetch_row($result); $filasValidas .= !$filasValidas ? $dados[0] : ',' . $dados[0]; } return $filasValidas; } function RegistraVendedor($conn, $matricula) { global $idCliente; $query = sprintf("select '' from vds_vendedores where emp_id = %s and vdr_matricula = %s", __QuotedStr__($idCliente), __QuotedStr__($matricula)); $result = pg_query($conn, $query); if (!$result) { __GeraExcept__("Erro ao consultar o vendedor na base remota!"); } /* * Registra o vendedor caso ele não exista. */ if (!pg_num_rows($result)) { return true; } /* * Vendeor já existe na base remota segue para o próximo registro. */ return false; } function DirDados($dirDados) { if (!file_exists($dirDados)) { exec("mkdir -p {$dirDados}"); exec("chown -R postgres:postgres {$dirDados}"); } } function ImportaNaoPerturbe($connL) { global $idCliente, $dbServer, $userApi, $senhaApi, $pathLog; __WriteLog__(sprintf("Modulo: %s Data: %s Log: %s\n", "ImportaNaoPerturbe", date("Y-m-d H:i:s"), "Iniciando Importacao!"), $pathLog); $dirDados = "/dados/nao_perturbe/"; DirDados($dirDados); $inTran = 0; $arrContextOptions=stream_context_create(array( "ssl"=>array("allow_self_signed"=>true,"verify_peer"=>false, "verify_peer_name"=>false, ),)); try { $url = "https://{$dbServer}/integracao/?method=ListaNaoPerturbe&info=1&id={$idCliente}&login={$userApi}&senha={$senhaApi}&SIPID=&tipoRetorno=JSON/STREAM"; if (!$dadosLista = json_decode(file_get_contents($url,false,$arrContextOptions), true)) { __GeraExcept__("Nao foi possivel acessar a API: [{$url}]"); } $Status = $dadosLista["result"] == 'true'; if ($Status) { $npId = $dadosLista["np_id"]; $npMd5 = $dadosLista["np_md5"]; $fileName = __DIR__ . "/" . $dadosLista["np_name"]; $destName = $dirDados . str_replace(".tar.gz", ".npb", basename($fileName)); $md5 = ''; /* * Quando $npIdeh maior que zero indica que tem um arquivo a ser baixado. */ if ($npId && !ConNpbLocal($connL, $npId)) { $url = "https://{$dbServer}/integracao/?method=ListaNaoPerturbe&info=0&id={$npId}&login={$userApi}&senha={$senhaApi}&SIPID=&tipoRetorno=JSON/STREAM"; file_put_contents($fileName, file_get_contents($url,false,$arrContextOptions)); if (!file_exists($fileName)) { __GeraExcept__("Erro ao baixar o arquivo: [{$dadosLista['np_name']}]"); } $md5 = md5_file($fileName); if ($npMd5 !== $md5) { __GeraExcept__("O arquivo baixado não esta integro [{$dadosLista['np_name']}]"); } ___UnTar___($fileName, dirname($destName)); unlink($fileName); if (!file_exists($destName)) { __GeraExcept__("Erro ao descompactar o arquivo: [{$destName}]"); } if (!pg_query($connL, "begin")) { __GeraExcept__("Nao foi possivel iniciar uma transacao com o banco de dados!"); } $inTran = 1; /* * Apaga a base de dados atual. */ if (!pg_query($connL, "truncate table pbx_nao_perturbe;")) { __GeraExcept__("Nao foi possivel limpara a base nao perturbe!"); } /* * Apaga a base de dados atual. */ if (!pg_query($connL, "COPY pbx_nao_perturbe FROM '{$destName}'")) { __GeraExcept__("Nao foi possivel importar a base nao perturbe!"); } /* * Apaga o arquivo descompactado. */ unlink($destName); /* * Registra a atualização da lista no servidor; */ if (!RegNpbRemoto($npId)) { RegNpbLocal($connL, $npId); } if (!pg_query($connL, "commit")) { __GeraExcept__("Nao foi possivel finalizr uma transacao com o banco de dados!"); } /* * Cria a lista negra; */ __WriteLog__(sprintf("Modulo: %s Data: %s Log: %s\n", "ImportaNaoPerturbe", date("Y-m-d H:i:s"), "Iniciando a atualizacao da Lista Negra!"), $pathLog); __ListaNegraNaoPerturbe__($connL); __WriteLog__(sprintf("Modulo: %s Data: %s Log: %s\n", "ImportaNaoPerturbe", date("Y-m-d H:i:s"), "Finalizada a atualizacao da Lista Negra com sucesso!"), $pathLog); } } return true; } catch (Exception $ex) { if ($inTran) { pg_query($connL, "rollback"); } $log = sprintf("%s\n[%s]\n", __RemoveAcentos__($ex->getMessage()), __RemoveAcentos__(__GetLasterror__())); __WriteLog__($log, $pathLog); return false; } } function ConNpbLocal($connL, $npId) { global $idCliente; /* * Em caso de falha ao registrar o arquivo no servidor o mesmo eh registrado localmente. */ $query = "select '' from pbx_nao_perturbe_cliente where emp_id = '{$idCliente}' and np_id = {$npId} "; $result = (($result = pg_query($connL, $query)) && pg_num_rows($result)); /* * Se o arquivo esta registrado localmente, tenta novamente o registro no servidor antes de retornar. */ if ($result) { RegNpbRemoto($npId); } return $result; } function RegNpbLocal($connL, $npId) { global $idCliente; /* * Em caso de falha ao registrar o arquivo no servidor o mesmo eh registrado localmente. */ $query = sprintf("insert into pbx_nao_perturbe_cliente(np_id, emp_id)values(%s, %s);", __QuotedStr__($npId), __QuotedStr__($idCliente)); $result = pg_query($connL, $query); return $result; } function RegNpbRemoto($npId) { global $idCliente, $dbServer, $userApi, $senhaApi; $arrContextOptions=stream_context_create(array( "ssl"=>array("allow_self_signed"=>true,"verify_peer"=>false, "verify_peer_name"=>false, ),)); $url = "https://{$dbServer}/integracao?method=RegNaoPerturbe&idCliente={$idCliente}&npId={$npId}&login={$userApi}&senha={$senhaApi}&SIPID=&tipoRetorno=JSON/STREAM"; return file_get_contents($url,false,$arrContextOptions) == 'OK'; } function ImportaUsuarios($connL, $connR, $filas = '') { global $idCliente, $pathLog; __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaUsuarios", date("Y-m-d H:i:s"), "Inicio"), $pathLog); if ($filas) { $query = "select nome, apelido, matricula, email from pbx_usuarios a where apelido not in('admin', 'sinccontasenha') and exists(select '' from pbx_eventos_agentes where matricula = a.matricula and id_dac in($filas));"; } else { $query = "select nome, apelido, matricula, email from pbx_usuarios where apelido not in('admin', 'sinccontasenha');"; } $result = pg_query($connL, $query); if (!$result) { __GeraExcept__("Não foi possível consultar os vendedores!"); } if (!pg_num_rows($result)) { __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaUsuarios", date("Y-m-d H:i:s"), "Exec", "Nao ha usuarios a exportar!!!!"), $pathLog); return false; } $integrar = array(); while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { $nome = $dados['nome']; $apelido = $dados['apelido']; $matricula = $dados['matricula']; $email = $dados['email']; if (RegistraVendedor($connR, $matricula)) { $cmd = sprintf("insert into vds_vendedores(emp_id, vdr_nome, vdr_apelido, vdr_matricula, vdr_email)values(%s,%s,%s,%s,%s);", __QuotedStr__($idCliente), __QuotedStr__($nome), __QuotedStr__($apelido), __QuotedStr__($matricula), __QuotedStr__($email)); $cmdResult = pg_query($connR, $cmd); if ($cmdResult && pg_affected_rows($cmdResult)) { /* * Guarda o registro para alterar o status para integrado; */ $integrar[] = $apelido; } } else { /* * Aplido já existe na base porem seu status esta com não importado. */ $integrar[] = $apelido; } } /* * Marca os registros com integrado na base de dados. */ foreach ($integrar as $apelido) { $query = sprintf("update pbx_usuarios set integra_vendas = 1 where apelido = %s;", __QuotedStr__($apelido)); pg_query($connL, $query); } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaUsuarios", date("Y-m-d H:i:s"), "Fim"), $pathLog); } function Importaclassificacoes($connL, $connR, $filas = '') { global $idCliente, $VDS_LIMIT_EXPORTA, $pathLog; __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "Importaclassificacoes", date("Y-m-d H:i:s"), "Inicio"), $pathLog); $setFilas = $filas ? "and d.id in($filas)" : ""; $query = "select a.id_bilhetes, a.matricula, b.clas_descricao, c.clit_descricao, a.data_reg, d.nome as id_dac, a.clas_id,a. clit_id from pbx_classifica_reg a, pbx_classifica_atendimento b, pbx_classifica_item c, pbx_dacs d where b.clas_id = a.clas_id and c.clit_id = a.clit_id and d.id = a.id_dac and integra_vendas = 0 $setFilas limit {$VDS_LIMIT_EXPORTA};"; /* * Vai integrando 100 registros por vez até terminar; */ $limit = 0; while (true) { $result = pg_query($connL, $query); __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaClassificacoes", date("Y-m-d H:i:s"), "Exec", ("Ciclo: " . ( ++$limit))), $pathLog); if (!$result) { __GeraExcept__("Não foi possível consultar as classificações![Importaclassificacoes]"); } if (!pg_num_rows($result)) { return true; } $linhasInsertR = ''; $insertR = "insert into vds_classificacoes(emp_id, uid, clas_matricula, clas_descricao, clas_descricao_item, clas_reg, clas_dac)values(%s,%s,%s,%s,%s,%s,%s);\n"; $linhasUpdateL = ''; $updateL = "update pbx_classifica_reg set integra_vendas = 1 where id_bilhetes = %s and clas_id = %s and clit_id = %s;\n"; while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { $uid = $dados['id_bilhetes']; $matricula = $dados['matricula']; $clas_descricao = $dados['clas_descricao']; $clit_descricao = $dados['clit_descricao']; $data_reg = $dados['data_reg']; $id_dac = $dados['id_dac']; $clas_id = $dados['clas_id']; $clit_id = $dados['clit_id']; /* * Monta o pacore de registro para inserir no servidor remoto. */ $linhasInsertR .= sprintf($insertR, __QuotedStr__($idCliente), __QuotedStr__($uid), __QuotedStr__($matricula), __QuotedStr__($clas_descricao), __QuotedStr__($clit_descricao), __QuotedStr__($data_reg), __QuotedStr__($id_dac)); /* * Monta o pacote para marcar os registros locais como atualizado. */ $linhasUpdateL .= sprintf($updateL, __QuotedStr__($uid), __QuotedStr__($clas_id), __QuotedStr__($clit_id)); } /* * Inicia uma transação com o servidor remoto. */ $resultR = pg_query($connR, 'begin'); if (!$resultR) { __GeraExcept__("Não foi possível iniciar uma transação com o servidor remoto![Importaclassificacoes]"); } /* * Executa o pacote de dados; */ $resultR = pg_query($connR, $linhasInsertR); if (!$resultR) { pg_query($connR, 'rollback'); __GeraExcept__("Não foi possível inserir dados no servidor remoto![Importaclassificacoes]"); } /* * Atualiza o pacote de dados local. */ $result = pg_query($connL, $linhasUpdateL); if (!$result) { pg_query($connR, 'rollback'); __GeraExcept__("Não foi possível atualizar os registros no servidor local![Importaclassificacoes]"); } $resultR = pg_query($connR, 'commit'); if (!$resultR) { $pct = sprintf("%s%s.pct", "dadosClassificacao", date("Y-m-d-His")); GravaPacote($linhasInsertR, $pct); __GeraExcept__("Não foi possível iniciar uma transação com o servidor remoto![Importaclassificacoes]"); } usleep(30); } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "Importaclassificacoes", date("Y-m-d H:i:s"), "Fim"), $pathLog); return true; } function ImportaProtocolos($connL, $connR, $filas = '') { global $idCliente, $VDS_LIMIT_EXPORTA, $pathLog; __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Inicio"), $pathLog); if ($filas) { $query = "select uniqueid, ano, numproto, protocolo, protoparceiro, \"dataReg\" as data_reg from pbx_protocolo_reg a where integra_vendas = 0 and exists(select '' from pbx_eventos_dacs b, pbx_dacs c, pbx_classifica_reg y where c.nome = b.fila and b.uid2 = a.uniqueid and y.id_bilhetes = b.uid2 and c.id in($filas)) limit {$VDS_LIMIT_EXPORTA};"; } else { $query = "select uniqueid, ano, numproto, protocolo, protoparceiro, \"dataReg\" as data_reg from pbx_protocolo_reg where integra_vendas = 0 and exists(select '' from pbx_bilhetes x, pbx_classifica_reg y where y.id_bilhetes = x.uniqueid and x.uniqueid = pbx_protocolo_reg.uniqueid) limit {$VDS_LIMIT_EXPORTA};"; } /* * Vai integrando 100 registros por vez até terminar; */ $limit = 0; while (true) { $result = pg_query($connL, $query); __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Exec", ("Ciclo: " . ( ++$limit))), $pathLog); if (!$result) { __GeraExcept__("Não foi possível consultar protocolos![ImportaProtocolos]"); } if (!pg_num_rows($result)) { return true; } $linhasInsertR = ''; $insertR = "insert into vds_protcolos( emp_id, uid, prt_ano, prt_numproto, prt_protocolo, prt_proto_parceiro, data_protocolo)values(%s,%s,%s,%s,%s,%s,%s);\n"; $linhasUpdateL = ''; $updateL = "update pbx_protocolo_reg set integra_vendas = 1 where protocolo = %s;\n"; while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { $uid = $dados['uniqueid']; $ano = $dados['ano']; $numproto = $dados['numproto']; $protocolo = $dados['protocolo']; $protoparceiro = $dados['protoparceiro']; $dataReg = $dados['data_reg']; /* * Monta o pacore de registro para inserir no servidor remoto. */ $linhasInsertR .= sprintf($insertR, __QuotedStr__($idCliente), __QuotedStr__($uid), __QuotedStr__($ano), __QuotedStr__($numproto), __QuotedStr__($protocolo), __QuotedStr__($protoparceiro), __QuotedStr__($dataReg)); /* * Monta o pacote para marcar os registros locais como atualizado. */ $linhasUpdateL .= sprintf($updateL, __QuotedStr__($protocolo)); } /* * Inicia uma transação com o servidor remoto. */ $resultR = pg_query($connR, 'begin'); if (!$resultR) { __GeraExcept__("Não foi possível iniciar uma transação com o servidor remoto![ImportaProtocolos]"); } /* * Executa o pacote de dados; */ $resultR = pg_query($connR, $linhasInsertR); if (!$resultR) { pg_query($connR, 'rollback'); __GeraExcept__("Não foi possível inserir dados no servidor remoto![ImportaProtocolos]"); } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Exec", ("Insert remoto concluido Ciclo: " . ($limit))), $pathLog); /* * Atualiza o pacote de dados local. */ $result = pg_query($connL, $linhasUpdateL); if (!$result) { pg_query($connR, 'rollback'); __GeraExcept__("Não foi possível atualizar os registros no servidor local![ImportaProtocolos]"); } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Exec", ("Update local concluido Ciclo: " . ($limit))), $pathLog); $resultR = pg_query($connR, 'commit'); if (!$resultR) { $pct = sprintf("%s%s.pct", "dadosProtocolo", date("Y-m-d-His")); GravaPacote($linhasInsertR, $pct); __GeraExcept__("Não foi possível iniciar uma transação com o servidor remoto![ImportaProtocolos]"); } usleep(30); } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Fim"), $pathLog); return true; } function ImportaChamadas($connL, $connR, $filas = '') { global $idCliente, $VDS_LIMIT_EXPORTA, $pathLog; __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Inicio"), $pathLog); $setFila = $filas ? "and exists(select '' from pbx_dacs where nome = b.fila and id in($filas))" : ""; $query = "select max(a.id_bilhetes) as id_bilhetes from pbx_bilhetes a, pbx_eventos_dacs b where b.uid2 = a.uniqueid and a.lastapp <> 'Transferred Call' and a.integra_vendas = 0 $setFila;"; $result = pg_query($connL, $query); $dados = pg_fetch_row($result); $maxId = $dados[0]; if (!$maxId) { return false; } $query = " drop table if exists pbx_bilhetes_exporta; create temporary table pbx_bilhetes_exporta(id_bilhetes bigint, uniqueid varchar(32), data_bilhete date, calldate timestamp, src varchar(80), dst varchar(80), duration int, billsec int, userfield varchar(200)); insert into pbx_bilhetes_exporta select distinct a.id_bilhetes, a.uniqueid, a.data_bilhete,a.calldate, a.src, a.dst, a.duration, a.billsec, a.userfield from pbx_bilhetes a, pbx_eventos_dacs b where b.uid2 = a.uniqueid and a.lastapp <> 'Transferred Call' and a.integra_vendas = 0 $setFila order by id_bilhetes limit {$VDS_LIMIT_EXPORTA}; select a.id_bilhetes, a.uniqueid, a.data_bilhete,a.calldate, a.src, a.dst, a.duration , case b.evento when 'COMPLETAAGENT' then billsec when 'COMPLETACALLER' then a.billsec when 'COMPLETEAGENT' then strtoint(b.param2) when 'COMPLETECALLER' then strtoint(b.param2) when 'TRANSFER' then a.billsec when 'NOANSWERS' then 0 else a.billsec end as billsec , a.userfield, b.fila, sonumero(b.agente) as matricula, b.evento from pbx_bilhetes_exporta a, pbx_eventos_dacs b where b.uid2 = a.uniqueid and b.evento in ('COMPLETEAGENT','COMPLETECALLER','COMPLETAAGENT','COMPLETACALLER', 'TRANSFER', 'TRANSFERORIG', 'NOANSWERS','COMPLETECALLERRAMAL', 'COMPLETACALLERRAMAL', 'COMPLETEAGENTRAMAL') order by id_bilhetes;"; $linhasUpdateL = 'update pbx_bilhetes set integra_vendas = 1 where id_bilhetes in(select id_bilhetes from pbx_bilhetes_exporta);'; /* * Vai integrando 100 registros por vez até terminar; */ $limit = 0; $ciclos = 0; while ($id_bilhetes < $maxId) { $result = pg_query($connL, $query); __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Exec", ("Ciclo: " . ( ++$limit))), $pathLog); if (!$result) { __GeraExcept__("Não foi possível consultar protocolos![ImportaChamadas]"); } if (!pg_num_rows($result)) { if (!pg_query($connL, $linhasUpdateL)) { __GeraExcept__("Não foi possível atualizar os registros no servidor local![ImportaChamadas]"); } break; } $linhasInsertR = ''; $insertR = "insert into vds_chamadas(emp_id, uid, chm_data_bilhete, chm_calldate, chm_src, chm_dst, chm_duration, chm_billsec, chm_userfield, chm_fila, chm_matricula, chm_evento)values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);\n"; //$updateL = "update pbx_bilhetes set integra_vendas = 1 where id_bilhetes = %s;\n"; while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { $uid = $dados['uniqueid']; $id_bilhetes = $dados['id_bilhetes']; $data_bilhete = $dados['data_bilhete']; $calldate = $dados['calldate']; $src = $dados['src']; $dst = $dados['dst']; $duration = $dados['duration']; $billsec = $dados['billsec']; $userfield = $dados['userfield']; $fila = $dados['fila']; $matricula = $dados['matricula']; $evento = $dados['evento']; /* * Monta o pacore de registro para inserir no servidor remoto. */ $linhasInsertR .= sprintf($insertR, __QuotedStr__($idCliente), __QuotedStr__($uid), __QuotedStr__($data_bilhete), __QuotedStr__($calldate), __QuotedStr__($src), __QuotedStr__($dst), __QuotedStr__($duration), __QuotedStr__($billsec), __QuotedStr__($userfield), __QuotedStr__($fila), __QuotedStr__($matricula), __QuotedStr__($evento)); /* * Monta o pacote para marcar os registros locais como atualizado. */ // $linhasUpdateL .= sprintf($updateL, __QuotedStr__($id_bilhetes)); } /* * Inicia uma transação com o servidor remoto. */ $resultR = pg_query($connR, 'begin'); if (!$resultR) { __GeraExcept__("Não foi possível iniciar uma transação com o servidor remoto![ImportaChamadas]"); } /* * Executa o pacote de dados; */ $resultR = pg_query($connR, $linhasInsertR); if (!$resultR) { pg_query($connR, 'rollback'); __GeraExcept__("Não foi possível inserir dados no servidor remoto![ImportaChamadas]"); } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Exec", ("Inserto remoto Ciclo: " . ($limit))), $pathLog); /* * Atualiza o pacote de dados local. */ $result = pg_query($connL, $linhasUpdateL); if (!$result) { pg_query($connR, 'rollback'); __GeraExcept__("Não foi possível atualizar os registros no servidor local![ImportaChamadas]"); } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Update Local Exec", ("Ciclo: " . ($limit))), $pathLog); $resultR = pg_query($connR, 'commit'); if (!$resultR) { $pct = sprintf("%s%s.pct", "dadosChamadas", date("Y-m-d-His")); GravaPacote($linhasInsertR, $pct); __GeraExcept__("Não foi possível iniciar uma transação com o servidor remoto![ImportaChamadas]"); } if ($ciclos >= ($VDS_LIMIT_EXPORTA * 50)) { break; } // usleep(30); } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Fim"), $pathLog); return true; } function ImportaPesquisa($connL, $connR, $filasValidas) { global $idCliente, $pathLog; __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Inicio"), $pathLog); $query = "select a.pm_id, a.uniqueid, a.pm_data, a.user_reg, a.data_reg, a.id_dac , a.pl_id, b.pl_descricao, b.pl_data_inicio, b.pl_data_fim, b.pl_ativa , a.pp_id, c.pp_nome, c.pp_status , a.pq_id, d.pq_display, d.pq_questao, d.pq_audio, d.pq_status , a.po_id, e.po_display, e.po_opcao, e.po_status, e.po_tecla , f.nome as fila from pbx_pesquisa_movimento a inner join pbx_pesquisa_liberacao b on b.pl_id = a.pl_id inner join pbx_pesquisa c on c.pp_id = a.pp_id inner join pbx_pesquisa_questoes d on d.pq_id = a.pq_id inner join pbx_pesquisa_opcoes e on e.po_id = a.po_id inner join pbx_dacs f on f.id = a.id_dac where a.integra_vendas = 0 and c.pp_nome ilike '%ALGAR_%' "; $query .= $filasValidas ? " and f.id in ($filasValidas) " : ''; $query .= " order by a.pm_id"; $result = pg_query($connL, $query); if (!$result) { __GeraExcept__("Não foi possível consultar os dados da pesquisa movimento!"); } else if (pg_num_rows($result)) { $integrar = array(); while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { $pm_id = $dados["pm_id"]; $uniqueid = $dados["uniqueid"]; $pm_data = $dados["pm_data"]; $user_reg = $dados["user_reg"]; $data_reg = $dados["data_reg"]; $id_dac = $dados["id_dac"]; $pl_id = $dados["pl_id"]; $pl_descricao = __RemoveAcentos__($dados["pl_descricao"]); $pl_data_inicio = $dados["pl_data_inicio"]; $pl_data_fim = $dados["pl_data_fim"]; $pl_ativa = $dados["pl_ativa"]; $pp_id = $dados["pp_id"]; $pp_nome = __RemoveAcentos__($dados["pp_nome"]); $pp_status = $dados["pp_status"]; $pq_id = $dados["pq_id"]; $pq_display = __RemoveAcentos__($dados["pq_display"]); $pq_questao = __RemoveAcentos__($dados["pq_questao"]); $pq_audio = __RemoveAcentos__($dados["pq_audio"]); $pq_status = $dados["pq_status"]; $po_id = $dados["po_id"]; $po_display = __RemoveAcentos__($dados["po_display"]); $po_opcao = $dados["po_opcao"]; $po_status = $dados["po_status"]; $po_tecla = $dados["po_tecla"]; $fila = $dados["fila"]; // $cmd = sprintf("insert into vds_pesquisa(pm_id, emp_id, uniqueid, pm_data, user_reg, data_reg, id_dac, pl_id, pl_descricao, pl_data_inicio, pl_data_fim, pl_ativa, pp_id, pp_nome, pp_status, pq_id, pq_display, pq_questao, pq_audio, pq_status, po_id, po_display, po_opcao, po_status, po_tecla)values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);", __QuotedStr__($pm_id), __QuotedStr__($idCliente), __QuotedStr__($uniqueid), __QuotedStr__($pm_data), __QuotedStr__($user_reg), __QuotedStr__($data_reg), __QuotedStr__($id_dac), __QuotedStr__($pl_id), __QuotedStr__($pl_descricao), __QuotedStr__($pl_data_inicio), __QuotedStr__($pl_data_fim), __QuotedStr__($pl_ativa), __QuotedStr__($pp_id), __QuotedStr__($pp_nome), __QuotedStr__($pp_status), __QuotedStr__($pq_id), __QuotedStr__($pq_display), __QuotedStr__($pq_questao), __QuotedStr__($pq_audio), __QuotedStr__($pq_status), __QuotedStr__($po_id), __QuotedStr__($po_display), __QuotedStr__($po_opcao), __QuotedStr__($po_status), __QuotedStr__($po_tecla)); $cmd = sprintf( "insert into vds_pesquisa(pm_id, emp_id, uniqueid, pm_data, user_reg, data_reg, id_dac, pl_id, pl_descricao, pl_data_inicio, pl_data_fim, pl_ativa, pp_id, pp_nome, pp_status, pq_id, pq_display, pq_questao, pq_audio, pq_status, po_id, po_display, po_opcao, po_status, po_tecla, fila)" . "select %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s where not exists(select '' from vds_pesquisa where pm_id = %s and emp_id = %s);", __QuotedStr__($pm_id), __QuotedStr__($idCliente), __QuotedStr__($uniqueid), __QuotedStr__($pm_data), __QuotedStr__($user_reg), __QuotedStr__($data_reg), __QuotedStr__($id_dac), __QuotedStr__($pl_id), __QuotedStr__($pl_descricao), __QuotedStr__($pl_data_inicio), __QuotedStr__($pl_data_fim), __QuotedStr__($pl_ativa), __QuotedStr__($pp_id), __QuotedStr__($pp_nome), __QuotedStr__($pp_status), __QuotedStr__($pq_id), __QuotedStr__($pq_display), __QuotedStr__($pq_questao), __QuotedStr__($pq_audio), __QuotedStr__($pq_status), __QuotedStr__($po_id), __QuotedStr__($po_display), __QuotedStr__($po_opcao), __QuotedStr__($po_status), __QuotedStr__($po_tecla), __QuotedStr__($fila), __QuotedStr__($pm_id), __QuotedStr__($idCliente)); if (!$cmdResult = pg_query($connR, $cmd)) { __WriteLog__(sprintf("Cmd: %s \n", $cmd), $pathLog); } if ($cmdResult && pg_affected_rows($cmdResult)) { /* * Guarda o registro para alterar o status para integrado; */ $integrar[] = $pm_id; } } /* * Marca os registros com integrado na base de dados. */ foreach ($integrar as $pmId) { $query = sprintf("update pbx_pesquisa_movimento set integra_vendas = 1 where pm_id = %s;", __QuotedStr__($pmId)); if (!pg_query($connL, $query)) { __WriteLog__(sprintf("Cmd: %s \n", $query), $pathLog); } } } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Concluida as importacao dos registros de movimento da pesquisa."), $pathLog); /* * Importa a tabela de log. */ $query = "select plog_id, plog_data, uniqueid, matricula, plog_log, data_reg, id_dac, fila, pl_id from pbx_pesquisa_log a, pbx_dacs b where b.nome = a.fila and integra_vendas = 0"; $query .= $filasValidas ? " and b.id in($filasValidas) " : ''; $result = pg_query($connL, $query); if (!$result) { __GeraExcept__("Não foi possível consultar a tabela de log da pequisa!"); } else if (pg_num_rows($result)) { /* * Faz a insercao do dados na base remota. */ while ($dadosLog = pg_fetch_array($result, null, PGSQL_ASSOC)) { $plog_id = $dadosLog['plog_id']; $plog_data = $dadosLog['plog_data']; $uniqueid = $dadosLog['uniqueid']; $matricula = $dadosLog['matricula']; $plog_log = $dadosLog['plog_log']; $data_reg = $dadosLog['data_reg']; $id_dac = $dadosLog['id_dac']; $fila = $dadosLog['fila']; $pl_id = $dadosLog['pl_id']; $cmd = sprintf("insert into vds_pesquisa_log(emp_id,plog_data,uniqueid,matricula,plog_log,data_reg,id_dac,fila, pl_id)values(%s,%s,%s,%s,%s,%s,%s,%s,%s)", __QuotedStr__($idCliente), __QuotedStr__($plog_data), __QuotedStr__($uniqueid), __QuotedStr__($matricula), __QuotedStr__($plog_log), __QuotedStr__($data_reg), __QuotedStr__($id_dac), __QuotedStr__($fila), __QuotedStr__($pl_id)); if (!$cmdResult = pg_query($connR, $cmd)) { __WriteLog__(sprintf("Cmd: %s \n", $cmd), $pathLog); } if ($cmdResult && pg_affected_rows($cmdResult)) { /* * Guarda o registro para alterar o status para integrado; */ $integrar[] = $plog_id; } } /* * Marca os registros na tabela de log como exportados. */ foreach ($integrar as $plogId) { $query = sprintf("update pbx_pesquisa_log set integra_vendas = 1 where plog_id = %s;", __QuotedStr__($plogId)); if (!pg_query($connL, $query)) { __WriteLog__(sprintf("Cmd: %s \n", $query), $pathLog); } } } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Concluida as importacao dos logs da pesquisa."), $pathLog); /* * Importacao dos registro de redirecao da pesquisa. */ $query = "SELECT uniqueid, id_dac, matricula, data_reg, data_fim FROM pbx_pesquisa_regitra a INNER JOIN pbx_dacs b ON a.id_dac = b.id WHERE integra_vendas = 0 "; $query .= $filasValidas ? " AND b.id in ($filasValidas) " : ''; $result = pg_query($connL, $query); if (!$result) { __GeraExcept__("Não foi possível consultar a tabela de log da pequisa!"); } else if (pg_num_rows($result)) { /* * Faz a insercao do dados na base remota. */ while ($dadosLog = pg_fetch_array($result, null, PGSQL_ASSOC)) { $uniqueid = $dadosLog['uniqueid']; $id_dac = $dadosLog['id_dac']; $matricula = $dadosLog['matricula']; $data_reg = $dadosLog['data_reg']; $data_fim = $dadosLog['data_fim']; $cmd = sprintf("insert into vds_pesquisa_regitra(emp_codigo,uniqueid, id_dac, matricula, data_reg, data_fim)values(%s,%s,%s,%s,%s,%s)", __QuotedStr__($idCliente), __QuotedStr__($uniqueid), __QuotedStr__($id_dac), __QuotedStr__($matricula), __QuotedStr__($data_reg), (!$data_fim ? 'null' : __QuotedStr__($data_fim)) ); if (!$cmdResult = pg_query($connR, $cmd)) { __WriteLog__(sprintf("Cmd: %s \n", $cmd), $pathLog); } if ($cmdResult && pg_affected_rows($cmdResult)) { /* * Guarda o registro para alterar o status para integrado; */ $integrar[] = $uniqueid; } } /* * Marca os registros na tabela de log como exportados. */ foreach ($integrar as $uid) { $query = sprintf("update pbx_pesquisa_regitra set integra_vendas = 1 where uniqueid = %s;", __QuotedStr__($uid)); if (!pg_query($connL, $query)) { __WriteLog__(sprintf("Cmd: %s \n", $query), $pathLog); } } } __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Concluida as importacao registro de direcionamento para pesquisa."), $pathLog); __WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Fim"), $pathLog); } function vdsGetConnectionL() { global $dbServer, $dbBase, $dbPorta, $userDb, $dbPass; include "configBd.php"; $connStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", ($dbServer ? $dbServer : $dbHost), ($dbPorta ? $dbPorta : $dbPort), ($dbBase ? $dbBase : $dbName), ($userDb ? $userDb : $dbUser), ($dbPass ? $dbPass : $dbPassword)); /* * Esta função retorna informações default para parametros omitidos. */ $conn = pg_connect($connStr); /* * Verifica se a conexão foi realizada. */ if (!$conn) { __GeraExcept__("Não foi possível estabelecer uma conexão com o banco de dados!"); } return $conn; } function vdsGetConnectionR() { global $dbServer, $dbBase, $dbPorta, $userDb, $dbPass; /* * Esta função retorna informações default para parametros omitidos. */ $conn = __GetAlernativeDB__($dbServer, $dbPorta, $dbBase, $userDb, $dbPass); /* * Verifica se a conexão foi realizada. */ if (!$conn) { __GeraExcept__("Não foi possível estabelecer uma conexão com o banco de dados!"); } return $conn; } function vdsIniciaExec($filename) { @file_put_contents($filename, "xxxxxxx\n"); } function vdsEmExecucao($filename) { return file_exists($filename); } function vdsEncerraExec($filename) { @unlink($filename); } function __GeraExcept__($msg) { throw new Exception($msg); } function __RaiseExcept__($msg, $dbError = false) { if ($dbError) { $msg .= " DB: " . pg_last_error(); } __GeraExcept__($msg . "\n"); } function __WriteLog__($log, $path = '') { if (!$path) { $path = '/var/log/asterisk/log_geral.log'; } $arq = fopen($path, 'a'); fwrite($arq, $log); fclose($arq); } function __GetAlernativeDB__($hostDb = '', $portDb = '', $nameDb = '', $userDb = '', $passDb = '') { include "configBd.php"; $portDb = $portDb ? $dbPort : $dbPort; $hostDb = $hostDb ? $hostDb : $dbHost; $nameDb = $nameDb ? $nameDb : $dbName; $userDb = $userDb ? $userDb : $dbUser; $passDb = $passDb ? $passDb : $dbPassword; $str = "host='$hostDb' port='$portDb' dbname='$nameDb' user='$userDb' password='$passDb'"; return @pg_connect($str, PGSQL_CONNECT_FORCE_NEW); } function __QuotedStr__($str) { return sprintf("'%s'", pg_escape_string(trim($str))); } function __RemoveAcentos__($str, $upper = False) { $text = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý'); $subs = array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'U', 'P', 'B', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y'); for ($i = 0; $i < strlen($str); $i++) { $j = array_search($str[$i], $text); if ($j) $str[$i] = $subs[$j]; } if ($upper) $str = strtoupper($str); return($str); } function __GetLasterror__() { $erro = error_get_last(); return trim($erro['message']); } function ___UnTar___($origem, $destino, $type = "gz") { switch ($type) { case "gz" : $cmd = "xzvf"; break; case "bz2": $cmd = "xjvf"; break; default: $cmd = "xvf"; break; } $result = true; $cmd = sprintf("tar -%s %s -C %s 2>/dev/null", $cmd, $origem, $destino); system($cmd); /* * Certifica que o arquivo foi criado com sucesso. */ return file_exists($destino); } function __ListaNegraNaoPerturbe__($conn) { $query = "select '' from pbx_listanegra where nome = 'NAO PERTURBE'"; if (!$result = pg_query($conn, $query)) { __GeraExcept__("Não possível consultar se a Lista Negra Não Perturpe já existe!"); } if (!pg_num_rows($result)) { $query = "INSERT INTO pbx_listanegra (nome,numero,entrada,saida,opcao,acao) VALUES ('NAO PERTURBE','0','0','0','','')"; if (!pg_query($conn, $query)) { __GeraExcept__("Não foi possível inserir a Lista Negra Não Perturpe!"); } } $query = "select id from pbx_listanegra where nome = 'NAO PERTURBE'"; $result = pg_query($conn, $query); $dados = pg_fetch_row($result); if (!$idPai = $dados[0]) { __GeraExcept__("Não possível recuperar o id da Lista Negra Não Perturpe!"); } $query = "delete from pbx_listanegra where id_pai = '$idPai' and opcao <> 'NPA' "; if (!$result = pg_query($conn, $query)) { __GeraExcept__("Não possível apagar a Lista Negra Não Perturpe antiga!"); } $query = "insert into pbx_listanegra(numero, id_pai) select numero, '$idPai' as id_pai from pbx_nao_perturbe"; if (!pg_query($conn, $query)) { __GeraExcept__("Não foi possível inserir número a nova Lista Negra Não Perturpe!"); } } function __GetParams($params) { foreach ($params as $key => $value) { $GLOBALS[$key] = $value; } } function __VerificaDefault() { global $paramRemoteConn, $paramLocalConn; if (!isset($paramRemoteConn)) { $paramRemoteConn = array('dbServer' => 'algar.simplesip.com.br', 'dbBase' => '', 'dbPorta' => '', 'userDb' => '', 'dbPass' => ''); } if (!isset($paramLocalConn)) { $paramLocalConn = array('dbServer' => '', 'dbBase' => '', 'dbPorta' => '', 'userDb' => '', 'dbPass' => ''); } }