|
|
|
|
<?php
|
|
|
|
|
ini_set("memory_limit", "1024M");
|
|
|
|
|
/*
|
|
|
|
|
* Inicializa as datas na chamda do formul<EFBFBD>rio ou recebe a submiss<EFBFBD>o do usu<EFBFBD>rio.
|
|
|
|
|
*/
|
|
|
|
|
$dtIni = IsPostBack() ? $_POST['dataIni'] : date('d/m/Y')." 00:00";
|
|
|
|
|
$dtFim = IsPostBack() ? $_POST['dataFim'] : date('d/m/Y')." 23:59";
|
|
|
|
|
$modulo = IsPostBack() ? $_POST['listaModulo'] : '';
|
|
|
|
|
$usuario = IsPostBack() ? $_POST['listaUsuario'] : 0;
|
|
|
|
|
$request = IsPostBack() ? $_POST['request'] : '';
|
|
|
|
|
$log = IsPostBack() ? $_POST['full_log'] : '';
|
|
|
|
|
/*
|
|
|
|
|
* Inicializa variaveis globais.
|
|
|
|
|
*/
|
|
|
|
|
$imp = 0;
|
|
|
|
|
$linhas = '';
|
|
|
|
|
$msg = "Informe os parametros e clique em consultar!";
|
|
|
|
|
|
|
|
|
|
$dtIni = strlen($dtIni) == 10 ? $dtIni . " 00:00" : $dtIni;
|
|
|
|
|
$dtFim = strlen($dtFim) == 10 ? $dtFim . " 23:59" : $dtFim;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (IsPostBack()) {
|
|
|
|
|
ValidaData($dtIni, 'd/m/Y H:i', "A data inicial informada: %s <EFBFBD> inv<EFBFBD>lida!");
|
|
|
|
|
ValidaData($dtFim, 'd/m/Y H:i', "A data final informada %s <EFBFBD> inv<EFBFBD>lida!");
|
|
|
|
|
$query = GetQuery();
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$imp++;
|
|
|
|
|
$id = $row['id'];
|
|
|
|
|
$idPag = $row['id_prog'];
|
|
|
|
|
$idPagPai = $row['id_prog_pai'];
|
|
|
|
|
$user = $row['usuario'];
|
|
|
|
|
$data = date('d/m/Y H:i:s',strtotime($row['data']));
|
|
|
|
|
$req = $row['full_tipo'];
|
|
|
|
|
$ip = $row['ip'];
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Prepara o bot<EFBFBD>o de detalhes com informa<EFBFBD><EFBFBD>es
|
|
|
|
|
*/
|
|
|
|
|
$titleImg = 'Mais detalhes!';
|
|
|
|
|
$imgDet = "imgSite/detalhadoEnabled.png";
|
|
|
|
|
$selc = sprintf("href=\"javascript:NovaJanela('index.php?idProg=305&idFull=%s','logFullDetalhes','550', '550', 'resizable=NO,scrollbars=NO')\"", $id);
|
|
|
|
|
$jsonDados = json_decode($row['dados'], true);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Verifica se possui o REQUEST para popular apenas com o REQUEST.
|
|
|
|
|
*/
|
|
|
|
|
if ($jsonDados['request']) {
|
|
|
|
|
$dados = GetJson($jsonDados['request']);
|
|
|
|
|
$mod = $row['id_prog'] == 58 ? $jsonDados['request']['menuNome'] : $mod = $row['modulo'];
|
|
|
|
|
} else {
|
|
|
|
|
$mod = $row['modulo'];
|
|
|
|
|
$dados = GetJson($jsonDados) ? GetJson($jsonDados) : "idProg: ".$idPag." | ".str_replace(".php", "", $mod);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Verifica o JSON possui DADOS suficientes para abrir a janela de detalhes.
|
|
|
|
|
*/
|
|
|
|
|
if ($jsonDados){
|
|
|
|
|
if (count($jsonDados) < 7 && count($jsonDados['request']) < 4) {
|
|
|
|
|
$selc = '';
|
|
|
|
|
$titleImg = 'Detalhes j<EFBFBD> apresentados!';
|
|
|
|
|
$imgDet = "imgSite/detalhadoDesabled.png";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Monta o bot<EFBFBD>o com dados atualizados
|
|
|
|
|
*/
|
|
|
|
|
$linkRel = sprintf("<a %s>"
|
|
|
|
|
. "<img src='%s' alt='Detalhes Auditoria!' width='14' height='18' border='0' title='%s'>"
|
|
|
|
|
. "</a>", $selc, $imgDet, $titleImg);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Informa o diretorio pai se houver
|
|
|
|
|
*/
|
|
|
|
|
$diretorio = GetDiretorioPai($idPag, $idPagPai);
|
|
|
|
|
$dirPath = $diretorio ? $diretorio.' > '.str_replace(".php", "", $mod) : str_replace(".php", "", $mod);
|
|
|
|
|
|
|
|
|
|
$linhas .= " <tr align=\"center\">
|
|
|
|
|
<td align=\"left\" class=\"headData\">" .$dirPath . "</td>
|
|
|
|
|
<td nowrap align=\"left\" class=\"headData\">$user</td>
|
|
|
|
|
<td nowrap align=\"center\" class=\"headData\">$data</td>
|
|
|
|
|
<td nowrap align=\"left\" class=\"headData\">$ip</td>
|
|
|
|
|
<td nowrap align=\"left\" class=\"headData\">$req</td>
|
|
|
|
|
<td align=\"left\" class=\"headData\">$dados</td>
|
|
|
|
|
<td nowrap align=\"center\" class=\"headData\">$linkRel</td>
|
|
|
|
|
</tr>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$msg = !$imp ? 'Nenhum registro Encontrado!' : "$imp Registros Encontrados!";
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$msg = $ex->getMessage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Adciona formata<EFBFBD><EFBFBD>o de data ao formul<EFBFBD>rio.
|
|
|
|
|
*/
|
|
|
|
|
$jsJQuery[] = "\$('#dataIni').keypress(function(){formataDataHora(this);}) ";
|
|
|
|
|
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) ";
|
|
|
|
|
/*
|
|
|
|
|
* Carrega o combo de m<EFBFBD>dulos do sistema.
|
|
|
|
|
*/
|
|
|
|
|
$modulos = GetLogFullModulos($modulo);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Carrega o combo de m<EFBFBD>dulos do sistema.
|
|
|
|
|
*/
|
|
|
|
|
$agentes = GetLogFullUsuarios($usuario);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Mescla informa<EFBFBD><EFBFBD>es no template correspondente.
|
|
|
|
|
*/
|
|
|
|
|
$smarty->assign('imp', $imp);
|
|
|
|
|
$smarty->assign('dtIni', $dtIni);
|
|
|
|
|
$smarty->assign('dtFim', $dtFim);
|
|
|
|
|
$smarty->assign('modulos', $modulos);
|
|
|
|
|
$smarty->assign('usuarios', $agentes);
|
|
|
|
|
$smarty->assign('linhas', $linhas);
|
|
|
|
|
$smarty->assign('msg', $msg);
|
|
|
|
|
GetTemplate($smarty, 'auditoria/logFull.tpl');
|
|
|
|
|
|
|
|
|
|
function GetQuery() {
|
|
|
|
|
global $dtIni, $dtFim, $modulo, $usuario,$request, $log;
|
|
|
|
|
$dataIni = QuebraData($dtIni);
|
|
|
|
|
$dataFim = QuebraData($dtFim);
|
|
|
|
|
$query = sprintf("SELECT
|
|
|
|
|
a.full_id AS id,
|
|
|
|
|
b.id_prog_pai,
|
|
|
|
|
a.id_prog,
|
|
|
|
|
a.full_prog_nome AS modulo,
|
|
|
|
|
a.full_ip AS ip, full_data_hora AS data,
|
|
|
|
|
login AS usuario,
|
|
|
|
|
a.full_tipo,
|
|
|
|
|
full_log AS dados
|
|
|
|
|
FROM pbx_audita_full a
|
|
|
|
|
LEFT JOIN pbx_funcoes_internas b ON b.id_prog = a.id_prog
|
|
|
|
|
LEFT JOIN pbx_usuarios c ON c.apelido = a.login
|
|
|
|
|
WHERE
|
|
|
|
|
full_data::date >= %s
|
|
|
|
|
AND
|
|
|
|
|
full_data::date <= %s ", QuotedStr($dataIni), QuotedStr($dataFim));
|
|
|
|
|
|
|
|
|
|
$query .= " AND a.full_prog_nome <> 'logFull.php' ";
|
|
|
|
|
if ($usuario) {
|
|
|
|
|
$query .= sprintf("AND c.id = %s ", $usuario);
|
|
|
|
|
}
|
|
|
|
|
if ($modulo) {
|
|
|
|
|
$query .= sprintf("AND a.id_prog = %s ", $modulo);
|
|
|
|
|
}
|
|
|
|
|
if ($request) {
|
|
|
|
|
$query .= sprintf("AND a.full_tipo = '%s' ", $request);
|
|
|
|
|
}
|
|
|
|
|
if ($log) {
|
|
|
|
|
$search = explode(':', $log);
|
|
|
|
|
$log = $search[1] ? '"'.$search[0].'":"'.trim($search[1]).'"' : $log;
|
|
|
|
|
$query .= sprintf("AND a.full_log LIKE '%%%s%%' ", $log);
|
|
|
|
|
}
|
|
|
|
|
$query .= " ORDER BY data DESC";
|
|
|
|
|
return $query;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetLogFullModulos($pId) {
|
|
|
|
|
global $dtIni, $dtFim;
|
|
|
|
|
$dataIni = QuebraData($dtIni);
|
|
|
|
|
$dataFim = QuebraData($dtFim);
|
|
|
|
|
|
|
|
|
|
$str = "<select name=\"listaModulo\" id=\"listaModulo\" size=\"1\" style=\"width:150px;\">";
|
|
|
|
|
$str .= sprintf("<option value=\"\" %s>-------</option>", $pId ? ' ' : 'selected="selected"');
|
|
|
|
|
|
|
|
|
|
$query = sprintf("SELECT DISTINCT
|
|
|
|
|
a.full_prog_nome,a.id_prog
|
|
|
|
|
FROM pbx_audita_full a
|
|
|
|
|
WHERE
|
|
|
|
|
a.full_data::date >= %s
|
|
|
|
|
AND
|
|
|
|
|
a.full_data::date <= %s"
|
|
|
|
|
, QuotedStr($dataIni), QuotedStr($dataFim));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
while ($dados = pg_fetch_array($result)) {
|
|
|
|
|
$sel = ($pId === $dados['id_prog']) ? 'selected="selected"' : ' ';
|
|
|
|
|
$str .= sprintf("<option value=\"%s\" %s>%s</option>", $dados['id_prog'], $sel, str_replace(".php", "", $dados['full_prog_nome']));
|
|
|
|
|
}
|
|
|
|
|
return $str .= "</select>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetLogFullUsuarios($pId = 0) {
|
|
|
|
|
global $dtIni, $dtFim;
|
|
|
|
|
$dataIni = QuebraData($dtIni);
|
|
|
|
|
$dataFim = QuebraData($dtFim);
|
|
|
|
|
$str = "<select name=\"listaUsuario\" id=\"listaUsuario\" size=\"1\" style=\"width:150px;\">";
|
|
|
|
|
$str .= sprintf("<option value=\"0\" %s>-------</option>", $pId ? ' ' : 'selected="selected"');
|
|
|
|
|
|
|
|
|
|
$query = sprintf("SELECT DISTINCT
|
|
|
|
|
b.id, a.login
|
|
|
|
|
FROM pbx_audita_full a
|
|
|
|
|
INNER JOIN pbx_usuarios b
|
|
|
|
|
ON a.login = b.apelido
|
|
|
|
|
WHERE
|
|
|
|
|
full_data::date >= %s
|
|
|
|
|
AND
|
|
|
|
|
full_data::date <= %s", QuotedStr($dataIni), QuotedStr($dataFim));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
while ($dados = pg_fetch_array($result)) {
|
|
|
|
|
$sel = ($pId === $dados['id']) ? 'selected="selected"' : ' ';
|
|
|
|
|
$str .= sprintf("<option value=\"%s\" %s>%s</option>", $dados['id'], $sel, $dados['login']);
|
|
|
|
|
}
|
|
|
|
|
return $str .= "</select>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetJson($json) {
|
|
|
|
|
foreach ($json as $chave => $valor) {
|
|
|
|
|
if (!is_array($valor)) {
|
|
|
|
|
$dados .= $chave . ': ' . $valor . ' | ';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $dados;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDiretorioPai($idPag, $idPagPai) {
|
|
|
|
|
$nomeModulo = '';
|
|
|
|
|
if ($idPag && $idPagPai && ($idPag != $idPagPai)) {
|
|
|
|
|
$query = sprintf("SELECT arquivo FROM pbx_funcoes_internas a
|
|
|
|
|
WHERE a.id_prog = %s", $idPagPai);
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$select = pg_fetch_array($result);
|
|
|
|
|
$dir = substr(strrchr($select['arquivo'], "/"), 1);
|
|
|
|
|
$diretorio = $dir == NULL ? $select['arquivo'] : $dir;
|
|
|
|
|
$nomeModulo = str_replace(".php", "", $diretorio) ;
|
|
|
|
|
}
|
|
|
|
|
return $nomeModulo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|