gestione gare pubbliche
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.
 
 
 
 
 

222 righe
12 KiB

<?
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php";
include_once($configPath);
if (!empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice)) {
if (isset($_GET["draw"])) {
$return = array();
$return["draw"] = (int)$_GET["draw"];
$return["recordsTotal"] = (int)0;
$return["recordsFiltered"] = (int)0;
$bind = array();
$gerarchia_massima = 100;
$certificabili = false;
if (isset($_SESSION["ente"])) {
$certificabili = $_SESSION["ente"]->certificazioneManualeUtenti();
}
$sql = "SELECT b_utenti.nome, b_utenti.cognome, b_utenti.email, b_utenti.codice, b_utenti.ruolo, b_utenti.telefono, b_utenti.cellulare,
b_utenti.certificato, b_utenti.twoFactor_token,
GROUP_CONCAT(r_collaborazioni.codice) AS codici_collaborazioni, b_utenti.attivo
FROM b_utenti
LEFT JOIN r_collaborazioni ON b_utenti.codice = r_collaborazioni.codice_utente
LEFT JOIN b_enti ON r_collaborazioni.codice_ente = b_enti.codice ";
if (!isset($_SESSION["ente"])) {
$gerarchia_minima = 0;
$sql .= "WHERE ";
} else if ($_SESSION["utente"]->fromHere()) {
$gerarchia_minima = 9;
$bind[":codice"] = $_SESSION["ente"]->codice;
$sql .= "WHERE (b_enti.codice = :codice OR b_enti.sua = :codice) AND ";
} else {
$gerarchia_minima = 9;
$bind[":codice"] = $_SESSION["utente"]->codice_ente;
$sql .= "WHERE (b_enti.codice = :codice) AND ";
}
if (isset($_SESSION["ente"])) {
$sql .= " r_collaborazioni.monitoraggio = 'N' AND ";
}
$i = 0;
$ruoli = utente::ruoli();
$where = [];
foreach($ruoli AS $id => $ruolo) {
$i++;
if ($ruolo["gerarchia"] > $gerarchia_minima && $ruolo["gerarchia"] < $gerarchia_massima) {
$bind[":ruolo{$i}"] = $id;
$where[] = " b_utenti.ruolo = :ruolo{$i} ";
}
}
if (count($where) > 0) {
$sql .= "(" . implode(" OR ",$where) . ")";
}
$ris_utenti = $pdo->go($sql." GROUP BY b_utenti.codice",$bind);
if ($ris_utenti->rowCount() > 0) {
$return["recordsTotal"] = (int)$ris_utenti->rowCount();
$filterApplied = false;
if (!empty($_GET["search"]["value"])) {
$filterApplied = true;
$sql .= " AND ( ";
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_utenti.cognome");
$sql .= "(" . $suddivisione["sql"] . ") ";
$bind = array_merge($bind,$suddivisione["bind"]);
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_utenti.nome");
$sql .= "OR (" . $suddivisione["sql"] . ") ";
$bind = array_merge($bind,$suddivisione["bind"]);
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_utenti.email");
$sql .= "OR (" . $suddivisione["sql"] . ") ";
$bind = array_merge($bind,$suddivisione["bind"]);
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_utenti.cf");
$sql .= "OR (" . $suddivisione["sql"] . ") ";
$bind = array_merge($bind,$suddivisione["bind"]);
if (empty($_SESSION["ente"])) {
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_enti.denominazione");
$sql .= "OR (" . $suddivisione["sql"] . ") ";
$bind = array_merge($bind,$suddivisione["bind"]);
}
$sql .= ") ";
}
$order = "b_utenti.cognome ";
switch($_GET["order"][0]["column"]) {
case "1": $order = "b_utenti.codice "; break;
case "2": $order = "b_utenti.cognome "; break;
case "3": $order = "b_utenti.nome "; break;
case "4": $order = "b_utenti.email "; break;
case "5":if (empty($_SESSION["ente"])) { $order = "b_enti.denominazione "; break; }
}
if ($_GET["order"][0]["dir"] == "desc") {
$order.= "DESC ";
} else {
$order.= "ASC ";
}
$sql .= "GROUP BY b_utenti.codice ORDER BY " . $order . ", b_utenti.cognome ASC ";
$_SESSION["exportUtenti_".$_GET["token_esportazione"]] = ["sql"=>$sql,"bind"=>$bind];
$risBeforeLimit = $pdo->go($sql,$bind);
if ($_GET["length"] !== "-1") { $sql.= "LIMIT ". (int)$_GET["start"] .", " . (int)$_GET["length"]; }
$ris_utenti = $pdo->go($sql,$bind);
if ($ris_utenti->rowCount() > 0) {
$collaborazioni = $pdo->prepare("SELECT r_collaborazioni.*, b_enti.denominazione, b_enti.dominio, b_enti.attivo AS ente_attivo, b_enti.sua
FROM r_collaborazioni
JOIN b_enti ON r_collaborazioni.codice_ente = b_enti.codice
LEFT JOIN b_enti AS b_sua ON b_enti.sua = b_sua.codice
WHERE r_collaborazioni.codice = :codice AND (b_enti.attivo = 'S' OR b_sua.attivo = 'S')");
if ($filterApplied) {
$return["recordsFiltered"] = (int)$risBeforeLimit->rowCount();
} else {
$return["recordsFiltered"] = $return["recordsTotal"];
}
$return["data"] = array();
while($utente = $ris_utenti->fetch(PDO::FETCH_ASSOC)) {
if ($ruoli[$utente["ruolo"]]["gerarchia"] >= $_SESSION["utente"]->gerarchia) {
$stato = "bg-disabled";
$stato_label = __('disattivo');
if ($utente["attivo"]=="S") {
$stato = "bg-active";
$stato_label = __('attivo');
}
$row = array();
$row[] = '<div id="flag_'.$utente["codice"].'" class="mx-1 status_flag '.$stato.'"><span class="sr-only">'.$stato_label.'</span></div>';
$row[] = $utente["codice"];
$row[] = $utente["cognome"];
$row[] = $utente["nome"];
$row[] = $utente["email"];
$commands = true;
ob_start();
if (!empty($utente["codici_collaborazioni"])) {
if (isset($_SESSION["ente"]) && $_SESSION["utente"]->gerarchia > 9) { $commands = false; }
$codici_collaborazioni = explode(",",$utente["codici_collaborazioni"]);
if (count($codici_collaborazioni) > 0) {
foreach($codici_collaborazioni AS $collaborazione) {
$collaborazioni->bindValue(":codice",$collaborazione);
$collaborazioni->execute();
if ($collaborazioni->rowCount() > 0) {
$collaborazione = $collaborazioni->fetch(PDO::FETCH_ASSOC);
?>
<div class="d-block pl-2 py-1 mb-1">
<span class="text-<?= $collaborazione["attivo"] == "S" ? "success" : "danger" ?>"><span class="fa fa-<?= $collaborazione["attivo"] == "S" ? "check-circle" : "times-circle" ?>"></span> <?= $collaborazione["denominazione"] ?> <small class="p-1 alert alert-info"><?= $ruoli[$collaborazione["gruppo"]]["nome"] ?></small></span>
<?php if ($collaborazione["readOnly"] == "S") : ?>
<small class="p-1 alert alert-warning"><span class="fa fa-eye"></span><?= __("Sola lettura") ?></small>
<?php endif ?>
<?php if ($collaborazione["monitoraggio"] == "S") : ?>
<small class="p-1 alert alert-danger"><span class="fa fa-user-secret"></span><?= __("Monitoraggio") ?></small>
<?php endif ?>
<?
if ($_SESSION["utente"]->gerarchia < 10 || $collaborazione["codice_ente"] == $_SESSION["utente"]->codice_ente || empty($collaborazione["dominio"]) || $collaborazione["ente_attivo"] == "N") {
$commands = true; ?>
<div class="dropdown float-right">
<button title='<?= __("gestione") ?>' class='btn btn-sm btn-info dropdown-toggle' type="button" id="menuAzioni<?= $collaborazione["codice"] ?>" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class='fa fa-cog'></span>
</button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="menuAzioni<?= $collaborazione["codice"] ?>">
<a class="dropdown-item" href='#' onClick='showModalWithURL("/backend/utenti/manage.php?codice=<?= $utente["codice"] ?>&codice_collaborazione=<?= $collaborazione["codice"] ?>")' title='<?= __("Permessi") ?>'><i class='fa fa-lock-open'></i> <?= __("Permessi") ?></a>
<a class="dropdown-item" href='#' onClick='reset_password(<?= $utente["codice"] ?>,<?= (!empty($collaborazione["dominio"]) && $collaborazione["ente_attivo"] == "S") ? $collaborazione["codice_ente"] : $collaborazione["sua"] ?>)' title='<?= __("Reset password") ?>'><i class='fa fa-paper-plane'></i> <?= __("Reset password") ?></a>
<a class="dropdown-item" href='#' onClick='disabilita(<?= $collaborazione["codice"] ?>,"utenti/collaborazioni","codice_utente=<?= $utente["codice"] ?>")' title='<?= __("Attiva/Disattiva") ?>'><i class='fa fa-sync'></i> <?= $collaborazione["attivo"] == "S" ? __("Disattiva") : __("Attiva") ?></a>
</div>
</div>
<? } ?>
<div class="clearfix"></div>
</div>
<?
}
}
}
} else {
if ($utente["ruolo"] != "USR") {
echo "<span class='text-primary'><span class='fa fa-exclamation-circle'></span> {$ruoli[$utente["ruolo"]]["nome"]}</span>";
echo "<button title='".__("reset password")."' class='float-right btn btn-sm btn-success' onclick='reset_password(".$utente["codice"].",0);'><span class='fa fa-paper-plane'></span></button>";
} else {
echo "<span class='text-danger'><span class='fa fa-exclamation-triangle'></span> {$ruoli[$utente["ruolo"]]["nome"]}</span>";
}
}
$row[] = ob_get_clean();
if ($certificabili) {
ob_start();
if ($utente["certificato"] == "S") {
$_crtLabel = __("Certificato");
$_crtColor = "primary";
$_crtIcon = "fa fa-certificate";
} else {
$_crtLabel = __("Non certificato");
$_crtColor = "warning";
$_crtIcon = "fa fa-user-slash";
}
$_crtAction = "";
if ($_SESSION["utente"]->canCertify($utente["codice"]) || $utente["certificato"] == "S") {
$_crtAction = "showModalWithURL('/backend/utenti/certificazione/edit.php?codice={$utente["codice"]}');";
}
?>
<button onclick="<?= $_crtAction ?>" class="btn btn-<?= $_crtColor ?> btn-sm"><span class="<?= $_crtIcon ?>"></span> <?= $_crtLabel ?></button>
<?
$row[] = ob_get_clean();
}
if ($commands) {
$row[] = "<button title='".__("profilo")."' class='btn btn-block btn-sm btn-primary' onclick='showModalWithURL(\"/backend/utenti/edit.php?codice=".$utente["codice"]."\");'><span class='fa fa-user'></span></button>";
if ($_SESSION["utente"]->isSupportoOrRoot()) {
$row[] = "<button title='".__("Attiva/Disattiva")."' class='btn btn-block btn-sm btn-warning' onclick='disabilita(".$utente["codice"].",\"utenti\");'><span class='fa fa-sync'></span></button>";
if (!empty($utente["twoFactor_token"])) {
$row[] = "<button title='".__("Rimuovi 2FA")."' class='btn btn-block btn-sm btn-danger' onclick='showModalWithURL(\"/profilo/2fa/confirmDelete.php?codice=".$utente["codice"]."\");'>2FA</button>";
} else {
$row[] = "";
}
}
} else {
$row[] = "";
$row[] = "";
}
$return["data"][] = $row;
}
}
} else {
$return["data"] = array();
}
} else {
$return["error"] = "No record";
}
echo json_encode($return);
}
}
?>