Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
184 righe
7.6 KiB
184 righe
7.6 KiB
<? |
|
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php"; |
|
include_once($configPath); |
|
include_once ($beRoot."/layout/top.php"); |
|
if (!empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice)) { |
|
?> |
|
<div class="container-fluid pt-5"> |
|
<div class="row"> |
|
<div class="col-12"> |
|
<p class="d-block display-4"> |
|
<?= Modulo::header($radice) ?> |
|
</p> |
|
</div> |
|
</div> |
|
</div> |
|
<? |
|
$postFilter = []; |
|
if (isset($_POST["filter"])) { |
|
$postFilter = $_POST["filter"]; |
|
$_SESSION["access-filter"] = $postFilter; |
|
} |
|
?> |
|
<div id="modal-log" class="modal" tabindex="-1" role="dialog"> |
|
<div class="modal-dialog modal-lg" role="document"> |
|
<div class="modal-content"> |
|
<div class="modal-header"> |
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> |
|
<span aria-hidden="true">×</span> |
|
</button> |
|
</div> |
|
<div class="modal-body"></div> |
|
<div class="modal-footer"> |
|
<button class="btn btn-block" data-dismiss="modal">Close</button> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div id="commands" class="mb-5"> |
|
<div class="commands container-fluid"> |
|
<div class="row"> |
|
<div class="col-12 text-right"> |
|
<button class="btn btn-warning" data-toggle="collapse" href="#filtri" aria-expanded="false" aria-controls="filtri""><span class="fa fa-filter"></span> Filter</button> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="container-fluid collapse mb-3" id="filtri"> |
|
<div class="row"> |
|
<div class="col-12"> |
|
<div class="card"> |
|
<form action="index.php" target="_self" method="post" rel="validate"> |
|
<?if (empty($postFilter["tipo"])) { $postFilter["tipo"] = "accessi"; } ?> |
|
<input type="hidden" name="filter[tipo]" id="tipo" value="<?= $postFilter["tipo"] ?>"> |
|
<div class="card-body"> |
|
<div class="row"> |
|
<div class="form-group col-sm-2"> |
|
<label>User:</label> |
|
<input class="input form-control" id="filter-user" title="User" name="filter[user]" value="<?= (!empty($postFilter["user"])) ? $postFilter["user"] : "" ?>"> |
|
</div> |
|
<? |
|
if (empty($_SESSION["ente"])) { |
|
?> |
|
<div class="form-group col-sm-3"> |
|
<label>Ente:</label> |
|
<select name="filter[codice_ente]" class="form-control" id="filter-codice_ente" title="<?= __('ente') ?>"> |
|
<option value="">All</option> |
|
<option value="0">None</option> |
|
<? |
|
$sql = "SELECT codice, denominazione FROM b_enti WHERE attivo = 'S' AND dominio IS NOT NULL AND dominio <> '' ORDER BY denominazione"; |
|
$ris_filter = $pdo->go($sql); |
|
if ($ris_filter->rowCount() > 0) { |
|
?> |
|
|
|
<? while ($option = $ris_filter->fetch(PDO::FETCH_ASSOC)) { ?> |
|
<option value="<?= $option["codice"] ?>"><?= $option["denominazione"] ?></option> |
|
<? } ?> |
|
<? |
|
} |
|
?> |
|
</select> |
|
<? |
|
if (!empty($postFilter["codice_ente"])) { |
|
?> |
|
<script> |
|
$("#filter-codice_ente").val('<?= $postFilter["codice_ente"] ?>'); |
|
</script> |
|
<? |
|
} |
|
?> |
|
</div> |
|
<? |
|
} |
|
?> |
|
<div class="form-group col-sm-3"> |
|
<label>IP:</label> |
|
<input class="input form-control" id="filter-ip" title="IP" name="filter[ip]" value="<?= (!empty($postFilter["ip"])) ? $postFilter["ip"] : "" ?>"> |
|
</div> |
|
<div class="form-group col-sm-2"> |
|
<label>From:</label> |
|
<input class="input form-control datetimepick" id="filter-from" title="From" name="filter[from]" rel="N;0;0;DT;filter-to;<" value="<?= (!empty($postFilter["from"])) ? $postFilter["from"] : "" ?>"> |
|
</div> |
|
<div class="form-group col-sm-2"> |
|
<label>To:</label> |
|
<input class="input form-control datetimepick" id="filter-to" title="To" name="filter[to]" rel="N;0;0;DT;filter-from;>" value="<?= (!empty($postFilter["to"])) ? $postFilter["to"] : "" ?>"> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="card-footer"> |
|
<div class="row"> |
|
<div class="col-6"> |
|
<button type="submit" onClick="$('#tipo').val('accessi');" class="btn btn-success form-control"> |
|
<span class="fa fa-check"></span> Login |
|
</button> |
|
</div> |
|
<div class="col-6"> |
|
<button type="submit" onClick="$('#tipo').val('tentativi');" class="btn btn-danger form-control"> |
|
<span class="fa fa-times"></span> Attempts |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
</form> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="container-fluid"> |
|
<div class="row"> |
|
<div class="col-12"> |
|
<div class="card"> |
|
<div class="card-header"> |
|
<h4 class="mb-0"> |
|
<? |
|
switch($postFilter["tipo"]) { |
|
case "tentativi": echo '<span class="fa fa-times"></span> Attempts'; break; |
|
default: echo '<span class="fa fa-check"></span> Login'; break; |
|
} |
|
?> |
|
</h4> |
|
</div> |
|
<div class="card-body"> |
|
<div class="table-responsive table-condensed"> |
|
<table class="table table-striped table-hover table-condensed" id="log" width="100%"> |
|
<thead> |
|
<tr> |
|
<th>User</th> |
|
<? if (empty($_SESSION["ente"])) { ?><th><?= __("ente") ?></th><? } ?> |
|
<th width="100">IP</th> |
|
<th width="120">Timestamp</th> |
|
</tr> |
|
</thead> |
|
<tbody> |
|
</tbody> |
|
</table> |
|
</div> |
|
<script> |
|
$("#log").DataTable({ |
|
"ordering": false, |
|
"searching": false, |
|
"info": false, |
|
"processing": true, |
|
"serverSide": true, |
|
"language": { |
|
"url": "/dictionary/datatables/<?= $_SESSION["language"] ?>.lang" |
|
}, |
|
"ajax": "table.php", |
|
"lengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]] |
|
}); |
|
</script> |
|
</div> |
|
<div class="card-footer"> |
|
<a href="export.php" class="btn btn-danger form-control" target="_blank"><span class="fa fa-cloud-download-alt"></span> Export</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<? |
|
include_once ($beRoot."/layout/bottom.php"); |
|
} else { |
|
echo '<meta http-equiv="refresh" content="0;URL=/index.php">'; |
|
die(); |
|
} |
|
?>
|
|
|