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[] = '
'.$stato_label.'
'; $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); ?>
">"> gerarchia < 10 || $collaborazione["codice_ente"] == $_SESSION["utente"]->codice_ente || empty($collaborazione["dominio"]) || $collaborazione["ente_attivo"] == "N") { $commands = true; ?>
{$ruoli[$utente["ruolo"]]["nome"]}"; echo ""; } else { echo " {$ruoli[$utente["ruolo"]]["nome"]}"; } } $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"]}');"; } ?> "; if ($_SESSION["utente"]->isSupportoOrRoot()) { $row[] = ""; if (!empty($utente["twoFactor_token"])) { $row[] = ""; } else { $row[] = ""; } } } else { $row[] = ""; $row[] = ""; } $return["data"][] = $row; } } } else { $return["data"] = array(); } } else { $return["error"] = "No record"; } echo json_encode($return); } } ?>