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.
 
 
 
 
 

147 righe
6.5 KiB

<?
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php";
include_once($configPath);
$error = true;
if (!empty($_POST) && !empty($_SESSION["utente"]) &&
($_SESSION["utente"]->permission("utenti",$_POST["codice"]) || $_SESSION["utente"]->codice == $_POST["codice"])
&& tokenVerify()) {
$ruoli = utente::ruoli();
$elabora_collaborazioni = ($_SESSION["utente"]->gerarchia <= 10);
if (isset($_POST["ruolo"])) {
if ($_POST["ruolo"] != "USR") { $elabora_collaborazioni = false; }
if ($ruoli[$_POST["ruolo"]]["gerarchia"] >= $_SESSION["utente"]->gerarchia) { $error = false; }
} else {
$error = false;
}
if (!$error) {
if (isset($_SESSION["ente"])) {
if (empty($_POST["codice"])) {
$_POST["ruolo"] = "USR";
} else {
unset($_POST["ruolo"]);
}
}
if (!empty($_POST["ruolo"]) && $_POST["ruolo"] != "CON") { $_POST["gruppo_consulenza"] = 0; }
if (empty($_POST["codice"]) && $_POST["ruolo"] == "USR" && empty($_POST["collaborazione"])) {
?>
swal({title:js_dict.error,html:"<?= __("E' obbligatorio specificare almeno una collaborazione") ?>",type:"error"});
<?
die();
}
if ($elabora_collaborazioni && !empty($_POST["collaborazione"])) {
$collaborazioniDaElaborare = [];
$count = [];
foreach($_POST["collaborazione"] AS $codice_collaborazione => $collaborazione) {
if ($ruoli[$collaborazione["gruppo"]]["gerarchia"] >= $_SESSION["utente"]->gerarchia && $ruoli[$collaborazione["gruppo"]]["ente"]) {
if (!isset($count[$collaborazione["codice_ente"]])) { $count[$collaborazione["codice_ente"]] = 0; }
$count[$collaborazione["codice_ente"]]++;
if ($count[$collaborazione["codice_ente"]] > 1) {
?>
swal({title:js_dict.error,html:"<?= __("Impossibile attribuire più collaborazioni per lo stesso ente") ?>",type:"error"});
<?
die();
} else {
$collaborazioniDaElaborare[$codice_collaborazione] = $collaborazione;
}
}
}
}
if (isset($_POST["password"])) {
$_POST["password"] = password_hash(md5($_POST["password"]), PASSWORD_BCRYPT);
if (!empty($_POST["codice"])) {
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_password_log";
$salva->operazione = "INSERT";
$salva->oggetto = array("codice_utente"=>$_POST["codice"]);
$salva->save();
}
}
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_utenti";
$salva->operazione = empty($_POST["codice"]) ? "INSERT" : "UPDATE";
$salva->oggetto = $_POST;
$salva->expect = array("cf", "codice","ruolo","attivo","password","email","cognome","nome","pec","theme","indirizzo","gruppo_consulenza","stato","regione","provincia","citta","cap","telefono","cellulare");
// Se l'utente è loggato con spid rimuovo il CF dalle chiavi consentite
if($salva->operazione == "UPDATE" && ($_SESSION["utente"]->authenticationLevel == 2 || $_SESSION["utente"]->publicSSO == "SPID") && $_POST["codice"] == $_SESSION["utente"]->codice) {
unset($salva->expect[0]);
$salva->expect = array_values($salva->expect);
}
$codice = $salva->save();
if (!empty($codice)) {
Utente::removeLock($codice);
unset($_SESSION["currentTheme"]);
$found = [];
if (!empty($collaborazioniDaElaborare)) {
foreach($collaborazioniDaElaborare AS $codice_collaborazione => $collaborazione) {
$operazione = "INSERT";
if (is_numeric($codice_collaborazione)) {
$operazione = "UPDATE";
$collaborazione["codice"] = $codice_collaborazione;
}
$collaborazione["codice_utente"] = $codice;
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "r_collaborazioni";
$salva->operazione = $operazione;
$salva->oggetto = $collaborazione;
$salva->expect = array("codice","gruppo","codice_utente","codice_ente","attivo","readOnly");
$found[] = $salva->save();
}
}
$bind = [];
$bind[":codice_utente"] = $codice;
$sql = "SELECT codice FROM r_collaborazioni WHERE codice_utente = :codice_utente ";
if (!empty($_SESSION["ente"])) {
$sql .= " AND codice_ente IN (SELECT codice FROM b_enti WHERE codice = :codice_ente OR sua = :codice_ente)";
$bind[":codice_ente"] = $_SESSION["ente"]->codice;
if ($_SESSION["utente"]->gerarchia >= 9) {
if (!$_SESSION["utente"]->fromHere()) {
$bind[":codice_ente"] = $_SESSION["utente"]->codice_ente;
}
$sql .= " AND codice_ente NOT IN (SELECT codice FROM b_enti WHERE sua = :codice_ente AND ((dominio IS NOT NULL AND dominio <> '') OR attivo = 'N')) ";
}
}
$collaborazioni = $pdo->go($sql,$bind);
if ($collaborazioni->rowCount() > 0 && $elabora_collaborazioni) {
while($collaborazione = $collaborazioni->fetch(PDO::FETCH_ASSOC)) {
if (in_array($collaborazione["codice"],$found) === false) {
$pdo->go("DELETE FROM r_permessi_collaborazioni WHERE cod_relazione = :codice",[":codice"=>$collaborazione["codice"]]);
scriviLog("r_permessi_collaborazioni","DELETE",$pdo->getSQL(),$collaborazione["codice"]);
$pdo->go("DELETE FROM r_collaborazioni WHERE codice = :codice",[":codice"=>$collaborazione["codice"]]);
scriviLog("r_collaborazioni","DELETE",$pdo->getSQL(),$collaborazione["codice"]);
}
}
}
?>
swal({title:js_dict["success-msg"],type:"success"}).then(function() {
<? if (!empty($_POST["codice"])) { ?>
window.location.reload();
<? } else { ?>
modalURL = [];
<? if ($collaborazioni->rowCount() > 0) { ?>
showModalWithURL("/backend/utenti/manage.php?codice=<?= $codice ?>");
<? } else { ?>
showModalWithURL("/backend/utenti/edit.php?codice=<?= $codice ?>");
<? } ?>
<? } ?>
});
<?
} else {
?>
swal({title:js_dict.error,html:js_dict["error-generic"] + "<br>Error: # 1",type:"error"});
<?
}
}
}
if ($error) {
header('HTTP/1.0 403 Forbidden');
die();
}
?>