permission($cmd_info["modulo_riferimento"]) && $_SESSION["utente"]->permission($radice,$_POST["codice_contratto"],$id_modulo)) { $contratto = stipula::init($_POST["codice_contratto"]); if (!empty($contratto)) { $lock = $contratto->checkLock($cmd_info["id"]); if (!$lock) { if ($finale) { $numero_repertorio = $contratto->getExtraInfo()["numero_repertorio"] ?? ""; $data_stipula = mysql2date($contratto->info["data_stipula"]); $codice_sottoscrizione = 0; $check = $pdo->go("SELECT codice FROM b_contratti_sottoscritti WHERE codice_contratto = :codice_contratto AND codice_firmatario = 0 ORDER BY codice DESC",[":codice_contratto"=>$contratto->info["codice"]]); if ($check->rowCount() > 1) { $codice_sottoscrizione = $check->fetch(PDO::FETCH_ASSOC)["codice"]; } } else { unset($codice_sottoscrizione); } if (isset($_POST["numero_repertorio"])) { $numero_repertorio = $_POST["numero_repertorio"]; } if (isset($_POST["data_stipula"])) { $data_stipula = $_POST["data_stipula"]; } $error = false; if (isset($numero_repertorio) && !empty($data_stipula)) { $sottoscrizioni = $contratto->getContrattoSottoscritto(); if (count($sottoscrizioni) <= 1 || $finale) { if (strpos($_POST["filechunk"], "../")===false) { $chunkPath = $config["chunk_folder"]."/".$_SESSION["utente"]->codice."/".$_POST["filechunk"]; $p7m = new P7Manager($chunkPath); if ($p7m !== false) { $signed = false; if ($p7m->checkSignatures() || ($finale && $id_modulo == "contratto")) { $signed = true; $contratto->saveExtraInfo("sottoscritto",true); } if ($signed || !$finale) { $contratto->saveExtraInfo("numero_repertorio",$numero_repertorio); $salva = new salva(); $salva->debug = false; $salva->nome_tabella = "b_contratti"; $salva->operazione = "UPDATE"; $salva->oggetto = ["codice"=>$contratto->info["codice"],"data_stipula"=>$data_stipula]; $salva->save(); $contrattoSottoscritto = array(); if (isset($codice_sottoscrizione)) { $contrattoSottoscritto["codice"] = $codice_sottoscrizione; } else { if (!empty($sottoscrizioni[0])) { $contrattoSottoscritto["codice"] = $sottoscrizioni[0]["codice"]; } } $crypt = generateStrongPassword(); $encrypted_content = simple_encrypt($p7m->fileContent, $crypt); $path = "{$config["mediaFolder"]}/{$_SESSION["ente"]->codice}/contratti-signed/{$contratto->info["codice"]}"; if(! is_dir($path)) { mkdir($path, 0755, 1); } $filepath = "{$path}/" . md5($crypt) . $p7m->getHash("sha1"); $contrattoSottoscritto["codice_contratto"] = $contratto->info["codice"]; $contrattoSottoscritto["codice_firmatario"] = 0; $contrattoSottoscritto["md5"] = $p7m->getHash("md5"); $contrattoSottoscritto["sha1"] = $p7m->getHash("sha1"); $contrattoSottoscritto["sha256"] = $p7m->getHash("sha256"); $contrattoSottoscritto["content"] = $crypt; $contrattoSottoscritto["utente_creazione"] = $_SESSION["utente"]->codice; $contrattoSottoscritto["timestamp_creazione"] = date('Y-m-d H:i:s'); $fileMime = getTypeAndExtension($chunkPath); $contrattoSottoscritto["mime"] = $fileMime["type"]; $contrattoSottoscritto["name"] = sanitize_string($_POST["filechunk"]); if (! empty($encrypted_content) && file_put_contents($filepath, $encrypted_content)) { $salva = new salva(); $salva->debug = false; $salva->nome_tabella = "b_contratti_sottoscritti"; $salva->operazione = (empty($contrattoSottoscritto["codice"])) ? "INSERT" : "UPDATE"; $salva->oggetto = $contrattoSottoscritto; $codice_contratto = $salva->save(); if ($codice_contratto > 0) { $url = "remoto"; if ($finale) { $url = "contratto"; $contratto->updateStato("30"); stipula::updateBadges($contratto->info['codice']); } $url = "/backend/contratti/{$url}/index.php?codice={$contratto->info["codice"]}"; ?> swal({title:js_dict["success-msg"],type:"success"}).then(function(){ window.location.href = ""; }); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"});