|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
error_reporting(E_ALL);
|
|
|
|
|
ini_set('display_errors', false);
|
|
|
|
|
include("util/util.php");
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Informe o arquivo de dados na linha de comando se necessario.
|
|
|
|
|
*/
|
|
|
|
|
$workFile = isset($argv[1]) && file_exists($argv[1]) ? $argv[1] : $defFile;
|
|
|
|
|
$pathLog = GetFilePath($argv[0]) . "resumo-cdr.log";
|
|
|
|
|
|
|
|
|
|
$cdr = InsereCdr($workFile,$pathLog);
|
|
|
|
|
print_r($cdr);
|
|
|
|
|
|
|
|
|
|
function LimpaBuffer($line) {
|
|
|
|
|
$strLine = substr($line, -1) == ',' ? $line : ($line . ',');
|
|
|
|
|
$tam = strlen($strLine);
|
|
|
|
|
$str = '';
|
|
|
|
|
$colunas = array();
|
|
|
|
|
$quote = false;
|
|
|
|
|
|
|
|
|
|
for ($i = 0; $i < $tam; $i++) {
|
|
|
|
|
$ch = substr($strLine, $i, 1);
|
|
|
|
|
|
|
|
|
|
if (!$quote && ($ch == ',')) {
|
|
|
|
|
$colunas[] = $str;
|
|
|
|
|
$str = '';
|
|
|
|
|
$quote = false;
|
|
|
|
|
$ch = '';
|
|
|
|
|
}
|
|
|
|
|
if ($ch == '"') {
|
|
|
|
|
$quote = !$quote;
|
|
|
|
|
}
|
|
|
|
|
$str .= ($ch == '"') ? '' : $ch;
|
|
|
|
|
}
|
|
|
|
|
return $colunas;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InsereCdr($workFile, $pathLog) {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$connStr = '';
|
|
|
|
|
$connStr = !$connStr ? GetDefStrDb() : $connStr;
|
|
|
|
|
$conn = pg_connect($connStr);
|
|
|
|
|
if (!$conn) {
|
|
|
|
|
GeraExcept("N<EFBFBD>o foi poss<EFBFBD>vel estabelecer uma conex<EFBFBD>o com o banco de dados!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Variaveis de controle.
|
|
|
|
|
*/
|
|
|
|
|
$lineErro = '';
|
|
|
|
|
$lines = 0;
|
|
|
|
|
$lineOk = 0;
|
|
|
|
|
$numErro = 0;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Abre arquivo de dados.
|
|
|
|
|
*/
|
|
|
|
|
if (!($handle = fopen($workFile, 'r'))) {
|
|
|
|
|
GeraExcept("N<EFBFBD>o foi poss<EFBFBD>vel abrir o arquivo! $workFile ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while (!feof($handle)) {
|
|
|
|
|
$buffer = trim(fgets($handle));
|
|
|
|
|
|
|
|
|
|
if ($buffer) {
|
|
|
|
|
$dados = LimpaBuffer($buffer);
|
|
|
|
|
//$columns = explode(",", $dados[0]);
|
|
|
|
|
$columns = is_array($dados) ? $dados : explode(",", $dados);
|
|
|
|
|
|
|
|
|
|
if(count($columns) == 18){
|
|
|
|
|
$columnInsert = array(
|
|
|
|
|
"accountcode" => $columns[0],
|
|
|
|
|
"src" => $columns[1],
|
|
|
|
|
"dst" => $columns[2],
|
|
|
|
|
"dcontext" => $columns[3],
|
|
|
|
|
"clid" => $columns[4],
|
|
|
|
|
"channel" => $columns[5],
|
|
|
|
|
"dstchannel" => $columns[6],
|
|
|
|
|
"lastapp" => $columns[7],
|
|
|
|
|
"lastdata" => $columns[8],
|
|
|
|
|
"calldate" => $columns[9],
|
|
|
|
|
"answerdate" => $columns[10],
|
|
|
|
|
"hangupdate" => $columns[11],
|
|
|
|
|
"duration" => $columns[12],
|
|
|
|
|
"billsec" => $columns[13],
|
|
|
|
|
"disposition" => $columns[14],
|
|
|
|
|
"amaflags" => $columns[15],
|
|
|
|
|
"uniqueid" => $columns[16],
|
|
|
|
|
"userfield" => $columns[17]
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(count($columns) == 25){
|
|
|
|
|
|
|
|
|
|
$lastdata = array(
|
|
|
|
|
$columns[8],
|
|
|
|
|
$columns[9],
|
|
|
|
|
$columns[10],
|
|
|
|
|
$columns[10],
|
|
|
|
|
$columns[11],
|
|
|
|
|
$columns[12],
|
|
|
|
|
$columns[13],
|
|
|
|
|
$columns[14],
|
|
|
|
|
$columns[15],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$columnInsert = array(
|
|
|
|
|
"accountcode" => $columns[0],
|
|
|
|
|
"src" => $columns[1],
|
|
|
|
|
"dst" => $columns[2],
|
|
|
|
|
"dcontext" => $columns[3],
|
|
|
|
|
"clid" => $columns[4],
|
|
|
|
|
"channel" => $columns[5],
|
|
|
|
|
"dstchannel" => $columns[6],
|
|
|
|
|
"lastapp" => $columns[7],
|
|
|
|
|
"lastdata" => implode(",", $lastdata),
|
|
|
|
|
"calldate" => $columns[16],
|
|
|
|
|
"answerdate" => $columns[17],
|
|
|
|
|
"hangupdate" => $columns[18],
|
|
|
|
|
"duration" => $columns[19],
|
|
|
|
|
"billsec" => $columns[20],
|
|
|
|
|
"disposition" => $columns[21],
|
|
|
|
|
"amaflags" => $columns[22],
|
|
|
|
|
"uniqueid" => $columns[23],
|
|
|
|
|
"userfield" => $columns[24]
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(count($columns) == 27){
|
|
|
|
|
|
|
|
|
|
$lastdata = array(
|
|
|
|
|
$columns[8],
|
|
|
|
|
$columns[9],
|
|
|
|
|
$columns[10],
|
|
|
|
|
$columns[10],
|
|
|
|
|
$columns[11],
|
|
|
|
|
$columns[12],
|
|
|
|
|
$columns[13],
|
|
|
|
|
$columns[14],
|
|
|
|
|
$columns[15],
|
|
|
|
|
$columns[16],
|
|
|
|
|
$columns[17],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$columnInsert = array(
|
|
|
|
|
"accountcode" => $columns[0],
|
|
|
|
|
"src" => $columns[1],
|
|
|
|
|
"dst" => $columns[2],
|
|
|
|
|
"dcontext" => $columns[3],
|
|
|
|
|
"clid" => $columns[4],
|
|
|
|
|
"channel" => $columns[5],
|
|
|
|
|
"dstchannel" => $columns[6],
|
|
|
|
|
"lastapp" => $columns[7],
|
|
|
|
|
"lastdata" => implode(",", $lastdata),
|
|
|
|
|
"calldate" => $columns[18],
|
|
|
|
|
"answerdate" => $columns[19],
|
|
|
|
|
"hangupdate" => $columns[20],
|
|
|
|
|
"duration" => $columns[21],
|
|
|
|
|
"billsec" => $columns[22],
|
|
|
|
|
"disposition" => $columns[23],
|
|
|
|
|
"amaflags" => $columns[24],
|
|
|
|
|
"uniqueid" => $columns[25],
|
|
|
|
|
"userfield" => $columns[26]
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(count($columns) == 28){
|
|
|
|
|
|
|
|
|
|
$lastdata = array(
|
|
|
|
|
$columns[8],
|
|
|
|
|
$columns[9],
|
|
|
|
|
$columns[10],
|
|
|
|
|
$columns[10],
|
|
|
|
|
$columns[11],
|
|
|
|
|
$columns[12],
|
|
|
|
|
$columns[13],
|
|
|
|
|
$columns[14],
|
|
|
|
|
$columns[15],
|
|
|
|
|
$columns[16],
|
|
|
|
|
$columns[17],
|
|
|
|
|
$columns[18],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$columnInsert = array(
|
|
|
|
|
"accountcode" => $columns[0],
|
|
|
|
|
"src" => $columns[1],
|
|
|
|
|
"dst" => $columns[2],
|
|
|
|
|
"dcontext" => $columns[3],
|
|
|
|
|
"clid" => $columns[4],
|
|
|
|
|
"channel" => $columns[5],
|
|
|
|
|
"dstchannel" => $columns[6],
|
|
|
|
|
"lastapp" => $columns[7],
|
|
|
|
|
"lastdata" => implode(",", $lastdata),
|
|
|
|
|
"calldate" => $columns[19],
|
|
|
|
|
"answerdate" => $columns[20],
|
|
|
|
|
"hangupdate" => $columns[21],
|
|
|
|
|
"duration" => $columns[22],
|
|
|
|
|
"billsec" => $columns[23],
|
|
|
|
|
"disposition" => $columns[24],
|
|
|
|
|
"amaflags" => $columns[25],
|
|
|
|
|
"uniqueid" => $columns[26],
|
|
|
|
|
"userfield" => $columns[27]
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(count($columns) == 29){
|
|
|
|
|
|
|
|
|
|
$lastdata = array(
|
|
|
|
|
$columns[8],
|
|
|
|
|
$columns[9],
|
|
|
|
|
$columns[10],
|
|
|
|
|
$columns[10],
|
|
|
|
|
$columns[11],
|
|
|
|
|
$columns[12],
|
|
|
|
|
$columns[13],
|
|
|
|
|
$columns[14],
|
|
|
|
|
$columns[15],
|
|
|
|
|
$columns[16],
|
|
|
|
|
$columns[17],
|
|
|
|
|
$columns[18],
|
|
|
|
|
$columns[19],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$columnInsert = array(
|
|
|
|
|
"accountcode" => $columns[0],
|
|
|
|
|
"src" => $columns[1],
|
|
|
|
|
"dst" => $columns[2],
|
|
|
|
|
"dcontext" => $columns[3],
|
|
|
|
|
"clid" => $columns[4],
|
|
|
|
|
"channel" => $columns[5],
|
|
|
|
|
"dstchannel" => $columns[6],
|
|
|
|
|
"lastapp" => $columns[7],
|
|
|
|
|
"lastdata" => implode(",", $lastdata),
|
|
|
|
|
"calldate" => $columns[20],
|
|
|
|
|
"answerdate" => $columns[21],
|
|
|
|
|
"hangupdate" => $columns[22],
|
|
|
|
|
"duration" => $columns[23],
|
|
|
|
|
"billsec" => $columns[24],
|
|
|
|
|
"disposition" => $columns[25],
|
|
|
|
|
"amaflags" => $columns[26],
|
|
|
|
|
"uniqueid" => $columns[27],
|
|
|
|
|
"userfield" => $columns[28]
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "insert into cdr(accountcode, src, dst, dcontext, clid, "
|
|
|
|
|
. "channel, dstchannel, lastapp, lastdata, calldate,"
|
|
|
|
|
. "answerdate,hangupdate, duration, "
|
|
|
|
|
. "billsec, disposition, amaflags, uniqueid, userfield)"
|
|
|
|
|
. "values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);\n";
|
|
|
|
|
$query = sprintf($query, NullDb($columnInsert['accountcode']),
|
|
|
|
|
NullDb($columnInsert['src']),
|
|
|
|
|
NullDb($columnInsert['dst']),
|
|
|
|
|
NullDb($columnInsert['dcontext']),
|
|
|
|
|
NullDb($columnInsert['clid']),
|
|
|
|
|
NullDb($columnInsert['channel']),
|
|
|
|
|
NullDb($columnInsert['dstchannel']),
|
|
|
|
|
NullDb($columnInsert['lastapp']),
|
|
|
|
|
NullDb($columnInsert['lastdata']),
|
|
|
|
|
NullDb($columnInsert['calldate']),
|
|
|
|
|
NullDb($columnInsert['answerdate']),
|
|
|
|
|
NullDb($columnInsert['calldate']),
|
|
|
|
|
sprintf("strtoint('%s')", $columnInsert['duration']),
|
|
|
|
|
sprintf("strtoint('%s')", $columnInsert['billsec']),
|
|
|
|
|
NullDb($columnInsert['disposition']),
|
|
|
|
|
sprintf("strtoint('%s')", $columnInsert['amaflags']),
|
|
|
|
|
NullDb($columnInsert['uniqueid']),
|
|
|
|
|
NullDb($columnInsert['userfield'])
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (!pg_query($query)) {
|
|
|
|
|
$lineErro .= sprintf("Num. Erro: %s %s\nErro Sys: %s\n\nErro DB: %s\n\nQuery: %s\n%s\n",
|
|
|
|
|
++$numErro, date("d-m-Y H:i:s"), GetLasterror(), pg_errormessage(), $query, str_repeat('-', 80));
|
|
|
|
|
} else {
|
|
|
|
|
$lineOk++;
|
|
|
|
|
}
|
|
|
|
|
$lines++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$res = sprintf("Resumo da Importacao, Linhas: %s Importadas: %s Erro: %s\n", $lines, $lineOk, $numErro);
|
|
|
|
|
file_put_contents($pathLog, $lineErro);
|
|
|
|
|
return $res;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
return $ex->getMessage();
|
|
|
|
|
}
|
|
|
|
|
}
|