set('isHtml5ParserEnabled', true);
$options->set('isRemoteEnabled', true);
$dompdf = new Dompdf($options);
$dompdf->setBasePath($_SERVER['DOCUMENT_ROOT']);
require_once '../Connections/cmctrfdb.php';
require_once '../webassist/mysqli/rsobj.php';
//include 'include/headscript.php';
include('languages/' . $_SESSION['langselect'] . '/tdgen.php');
include('languages/' . $_SESSION['langselect'] . '/general.php');
$idcompany = $_SESSION["compid"];
if (isset($_GET['idtrftd'])) {
$idtrftd = $_GET['idtrftd'];
}
if (isset($_POST['idtrftd'])) {
$idtrftd = $_POST['idtrftd'];
}
if (isset($_POST['iddata_td'])) {
$idtd = $_POST['iddata_td'];
}
if (isset($_GET['iddata_td'])) {
$idtd = $_GET['iddata_td'];
}
if (isset($_GET['idtd'])) {
$idtd = $_GET['idtd'];
}
$base_url = "https://www.cimac.it/modulo_certificazione/public/";
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Preparazione di un array per contenere i valori sanificati
$sanitizedPost = [];
$errors = [];
// Lista dei campi da sanificare e controllare se sono piene
$fields = [
'productionplace_same', 'classificationshoes', 'destinationuseppe',
'manufacutringprocess', 'ppeageing', 'obsolescencedeadline',
'localisationppemarking', 'manufacturerlogoid', 'sizeexamplecemark',
'monthyearprod', 'serialbatchnumber', 'standarduse', 'symbolsaddreq',
'proddescription', 'packaging', 'declarconformity', 'webaddress'
];
foreach ($fields as $field) {
if (!empty($_POST[$field])) {
// Utilizzo FILTER_SANITIZE_STRING per rimuovere i tag e sanificare il testo
$sanitizedPost[$field] = filter_input(INPUT_POST, $field, FILTER_SANITIZE_STRING);
}
}
// Controllo se ci sono stati errori
if (count($errors) === 0) {
// Tutti i campi sono stati compilati e sanificati
// Qui puoi procedere con l'elaborazione dei dati
// Ad esempio, stampare i valori o salvarli in un database
foreach ($sanitizedPost as $key => $value) {
}
} else {
// Ci sono stati errori, ad esempio alcuni campi potrebbero essere vuoti
// Puoi gestire gli errori qui, ad esempio stampandoli
foreach ($errors as $key => $message) {
echo "Errore nel campo $key: $message ";
}
}
}
// *: update data_td
// Assicurati che la richiesta sia di tipo POST e che l'ID sia stato fornito
$conn = mysqli_connect($servername, $username, $password, $dbname);
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($idtrftd)) {
// Preparazione della parte iniziale della query di aggiornamento
$updateQuery = "UPDATE data_td SET ";
$updateParts = [];
$queryParams = [];
// Iterazione sui campi sanificati per costruire la query di aggiornamento
foreach ($sanitizedPost as $key => $value) {
// Escludi idtrftd dalla parte di aggiornamento della query
if ($key !== 'idtrftd') {
$updateParts[] = "$key = ?";
$queryParams[] = $value;
}
}
// Controllo se ci sono campi da aggiornare
if (count($updateParts) > 0) {
$updateQuery .= join(', ', $updateParts) . " WHERE idtrf = ?";
$queryParams[] = $idtrftd; // Aggiungi l'ID alla fine dei parametri della query
// Preparazione della query
$stmt = $conn->prepare($updateQuery);
// Costruzione del tipo di parametri (stringhe, in questo caso)
$types = str_repeat('s', count($queryParams));
// Aggiunta dei parametri alla statement
$stmt->bind_param($types, ...$queryParams);
// Esecuzione della query
if ($stmt->execute()) {
}
// Chiusura dello statement
$stmt->close();
}
}
$conn = new mysqli($servername, $username, $password, $dbname);
$checkQuery = "SELECT COUNT(*) as count FROM fillrisk_td WHERE iddata_td = ?";
$stmt = $conn->prepare($checkQuery);
$stmt->bind_param("i", $idtd);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if ($row['count'] == 0) {
// Non ci sono record, quindi procedi con l'inserimento dei dati da riskarea_td
// Prendi tutti i record da riskarea_td
$selectQuery = "SELECT * FROM riskarea_td";
$result = $conn->query($selectQuery);
while ($riskRow = $result->fetch_assoc()) {
// Prepara l'insert per ogni riga trovata in riskarea_td
$insertQuery = "INSERT INTO fillrisk_td (idriskarea_td, applicable, idcompany, iddata_td, idtrf) VALUES (?, ?, ?, ?, ?)";
$stmt = $conn->prepare($insertQuery);
// Converte il valore 'Y'/'N' della colonna default in un intero (1/0)
$applicableValue = ($riskRow['default'] == 'Y') ? 1 : 0;
$stmt->bind_param("iiiii", $riskRow['idriskarea_td'], $applicableValue, $idcompany, $idtd, $idtrftd);
$stmt->execute();
}
}
// Chiudi lo statement e la connessione se non ti servono più
$stmt->close();
$conn->close();
// query data_td
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM data_td LEFT JOIN logo_td ON data_td.manufacturerlogoid=logo_td.idlogo_Td LEFT JOIN qualcheck_td ON data_td.proddescription=qualcheck_td.idqualcheck_td WHERE iddata_td = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $idtd); // "i" indica che l'id è un intero
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
$prodplace = $row['productionplace_same'];
$classshoes = $row['classificationshoes'];
$zipfile = $row['zipname'];
$tdrev = $row['td_rev'];
$tdnumber = $row['tdnumber'];
if ($classshoes == "classone") {
$classfinal = $classone; // Assumo che il valore che vuoi assegnare sia una stringa "classone"
} elseif ($classshoes == "classtwo") {
$classfinal = $classtwo; // Assumo che il valore che vuoi assegnare sia una stringa "classtwo"
} else {
$classfinal = "default"; // Opzionale: Un valore default se non corrisponde a nessuno dei casi
}
$stmt->close();
$conn->close();
$tdquery = new WA_MySQLi_RS("tdquery", $cmctrfdb, 1);
$tdquery->setQuery("SELECT * FROM `trf-details` LEFT JOIN modelarticle ON modelarticle.idmodelarticle=`trf-details`.model WHERE `trf-details`.idtrfdetails='$idtrftd'");
$tdquery->execute();
$description = $tdquery->getColumnVal("sample_description");
$trfn = $tdquery->getColumnVal("trfnumber");
$trfrev = $tdquery->getColumnVal("revtrf");
$mandat = $tdquery->getColumnVal("otherclient");
$trfnumb = $trfn . ' VER.' . $trfrev;
$trftdnumber = $trfn . 'TF';
$photocover = $tdquery->getColumnVal("photofilename");
$photoone = $tdquery->getColumnVal("photoone");
$phototwo = $tdquery->getColumnVal("phototwo");
$virusprot = $tdquery->getColumnVal("virusprotection");
$idarttype = $tdquery->getColumnVal("idarticletype");
$conn = new mysqli($servername, $username, $password, $dbname);
$kindcont = "headercertificate";
// Usa segnaposti per i parametri
$sqlcontact = "SELECT * FROM contacts LEFT JOIN countries ON countries.idcountries=contacts.country WHERE contacts.idtrf='$idtrftd' AND contacts.kindofcontacts='$kindcont'";
// Esecuzione della query
$resultcontact = $conn->query($sqlcontact);
$rowcontact = $resultcontact->fetch_assoc();
$companyname = $rowcontact["companyname"];
$address = $rowcontact["address"] . ' ' . $rowcontact["cap"] . ' ' . $rowcontact["city"];
$country = $rowcontact["namecountry"];
$phone = $rowcontact["telephone"];
$emailtd = $rowcontact["email"];
$vat = $rowcontact["piva"];
$ceinside = $rowcontact["ce"];
$mark = $tdquery->getColumnVal("registeredmark");
$contactperson = $rowcontact["contactname"] . ' ' . $rowcontact["contactsurname"];
// Chemical agent
$conn = new mysqli($servername, $username, $password, $dbname);
$sqlchemical = "SELECT trfchemicalagent.level, trfchemicalagent.degradationpercentage, chemicalagent.name_chemicalagent
FROM trfchemicalagent
LEFT JOIN chemicalagent ON trfchemicalagent.idchemicalagent = chemicalagent.idchemicalagent
WHERE trfchemicalagent.idtrf = '$idtrftd'";
$resultchemical = $conn->query($sqlchemical);
$chemicalAgents = []; // Array per memorizzare i risultati
if ($resultchemical && $resultchemical->num_rows > 0) {
// Riempie l'array con i risultati della query
while ($rowchemical = $resultchemical->fetch_assoc()) {
$chemicalAgents[] = $rowchemical;
}
}
$conn->close();
// Protection cat add
$conn = new mysqli($servername, $username, $password, $dbname);
$sqlprotect = "SELECT * FROM trfaddrequirements LEFT JOIN additionalrequirements ON trfaddrequirements.idadditionalrequirements = additionalrequirements.idadditionalrequirements WHERE trfaddrequirements.idtrf = '$idtrftd'";
$resultprotect = $conn->query($sqlprotect);
$protectionAdd = []; // Array per memorizzare i risultati
if ($resultprotect && $resultprotect->num_rows > 0) {;
// Riempie l'array con i risultati della query
while ($rowprotect = $resultprotect->fetch_assoc()) {
$protectionAdd[] = $rowprotect["name_additionalrequirements_it"];
}
}
$conn->close();
// Connessione al database
$conn = new mysqli($servername, $username, $password, $dbname);
// Controlla la connessione
if ($conn->connect_error) {
die("Connessione fallita: " . $conn->connect_error);
}
// Preparazione della query
$tdquerystd = "SELECT * FROM trfstandards
LEFT JOIN standards ON trfstandards.idstandards = standards.idstandards
LEFT JOIN protectioncategory ON protectioncategory.idprotectioncategory = trfstandards.idprotectioncategory
LEFT JOIN dpicategory ON dpicategory.iddpicategory = trfstandards.iddpicategory
WHERE trfstandards.idtrfdetails = '$idtrftd'";
// Esecuzione della query
$resultstd = $conn->query($tdquerystd);
if (!$resultstd) {
die("Errore nell'esecuzione della query: " . $conn->error);
}
$conn = new mysqli($servername, $username, $password, $dbname);
// Controlla la connessione
if ($conn->connect_error) {
die("Connessione fallita: " . $conn->connect_error);
}
// Preparazione della query
$addprot = "SELECT * FROM trfaddrequirements
LEFT JOIN additionalrequirements ON trfaddrequirements.idadditionalrequirements = additionalrequirements.idadditionalrequirements
WHERE trfaddrequirements.idtrf = '$idtrftd'";
// Esecuzione della query
$resultaddreq = $conn->query($addprot);
if (!$resultaddreq) {
die("Errore nell'esecuzione della query: " . $conn->error);
}
$tdquerystd = new WA_MySQLi_RS("tdquerystd", $cmctrfdb, 1);
$tdquerystd->setQuery("SELECT * FROM trfstandards LEFT JOIN standards ON trfstandards.idstandards=standards.idstandards LEFT JOIN protectioncategory ON protectioncategory.idprotectioncategory=trfstandards.idprotectioncategory LEFT JOIN dpicategory ON dpicategory.iddpicategory=trfstandards.iddpicategory WHERE trfstandards.idtrfdetails='$idtrftd'");
$tdquerystd->execute();
$archivetrflist = new WA_MySQLi_RS("archivetrflist", $cmctrfdb, 0);
$archivetrflist->setQuery("SELECT * FROM `trf-details` LEFT JOIN auth_users ON `trf-details`.iduser=auth_users.id LEFT JOIN article_type ON `trf-details`.idarticletype=article_type.idarticletype LEFT JOIN certificationtype ON certificationtype.idcertificationtype=`trf-details`.idcertification WHERE `trf-details`.idcompany='$idcompany' AND `trf-details`.signedon <>'' ORDER BY `trf-details`.trfnumber");
$archivetrflist->execute();
// query prod place
//query location place
// Assumendo che $idt sia già definito e sanificato per prevenire SQL Injection
$conn = new mysqli($servername, $username, $password, $dbname);
$querylocation = "SELECT idcontactstd, companyName, address, city FROM contacts_td WHERE idtd = ?";
$stmt = $conn->prepare($querylocation);
$stmt->bind_param("i", $idtd); // "i" indica che il parametro è un intero
$stmt->execute();
$result = $stmt->get_result();
$rowslocation = [];
while ($rowlocation = $result->fetch_assoc()) {
$rowslocation[] = $rowlocation;
}
$stmt->close();
$companylogofinal = !empty($companylogo) ? $base_url . "logos/" . $companylogo : '';
// Crea una nuova istanza di Dompdf
$html = <<
File Tecnico numero: $tdnumber
DATI DEL FABBRICANTE / MANUFACTURER'S DATA
Nome Azienda / Company Name
$companyname
Indirizzo / Address
$address
Paese / Country
$country
Telefono / Phone
$phone
Email
$emailtd
Partita IVA / VAT Number
$vat
Marchio / Mark
$mark
Persona di Contatto / Contact Person
$contactperson
HTML;
if ($ceinside != 'Y') {
$kindcont = "extrace";
$sqlcontactextrace = "SELECT * FROM contacts LEFT JOIN countries ON countries.idcountries=contacts.country WHERE contacts.idtrf='$idtrftd' AND contacts.kindofcontacts='$kindcont'";
$resultcontactextrace = $conn->query($sqlcontactextrace);
if ($resultcontactextrace->num_rows > 0) {
// Esecuzione della query
$rowcontactextrace = $resultcontactextrace->fetch_assoc();
$companynameextrace = $rowcontactextrace["companyname"];
$addressextrace = $rowcontactextrace["address"] . ' ' . $rowcontact["cap"] . ' ' . $rowcontact["city"];
$countryextrace = $rowcontactextrace["namecountry"];
$phoneextrace = $rowcontactextrace["telephone"];
$emailtdextrace = $rowcontactextrace["email"];
$vatextrace = $rowcontactextrace["piva"];
$contactpersonextrace = $rowcontactextrace["contactname"] . ' ' . $rowcontactextrace["contactsurname"];
$html .= '
';
foreach ($chemicalAgents as $agent) :
$html .= "
{$agent['name_chemicalagent']}
";
if ($idarttype == 2) {
$html .= "
{$agent['level']}
{$agent['degradationpercentage']}
";
}
$html .= '
';
endforeach;
$html .= '
';
endif;
//table risk query
$riskquery = new WA_MySQLi_RS("riskquery", $cmctrfdb, 0);
$riskquery->setQuery("SELECT * FROM fillrisk_td LEFT JOIN riskarea_td ON riskarea_td.idriskarea_td=fillrisk_td.idriskarea_td WHERE fillrisk_td.iddata_td = '$idtd' ORDER BY fillrisk_td.idfillrisk_td");
$riskquery->execute();
$html .= "
VALUTAZIONE DEI RISCHI (REQUISITI ESSENZIALI DI SALUTE E SICUREZZA IN ACCORDO ALL'ALLEGATO II DEL REGOLAMENTO (UE) 2016/425) /
RISK ASSESSMENT (ESSENTIAL HEALTH AND SAFETY REQUIREMENT ACCORDING TO ANNEX II OF THE REGULATION (EU) 2016/425)
";
$partsquery = new WA_MySQLi_RS("partsquery", $cmctrfdb, 0);
$partsquery->setQuery("SELECT * FROM identificationparts WHERE identificationparts.idtrfdetails='$idtrftd'");
$partsquery->execute();
while (!$partsquery->atEnd()) {
$html .= "
IMBALLAGGIO / PACKAGING - DICHIARAZIONE DI CONFORMITÀ UE / EU DECLARATION OF CONFORMITY
Imballaggio
{$packaging}
Dichiarazione di conformità UE
{$declartext}
Indirizzo del sito web
{$webaddress}
HTML;
// zip file
// Costruisci il link solo se $zipfile non è nullo
if (!is_null($zipfile)) {
$zipLink = $base_url . "uploadtddocuments/ziptd/" . $zipfile;
$html .= <<