/*
//INSERITO DA CECCA RIMETTERE A POSTO PER ESSERE GLOBALE ????
if ($CONF["dove_sono"] == "loc") {
include("/tnx/www/html/global/mail.inc.php");
} else {
include("mail_spam.inc.php");
}
*/
//#####################################################
//################# FORM ver 1.0 ######################
//#####################################################
//email destinazione del form
//$DATI[f_email_dest] = "test@tnx.it";
//PARAMETRI CAMPO
// obb = "SI/[NO]" -> Campo obbligatorio, invio ([SI],NO) _>, risposta (SI,NO)
//NO SUBMIT
//aggiungo un campo nel form
//f_nosubmit
//
//f_return_only torna array della mail costruita
//CLASSICI
//["ita"] = "Tipo";
//["eng"] = "Tipo Eng";
//[tipo] = "select";
//tipo2 = doppiaconferma / url_online / email / numero / piva / cfiscale
//regexp, espressione regolare
//tipo2 = piva -> controlla che sia una partita iva valida
//tipo2 = cfiscale -> controlla che sia un codice fiscale valido
//[val]["xxx"] = "Rivenditore|Architetto-Geometra";
//[val][sel] = "Rivenditore";
//[val][def] = "scrivere qualcosa";//VIENE USATO COME PLACEHOLDER, QUINDI VA CAMBIATO OPPURE CONSIDERATO COME VUOTO AI FINI DEGLI ERRORI, DEPRECATO CON HTML5
//[val]['default'] = "valore predefinito ";
//[obb] = "SI"; //forzo obbligatorio
//[err] = "NO"; //tolgo controllo errore
//[risposta] = "NO"; //tolgo dalla risposta dopo l' invio
//[invio] = "NO"; //tolgo dalla mail
//[css] = "assegna la classe css all'elemento html";
//$F['f_invio_tipo'] = "DA_FORM"; //tipo di invio DA_FORM (default) oppure DA_CONF (
//$F['nome_campo']['risposta'] = "DA_FORM"; //nella conf del campo
//TEMPLATE di sovrascrittura locale se serve
//if($F[$k][f_form_tpl]) $f_form_tpl = $F[$k][f_form_tpl];
//else $f_form_tpl = $F[f_form_tpl];
//GRUPPI OBBLIGATORI
//obb_gruppo
//RECAPTCHA
//recaptcha
//per usarlo va aggiunto il dominio in https://www.google.com/recaptcha/admin#site/338906860 oppure creata una nuova coppia di chiavi da inserire in $CONF["f_recaptcha_sitekey"] e $CONF["f_recaptcha_secret"]
//in caso di errore viene aggiunta una variabile globale $DATI[f_errori] con gli errori del form
//definisco i nomi dei campi che servono al programma
//devono esistere prima che chiamo un blocco
$FORM = array();
$FORM_SQL = array();
$F["f_nome_form"] = "FORM"; //è anche il nome del contesto corrente;
$F["f_nome_campi_array"] = true; // serve per non racchiudere i name dei campi fra f_nome_form[], necessario per fare i login con form base
$F["f_allega_files"] = false; //cecca - per sicurezza disabilitato (potrebbero allegare virus), abilitandolo vengono allegati alla email gli eventuali file inclusi nella form
//costruzione email
$F["f_campo_email"] = "email";
$F["f_campo_nome"] = "nome";
$F["f_campo_cognome"] = "cognome";
$F["f_from"] = "AUTO"; //deve essere sempre l'email del visitatore, crea da solo in base al nome dell' utente a all' e-mail
$F["f_use_reply_to"] = true; //mette l'email destinatario (del sito) come from e usa il reply-to per evitare problemi di spam (gmail segnala phishing o mette proprio nello spam quando riceve una mail con mittente @gmail.com da un nostro sito, vedi https://support.google.com/mail/troubleshooter/2411000?p=sent_warning&hl=it&rd=1 )
$F['f_nomecognome'] = "AUTO"; //mittente della mail in automatico tramite campo f_campo_nome
$F['f_email_form'] = "AUTO"; //mittente (preso in automatico dal form tramite la variabile f_campo_email)
$F['f_force_from'] = false; //aggiunto per forzare il from nei casi in cui f_email_dest è diverso da un email del sito (il destinatario di default è anche il mittente del messaggio da quando usiamo il reply_to)
$F["f_email_dest"] = "AUTO"; //deve essere sempre un email del proprietario del sito, default prende da indi
$F["f_email_cc"] = "AUTO"; //copia carbone, prende da indi
//$F["f_email_bcc"] = "";
$F["f_email_indi"] = "AUTO"; //prende da indi
//$F["f_from_antispam"] = "SI"; (disabilitato in data 04/12/2012
$F["f_nome_sito"] = "AUTO"; //prende da indi
$F["f_email_html"] = "NO";
$F["f_duepunti"] = ":";
$F["f_txt_t"] = "#ASTERISCO##NOME##DUEPUNTI# \n\r";
$F["f_txt_t_gruppo"] = "#ASTERISCO##ASTERISCO##NOME##DUEPUNTI# \n\r";
$F["f_radio_sep"] = " "; //DEPRECATO
$F["f_radio_tpl"] = "#RADIO# #VALORE# ";
$F["f_check_tpl"] = "#CHECK# #VALORE# ";
$F["f_check_div_tpl"] = "#CHECK# #VALORE# ";
$F["f_lingua_alt"] = "eng"; //linga alternativa se non disponibile la traduzione
$F['f_calendar_dis_date'] = "SI";
//errori
$F["f_err"] = "* ";
$F["f_css_sel"] = "style=\"border-color:#FF0000\""; //stile selezionato casella generica
$F["f_css_rc"] = "style=\"background-color:#FF0000\""; //stile selezionato casella radio e box
$F["f_css_sel_select"] = "style=\"border-color:#FF0000\""; //stile selezionato casella select
//errori_new
$F["f_err_class"] = NULL; //se presente le variabili sopra vengono ignorate e viene aggiunta questa classe all' elemento
$F["f_submit"]["ita"] = "Invia la richiesta"; //nome del tasto
$F["f_submit"]["eng"] = "Submit your request"; //nome del tasto
$F["f_submit"]["ger"] = "Anfrage absenden"; //nome del tasto
$F["f_submit"]["fra"] = "Envoyer votre demande"; //nome del tasto
$F["f_submit"]["spa"] = "Envía la solicitud"; //nome del tasto
//definizione campo errori e errore anche in lingua
$F["f_erro_temp"]["xxx"] = "
Request information You must complete fields marked with (* )\n\r";
$F["f_txt_head"]["ger"] = "Fragebogen zur Informationsanfrage. (* ) Die mit Stern gekennzeichneten Felder sind obligatorisch \n\r";
$F["f_txt_head"]["fra"] = "Formulaire de demande d'informations (* ) Les champs marqués d'un astérisque sont obligatoires \n\r";
$F["f_txt_head"]["spa"] = "Pedido de información (* ) Son obligatorios \n\r";
$F["f_txt_errore"]["ita"] = "Errore, riempire i seguenti campi obbligatori: \n\r";
$F["f_txt_errore"]["eng"] = "Error, fill the required field: \n\r";
$F["f_txt_errore"]["ger"] = "Bitte die folgenden obligatorischen Felder ausfüllen: \n\r";
$F["f_txt_errore"]["fra"] = "Remplir les champs obligatoires suivants: \n\r";
$F["f_txt_errore"]['spa'] = "Llenar el campo obligatorio: \n\r";
$F["f_txt_invio"]["ita"] = "Grazie #NOME# per aver compilato il nostro modulo, di seguito i dati inviati:<< Ritorna alla Home Page \n\r";
$F["f_txt_invio"]["eng"] = "Thanks #NOME# for the request:<< Return to Home Page \n\r";
$F["f_txt_invio"]["ger"] = "#NOME# Wir danken Ihnen, dass Sie unseren Fragebogen ausgefüllt haben, hier die übersandten Daten: << zurück zur Home-Page \n\r";
$F["f_txt_invio"]["fra"] = "#NOME# Merci d'avoir rempli notre formulaire, ci-après les données communiquées:<< Retour à la Page d'accueil. \n\r";
$F["f_txt_invio"]["spa"] = "#NOME# Gracias de la solicitud:<< Retour à la Page d'accueil. \n\r";
$F["f_txt_doppiaconferma"]["ita"] = "Prego riconfermare";
$F["f_txt_doppiaconferma"]["eng"] = "Please retype";
$F["f_txt_doppiaconferma"]["ger"] = "Bitte bestätigen Sie";
$F["f_txt_doppiaconferma"]["fra"] = "S'il vous plaît confirmer";
$F["f_txt_doppiaconferma"]["spa"] = "Por favor, confirmar";
$F["f_txt_doppiaconferma_err"]["ita"] = "Devono essere uguali";
$F["f_txt_doppiaconferma_err"]["eng"] = "Must to be the same";
$F["f_txt_doppiaconferma_err"]["ger"] = "Muss gleich";
$F["f_txt_doppiaconferma_err"]["fra"] = "Doit être égal";
$F["f_txt_doppiaconferma_err"]["spa"] = "Debe ser igual";
$F["f_txt_email2"]["ita"] = "(Non valida)\n\r";
$F["f_txt_email2"]["eng"] = "(Incorrect syntax)\n\r";
$F["f_txt_email2"]["chi"] = "(不正确的语法)\n\r";
$F["f_txt_email2"]["ger"] = "(Nicht korrekt)\n\r";
$F["f_txt_email2"]["fra"] = "(Incorrecte)\n\r";
$F["f_txt_email2"]["spa"] = "(Incorrecto)\n\r";
$F["f_txt_nolink"]["ita"] = "(non puoi inserire link http)\n\r";
$F["f_txt_nolink"]["eng"] = "(you can't insert http links)\n\r";
$F["f_txt_nolink"]["chi"] = "(您无法插入 http 链接)\n\r";
$F["f_txt_nolink"]["ger"] = "(Sie können keine HTTP-Links einfügen)\n\r";
$F["f_txt_nolink"]["fra"] = "(vous ne pouvez pas insérer de liens http)\n\r";
$F["f_txt_nolink"]["spa"] = "(No puedes insertar enlaces http)\n\r";
$F["f_txt_piva"]["ita"] = "(Non valida)\n\r";
$F["f_txt_piva"]["eng"] = "(Incorrect)\n\r";
$F["f_txt_piva"]["ger"] = "(Nicht korrekt)\n\r";
$F["f_txt_piva"]["fra"] = "(Incorrecte)\n\r";
$F["f_txt_piva"]["spa"] = "(Incorrecto)\n\r";
$F["f_txt_cfiscale"]["ita"] = "(Non valido)\n\r";
$F["f_txt_cfiscale"]["eng"] = "(Incorrect)\n\r";
$F["f_txt_cfiscale"]["ger"] = "(Nicht korrekt)\n\r";
$F["f_txt_cfiscale"]["fra"] = "(Incorrecte)\n\r";
$F["f_txt_cfiscale"]["spa"] = "(Incorrecto)\n\r";
$F["f_txt_url_online"]["ita"] = "(Non valido)\n\r";
$F["f_txt_url_online"]["eng"] = "(Incorrect)\n\r";
$F["f_txt_url_online"]["ger"] = "(Nicht korrekt)\n\r";
$F["f_txt_url_online"]["fra"] = "(Incorrecte)\n\r";
$F["f_txt_url_online"]["spa"] = "(Incorrecto)\n\r";
$F["f_txt_numero"]["ita"] = "(Il campo deve essere un numero)\n\r";
$F["f_txt_numero"]["eng"] = "(The field must be numeric)\n\r";
$F["f_txt_numero"]["ger"] = "(Das Feld muss eine Zahl sein)\n\r";
$F["f_txt_numero"]["fra"] = "(Le champ doit être un nombre)\n\r";
$F["f_txt_numero"]["spa"] = "(El campo debe ser un número)\n\r";
$F["f_txt_reg"]["ita"] = "(Contenuto non valido)\n\r";
$F["f_txt_reg"]["eng"] = "(Invalid content)\n\r";
$F["f_txt_reg"]["ger"] = "(Ungültiger Inhalt)\n\r";
$F["f_txt_reg"]["fra"] = "(Contenu non valide)\n\r";
$F["f_txt_reg"]["spa"] = "(Contenido no es válido)\n\r";
$F["f_txt_err_file"]["ita"] = "(Formato non accettato)\n\r";
$F["f_txt_err_file"]["eng"] = "(Format is not accepted)\n\r";
$F["f_txt_err_file"]["ger"] = "(Das Format wird nicht akzeptiert)\n\r";
$F["f_txt_err_file"]["fra"] = "(Le format n'est pas accepté)\n\r";
$F["f_txt_err_file"]["spa"] = "(El formato no es aceptada)\n\r";
//Messaggio che arriva al proprietario della struttura
$F['f_lingua_form'] = "AUTO"; //linga automatica in base alla lingua della pagina ????
if($CONF["indi_subversion"] > 5) $F['f_invio_agg'] = "NO";
else $F['f_invio_agg'] = "SI";//Invio anche i dati aggiuntivi controllando che l'email del destinatario sia tra quelle di riferimento del sito ($DATI['email'] o $DATI['f_email_cc'])
$F['f_invio_agg_force'] = "NO"; //Invio anche i dati aggiuntivi a prescindere dall'email
$F['f_form_tpl'] = " - #NCAMPO#: #VCAMPO# \n\n";
$F['f_radio_sep'] = " ";
$F['f_oggetto']["xxx"] = "Richiesta [#SITO#] - #NOME#";
$F['f_testo']["xxx"] = "Messaggio di richiesta informazioni ricevuto dal form del sito #SITO# .\nPer inviare una risposta al messaggio potete semplicemente rispondere a questa e-mail.\n\n\n#MESSAGGIO#";
$F['f_testo_visitatore']["xxx"] = "Thank you for your request.\nBelow you'll find a summary of the submitted data:\n\n#MESSAGGIO#\n\n#SITO#";
$F['f_testo_visitatore']["ita"] = "Grazie per la tua richiesta.\nDi seguito un riepilogo dei dati inviati:\n\n#MESSAGGIO#\n\n#SITO#";
$F['f_testo_msg']["ita"] = "MESSAGGIO";
$F['f_testo_msg']["eng"] = "MESSAGE";
$F['f_invio_tipo'] = "DA_FORM"; //tipo di invio DA_FORM (default) oppure DA_CONF
//CAMPI SELECT PREIMPOSTATI
$F["f_txt_nazioni"]["ita"] = " |Afghanistan|Albania|Algeria|Andorra|Angola|Anguilla|Antille Olandesi|Arabia Saudita|Argentina|Armenia|Aruba|Australia|Austria|Azerbaigian|Bahamas|Bahrain|Bangladesh|Barbados|Belgio|Belize|Benin|Bermuda|Bhutan|Bielorussia|Bolivia|Bosnia-Erzegovina|Botswana|Brasile|Brunei|Bulgaria|Burkina Faso|Burundi|Cambogia|Camerun|Canada|Capo Verde|Ciad|Cile|Cina|Cipro|Città del Vaticano|Colombia|Comore|Congo|Corea del Sud|Costa d'Avorio|Costa Rica|Croazia|Danimarca|Dominica|Ecuador|Egitto|El Salvador|Emirati Arabi Uniti|Eritrea|Estonia|Etiopia|Figi|Filippine|Finlandia|Francia|Gabon|Gambia|Georgia|Germania|Ghana|Giamaica|Giappone|Gibuti|Giordania|Grecia|Guadalupa|Guatemala|Guayana Francese|Guinea|Guinea-Bissau|Guinea Equatoriale|Guyana|Haiti|Honduras|Hong Kong|India|Indonesia|Irlanda|Islanda|Isole Vergini (GB)|Israele|Italia|Kazakhstan|Kenya|Kirghizistan|Kiribati|Kuwait|Laos|Lesotho|Lettonia|Libano|Liechtenstein|Lituania|Lussemburgo|Macedonia|Madagascar|Malaysia|Mali|Malta|Marocco|Martinica|Mauritania|Maurizio|Mayotta|Messico|Micronesia|Moldavia|Monaco|Mongolia|Montserrat|Mozambico|Namibia|Nepal|Nicaragua|Niger|Nigeria|Niue|Norvegia|Nuova Caledonia|Nuova Zelanda|Oman|Paesi Bassi|Pakistan|Panama|Papua Nuova Guinea|Paraguay|Perù|Polinesia Francese|Polonia|Portogallo|Qatar|Regno Unito|Repubblica Ceca|Repubblica Centrafricana|Repubblica Dominicana|Romania|Ruanda|Russia|Sahara Occidentale|San Marino|Senegal|Serbia e Montenegro|Seychelles|Sierra Leone|Singapore|Slovacchia|Slovenia|Somalia|Spagna|Sri Lanka|Stati Uniti|Sudafrica|Suriname|Svezia|Svizzera|Swaziland|Tagikistan|Taiwan|Tanzania|Thailandia|Timor Est|Togo|Tokelau|Tonga|Trinidad e Tobago|Tunisia|Turchia|Turkmenistan|Ucraina|Uganda|Ungheria|Uruguay|Uzbekistan|Vanuatu|Venezuela|Vietnam|Yemen|Zambia|Zimbabwe|-----------|Altra";
$F["f_txt_nazioni"]["xxx"] = " |Afghanistan|Albania|Algeria|Andorra|Angola|Anguilla|Antarctica|Antigua and Barbuda|Argentina|Armenia|Aruba|Australia|Austria|Azerbaijan|Bahamas|Bahrain|Bangladesh|Barbados|Belarus|Belgium|Belize|Benin|Bermuda|Bhutan|Bolivia|Bosnia and Herzegovina|Botswana|Brazil|British Indian Ocean|Brunei|Bulgaria|Burkina Faso|Burundi|Cambodia|Cameroon|Canada|Cape Verde|Cayman Islands|Central African Republic|Chad|Chile|China|Christmas Island|Cocos (Keeling) Islands|Colombia|Comoros|Congo|Cook Islands|Costa Rica|Croatia|Cyprus|Czech Republic|Denmark|Djibouti|Dominica|Dominican Republic|East Timor|Ecuador|Egypt|El Salvador|Equatorial Guinea|Eritrea|Estonia|Ethiopia|Falkland Islands|Faroe Islands|Fiji|Finland|France|French Guiana|French Polynesia|Gabon|Gambia|Georgia|Germany|Ghana|Gibraltar|Greece|Greenland|Grenada|Guadeloupe|Guatemala|Guinea|Guinea-Bissau|Guyana|Haiti|Honduras|Hong Kong|Hungary|Iceland|India|Indonesia|Ireland|Israel|Italy|Ivory Coast|Jamaica|Japan|Jordan|Kazakhstan|Kenya|Kiribati|Korea, South|Kuwait|Kyrgyzstan|Laos|Latvia|Lebanon|Lesotho|Liechtenstein|Lithuania|Luxembourg|Macau|Macedonia|Madagascar|Malawi|Malaysia|Maldives|Mali|Malta|Marshall Islands|Martinique|Mauritania|Mauritius|Mayotte|Mexico|Micronesia|Moldova|Monaco|Mongolia|Montserrat|Morocco|Mozambique|Namibia|Nauru|Nepal|Netherlands|Netherlands Antilles|New Caledonia|New Zealand|Nicaragua|Niger|Nigeria|Niue|Norfolk Island|Norway|Oman|Pakistan|Palestinian Territory|Panama|Papua New Guinea|Paraguay|Peru|Philippines|Pitcairn Island|Poland|Portugal|Qatar|Réunion|Romania|Russia|Rwanda|Saint Helena|Saint Kitts and Nevis|Saint Lucia|Saint Pierre|Saint Vincent|Samoa|San Marino|Saudi Arabia|Senegal|Serbia and Montenegro|Seychelles|Sierra Leone|Singapore|Slovakia|Slovenia|Solomon Islands|Somalia|South Africa|Spain|Sri Lanka|Swaziland|Sweden|Switzerland|Taiwan|Tajikistan|Tanzania|Thailand|Togo|Tokelau|Tonga|Trinidad and Tobago|Tunisia|Turkey|Turkmenistan|Turks Islands|Tuvalu|Uganda|Ukraine|United Arab Emirates|United Kingdom|United States|Uruguay|Uzbekistan|Vanuatu|Vatican City|Venezuela|Vietnam|Virgin Islands|Wallis and Futuna|Western Sahara|Yemen|Zambia|Zimbabwe|-----------|Other";
$F["f_txt_province"]["xxx"] = " |AG|AL|AN|AO|AR|AP|AT|AV|BA|BL|BN|BG|BI|BO|BZ|BS|BR|CA|CL|CB|CE|CT|CZ|CH|CO|CS|CR|KR|CN|EN|FE|FI|FG|FC|FR|GE|GO|GR|IM|IS|SP|AQ|LT|LE|LC|LI|LO|LU|MC|MN|MS|MT|ME|MI|MO|NA|NO|NU|OR|PD|PA|PR|PV|PG|PU|PE|PC|PI|PT|PN|PZ|PO|RG|RA|RC|RE|RI|RN|RM|RO|SA|SS|SV|SI|SR|SO|TA|TE|TR|TO|TP|TN|TV|TS|UD|VA|VE|VB|VC|VR|VV|VI|VT";
$F["f_txt_giorni"]["xxx"] = " |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31";
$F["f_txt_mesi"]["xxx"] = " |1|2|3|4|5|6|7|8|9|10|11|12|";
$F["f_txt_anni"]["xxx"] = " |2006|2007|2008|2009|2010|2011|2012|2013";
//template form automatica
$F["f_table_t"]["xxx"] = "
";
//template riga
$F["f_table_riga_t"]["xxx"] = "#NOME_CAMPO# #CAMPO# ";
//template risposta
$F["f_table_risp_t"]["xxx"] = " ";
//css delle form di base si possono sovrascrivere
$F["f_css"]["xxx"] = "
.$F[f_nome_form] {
border-style: solid;
border-color: #999999;
background-color: #FAFAFA;
border-width: 1px;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
.$F[f_nome_form]_head {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
text-align: center;
display: block;
}
.$F[f_nome_form]_err {
color:#FF0000;
font-weight:bold;
font-size: 10px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.$F[f_nome_form]_txt {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
.$F[f_nome_form]_table {
font-size: 11px;
}
";
function indiControlloAntispamCalcolaPre($value) {
// tutti veri:
// "1" == ("1a1"*1)
// "1a" == intval("1a")
// "1a" == 1
if($value != (string)intval($value)){
return 0;
}
$ret = (string)($value * 3 + 1462);
return $ret;
}
function indiControlloAntispamCalcola($value) {
return md5(indiControlloAntispamCalcolaPre($value));
}
function indiControlloAntispamCheckLimitIP() {
//se ritorna true vuol dire che è scattato un limite
if ($GLOBALS["indiControlloAntispamCheckLimitIP_giafatto"]) return false;
$ip = $_SERVER["REMOTE_ADDR"];
//controllo che stesso IP non invii piu di 3 ogni 3 secondi, 5 ogni 10, 10 ogni 2 minuti, 20 ogni 10 minuti
$errmsg = indiControlloAntispamCheckLimitIPperTime($ip, 3, 3);
if (!$errmsg) $errmsg = indiControlloAntispamCheckLimitIPperTime($ip, 5, 10);
if (!is_locale()) {
//in locale faccio solo controllo sopra
if (!$errmsg) $errmsg = indiControlloAntispamCheckLimitIPperTime($ip, 10, 60 * 2);
if (!$errmsg) $errmsg = indiControlloAntispamCheckLimitIPperTime($ip, 20, 60 * 10);
}
//indiCacheSet($k, $d, $t=0 /*0=forever*/);
//$errmsg = "anti spam check limit ip";
if ($errmsg) {
$F["f_errori"]["antispam"] = $errmsg; //devvo aggiungere un campo anche fittizio con l'errore per bloccare l'invio del form
$GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"] = $errmsg;
return true;
}
$GLOBALS["indiControlloAntispamCheckLimitIP_giafatto"] = true;
return false;
}
function indiControlloAntispamCheckLimitIPperTime($ip, $max, $secondi) {
$ktempo = $secondi > 60 ? (($secondi / 60) . "m") : $secondi . "s";
$kts = "indiCheckAntispamIP_ts_" . $ktempo . "_" . $ip;
$vts = indiCacheGet($kts);
if (!$vts) $vts = time();
$kcount = "indiCheckAntispamIP_count_" . $ktempo . "_" . $ip;
$vcount = indiCacheGet($kcount);
if (!$vcount) $vcount = 0;
$vcount++;
$diff = time() - $vts;
if($_SERVER['REMOTE_ADDR'] == '192.168.0.115' || $_GET['debugtnx']){
echo '';
echo "$ktempo vcount:$vcount / max:$max\n";
echo "$ktempo diff:" . $diff . "s - " . round($diff/60,1) . "m / max:".$secondi."s - " . round($secondi/60,1) . "m";
echo ' ';
}
indiCacheSet($kts, time(), $secondi);
indiCacheSet($kcount, $vcount, $secondi);
if ($diff <= $secondi) {
if ($vcount > $max) {
$errmsg = "anti spam check limit ip [$vcount>$max/$ktempo|".$diff."s]";
return $errmsg;
}
} else {
$vcount = 1;
}
return false;
}
function indiControlloAntispamCheckInvio($formId){
//effettual il vero controllo prima di fare l'invio (f_invio)
//se return FALSE vuol dire che è SPAM e invia 403
//se return TRUE allora ok, non è spam
global $DATI,$LANG,$F,$FORM,$FORM_SQL,$_POST;
foreach($F as $v) {
if (is_array($v) && $v["tipo"] == "recaptcha") {
//se già presente recaptcha evito altri controlli
return true;
}
}
//cecca 29-05-2025 vedi sotto nell'if, lascio solo controllo per IP, per alfa1 e alfa2 devo fare altri test e forse è diventato anacronistico???...
//if (!is_locale()) {
// return true;
//}
$campoSingolo = md5(md5($formId));
if (is_array($_POST) && count($_POST) > 0) {
$msg = "
formId: $formId
f_is_real_post(formId): " . (f_is_real_post($formId) ? "true" : "false") . "
f_is_real_post(): " . (f_is_real_post() ? "true" : "false");
//mail("m.ceccarelli@tnx.it", "form st debug " . $DATI["baseurl"], $msg . "\n\n" . print_r($_POST, true) . "\n\nDATI:" . print_r($DATI, true), "From: cecca@tnx.it\n");
if (count($F["f_errori"]) > 0) {
//se ci sono gia errori evito altri controlli
return true;
}
//if (f_is_real_post() && (!$DATI['deferAllScript'] && (!$_POST[$formId . '_tnx_cdn_alfa1'] || $_POST[$formId . '_tnx_cdn_alfa2'] != indiControlloAntispamCalcola($_POST[$formId . '_tnx_cdn_alfa1']))
// || $DATI['deferAllScript'] && !$_POST[$campoSingolo]
// || indiControlloAntispamCheckLimitIP())
if (f_is_real_post() && indiControlloAntispamCheckLimitIP()) {
if (!$GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"]) $GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"] = "anti spam check";
$errmsg = ($DATI["lang"] == "ita" ? "Richiesta bloccata (" : "Request blocked (") . $GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"] . ")";
echo "".$errmsg."
";
if (is_locale()) {
echo "";
echo $GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"];
echo "inviata mail a m.ceccarelli@tnx.it con debug ";
}
//verificare se nel form non ci sono i campi alfa1 e alfa2, in formBase cdn c'è per tutti ma su form fatti extra va aggiunto indiControlloAntispam(), vedi I:\SITI\ordinalonet\_template\blocks\form-acquista-ora-new.php
mail("m.ceccarelli@tnx.it", "[indiControlloAntispamCheckInvio:SPAM] " . $DATI["url_richiesto"], $errmsg . "\n\n" . $msg . "\n\nREQUEST:\n" . print_r($_REQUEST, true) . "\n\nSERVER:\n" . print_r($_SERVER, true), "From: cecca@tnx.it\n");
indi_trigger_error("[indiControlloAntispamCheckInvio:SPAM] " . $errmsg);
$F["f_errori"]["antispam"] = $errmsg;
// print_r_tnx($F["f_errori"], $_SERVER['REMOTE_ADDR'] == '192.168.0.177') || die;
//annullo tutto
$_POST = array();
$_GET = array();
$_REQUEST = array();
$_SESSION = array();
header('HTTP/1.0 403 Forbidden antispam check');
return false;
}
}
return true;
}
function indiControlloAntispamCleanIdForm($id) {
$cleaned = preg_replace('/[^a-zA-Z0-9]/', '_', $id);
$cleaned = preg_replace('/_+/', '_', $cleaned);
$cleaned = trim($cleaned, '_');
return $cleaned;
}
function indiControlloAntispam($formId, $formIdToAttach = null, $inputType = "hidden"){
global $DATI,$LANG,$F,$FORM,$FORM_SQL,$_POST;
if ($formIdToAttach == null) $formIdToAttach = $formId;
$formIdClean = indiControlloAntispamCleanIdForm($formId);
//gia inserito?
if ($GLOBALS['indiControlloAntispamInserito_' . $formId]) return;
//include nel form i campi alfa1 e alfa2 per il check via javascript
foreach($F as $v) {
if (is_array($v) && $v["tipo"] == "recaptcha") {
//se già presente recaptcha evito altri controlli
return;
}
}
if($_GET['debugtnx']){
$inputType = "text";
}
$GLOBALS['indiControlloAntispamInserito_' . $formId] = true;
$campoSingolo = md5(md5($formId));
$random = mt_rand(100000, 999999);
if(!$DATI['deferAllScript']) {
$prepend = '
';
} else {
$prepend = '
';
}
// return;
ob_start();
?>
return ob_get_clean();
}
//controlla se un indirizzo e' valido collegandosi direttamente alla pagina e verificando che non sia 404 e che non sia vuota
function indi_controllo_url($url) {
$context = stream_context_create();
stream_context_set_option($context, $type, 'user_agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36');
$data = @indi_file_get_contents($url, $context, 10);
return trim($data) && $http_response_header < 400;
return !empty($data);
}
function ind_xxx($TXT) {
global $DATI,$lang;
$lang_alt = $DATI["lang_alt"];
if($TXT["xxx"]) return $TXT["xxx"];
if($TXT[$lang]) return $TXT[$lang];
if($TXT[$lang_alt]) return $TXT[$lang_alt];
return FALSE;
}
function sicur_piccole(&$elemento1) {
$elemento1 = strtolower($elemento1);
}
function f_init(){
global $DATI,$LANG,$F,$FORM,$FORM_SQL,$_POST;
//memorizzo il form
//unset($F);
//#INIZIO PROGRAMMA PRINCIPALE
$lang = $DATI["lang"];
$lang_alt = $F["f_lingua_alt"];
//inizializzo l' array
$nome_form = $F["f_nome_form"];
if($_POST[$nome_form] && is_array($_POST[$nome_form])){
//tolgo gli slash se magic quote attive
$FORM = indiStripslashesRecursiveGpc($_POST[$nome_form]);
//creo versione per SQL con quote
$FORM_SQL = indiAddslashesRecursiveGpc($_POST[$nome_form]);
}
else{
$FORM = array();
$FORM_SQL = array();
}
if(is_array($F)){
while (list ($k, $v) = @each ($F)) {
if(is_array($v)){
//sistemo privacy
while (list ($kk, $vv) = @each ($v)) {
if(is_array($vv)){
while (list ($kkk, $vvv) = @each ($vv)) {
//sistemo gli xxx negli array di 3 livello
if($kkk == "xxx") {
if($F[$k][$kk][$lang] == "") $F[$k][$kk][$lang] = $vvv;
}
if($kkk == $lang_alt) {
//sostituisco lingue non complete con la lingua di default
reset($LANG);
while (list ($kl, $vl) = @each ($LANG)) {
if($kl != $lang_alt) {
if($F[$k][$kk][$kl]=="") $F[$k][$kk][$kl] = $vvv;
}
}
}
//sostituisco variabili di template
//$F[$k][$kk][$kl] = indi_tpl($F[$k][$kk][$kl],$GLOBALS[DATI],0);
//$F[$k][$lang] = indi_tpl($F[$k][$kk][$kl],$FORM,0,"Q");
}
}
//sistemo gli xxx negli array di secondo livello
if($kk == "xxx") {
if($F[$k][$lang] == "") $F[$k][$lang] = $vv;
}
//sostituisco variabili di template
//$F[$k][$lang] = indi_tpl($F[$k][$lang],$GLOBALS[DATI],0);
//$F[$k][$lang] = indi_tpl($F[$k][$lang],$FORM,0,"Q");
if($kk == $lang_alt) {
//sostituisco lingue non complete con la lingua di default
reset($LANG);
while (list ($kl, $vl) = @each ($LANG)) {
if($kl != $lang_alt) {
if($F[$k][$kl]=="") $F[$k][$kl] = $vv;
}
}
}
}
}
}
}
//imposto i css
if($F[f_css][$lang] != "") css($F[f_css][$lang]);
//setto l' e-mail di destinazione e i campi auto
if($F["f_email_dest"] == "AUTO") $F["f_email_dest"] = $DATI["email"];
if($F["f_email_cc"] == "AUTO") $F["f_email_cc"] = $DATI["email_cc"];
if($F["f_email_indi"] == "AUTO") $F["f_email_indi"] = $DATI["email_indi"];
if($F["f_nome_sito"] == "AUTO") $F["f_nome_sito"] = $DATI["dominio_sito"];
if($FORM && $F["f_nomecognome"] == "AUTO") {
$campo_nome = $F["f_campo_nome"];
$campo_cognome = $F["f_campo_cognome"];
$F["f_nomecognome"] = $FORM[$campo_nome];
if($FORM[$campo_cognome] != "") $F["f_nomecognome"] .= " ".$FORM[$campo_cognome];
}
if($FORM && $F["f_email_form"] == "AUTO") {
$campo_email = $F["f_campo_email"];
$F["f_email_form"] = $FORM[$campo_email];
//if($F[f_email_form] == "") mailtnx($CONF[email_indi],"INDI - Errore form",$DATI[dominio_sito]);
}
//controllo obbligatori su modo 1
$OBB_ARRAY = explode("|",$F["f_obb"][$lang]);
//imposto forzatamente per compatibilita'
if (sizeof($OBB_ARRAY) > 1) {
while(list($k,$v) = @each($OBB_ARRAY)) {
$F[$v]["obb"] = "SI";
}
}
//adesso ho l' array di compatibilita e ricreo quello definitivo F_OBB
reset($F);
while(list($k,$v) = @each($F)) {
//creo array campi obbligatori
//print "#".$v["obb"]."#$k";
if(is_array($v) && $v["obb"] == "SI") $F_OBB[$k] = "SI";
if(is_array($v) && $v["obb_gruppo"] != "") $F_OBB_GRUPPO[$v["obb_gruppo"]][] = $k;
}
//controllo campi obbligatori ci deve essere anche l' e-mail
//metto opzione no submit
if($FORM && $_POST['f_nosubmit'] != 1 && $_GET['f_nosubmit'] != 1) {
while(list($k,$v) = @each($F_OBB)) {
//controllo obbligatori
//print $F[$k][def][$lang];
//controllo campo di default, se presenti non da' errore su questi
if($F[$k][err] != "NO") {
if(
(
$F[$k]["tipo2"] == "" OR
$F[$k]["tipo2"] == "incrementale" OR
$F[$k]["tipo2"] == "data"
) &&
$F[$k]["obb"]== "SI" &&
( // aggiunta questa parentesi Lorenzo 23-05-2019
(
is_string($FORM[$k]) &&
trim($FORM[$k]) == ""
) ||
(
!is_string($FORM[$k]) &&
!$FORM[$k]
) ||
(
is_array($F[$k]["def"]) &&
$FORM[$k] == $F[$k]["def"][$lang]
)
)
) {
//gestisco errore campi obbligatori
$obb = "SI";
//imposto array con gli errori relativi ai campi
$F["f_errori"][$k] .= $F[$k][$lang];
}
if($F["f_errori"][$k] && $F[$k]["tipo"] == "daterange"){
// Questo componente genera un doppio post, vedo se ci sono entrambi i campi ed eventualmente annullo questo f_errori
$campoInizio = $k . "_inizio";
$campoFine = $k . "_fine";
if($FORM[$campoInizio] && $FORM[$campoFine]) unset($F["f_errori"][$k]);
}
//cecca 23/12/2024 controllo che non mettano link spam
if($F[$k]["tipo2"] == "" && !is_array($FORM[$k])) {
//così dovrei prendere solo campi testuali, ad esempio non voglio prendere i tipi di campo url_online vedi sotto...
if (stristr($FORM[$k], "http://") !== false || stristr($FORM[$k], "https://") !== false) {
$F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_nolink"][$lang];
}
}
//controllo campi e-mail se definiti ??? devo aggiungere controllo automatico, che valida la mail ovenuque e'
if(in_array($F[$k]["tipo2"], ["email", "email_html5"])) {
if(trim($FORM[$k]) == "" || vemail(trim($FORM[$k])) != 0) {
$F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_email2"][$lang];
if($FORM[$k] != "") indi_log_file("ERRORE tipo2=email mod_form:f_init() e-mail:(".$FORM[$k].") :".var_export(vemail(trim($FORM[$k])),1));
} else {
indi_log_file("OK tipo2=email mod_form:f_init() e-mail:(".$FORM[$k].") :".var_export(vemail(trim($FORM[$k])),1));
}
}
elseif($F[$k]["tipo2"] == "url_online") {
if(trim($FORM[$k]) == "" || !indi_controllo_url(trim($FORM[$k]))) $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_url_online"][$lang];
}
elseif($F[$k]["tipo2"] == "numero" || $F[$k]["tipo2"] == "numero_html5") {
if(!is_numeric(trim($FORM[$k])) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_numero"][$lang];
}
elseif($F[$k]["tipo2"] == "numero_intero") {
if(!is_int(trim($FORM[$k])) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_numero"][$lang];
}
elseif($F[$k]["tipo2"] == "piva") {
if(!verifica_partita_iva(trim($FORM[$k])) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_piva"][$lang];
}
elseif($F[$k]["tipo2"] == "cfiscale") {
if(isset($F[$k]["piva_check"])){
if((!verifica_codice_fiscale(trim($FORM[$k])) and $FORM[$k] != $FORM[$F[$k]["piva_check"]]) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang];
} else {
if(!verifica_codice_fiscale(trim($FORM[$k])) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang];
}
}
//controllo per doppia conferma bisogna creare un campo alias
if($F[$k]["tipo2"] == "email_doppiaconferma") {
if($F[$k]["obb"] == "SI" && vemail(trim($FORM[$k])) != 0 || trim($FORM[$k]) == "") {
//gestisco errore campi obbligatori
$obb = "SI";
//imposto array con gli errori relativi ai campi
$F["f_errori"][$k] .= $F[$k][$lang];
}
if((trim($FORM[$k]) != "" and trim($FORM[$k."_alias"]) == "") or $FORM[$k] != $FORM[$k."_alias"]) {
//gestisco errore campi obbligatori
$obb = "SI";
///if($FORM[$k] != $FORM[$k."_alias"]) $F[f_errori][$k] .= "Riconfermare la ..";
if(trim($FORM[$k] != "") and trim($FORM[$k."_alias"] != ""))$F["f_errori"][$k."_alias"] .= $F[$k][$lang]." (".$F[f_txt_doppiaconferma_err][$lang].")";
else $F["f_errori"][$k."_alias"] .= $F[$k][$lang]." (".$F["f_txt_doppiaconferma"][$lang].")";
//doppiuo controllo
//imposto array con gli errori relativi ai campi
}
}
//controllo per doppia conferma bisogna creare un campo alias
if($F[$k]["tipo2"] == "doppiaconferma") {
if($F[$k]["obb"]== "SI" and trim($FORM[$k]) == "" or ($FORM[$k] == $F[$k]["def"][$lang] and is_array($F[$k]["def"]))) {
//gestisco errore campi obbligatori
$obb = "SI";
//imposto array con gli errori relativi ai campi
$F["f_errori"][$k] .= $F[$k][$lang];
}
if(($F[$k]["obb"]== "SI" and trim($FORM[$k]) != "" and trim($FORM[$k."_alias"]) == "") or $FORM[$k] != $FORM[$k."_alias"]) {
//gestisco errore campi obbligatori
$obb = "SI";
///if($FORM[$k] != $FORM[$k."_alias"]) $F[f_errori][$k] .= "Riconfermare la ..";
if(trim($FORM[$k] != "") and trim($FORM[$k."_alias"] != ""))$F["f_errori"][$k."_alias"] .= $F[$k][$lang]." (".$F[f_txt_doppiaconferma_err][$lang].")";
else $F["f_errori"][$k."_alias"] .= $F[$k][$lang]." (".$F["f_txt_doppiaconferma"][$lang].")";
//doppiuo controllo
//imposto array con gli errori relativi ai campi
}
}
//controllo per file
if($F[$k][tipo2] == "file") {
if(!is_uploaded_file($_FILES[$k]['tmp_name'])) $F[f_errori][$k] .= $F[$k][$lang];
}
//manca controllo errore
}
}
if(is_array($F_OBB_GRUPPO)){
while(list($k,$v) = @each($F_OBB_GRUPPO)) {
$count[$k] = count($v);
$a = 0;
$i=1;
foreach($v as $sk => $sv){
if($i == 1){
$F["f_errori"][$k] = "Uno tra ";
}
if($F[$sv][err] != "NO") {
if(trim($FORM[$sv]) == "") {
//gestisco errore campi obbligatori
$obb_gruppo = "SI";
//imposto array con gli errori relativi ai campi
$F["f_errori"][$k] .= $F[$sv][$lang];
if($count[$k] != $i){
if($count[$k] > 2 && !(($count[$k]-1) == $i)){
$F["f_errori"][$k] .= " , ";
}elseif(($count[$k]-1) == $i || $count[$k] == 2){
$F["f_errori"][$k] .= " e ";
}
}
$a++;
}
}
$i++;
}
$F["f_errori"][$k] .= " devono essere compilati!";
if($a < $count[$k]){
unset($F["f_errori"][$k]);
}
}
}
//ALTRI ERRORI PER TUTTI
reset($F);
while(list($k,$v) = @each($F)) {
if(is_array($F[$k])){
//controllo per file2
if($F[$k]['tipo'] == "file2" ) {
//$F[$k]["val"] = $_FILES["file_".$k]['name'];
//tolgo errore
unset($F["f_errori"][$k]);
if($_FILES["file_".$k]['tmp_name'] != "") {
if(!is_uploaded_file($_FILES["file_".$k]['tmp_name'])) $F[f_errori][$k] = $F[$k][$lang];
if($F[$k]['file2_tipo'] != "") {
//print mime_content_type($_FILES["file_".$k]['tmp_name']);
if(indi_cerca($F[$k]['file2_tipo'],$_FILES["file_".$k]['type']) == FALSE) {
$F[f_errori][$k] = "".$F[$k][$lang]." ".$F[f_txt_err_file][$lang];
unset($_FILES["file_".$k]);
}
}
if($F[$k]['file2_est'] != "") {
//print mime_content_type($_FILES["file_".$k]['tmp_name']);
if(indi_cerca($F[$k]['file2_est'],indi_estensione_file($_FILES["file_".$k]['name'])) == FALSE) {
$F[f_errori][$k] = "".$F[$k][$lang]." ".$F[f_txt_err_file][$lang];
unset($_FILES["file_".$k]);
}
}
//sicurezza file php
if(indi_cerca("php|cgi|php3|php4|sh",indi_estensione_file($_FILES["file_".$k]['name'])) != FALSE) {
$F[f_errori][$k] = "Security error !";
unset($_FILES);
}
//imposto nopme file se c'e'
} else {
//controllo obbligatorio
//cecca 08/03/2024 bug trovato da form cv predari, se al primo post manca qualcosa ma il file c'è, al secondo post non ricontrolla il file...
//if($F[$k]["obb"] == "SI" and trim($FORM[$k]) == "") $F[f_errori][$k] = $F[$k][$lang];
if($F[$k]["obb"] == "SI") $F[f_errori][$k] = $F[$k][$lang];
}
}
else if($F[$k]['tipo'] == "recaptcha" ) {
if(!$F["f_errori"]/*se ci sono altri errori basta che stampi quelli*/ && !verificaRecaptcha($F[$k]['tipo2'] == "invisible")) $F["f_errori"][$k] = $F[$k][$lang];
}
if(is_array($v) && @array_key_exists("regexp", $v)) {
if(preg_match($F[$k]['regexp'], $FORM[$k]) == 0) $F["f_errori"][$k] .= $F[$k][$lang]." ".
($F[$k]['f_txt_reg'][$lang] ? $F[$k]['f_txt_reg'][$lang] : $F["f_txt_reg"][$lang]);
}
if($v["obb"] != "SI") {
if($F[$k]["tipo2"] == "email") {
if(vemail(trim($FORM[$k])) != 0 and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_email2"][$lang];
}
elseif($F[$k]["tipo2"] == "url_online") {
if(trim($FORM[$k]) != "" && !indi_controllo_url(trim($FORM[$k]))) $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_url_online"][$lang];
}
elseif($F[$k]["tipo2"] == "numero" || $F[$k]["tipo2"] == "numero_html5") {
if(!is_numeric(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_numero"][$lang];
}
elseif($F[$k]["tipo2"] == "numero_intero") {
if(!is_int(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_numero"][$lang];
}
elseif($F[$k]["tipo2"] == "piva") {
if(!verifica_partita_iva(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_piva"][$lang];
}
elseif($F[$k]["tipo2"] == "cfiscale") {
if(isset($F[$k]["piva_check"])){
if((!verifica_codice_fiscale(trim($FORM[$k])) and $FORM[$k] != $FORM[$F[$k]["piva_check"]] and trim($FORM[$k]) != "" ) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang];
} else if(isset($F[$k]["check"]) and $F[$k]["check"] == "SI"){
if($FORM[cfiscale_sel] == "individuale, sas, ss"){
if(!verifica_codice_fiscale(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang];
}
} else {
if(!verifica_codice_fiscale(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang];
}
}
}
}
}
//per finire faccio controllo antispam se non ci sono altri errori prima
//aspetta.. lo include nel formBase in cdn il bucio
/*
if(count($F["f_errori"]) > 0) {
if(f_is_real_post()){
//cecca 23/12/2024 era disabilitato vediamo se capisco perchè...
//cecca 09/01/2024 riattivo (e messo dopo altri errori)
//indiControlloAntispam($GLOBALS['F']['f_nome_form']);
}
}
*/
//tolgo array se devo
if(!$FORM) unset($F['f_errori']);
if(count($F["f_errori"]) == 0) unset($F['f_errori']);
} else {
unset($F['f_errori']);
}
}
function f_salva_configurazione(){
if($GLOBALS['F']['f_nome_form'] != 'FORM') trigger_error("Attenzione è stato personalizzato il nome form prima di chiamare f_isolate_form (".$GLOBALS['F']['f_nome_form'].")");
$GLOBALS['F_DEFAULT'] = $GLOBALS['F'];
}
function f_ripristina_configurazione(){
if(!$GLOBALS['F_DEFAULT']) trigger_error("Non ho trovato una configurazione \$F salvata, devi chiamare f_salva_configurazione() in funzioni_base.php");
$GLOBALS['F'] = $GLOBALS['F_DEFAULT'];
}
function f_isolate_form(){
//alla prima chiamata salva una copia di $F che viene ripristinata alle chiamate successive, per gestire più form in una pagina
if(isset($GLOBALS['F_DEFAULT'])){
f_ripristina_configurazione();
} else {
f_salva_configurazione();
}
}
// ATTENZIONE: va chiamato dopo f_isolate_form e prima di configurare il nome della form $GLOBALS['F']['f_nome_form']
// meglio usarlo sempre con il nome della form es:
// f_is_real_post($F['nome_form'])
function f_is_real_post($nome_form = NULL) {
if(!$nome_form) $submit = $_POST[$GLOBALS['F']['f_nome_form']."-SUBMIT-"];
else $submit = $_POST[$nome_form."-SUBMIT-"];
if($submit == 1) return true;
else return false;
}
function f_is_real_post_generic(){//controllo indipendente dal nome del form
if($_POST) foreach($_POST as $k=>$v) if(is_string($k) && substr($k, -1*strlen("-SUBMIT-")) == "-SUBMIT-") return true;
return false;
}
//aggiunge la classe errore a $CSS
function f_add_error_class($CSS) {
global $F;
if(!$CSS) return ' class="'.$F['f_err_class'].'"';
else {
if(preg_match('/class="(.*?)"/', $CSS, $results)){
//metto in class
return ' class="'.$F['f_err_class'].' '.$results[1].'"';
}
}
}
function f($nome,$AGG=NULL) {
global $F,$FORM,$DATI, $css_framework;
//assegno valore e controllo input
// $valore = indi_remove_xss($FORM[$nome]);
$valore = $FORM ? $FORM[$nome] : null;
//lingua
$lang = $DATI["lang"];
//controllo aggiuntivi
if($AGG == NULL) $AGG = $F[$nome][agg];
$nome_form = $F["f_nome_campi_array"] ? $F["f_nome_form"].'['.$nome.']' : $nome;
//genero il nome del CSS
if($F[$nome][css] != ""){
if($F[$nome][tipo] == "text" AND $F[$nome][tipo2] == "incrementale") $CSS = 'class="inc_input '.$F[$nome][css].'"';
else $CSS = 'class="'.$F[$nome][css].'"';
}
else{
// controllo se per errore è stato settato nella variabile agg la classe
if(preg_match('/class="(.*?)"/', $AGG, $results)){
//pulisco da agg
$AGG = preg_replace('/class=".*?"/', "", $AGG);
//metto in class
$CSS = 'class="'.$results[1].'"';
}
else{
//solo x vecchie form senza classe errore, la classe di default era il nome della form
if(!$F['f_err_class']) $CSS = 'class="'.$F[f_nome_form].'"';
}
}
//imposto variabile in caso di errore
if($F['f_errori'] && $F['f_errori'][$nome] != "") $obb="SI";
if($F['f_errori'] && $F['f_errori'][$F[$nome]["obb_gruppo"]] != "") $obb="SI";
if(fControllaCampoNonCompilato($obb)) $CSS = f_add_error_class($CSS);
// 30/09/2024 - TUX: sostituito con funzione perché serviva riutilizzarlo con gli elementi cdn, così non duplico codice
// if($DATI["indi_subversion"] > 5) {
// if($obb == "SI" and $F['f_err_class'] and f_is_real_post()){
// $CSS = f_add_error_class($CSS);
// }
// } else {
// if($obb == "SI" and $F['f_err_class'] ) $CSS = f_add_error_class($CSS);
// }
if($F[$nome] && !$F['f_first_input']) {//controllo anche $F[$nome], potrebbe non essere definito e quindi questo hidden salta
$F['f_first_input'] = 1;
$ret_hidden_check_input = ' ';
}
$stileObbligatorio = f_is_real_post() && $obb == "SI";
// print_r_tnx($nome." ".$F[$nome]['tipo'], $_SERVER['REMOTE_ADDR'] == '192.168.0.177') ;
//SOLO TESTO ##################
if($F[$nome]['tipo'] == "solotxt") {
return $ret_hidden_check_input . $F[$nome]["default"][$lang];
}
//Testo + hidden ##################
else if($F[$nome]['tipo'] == "hidden_text_kv") {
$VALORI = $F[$nome][val][$lang];
@reset($VALORI);
while(list($k, $v)=@each($VALORI)) {
return $ret_hidden_check_input.encode($v).' ';
}
}
//TEXT ##################
else if($F[$nome]['tipo'] == "daterange") {
$classe_elemento = 'mod-form-daterange';
$classe_elemento_inner = $classe_elemento . '-cont';
$id_elemento_from = $F[$nome]["id"] . '-from';
$id_elemento_to = $F[$nome]["id"] . '-to';
$fromLabel = "";
$toLabel = "";
$frecciaDisplayNone = true;
$valoreInizio = $FORM ? $FORM[$nome . "_inizio"] : "";
$valoreFine = $FORM ? $FORM[$nome . "_fine"] : "";
if(!$valoreInizio || !$valoreFine){
if($F[$nome]["default_start"] && $F[$nome]["default_end"]){
$valoreInizio = $F[$nome]["default_start"];
$valoreFine = $F[$nome]["default_end"];
$fromLabel = date("Y/m/d", strtotime($F[$nome]["default_start"]));
$toLabel = date("Y/m/d", strtotime($F[$nome]["default_end"]));
$frecciaDisplayNone = false;
} else {
if($F[$nome]["default_start_label"] && $F[$nome]["default_end_label"]){
$fromLabel = $F[$nome]["default_start_label"];
$toLabel = $F[$nome]["default_end_label"];
$frecciaDisplayNone = false;
}
}
}
if($valoreInizio && $valoreFine){
$fromLabel = date("d/m/Y", strtotime($valoreInizio));
$toLabel = date("d/m/Y", strtotime($valoreFine));
$frecciaDisplayNone = false;
}
$button_range = '';
$DATI['file:_libs/jquery-ui-1.12.1/jquery-ui.min.js'] = 'CDN,BODY,VIS';
// $DATI['file:_libs/jquery-ui-1.12.1/jquery-ui.min.css'] = 'CDN,BODY,VIS';
if($DATI["lang2"] != "en") $DATI['file:_libs2/jquery-ui/1.10.3/development-bundle/ui/i18n/jquery.ui.datepicker-' . $DATI["lang2"] . '.js'] = 'CDN,BODY,VIS';
$DATI["less_dynamic_css"] .= "
";
$idElementoInizio = $F[$nome]["id"] ? $F[$nome]["id"] . "-inizio" : "datepicker-" . $nome . "-inizio";
$idElementoFine = $F[$nome]["id"] ? $F[$nome]["id"] . "-fine" : "datepicker-" . $nome . "-fine";
$idElementoPulsante = $F[$nome]["id"] ? $F[$nome]["id"] . "-button" : "datepicker-" . $nome . "-button";
$nomeDatePicker = "datepicker_object_" . str_replace("-", "_", ($F[$nome]["id"] ? $F[$nome]["id"] : $nome));
$campoDataOver = "data_over_" . str_replace("-", "_", ($F[$nome]["id"] ? $F[$nome]["id"] : $nome));
if($F[$nome]["js"]["startAvailableDates"]) $minDate = 'minDate:"' . ($F[$nome]["js"]["startAvailableDates"][0]) . '"';
if($F[$nome]["js"]["startAvailableDates"]){
$beforeShowDay = '
var availableDates = ["' . implode('","', $F[$nome]["js"]["startAvailableDates"]) . '"];
selezionabile = availableDates.includes($.datepicker.formatDate("yy-mm-dd", date));
';
} else {
$beforeShowDay = '
if(typeof ' . $campoDataOver . ' != "undefined" && ' . $nomeDatePicker . '.datepicker("getDate") != null){
if(date.getTime() >= ' . $nomeDatePicker . '.datepicker("getDate").getTime()){
if(' . $campoDataOver . '.getTime() >= date.getTime()){
td_classe = "in_range";
} else {
td_classe = "not_in_range";
}
} else {
selezionabile = false;
}
}
';
}
$js_button_range = '
';
if($F[$nome]["icone"]["calendario"]["elemento"] != "") {
$button_range .= '' . img_tag_add_class($F[$nome]["icone"]["calendario"]["elemento"], "daterange-calendario-ico") . ' ';
}
$range_dates = '';
$range_dates .= '' . $fromLabel . ' ';
if($F[$nome]["icone"]["freccia"]["elemento"]) {
$styleFreccia = $frecciaDisplayNone ? ' style="display:none"' : "";
$range_dates .= '' . img_tag_add_class($F[$nome]["icone"]["freccia"]["elemento"], "daterange-arrow-ico") . ' ';
}
$range_dates .= '' . $toLabel . ' ';
$range_dates = '' . $range_dates . ' ';
$button_range .= $range_dates;
$button_range = '' . $button_range . '
';
$button_range .= ' ';
$button_range .= ' ';
$button_range .= ' ';
$classiButton = [];
$classiButton[] = $classe_elemento;
if($obb == "SI" and $F['f_err_class'] and f_is_real_post()) {
$classiButton[] = $F['f_err_class'];
$F[$nome]["errore"]["messaggi"][]["html"] = $F["f_errori"][$nome];
}
$button_range = $F[$nome]["before"] . $button_range . $F[$nome]["after"];
$array_msg_daterange = array();
if($F[$nome]["errore"]) {
if(is_array($F[$nome]["errore"]["messaggi"]) and sizeof($F[$nome]["errore"]["messaggi"])>0) {
foreach($F[$nome]["errore"]["messaggi"] as $k_msg => $v_msg) {
if($v_msg["html"] != "") {
$array_msg_daterange[] = $v_msg["html"];
}
}
$button_range = '' . implode("", $array_msg_daterange) . '
' . $button_range;
}
}
$button_range = '' . $button_range . ' ';
// reset bottone ///////////////////////
if(DEVICE != "phone") {
$css_modForm["modform_daterange"] .= '
#ui-datepicker-div {
display : flex;
align-items : flex-start;
}
';
}
$css_modForm["modform_daterange"] .= '
#ui-datepicker-div {
z-index : 100 !important;
background-color : #FFF;
> * {
flex : 1;
margin : 0.1rem;
}
.ui-datepicker-row-break {
display : none;
}
.ui-datepicker-header {
position : relative;
padding : 0.5rem;
background-color : #555;
color : #FFF;
font-weight : bold;
display : flex;
align-items : center;
justify-content : center;
align-items : center;
> * {
}
}
.ui-datepicker-prev,
.ui-datepicker-next {
position : absolute;
display : flex;
align-items : center;
justify-content : center;
overflow : hidden;
padding : 0.15rem;
.ui-icon {
text-indent : -99999px;
width : 1.1em;
height : 1.1em;
background-size : 100%;
background-position : center;
background-repeat : no-repeat;
opacity : 0.6;
-webkit-transition: opacity .1s ease-in-out;
-moz-transition: opacity .1s ease-in-out;
-o-transition: opacity .1s ease-in-out;
transition: opacity .1s ease-in-out;
}
}
.ui-datepicker-prev {
left : 0.5rem;
.ui-icon { background-image : url(\'@{root}/' . gall_svg_path(ipath("arrows/1/sx.svg"), "#FFFFFF") . '\'); }
&:hover { .ui-icon { opacity:1; } }
}
.ui-datepicker-next {
right : 0.5rem;
.ui-icon { background-image : url(\'@{root}/' . gall_svg_path(ipath("arrows/1/dx.svg"), "#FFFFFF") . '\'); }
&:hover { .ui-icon { opacity:1; } }
}
.ui-state-default {
display : flex;
align-items : center;
justify-content : flex-end;
padding : 0.5rem;
margin : 1px;
color : inherit;
border-width : 1px;
border-style : solid;
border-color : #CCC;
}
.ui-datepicker-calendar {
border-collapse : collapse;
border-spacing : 0;
width : 95%;
max-width : 95%;
background-color : transparent;
margin : auto;
th {
font-size : 0.85em;
padding : 0.5rem 0;
text-align : center;
}
th,
td {
}
td {
&.ui-state-disabled {
opacity : 0.4;
}
&.ui-datepicker-today {
.ui-state-default {
background-color : #ECECA3;
}
}
&.in_range {
.ui-state-default {
background-color : #CCC;
color : #FFF;
font-weight : bold;
}
}
}
}
}
.' . $classe_elemento . ' {
-moz-appearance : none;
-webkit-appearance : none;
background-color : #FFF;
background-image : none;
border-radius : 0.2em;
border : 1px solid #b8b8cf;
box-shadow : 0 1px 2px rgba(0,0,0,0.05) inset, 0 0 1px 1px #FFF inset;
color : inherit;
cursor : pointer;
font-family : inherit;
font-size : 1em;
line-height : inherit;
margin : 0;
padding : 0.7em;
position : relative;
text-align : inherit;
text-decoration : none;
transition : background 250ms ease-in-out, transform 150ms ease;
vertical-align : middle;
width : 100%;
display : flex;
align-items : center;
justify-content : flex-start;
.ui-datepicker {
left : 0 !important;
top : 100% !important;
font-size : 1em;
padding : 1em;
width : 100% !important;
}
.datarange-dates-cont {
display: flex;
align-items: center;
justify-content: flex-start;
> * {
margin : 0 0.25rem;
}
}
.daterange-ico-cont {
display : flex;
align-items : center;
justify-content : center;
}
.daterange-calendario-ico {
display : block;
width : ' . ($F['test_data_range']["icone"]["calendario"]["size"] ? $F['test_data_range']["icone"]["calendario"]["size"] : "3em") . ';
height : ' . ($F['test_data_range']["icone"]["calendario"]["size"] ? $F['test_data_range']["icone"]["calendario"]["size"] : "3em") . ';
padding : ' . ($F['test_data_range']["icone"]["calendario"]["padding"] ? $F['test_data_range']["icone"]["calendario"]["padding"] : "0.3em") . ';
}
.daterange-arrow-ico {
display : block;
width : ' . ($F['test_data_range']["icone"]["freccia"]["size"] ? $F['test_data_range']["icone"]["freccia"]["size"] : "1.5em") . ';
height : ' . ($F['test_data_range']["icone"]["freccia"]["size"] ? $F['test_data_range']["icone"]["freccia"]["size"] : "1.5em") . ';
padding : ' . ($F['test_data_range']["icone"]["freccia"]["padding"] ? $F['test_data_range']["icone"]["freccia"]["padding"] : "0.1em") . ';
}
.daterange-errors-cont {
background-color : #F00;
color : #FFF;
position : absolute;
bottom : 0;
right : 0;
z-index : 10;
font-size : 0.8em;
line-height : 1em;
padding : 0.5rem;
}
}
.' . $classe_elemento_inner . ' {
display : flex;
align-items : center;
justify-content : flex-start;
padding : 0;
margin : 0;
> * {
margin : 0 0.25rem;
}
}
';
if($css_modForm) datiAdd("less_dynamic_css_array_before", $css_modForm);
return $js_button_range.$ret_hidden_check_input.$button_range;
}
//TEXT ##################
else if($F[$nome]['tipo'] == "text") {
if($stileObbligatorio) $STYLE=$F[f_css_sel];
//controllo campo default
if(is_array($F[$nome]['default']) and !f_is_real_post()) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !f_is_real_post()) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang];
if($F[$nome][tipo2] == "cfiscale" and $F[$nome][check] == "SI"){
$F[$nome . "_sel"][tipo] = "select";
$F[$nome . "_sel"][obb] = "SI";
$F[$nome . "_sel"][agg] = 'class="input_1"';
$F[$nome . "_sel"][val][ita] = 'individuale, sas, ss|snc, srl, spa, scarl,altro';
$ret = f($nome . "_sel");;
$ret .= ' ';
} else if($F[$nome][tipo2] == "incrementale_cdn"){ //per usare l'elemento del campo incrementale dalla cdn
$varsBackup_incinput = $vars;
// if($DATI["indi_subversion"] > 5 and indi_is_mobile()) $type = "number";
// else $type = "text";
$minVal = isset($F[$nome]["min_val"]) ? $F[$nome]["min_val"] : "0";
$maxVal = isset($F[$nome]["max_val"]) ? $F[$nome]["max_val"] : null;
$idInput = $nome; // fallback
if($F[$nome]["id_input"] != "") $idInput = $F[$nome]["id_input"]; // fallback vecchie versioni, preferire l'id
if($F[$nome]["id"] != "") $idInput = $F[$nome]["id"]; // metodo corretto, l'di deve essere l'input non il suo contenitore
$idElementoIncInput = $idInput . '-cont';
$inc_val = $F[$nome]["inc_val"] ? $F[$nome]["inc_val"] : 1;
// print '
// elemendot: ' . $idElementoIncInput . '
// idInput: ' . $idInput . '
//
';
ob_start();
$vars = array();
$vars["id"] = $idElementoIncInput;
$vars["input_number"]["elemento"]["id"] = $idInput;
// $vars["input_number"]["elemento"]["classi_css_aggiuntive"] = array("saddsadsadsa");
$vars["input_number"]["attributi"]["name"] = $nome_form;
$vars["input_number"]["attributi"]["value"] = $valore;
if(is_array($F[$nome]["incInput"]["params"]["array_merge_recursive_replace"])) $vars = array_merge_recursive_replace($vars, $F[$nome]["incInput"]["params"]["array_merge_recursive_replace"]);
if(is_array($F[$nome]["incInput"]["params"]["array_merge"])) $vars = array_merge($vars, $F[$nome]["incInput"]["params"]["array_merge"]);
include($DATI["cdn_basepath"]."_pagine/elementi/incInput/incInput.inc.php");
$ret = ob_get_clean();
if($maxVal){
$jsMaxAgg = '
if(parseInt(valore) + ' . $inc_val . ' < ' . $maxVal . ') $("#' . $idInput . '").val(parseInt(valore) + ' . $inc_val . ');
else $("#' . $idInput . '").val(' . $maxVal . ');
';
}
$ret .= '
';
$vars = $varsBackup_incinput;
} else if($F[$nome][tipo2] == "incrementale"){ //supporto HTML5 / mobile
if($DATI["indi_subversion"] > 5 and indi_is_mobile()) $type = "number";
else $type = "text";
$minVal = $F[$nome]["min_val"] ? $F[$nome]["min_val"] : "0";
$idInput = $F[$nome]["id_input"] ? $F[$nome]["id_input"] : $nome;
$inc_val = $F[$nome]["inc_val"] ? $F[$nome]["inc_val"] : 1;
$ret = '';
if($F[$nome]["tipo_icone"] == "svg"){
$ret .= '
';
$iconaUp = $F[$nome]["icona_up"] ? $F[$nome]["icona_up"] : gall_svg(ipath("more/more1.svg"), "FFFFFF");
$iconaDown = $F[$nome]["icona_down"] ? $F[$nome]["icona_down"] : gall_svg(ipath("less/less1.svg"), "FFFFFF");
$ret .= '
' . navbar_item(
array(
"ico_svg" => $iconaUp,
"link" => "#",
"classi_css_aggiuntive" => array("inc_up"),
"attributi_inline_bottone" => ' id="up_' . $idInput . '" ',
)
) . '
';
$ret .= '
' . navbar_item(
array(
"ico_svg" => $iconaDown,
"link" => "#",
"classi_css_aggiuntive" => array("inc_down"),
"attributi_inline_bottone" => ' id="down_' . $idInput . '" ',
)
) . '
';
} else {
$iconaUp = $F[$nome]["icona_up"] ? $F[$nome]["icona_up"] : "+";
$iconaDown = $F[$nome]["icona_down"] ? $F[$nome]["icona_down"] : "-";
$ret .= '
';
$ret .= '
' . $iconaUp . ' ';
$ret .= '
' . $iconaDown . ' ';
}
$ret .= '
';
$ret .= '
';
} else {
//tipo2 email
if(
($F[$nome]['tipo2'] == "email" and $DATI["indi_subversion"] > 5 and indi_is_mobile()) ||
($F[$nome]['tipo2'] == "email_html5")
){
$type = "email";
} elseif($F[$nome]['tipo2'] == "numero_html5" || ($F[$nome]['tipo2'] == "numero" and $DATI["indi_subversion"] > 5 and indi_is_mobile())){
$type = "number";
} elseif($F[$nome]['tipo2'] == "data"){
$type = "date";
if($F[$nome]["minDate"]) $AGG .= ' min="' . $F[$nome]["minDate"] . '"';
if($F[$nome]["maxDate"]) $AGG .= ' max="' . $F[$nome]["maxDate"] . '"';
} elseif($F[$nome]['tipo2'] == "orario"){
$type = "time";
} else {
$type = "text";
}
if($F[$nome]['id'] && substr($AGG, 0, 3) != 'id=' && strpos($AGG, ' id=') === false){
$AGG = 'id="'.indi_htmlentities($F[$nome]['id']).'" '.$AGG;
}
$ret = ' ';
}
return $ret_hidden_check_input.$ret;
}
//TEXT HIDDEN ##################
else if($F[$nome]['tipo'] == "hidden_text") {
if($stileObbligatorio) $STYLE=$F[f_css_sel];
//controllo campo default
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang];
return $ret_hidden_check_input.encode($valore).' ';
}
//PASSWORD ##################
else if($F[$nome]['tipo'] == "password") {
if($stileObbligatorio) $STYLE=$F["f_css_sel"];
//controllo campo default
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang];
return $ret_hidden_check_input.' ';
}
//FILE ##################
else if($F[$nome]['tipo'] == "file") {
if($stileObbligatorio) $STYLE=$F["f_css_sel"];
//controllo campo default
//if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
//else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
//
//return ' ';
return $ret_hidden_check_input.' ';
}
//FILE2 ##################
else if($F[$nome]['tipo'] == "file2") {
if($stileObbligatorio) $STYLE=$F["f_css_sel"];
if($_FILES["file_".$nome]['tmp_name'] != "" and $F[f_errori][$nome] == "") $valore = indi_urlencode(serialize($_FILES["file_".$nome]));
else $valore = $F[$nome][val];
//
//return ' ';
return $ret_hidden_check_input.' ';
}
//HIDDEN ##################
else if($F[$nome]['tipo'] == "hidden") {
//controllo campo default
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang];
return $ret_hidden_check_input.' ';
}
//CHECKBOX ##################
else if($F[$nome]['tipo'] == "checkbox") {
if($stileObbligatorio) $STYLE=$F[f_css_rc];
//$valore qui è nulla la riga sotto è inutile, usare stato=selezionato (carlo)
if($F[$nome]['sel'][$lang] && $valore == $F[$nome]['sel'][$lang]) $stato = "checked=\"checked\"";
else {
if($F[$nome]['stato'] == "selezionato" && !$FORM) $stato = "checked=\"checked\"";
}
if($F['f_err_class']) return $ret_hidden_check_input.' ';
return $ret_hidden_check_input.' ';
}
else if($F[$nome]['tipo'] == "checkbox_cdn") { /* CAZZARCULO -- gestione elemento checkbox singola in campo singolo -- CERCA $F[$nome]['tipo'] == "checkbox_kv_cdn" */
$varsBackupCustomCRS = $vars;
ob_start();
print $ret_hidden_check_input;
$vars = [];
$vars["elemento_entries"]["id"] = $F[$nome]["id"] . "-formCRS";
$vars["entries"]["lista"][0]["id"] = $F[$nome]["id"];
$vars["entries"]["lista"][0]["name"] = $nome_form;
$vars["entries"]["lista"][0]["value"] = $F[$nome]["sel"][$lang];
// $vars["entries"]["lista"][0]["valore"]["html"] = 'prova con valore html !!!';
if(fControllaCampoNonCompilato($obb)) $vars["entries"]["lista"][0]["errore"]["attiva"] = true;
if($F[$nome]["css"] != "") $vars["entries"]["lista"][0]["classi_css_aggiuntive"] = explode(" ", $F[$nome]["css"]);
if($F[$nome]['sel'][$lang] && $valore == $F[$nome]['sel'][$lang]){
$vars["entries"]["lista"][0]["checked"] = true;
} else {
if($F[$nome]['stato'] == "selezionato" && !$FORM) $vars["entries"]["lista"][0]["checked"] = true;
}
$vars["elemento_label"]["padding"] = "0";
$vars["elemento_entries"]["classi_css_aggiuntive"] = ["fields_cont"];
$vars["elemento_entries"]["classe_css"] = "row-checkbox-entries";
$vars["elemento_entries"]["usa_selettore_classe"] = true;
$vars["elemento_entries"]["usa_selettore_custom"] = "#" . $F["f_nome_form"] . " ." . $vars["elemento_entries"]["classe_css"];
if(is_array($F[$nome]["checkbox_cdn"]["elemento_cdn"]["params"])) {
$vars = array_merge_recursive_replace($vars,$F[$nome]["checkbox_cdn"]["elemento_cdn"]["params"]);
}
include($DATI["cdn_basepath"]."_pagine/elementi/customCRS/customCRS.inc.php");
return ob_get_clean();
$vars = $varsBackupCustomCRS;
} else if($F[$nome]['tipo'] == "valutazione_cdn") {
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
$varsBackupValutazioneCdn = $vars;
ob_start();
$vars = array();
$vars["id_elemento"] = $F[$nome]["id"] . "-cont";
$vars["campo_val_nascosto"]["stampa"] = true;
$vars["campo_val_nascosto"]["id"] = $F[$nome]["id"];
$vars["campo_val_nascosto"]["name"] = $nome_form;
$vars["campo_val_nascosto"]["value"] = $valore;
if($valore) $vars["dati"]["valutazione_inserita"] = $valore;
// $vars["configurazione"]["stella_ico"]["color"] = "#99CC00";
// $vars["configurazione"]["user"]["ico"]["elemento"] = gall_svg_tag(ipath("user/user2.svg"));
// $vars["configurazione"]["stella_ico"]["elemento"] = gall_svg_tag(ipath("star/star1.svg"));
// $vars["configurazione"]["stella_ico"]["size"] = "2em";
$vars["js"]["custom_function_click"] = "
var ratingSelezionato = $(this).attr('data-rating');
$('#" . $vars["campo_val_nascosto"]["id"] . "').val(ratingSelezionato);
$('#" . $vars["campo_val_nascosto"]["id"] . "-cont .rating-add-star').each(function(index){
if($(this).attr('data-rating') <= ratingSelezionato){
$(this).addClass('rating-star-selected');
} else {
$(this).removeClass('rating-star-selected');
}
});
";
if(is_array($F[$nome]["elemento_cdn"]["vars"]) and sizeof($F[$nome]["elemento_cdn"]["vars"])>0) $vars = array_merge_recursive_replace($vars,$F[$nome]["elemento_cdn"]["vars"]);
include($DATI["cdn_basepath"]."_pagine/elementi/valutazioneAdd/valutazioneAdd.inc.php");
$campo_valutazione = ob_get_clean();
$campo_valutazione = '' . $ret_hidden_check_input . $campo_valutazione . '
';
$vars = $varsBackupValutazioneCdn;
return $campo_valutazione;
}
else if($F[$nome]['tipo'] == "checkbox_kv_cdn") { /* CAZZARCULO -- gestione elemento con checkbox multiple nello stesso campo CERCA $F[$nome]['tipo'] == "checkbox_cdn" */
$isElementoCdn = is_array($F[$nome]["checkbox_kv_cdn"]["elemento_cdn"]["params"]);
$erroreObb = false;
$return_custom_checkbox_cfg = $F[$nome]['custom_checkbox_cfg'] ? $F[$nome]['custom_checkbox_cfg'] : [];
$stampa_messaggio_campo = true;
if($F[$nome]['obb'] == "SI" && f_is_real_post() && !$valore) {
if(isset($F[$nome]["stampa_messaggio_errore"]) and !$F[$nome]["stampa_messaggio_errore"]) $stampa_messaggio_campo = false;
if($stampa_messaggio_campo) $return_custom_checkbox_cfg["errore"]["messaggio"] = 'Errore, compilare correttamente questo campo';
$erroreObb = true;
}
if($F[$nome]["val"][$DATI["lang"]]) {
$conta_campo = 0;
$checkedStatus = [];
foreach($F[$nome]["val"][$DATI["lang"]] as $k_campo => $v_campo) {
$array_entry[$conta_campo]["id"] = $F["f_nome_form"] . '[' . $nome . ']_option' . ($conta_campo+1);
$array_entry[$conta_campo]["name"] = $F["f_nome_form"] . '[' . $nome . '][' . $k_campo . ']';
$array_entry[$conta_campo]["value"] = $k_campo;
$array_entry[$conta_campo]["valore_txt"] = $v_campo;
if($F[$nome]['obb'] == "SI") $array_entry[$conta_campo]["obb"] = true;
if(!is_array($F[$nome]['default']) && ($F[$nome]['default'] == $k_campo || $F[$nome]['sel'] == $k_campo) && !f_is_real_post()){
$valore = $k_campo;
}
if($erroreObb) {
$array_entry[$conta_campo]["errore"]["campo_errato"] = true;
if($F[$nome]["html_messaggio_errore"] != "") $array_entry[$conta_campo]["errore"]["errore_html"] = $F[$nome]["html_messaggio_errore"];
}
if($F[$nome]['css']) $array_entry[$conta_campo]["classi_css_aggiuntive"] = [$F[$nome]['css'], "errore_radio"];
if((is_array($valore) && ($valore[$k_campo] || in_array($k_campo, $valore))) || $k_campo == $valore ){
if($isElementoCdn) $checkedStatus[$conta_campo] = true;
else $array_entry[$conta_campo]["checked"] = true;
} else {
if($isElementoCdn) $checkedStatus[$conta_campo] = false;
else $array_entry[$conta_campo]["checked"] = false;
}
$conta_campo++;
}
$return_custom_checkbox_cfg["entries"] = $array_entry;
}
if($F[$nome]['cfg_tipologie']) $return_custom_checkbox_cfg['cfg_tipologie'] = $F[$nome]['cfg_tipologie'];
if($F[$nome]["checkbox_kv_cdn"]["entries"]) {
$return_custom_checkbox_cfg["entries"] = array_merge_recursive_replace($return_custom_checkbox_cfg["entries"], $F[$nome]["checkbox_kv_cdn"]["entries"]);
}
if(f_is_real_post()){
foreach($checkedStatus as $contaCampo => $checked) $array_entry[$contaCampo]["checked"] = $checked;
$return_custom_checkbox_cfg["entries"] = $array_entry;
}
$return_custom_checkbox_cfg["id_div_contenitore"] = $F["f_nome_form"] . "-" . $nome;
if($isElementoCdn) {
$varsBackupCustomCRS = $vars;
ob_start();
print $ret_hidden_check_input;
$vars = indiConvertModFormCBToCustomCRS(["campo_modform" => $F[$nome], "form" => $F, "custom_checkbox_cfg" => $return_custom_checkbox_cfg]);
$vars["elemento_label"]["padding"] = "0";
$vars["elemento_entries"]["classi_css_aggiuntive"] = ["fields_cont"];
$vars["elemento_entries"]["classe_css"] = "row-checkbox-entries";
$vars["elemento_entries"]["usa_selettore_classe"] = true;
$vars["elemento_entries"]["usa_selettore_custom"] = "#" . $F["f_nome_form"] . " ." . $vars["elemento_entries"]["classe_css"];
$vars = array_merge_recursive_replace($vars,$F[$nome]["checkbox_kv_cdn"]["elemento_cdn"]["params"]);
include($DATI["cdn_basepath"]."_pagine/elementi/customCRS/customCRS.inc.php");
return ob_get_clean();
$vars = $varsBackupCustomCRS;
}
else {
return $ret_hidden_check_input. custom_checkbox_radio($return_custom_checkbox_cfg);
}
}
else if($F[$nome]['tipo'] == "check_kv") {//vedi anche check_kv_div f_check_tpl
if($stileObbligatorio) $STYLE=$F['f_css_sel_select'];
$stato = "";
if($F[$nome]['f_check_tpl'] != "") $radio_tpl = $F[$nome]['f_check_tpl'];
else $radio_tpl = $F['f_check_tpl'];
$VALORI = $F[$nome]['val'][$lang];
// aggiunto Lore 04/04/2018
if(is_array($F[$nome]['default']) && !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome]['sel']) && !$FORM) $valore = $F[$nome]['sel'][$lang];
if($F[$nome]['num_col'] != "") $num_col = $F[$nome]['num_col'];
else $num_col = 1;
@reset($VALORI);
$C = 0;
$out = "";
return $ret_hidden_check_input.$out;
}
else if($F[$nome]['tipo'] == "check_kv_div") {
if($stileObbligatorio) $STYLE=$F[f_css_sel_select];
$stato = "";
if($F[$nome]['f_check_div_tpl'] != "") $radio_tpl = $F[$nome]['f_check_div_tpl'];
else $radio_tpl = $F['f_check_div_tpl'];
$VALORI = $F[$nome]['val'][$lang];
// aggiunto Lore 04/04/2018
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome]['sel']) and !$FORM) $valore = $F[$nome]['sel'][$lang];
if($F[$nome]['num_col'] != "") $num_col = $F[$nome]['num_col'];
else $num_col = 1;
$tot = count($VALORI);
$radio_per_colonna = ceil($tot / $num_col);
@reset($VALORI);
$C = 1;
$add_div_class = "";
if($F[$nome]['add_div_class']) $add_div_class = $F[$nome]['add_div_class'];
$add_div_riga_class = "";
if($F[$nome]['add_div_riga_class']) $add_div_riga_class = $F[$nome]['add_div_riga_class'];
$out .= "";
while(list($k, $v)=@each($VALORI)) {
if(trim($k) == $F[$nome]['sel'][$lang] && trim($k) != "") $selezionato = TRUE;
else $selezionato = FALSE;
if(is_array($valore)) if(in_array(trim($k),$valore) or $selezionato) $stato = "checked=\"checked\"";
else $stato = "";
$input = '
';
$riga = str_replace('#CHECK#',$input,$radio_tpl);
$riga = str_replace('#VALORE#',$v,$riga);
// Lore - modifica del 10-05-2019 per errore doppia label e label non personalizzabile
// $out .= "
" . $riga . "
";
$out .= '
' . $riga . '
';
if($C % $radio_per_colonna == 0 && $C != $tot) $out .= '
';
$C++;
}
$out .= "
";
return $ret_hidden_check_input.$out;
}
//TEXTAREA ##################
else if($F[$nome]['tipo'] == "textarea") {
if($stileObbligatorio) $STYLE=$F[f_css_sel];
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang];
if($F[$nome]['id'] && substr($AGG, 0, 3) != 'id=' && strpos($AGG, ' id=') === false){
$AGG = 'id="'.indi_htmlentities($F[$nome]['id']).'" '.$AGG;
}
return $ret_hidden_check_input.'';
}
//SELECT ##################
else if($F[$nome]['tipo'] == "select") {
if($stileObbligatorio) $STYLE=$F[f_css_sel_select];
$stato = "";
$VALORI = explode ("|",$F[$nome][val][$lang]);
reset($VALORI);
while(list($k, $v)=each($VALORI)) {
if(trim($v) == $F[$nome][sel][$lang] and trim($v) != "") $selezionato = TRUE;
else $selezionato = FALSE;
if(trim($v) == trim($valore) or $selezionato) $stato = "selected=\"selected\"";
else $stato = "";
$out .= ''.htmlspecialchars($v).' ';
}
if($F[$nome]['id'] && substr($AGG, 0, 3) != 'id=' && strpos($AGG, ' id=') === false){
$AGG = 'id="'.indi_htmlentities($F[$nome]['id']).'" '.$AGG;
}
return $ret_hidden_check_input.''.$out.' ';
}
//SELECT KV ##################
else if($F[$nome]['tipo'] == "select_kv") {
if($stileObbligatorio) $STYLE=$F['f_css_sel_select'];
$stato = "";
//$VALORI = explode ("|",$F[$nome][val][$lang]);
$VALORI = $F[$nome]['val'][$lang];
if(is_array($F[$nome]['default']) and !f_is_real_post()) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome]['def']) and !f_is_real_post()) $valore = $F[$nome]['def'][$lang];
@reset($VALORI);
while(list($k, $v)=@each($VALORI)) {
if(trim($k) == $valore and trim($k) != "") $selezionato = TRUE;
else $selezionato = FALSE;
if(trim($k) == trim($valore) or $selezionato) $stato = "selected";
else $stato = "";
$out .= ''.htmlspecialchars($v).' ';
}
if($F[$nome]['id'] && substr($AGG, 0, 3) != 'id=' && strpos($AGG, ' id=') === false){
$AGG = 'id="'.indi_htmlentities($F[$nome]['id']).'" '.$AGG;
}
return $ret_hidden_check_input.''.$out.' ';
}
// SELECT VALORI MULTIPLI CON SELECT2
else if($F[$nome]['tipo'] == "select2_multiple") {
$STYLE = ($stileObbligatorio) ? $F[f_css_sel_select] : "";
$VALORI = $F[$nome][val][$lang];
$PLACEHOLDER = $F[$nome][def][$lang] ? "data-placeholder='" . $F[$nome][def][$lang] . "'" : "";
if(is_array($F[$nome]['sel']) and !$FORM) $valore = $F[$nome]['sel'][$lang];
@reset($VALORI);
while(list($k, $v)=@each($VALORI)) {
$selezionato = (is_array($valore) AND in_array($k, $valore)) || ($valore AND trim($k) == $valore) ? TRUE : FALSE;
$stato = $selezionato ? "selected='SELECTED'" : "";
$out .= '' . htmlspecialchars($v) . ' ';
}
//$DATI['body:$(document).ready(function(){$("#' . $nome . '").select2();});'] = 'VIS,JS';
return $ret_hidden_check_input. '' . $out . ' ';
}
//DATA ##################
else if($F[$nome]['tipo'] == "data") {
if($stileObbligatorio) $STYLE=$F[f_css_sel_select];
$stato = "";
//$VALORI = explode ("|",$F[$nome][val][$lang]);
$VALORI = $F[$nome][val][$lang];
@reset($VALORI);
while(list($k, $v)=each($VALORI)) {
if(trim($k) == $F[$nome][sel][$lang] and trim($k) != "") $selezionato = TRUE;
else $selezionato = FALSE;
if(trim($k) == trim($valore) or $selezionato) $stato = "selected";
else $stato = "";
$out .= ''.htmlspecialchars($v).' ';
}
return $ret_hidden_check_input.''.$out.' ';
}
//RADIO ##################
else if($F[$nome]['tipo'] == "radio") {
if($stileObbligatorio) $STYLE=$F[f_css_sel_select];
$stato = "";
if($F[$nome]['f_radio_tpl'] != "") $radio_tpl = $F[$nome]['f_radio_tpl'];
else $radio_tpl = $F['f_radio_tpl'];
$VALORI = explode ("|",$F[$nome][val][$lang]);
reset($VALORI);
while(list($k, $v)=each($VALORI)) {
$id = $nome_form . "_option".$k;
if((trim($v) == $F[$nome]['sel'][$lang] || trim($v) == $F[$nome]['default'][$lang]) and trim($v) != "") $selezionato = TRUE;
else $selezionato = FALSE;
if(trim($v) == trim($valore) or $selezionato) $stato = "checked=\"checked\"";
else $stato = "";
//$out .= ' '.$v.$F["f_radio_sep"].' ';
$input = ' ';
$riga = str_replace('#RADIO#',$input,$radio_tpl);
$riga = str_replace('#VALORE#',$v,$riga);
//$riga = str_replace('#VALORE#',''.$v.' ',$riga);
$out .= $riga;
}
return $ret_hidden_check_input.$out;
}
//RADIO KV ##################
else if($F[$nome]['tipo'] == "radio_kv_cdn") {
$erroreObb = false;
$return_custom_checkbox_cfg = $F[$nome]['custom_checkbox_cfg'] ? $F[$nome]['custom_checkbox_cfg'] : [];
$return_custom_checkbox_cfg['tipo'] = "radio";
$stampa_messaggio_campo = true;
if($F[$nome]['obb'] == "SI" && $FORM && !$valore && f_is_real_post()){
if(isset($F[$nome]["stampa_messaggio_errore"]) and !$F[$nome]["stampa_messaggio_errore"]) $stampa_messaggio_campo = false;
if($stampa_messaggio_campo) $return_custom_checkbox_cfg["errore"]["messaggio"] = 'Errore, compilare correttamente questo campo';
$erroreObb = true;
}
if($F[$nome]["val"][$DATI["lang"]]) {
$conta_campo = 0;
foreach($F[$nome]["val"][$DATI["lang"]] as $k_campo => $v_campo) {
$array_entry[$conta_campo]["id"] = $F["f_nome_form"] . '[' . $nome . ']_option' . ($conta_campo+1);
$array_entry[$conta_campo]["name"] = $F["f_nome_form"] . '[' . $nome . ']';
$array_entry[$conta_campo]["value"] = $k_campo;
$array_entry[$conta_campo]["valore_txt"] = $v_campo;
if($F[$nome]['obb'] == "SI") $array_entry[$conta_campo]["obb"] = true;
if((
(isset($F[$nome]['default']) && $F[$nome]['default'] == $k_campo) ||
(isset($F[$nome]['sel']) && $F[$nome]['sel'] == $k_campo)
) && !f_is_real_post()) $valore = $k_campo;
if($erroreObb) {
$array_entry[$conta_campo]["errore"]["campo_errato"] = true;
if($F[$nome]["html_messaggio_errore"] != "") $array_entry[$conta_campo]["errore"]["errore_html"] = $F[$nome]["html_messaggio_errore"];
}
if(isset($valore) && $k_campo == $valore) $array_entry[$conta_campo]["checked"] = true;
$conta_campo++;
}
$return_custom_checkbox_cfg["entries"] = $array_entry;
}
if($F[$nome]['cfg_tipologie']) $return_custom_checkbox_cfg['cfg_tipologie'] = $F[$nome]['cfg_tipologie'];
if($F[$nome]["radio_kv_cdn"]["entries"]) {
$return_custom_checkbox_cfg["entries"] = array_merge_recursive_replace($return_custom_checkbox_cfg["entries"], $F[$nome]["radio_kv_cdn"]["entries"]);
}
if($F[$nome]["css"]) $return_custom_checkbox_cfg["input"]["classi_css"] = [$F[$nome]["css"]];
$return_custom_checkbox_cfg["id_div_contenitore"] = $F["f_nome_form"] . "-" . $nome;
if(is_array($F[$nome]["radio_kv_cdn"]["elemento_cdn"]["params"])) {
$varsBackupCustomCRS = $vars;
ob_start();
$vars = indiConvertModFormCBToCustomCRS(["campo_modform" => $F[$nome], "form" => $F, "custom_checkbox_cfg" => $return_custom_checkbox_cfg]);
// if($_SERVER['REMOTE_ADDR'] == '192.168.0.77' || $_GET['debugtnx']){
// echo '';
// $debugBacktrace = debug_backtrace(); array_unshift($debugBacktrace, array('file'=>__FILE__, 'line'=>__LINE__, 'function'=>'debugTnx')); foreach($debugBacktrace as $debugLine) echo "".str_replace("/tnx/www/html/www/", "", $debugLine['file'])." "." ".$debugLine['function']."() ";
// $printMe = $vars; ob_start(); if(is_object($printMe)||is_array($printMe)) print_r($printMe); else var_dump($printMe); echo htmlentities(ob_get_clean(), ENT_COMPAT|ENT_HTML401|ENT_SUBSTITUTE, 'UTF-8');
// echo ' ';
// die;
// }
// if($_SERVER['REMOTE_ADDR'] == '192.168.0.77' || $_GET['debugtnx']){
// echo '';
// $printMe = $F; ob_start(); if(is_object($printMe)||is_array($printMe)) print_r($printMe); else var_dump($printMe); echo htmlentities(ob_get_clean(), ENT_COMPAT|ENT_HTML401|ENT_SUBSTITUTE, 'UTF-8');
// echo ' ';
// }
$vars["tipo_input"] = "radio";
$vars["elemento_label"]["padding"] = "0";
$vars["elemento_entries"]["classi_css_aggiuntive"] = ["fields_cont"];
$vars["elemento_entries"]["classe_css"] = "row-radio-entries";
$vars["elemento_entries"]["usa_selettore_classe"] = true;
$vars["elemento_entries"]["usa_selettore_custom"] = "#" . $F["f_nome_form"] . " ." . $vars["elemento_entries"]["classe_css"];
if($erroreObb) $vars["elemento_entries"]["errore"]["attiva"] = true;
$vars = array_merge_recursive_replace($vars,$F[$nome]["radio_kv_cdn"]["elemento_cdn"]["params"]);
include($DATI["cdn_basepath"]."_pagine/elementi/customCRS/customCRS.inc.php");
return ob_get_clean();
$vars = $varsBackupCustomCRS;
}
else {
return $ret_hidden_check_input.custom_checkbox_radio($return_custom_checkbox_cfg);
}
} else if($F[$nome]['tipo'] == "radio_kv") {
if($stileObbligatorio) $STYLE=$F[f_css_sel_select];
$stato = "";
if($F[$nome]['f_radio_tpl'] != "") $radio_tpl = $F[$nome]['f_radio_tpl'];
else $radio_tpl = $F['f_radio_tpl'];
// Aggiunto Lore 22/10/2020
if($F[$nome]['default'] && !$FORM) $valore = $F[$nome]['default'][$lang];
else if($F[$nome]['sel'] && !$FORM) $valore = $F[$nome]['sel'][$lang];
$VALORI = $F[$nome][val][$lang];
@reset($VALORI);
$i = 0;
while(list($k, $v)=@each($VALORI)) {
// Modifica Lore 22/10/2020
if(trim($k) == $valore and trim($k) != "") $selezionato = TRUE;
else $selezionato = FALSE;
if(trim($k) == trim($valore) or $selezionato) $stato = "checked=\"checked\"";
else $stato = "";
$id = $nome_form . "_option".$i++;
$input = ' ';
$riga = str_replace('#RADIO#',$input,$radio_tpl);
$riga = str_replace('#VALORE#',$v,$riga);
//$riga = str_replace('#VALORE#',''.$v.' ',$riga);
$out .= $riga;
}
return $ret_hidden_check_input.$out;
}
//RADIO KV DIV ##################
else if($F[$nome]['tipo'] == "radio_kv_div") {
if($stileObbligatorio) $STYLE=$F[f_css_sel_select];
$stato = "";
if($F[$nome]['f_radio_div_tpl'] != "") $radio_tpl = $F[$nome]['f_radio_div_tpl'];
else $radio_tpl = $F['f_radio_div_tpl'];
$VALORI = $F[$nome][val][$lang];
if($F[$nome]['num_col'] != "") $num_col = $F[$nome]['num_col'];
else $num_col = 1;
$tot = count($VALORI);
$radio_per_colonna = ceil($tot / $num_col);
$C = 1;
@reset($VALORI);
$i = 0;
$out .= "";
while(list($k, $v)=@each($VALORI)) {
if(trim($k) == $F[$nome][sel][$lang] and trim($k) != "") $selezionato = TRUE;
else $selezionato = FALSE;
if(trim($k) == trim($valore) or $selezionato) $stato = "checked=\"checked\"";
else $stato = "";
$id = $nome_form . "_option".$i++;
$input = '
';
$riga = str_replace('#RADIO#',$input,$radio_tpl);
$riga = str_replace('#VALORE#',$v,$riga);
// Lore - modifica del 10-05-2019 per errore doppia label e label non personalizzabile
// $out .= "
" . $riga . "
";
$out .= '
' . $riga . '
';
if($C % $radio_per_colonna == 0 && $C != $tot) $out .= '
';
$C++;
}
$out .= "
";
return $ret_hidden_check_input.$out;
}
//CALENDAR2 ##################
else if($F[$nome]['tipo'] == "calendar2") {
$DATI["dir:_files/calendar_langs"] = "COPY";
$DATI["dir:_files/calendar_skins"] = "COPY";
$DATI["file:_files/calendar.js"] = "COPY,VIS";
$DATI["file:_files/calendar-setup.js"] = "COPY,VIS";
$DATI["file:_files/calendar_skins/aqua.css"] = "VIS";
$DATI["file:_files/calendar_skins/calendar.png"] = "COPY";
$DATI["file:_files/calendar_langs/calendar-$DATI[lang2].js"] = "VIS";
if($stileObbligatorio) $STYLE=$F[f_css_sel];
//controllo campo default
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val]) and !$FORM) $valore = $F[$nome][val][$lang];
if($F[$nome]['update_on_close']) $update_on_close = ',
onClose : function(){
document.getElementById("'.$F[$nome]['update_on_close'].'_calendar").value = document.getElementById("'.$nome.'_calendar").value;
this.hide();
}';
else $update_on_close = '';
return $ret_hidden_check_input.'
';
}
else if($F[$nome]['tipo'] == "calendar3") {
$cssCal = $F[$nome]['calendar_css'] ? $F[$nome]['calendar_css'] : "aqua";
$DATI["dir:_files/calendar_langs"] = "COPY";
$DATI["dir:_files/calendar_skins"] = "COPY";
$DATI["file:_files/calendar.js"] = "COPY,VIS";
$DATI["file:_files/calendar-setup.js"] = "COPY,VIS";
$DATI["file:_files/calendar_skins/$cssCal.css"] = "VIS";
$DATI["file:_files/calendar_skins/calendar.png"] = "COPY";
$DATI["file:_files/calendar_langs/calendar-$DATI[lang2].js"] = "VIS";
if($stileObbligatorio) $STYLE=$F[f_css_sel];
//controllo campo default
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val]) and !$FORM) $valore = $F[$nome][val][$lang];
if($F[$nome]['f_calendar_dis_date'] != "") $dis_date = $F[$nome]['f_calendar_dis_date'];
else $dis_date = $F['f_calendar_dis_date'];
if($dis_date == "SI"){
$disableFunct = ", disableFunc:
function(date) {
var d = new Date();
var time = d.getTime() - Date.DAY;
if (date.getTime() < time) {
return true;
} else {
return false;
}
}";
} else {
$disableFunct = "";
}
if($F[$nome]['update_on_close']) $update_on_close = ',
onClose : function(){
document.getElementById("'.$F[$nome]['update_on_close'].'_calendar").value = document.getElementById("'.$nome.'_calendar").value;
this.hide();
}';
else $update_on_close = '';
return $ret_hidden_check_input.'
';
}
else if($F[$nome]['tipo'] == "calendar4") {
$cssCal = $F[$nome]['calendar_css'] ? $F[$nome]['calendar_css'] : "win2k/win2k";
$DATI["dir:_files/calendar/js"] = "COPY";
$DATI["dir:_files/calendar/css"] = "COPY";
$DATI["file:_files/calendar/js/jscal2.js"] = "COPY,VIS";
$DATI["file:_files/calendar/js/lang/$DATI[lang2].js"] = "COPY,VIS";
$DATI["file:_files/calendar/css/jscal2.css"] = "VIS";
$DATI["file:_files/calendar/css/border-radius.css"] = "VIS";
$DATI["file:_files/calendar/css/$cssCal.css"] = "VIS";
if($stileObbligatorio) $STYLE=$F[f_css_sel];
//controllo campo default
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val]) and !$FORM) $valore = $F[$nome][val][$lang];
if($F[$nome]['f_calendar_dis_date'] != "") $dis_date = $F[$nome]['f_calendar_dis_date'];
else $dis_date = $F['f_calendar_dis_date'];
if($dis_date == "SI"){
$disableFunct =
",
disabled: function(date) {
var d = new Date();
var time = d.getTime() - Date.DAY;
if (date.getTime() < time) {
return true;
} else {
return false;
}
}";
} else {
$disableFunct = "";
}
if($F[$nome]['update']) $update_on_close = 'document.getElementById("'.$F[$nome]['update'].'_calendar").value = document.getElementById("'.$nome.'_calendar").value;';
return $ret_hidden_check_input.'
';
}
//CALENDAR ##################
else if($F[$nome]['tipo'] == "calendar") {
$DATI["dir:_files/calendar_langs"] = "COPY";
$DATI["dir:_files/calendar_skins"] = "COPY";
$DATI["file:_files/calendar.js"] = "COPY,VIS";
$DATI["file:_files/calendar-setup.js"] = "COPY,VIS";
$DATI["file:_files/calendar_skins/aqua.css"] = "VIS";
$DATI["file:_files/calendar_skins/calendar.png"] = "COPY";
$DATI["file:_files/calendar_langs/calendar-$DATI[lang2].js"] = "VIS";
if($stileObbligatorio) $STYLE=$F[f_css_sel];
//controllo campo default
if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang];
else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang];
if(is_array($F[$nome][val]) and !$FORM) $valore = $F[$nome][val][$lang];
if($F[$nome]['update_on_close']) $update_on_close = ',
onClose : function(){
document.getElementById("'.$F[$nome]['update_on_close'].'_calendar").value = document.getElementById("'.$nome.'_calendar").value;
this.hide();
}';
else $update_on_close = '';
return $ret_hidden_check_input.'
';
}
else if($F[$nome]['tipo'] == "recaptcha") {
if($stileObbligatorio) $STYLE=$F[f_css_sel];
if($F[$nome]['tipo2'] == "invisible"){
return $ret_hidden_check_input.inserisciRecaptcha($F[$nome]['submit-id']);
}else{
return $ret_hidden_check_input.''.inserisciRecaptcha().'
';
}
}
// else{
// ne arrivano parecchi...
// trigger_error("MOD_FORM chiamata f($nome): tipo non trovato (o $F[$nome] non definito)");
// }
}
function verificaRecaptcha($invisible = true){
if(!$_POST['g-recaptcha-response']) return false;
else{
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'content' => http_build_query(array(
'secret' => $invisible ? $GLOBALS['DATI']["f_recaptcha_secret_invisible"] : $GLOBALS['DATI']["f_recaptcha_secret"],
'response' => stripslashes($_POST['g-recaptcha-response']),
'remoteip' => $_SERVER['REMOTE_ADDR']
))
)
));
$result = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify", false, $context));
if(!$result->success){
if(array_intersect(array("missing-input-secret", "invalid-input-secret"), $result->{'error-codes'})){
trigger_error("Errore con le chiavi recaptcha, le nostre sono su https://www.google.com/recaptcha/admin/site/338906860 oppure https://www.google.com/recaptcha/admin/site/338907004(se il dominio non era inserito non caricava nemmeno la casella)");
}
return false;
}
else $GLOBALS['indiControlloAntispamInserito_verificaRecaptcha'] = true;
}
return true;
}
function inserisciRecaptcha($invisibleSubmitId = null, $inline = false){
global $DATI;
// ricordati di aggiungere il dominio su:
// https://www.google.com/recaptcha/admin/site/338907004 (invisibile)
// oppure
// https://www.google.com/recaptcha/admin/site/338906860 (visibile)
if($invisibleSubmitId){
$DATI["file:https://www.recaptcha.net/recaptcha/api.js?onload=onloadCallback&render=explicit"] = "JS,FORCE,VIS";
return "";
}
else{
$DATI["file:https://www.recaptcha.net/recaptcha/api.js"] = "JS,FORCE,VIS";
return '
';
}
}
//DEPRECATA
function f_submit() {
global $F,$DATI;
$lang = $DATI["lang"];
return encode($F['f_submit'][$lang]);
}
function f_merge($nome) {
global $F;
if(is_array($F[$nome])) {
if(isset($F[$nome]["f_duepunti"])) $F["f_duepunti"] = $F[$nome]["f_duepunti"];
if(isset($F[$nome]["f_txt_t"])) $F["f_txt_t"] = $F[$nome]["f_txt_t"];
if(isset($F[$nome]["f_txt_t_gruppo"])) $F["f_txt_t_gruppo"] = $F[$nome]["f_txt_t"];
}
}
//stampa il nome
function fn($nome,$AGG=NULL) {
global $CONF;
//devo rinominare fn perchè non si può piu usare in php 8
$dbt = debug_backtrace();
if ($dbt[1]["function"] != "flabel") {
$dbg = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]\n";
foreach($dbt as $v) {
$dbg .= $v["file"] .":". $v["line"] . " > " . $v["function"] . "\n";
}
//if($CONF['dove_sono'] == 'loc'){
//trigger_error("'fn' diventerà keyword di PHP, utilizza 'flabel' per favore, grazie, cecca");
//}
}
global $F, $DATI;
if($F["$nome"] == "") return NULL;
//merge
f_merge($nome);
$lang = $DATI["lang"];
//if($F[f_txt_stili] == "SI") $out = ''.$F[$nome][$lang].' ';
if($F[f_err] != "" && $F[$nome]["obb_gruppo"] != ""){
$out = str_replace("#ASTERISCO#",$F['f_err'],$F['f_txt_t_gruppo']);
}elseif($F[f_err] != "" && $F["$nome"]["obb"] == "SI"){
$out = str_replace("#ASTERISCO#",$F['f_err'],$F['f_txt_t']);
}
else $out = str_replace("#ASTERISCO#","",$F['f_txt_t']);
//template per il testo
$out = str_replace("#NOME#",$F[$nome][$lang],$out);
$out = str_replace("#NOME_FORM#",$F['f_nome_form'],$out);
$out = str_replace("#DUEPUNTI#",$F['f_duepunti'],$out);
return encode($out);
}
function f_crea_form($nome_form=NULL) {
//ciclo principale
}
function f_errori($nome_form=NULL) {
global $F,$FORM,$DATI;
if(is_array($F['f_errori'])) {
$lang = $DATI['lang'];
//creo errori
reset($F['f_errori']);
while(list($k, $v)=@each($F['f_errori'])) {
//fix privacy
if($k === "privacy" and $v) $v = strip_tags($v);
$errori .= str_replace("#ERRORE#",$v,$F['f_erro_temp'][$lang]);
}
reset($F['f_errori']);
while(list($k, $v)=@each($F['f_errori'])) {
$errori2 .= "[name*='$k'],";
}
$errori2 = indi_trim_stringa($errori2,",");
$out = str_replace("#ERRORI#",$F['f_erri_temp'][$lang],$F['f_txt_errore'][$lang]);
$out = str_replace("#ERRORI#",$errori,$out);
$out = str_replace("#ERRORI2#",$errori2,$out);
$out = str_replace("#NOME_FORM#",$F['f_nome_form'],$out);
return encode($out);
} else return FALSE;
//ciclo principale
}
function f_messaggio() {
global $F,$FORM,$DATI,$lang;
//DEFAULT INVIO I CAMPI CON QUELLO CHE APPARE NEL $_POST ($FORM)
if($F['f_invio_tipo'] == "DA_FORM") {
@reset($FORM);
while (list ($k, $v) = each ($FORM)) {
if($v != "") {
//privacy bugfix
if($k == "privacy" and $v) $F[$k][$lang] = strip_tags($F[$k][$lang]);
//controllo se l' invio e' disabilitato (FLAG invio)
if($F[$k][invio] != "NO") {
//TEMPLATE mi prendo la configurazione del campo senno' quella gobale
if($F[$k]['f_form_tpl']) $f_form_tpl = $F[$k]['f_form_tpl'];
else $f_form_tpl = $F['f_form_tpl'];
//se il tipo e select_kv
if($F[$k][tipo] == "select_kv" OR $F[$k][tipo] == "select_multiple") {
//costruisco risposta
$stringa1 = "";
$stringa1 = str_replace("#NCAMPO#",indi_br2nl($F[$k][$lang]),$f_form_tpl);
$stringa .= str_replace("#VCAMPO#",$F[$k]['val'][$lang][$v],$stringa1);
//$stringa .= "- ".$F[$k][$lang].": $v \n\n";
} else if($F[$k][tipo] == "check_kv" OR $F[$k][tipo] == "check_kv_div" OR $F[$k][tipo] == "checkbox_kv_cdn") {//fatto carlo per cruisersinitaly
$stringa1 = "";
$stringa1 = str_replace("#NCAMPO#",indi_br2nl($F[$k][$lang]),$f_form_tpl);
$valckv = array();
foreach($F[$k]['val'][$lang] as $kk=>$vv) if(isset($FORM[$k][$kk])) $valckv[] = $vv;
$stringa .= str_replace("#VCAMPO#",implode(", ", $valckv),$stringa1);
} else if($F[$k][tipo] == "file2") {//fatto lorenzo 01/02/2021
$stringa1 = "";
$stringa1 = str_replace("#NCAMPO#",indi_br2nl($F[$k][$lang]),$f_form_tpl);
$stringa .= str_replace("#VCAMPO#",$_FILES['file_'.$k]['name'],$stringa1);
}
else{
//costruisco risposta
$stringa1 = "";
$stringa1 = str_replace("#NCAMPO#",indi_br2nl($F[$k][$lang]),$f_form_tpl);
$stringa .= str_replace("#VCAMPO#",$v,$stringa1);
//$stringa .= "- ".$F[$k][$lang].": $v \n\n";
}
}
}
}
}
//Ordine preso dal file di CONFIGURAZIONE
if($F['f_invio_tipo'] == "DA_CONF") {
reset($F);
while (list ($k, $v) = each ($F)) {
//controllo se l' invio e' disabilitato (FLAG invio)
if((!is_array($F[$k]) || $F[$k][invio] != "NO") and stristr($k,"f_") == FALSE) {
//TEMPLATE mi prendo la configurazione del campo senno' quella gobale
if($F[$k]['f_form_tpl']) $f_form_tpl = $F[$k]['f_form_tpl'];
else $f_form_tpl = $F['f_form_tpl'];
//costruisco risposta
$stringa1 = "";
$stringa1 = str_replace("#NCAMPO#",$F[$k][$lang],$f_form_tpl);
$stringa .= str_replace("#VCAMPO#",$FORM[$k],$stringa1);
}
}
}
//sistemo messaggio
$messaggio = str_replace("#SITO#",$F['f_nome_sito'],$F['f_testo'][$lang]);
$messaggio = str_replace("#MESSAGGIO#",$riga_prima.$stringa.$riga_dopo,$messaggio);
$messaggio = str_replace("#NOME_FORM#",$F['f_nome_form'],$messaggio);
$messaggio = str_replace("#NOME#",$F['f_nomecognome'],$messaggio);
//cecca 13/04/2016 - aggiungo eventuali allegati
if ($_FILES && $F["f_allega_files"]) {
foreach($_FILES as $file){
$messaggio .= "- File allegato: " . $file['name'];
}
}
return $messaggio;
}
function f_resoconto() {
global $F,$FORM,$DATI,$lang;
//RESOCONTO
//creo output resoconto
reset($FORM);
while(list($k, $v)=@each($FORM)) {
if($F[$k]) {
if($F[$k]['risposta'] != "NO") {
if($F[$k]['tipo'] == "select_kv" OR $F[$k]['tipo'] == "select_multiple") {
$v = $F[$k]['val'][$lang][$v];
} else if($F[$k][tipo] == "check_kv" OR $F[$k][tipo] == "check_kv_div" OR $F[$k][tipo] == "checkbox_kv_cdn") {//fatto carlo per cruisersinitaly
$valckv = array();
foreach($F[$k]['val'][$lang] as $kk=>$vv) if(isset($FORM[$k][$kk])) $valckv[] = $vv;
$v = implode(", ", $valckv);
}
if($F[$k][tipo] == "file2") $v = $_FILES["file_".$k]['name'];
//fix privacy
if($k == "privacy") $F[$k][$lang] = strip_tags($F[$k][$lang]);
$dati_tmp = nl2br(str_replace("#DATO#",$v,$F['f_dato_temp'][$lang]));
$campo = $F[$k][$lang];
$dati .= str_replace("#CAMPO#",$campo,$dati_tmp);
}
}
}
//TEMPLATE VARI RISPOSTA
$out = str_replace("#DATI#",$dati,$F['f_dati_temp'][$lang]);
$out = str_replace("#DATI#",$out,$F['f_txt_invio'][$lang]);
$out = str_replace("#NOME#",$F['f_nomecognome'],$out);
$out = str_replace("#NOME_FORM#",$F['f_nome_form'],$out);
$out = indi_tpl($out,$GLOBALS['DATI'],0);
$out = indi_tpl($out,$FORM,0,"Q");
return $out;
}
//creata per semplificare il caso di invio al cliente (imposta automaticamente from/to senza doverli settare manualmente)
function f_invio_visitatore($forzaReplyTo = ''){
/*
$forzaReplyTo può servire nel caso del form di un portale per ottenere:
- mittente: email portale (necessariamente)
- destinatario: esercente / struttura
- reply-to: visitatore
si ottiene mettendo l'esercente / struttura come "compilatore del form" e chiamando f_invio_visitatore col parametro:
$F['f_email_form'] = $struttura['email'];
f_invio_visitatore($FORM['email']);//oppure f_invio_visitatore(array($FORM['email'], $FORM['nome_cognome']));
*/
global $F, $DATI;
$invioStandard = array(
'f_email_form' => $F['f_email_form'],//c'è la mail del visitatore
'f_nomecognome' => $F['f_nomecognome'],//c'è il nome del visitatore
'f_email_dest' => $F['f_email_dest'],//c'è la mail del proprietario del sito (@dominodelsito)
'f_force_from' => $F['f_force_from'],//di normale a false
'f_invio_agg' => $F['f_invio_agg'],//dati tracciatura utente (con controllo email)
'f_invio_agg_force' => $F['f_invio_agg_force'],//dati tracciatura utente (a prescindere)
);
$forzaReplyToNome = '';
$forzaReplyToEmail = '';
if($forzaReplyTo){
if(!is_array($forzaReplyTo)) $forzaReplyTo = array($forzaReplyTo);
$forzaReplyToEmail = $forzaReplyTo[0];
$forzaReplyToNome = $forzaReplyTo[1];
}
$F['f_email_dest']= $invioStandard["f_email_form"];//questa mail va al visitatore
$F['f_email_form'] = $forzaReplyToEmail ? $forzaReplyToEmail : $invioStandard["f_email_dest"];//il mittente è il proprietario del sito
$F['f_nomecognome'] = $forzaReplyToNome ? $forzaReplyToNome : $DATI["nome_sito"];//il mittente è il proprietario del sito
$F['f_force_from'] = $invioStandard["f_email_dest"];//devo forzare il from atrimenti viene usato il destinatario
$F['f_invio_agg'] = "NO";//mai al visitatore
$F['f_invio_agg_force'] = "NO";//mai al visitatore
if($F['f_testo_visitatore']) $F['f_testo'] = $F['f_testo_visitatore'];
$return = f_invio();
//ripristino tutto allo standard
$F = array_merge($F, $invioStandard);
return $return;
}
function f_invio($nome_form=NULL) {
global $_DB;
//sistemo variabili
//inizializzo form
//se non ci sono errori ed e' stato premuto il pulsante invia, mando conferma ed e-mail
global $F,$FORM,$DATI,$lang;
//controllo antispam
$isSpam = !indiControlloAntispamCheckInvio($F['f_nome_form']);
if ($isSpam) {
$ARR["email_debug"] = "mceccarelli@demo.tnx.it";
}
//in ogni caso se ci sono errori torna FALSE
if ((!is_array($F['f_errori']) and $FORM and $_REQUEST['f_nosubmit'] != 1) || $isSpam) {
//cecca, se spam la invio comunque per debug a me
// if(!$GLOBALS['indiControlloAntispamInserito']) trigger_error_to_email("carlo@tnx.it", "Questo form non ha una protezione antispam");
//mando e-mail
//sistemo oggetto
$F['f_oggetto'][$lang] = str_replace("#SITO#",$F['f_nome_sito'],$F['f_oggetto'][$lang]);
$F['f_oggetto'][$lang] = str_replace("#NOME#",$F['f_nomecognome'],$F['f_oggetto'][$lang]);
$messaggio = f_messaggio();
//intorno al messaggio
//$riga_prima .= "\n-------------------------- ".$F[f_testo_msg][$lang]." --------------------------\n";
//$riga_dopo .= "\n---------------------------------------------------------------";
//info prima e dopo
//$messaggio = $F[f_msg_prima].$messaggio.$F[f_msg_dopo];
$messaggio_agg = stat_dati_aggiuntivi();
//Dati aggiuntivi X
if($F['f_invio_agg_force'] == "SI" or ($F['f_invio_agg'] == "SI" and ($F['f_email_dest'] == $DATI['email'] or $F['f_email_dest'] == $DATI['f_email_cc']))) $messaggio_agg2 = $messaggio_agg;
else $messaggio_agg2 = "";
$fromName = '';
$indirizzoRisposte = $F['f_email_form'];//indirizzo email inserito dall'utente
if($F['f_nomecognome'] != ""){//se non c'è nomecognome metto solo email
$fromName = $F['f_nomecognome'];
} else {
$fromName = $F['f_email_form'];//meglio che rimanga vuoto SpamAssassin se trova una mail nel from da' 2.72 (regola PDS_FROM_2_EMAILS)
}
if ($F["f_use_reply_to"]){
//imposto come from l'email destinatario o quella forzata
$fromEmail = $F['f_email_dest'];
if ($F['f_force_from']) {
$fromEmail = $F['f_force_from'];
}
//costruisco f_from più sotto
} else {
$fromEmail = $indirizzoRisposte;
$F['f_from'] = 'From: '.indiEncodeQuoteMailHeader($fromName, $DATI['email_encode'], true).' <'.indiEncodeQuoteMailHeader($fromEmail, $DATI['email_encode']).'>'."\r\n";
}
if(/*$DATI['dove_sono'] == 'rem' && perchè non attivarlo? */$errore = mittenteProblematico($fromEmail)){
// if(!$DATI['ignoraSegnalazioniSostituzioneMittente']) trigger_error("Mittente problematico $fromEmail, sosituisco con $DATI[email_from_generico] (".$errore.")");
if(!$F["f_use_reply_to"]){
$F["f_use_reply_to"] = true;
$indirizzoRisposte = $fromEmail;
}
//else c'è già un reply-to customizzato, lo lascio e cambio solo il from
$fromEmail = $DATI['email_from_generico'];
}
if($F["f_use_reply_to"]){
$F['f_from'] =
//spammassassin ha la regola FROM_WEBSITE che applica 2.50 se trova un sito nel nome from (su 4.5 per essere considerato spam)
'From: '.indiEncodeQuoteMailHeader($fromName/*.' (via '.$DATI['dominio_sito'].')'*/, $DATI['email_encode'], true).' <'.indiEncodeQuoteMailHeader($fromEmail, $DATI['email_encode']).'>'."\r\n".
'Reply-to: '.indiEncodeQuoteMailHeader($fromName, $DATI['email_encode'], true).' <'.indiEncodeQuoteMailHeader($indirizzoRisposte, $DATI['email_encode']).'>'."\r\n".
'Sender: '.$fromEmail."\r\n";//non strettamente necessario, vedi http://stackoverflow.com/a/14555043/2006698
}
//$F['f_from'] = 'From: '.$F['f_nomecognome'].' <'.$F['f_email_form'].'>'."\n";
//header e-mail cc di indi per uso nei sito
if($F['f_email_cc'] != "") {
$CC = $F['f_email_cc'];
$CC_header = "Cc: ".$F['f_email_cc']."\r\n";
}
$BCC = array();
if($F['f_email_bcc']) $BCC[] = $F['f_email_bcc'];
if($F['f_email_indi'] && $GLOBALS['CONF']['dove_sono'] != 'loc') $BCC[] = $F['f_email_indi'];
$BCC = implode(", ", $BCC);
$BCC_header = $BCC ? ("Bcc: ".$BCC."\r\n") : '';
//SOSTITUZIONE TEMPLATE
//sistemo campi lingua in automatico
$messaggio = indi_tpl($messaggio,$GLOBALS["DATI"],0);
$messaggio = indi_tpl($messaggio,$GLOBALS["TXT"],0,"#");
$messaggio = indi_tpl($messaggio,$GLOBALS["DATI"],0);
$messaggio = indi_tpl($messaggio,$GLOBALS["TXT"],0,"#");
$messaggio = indi_tpl($messaggio,$FORM,0,"Q");
$F['f_oggetto'][$lang] = indi_tpl($F['f_oggetto'][$lang],$GLOBALS["DATI"],0);
$F['f_oggetto'][$lang] = indi_tpl($F['f_oggetto'][$lang],$GLOBALS["TXT"],0,"#");
$F['f_oggetto'][$lang] = indi_tpl($F['f_oggetto'][$lang],$GLOBALS["DATI"],0);
$F['f_oggetto'][$lang] = indi_tpl($F['f_oggetto'][$lang],$GLOBALS["TXT"],0,"#");
$F['f_oggetto'][$lang]= indi_tpl($F['f_oggetto'][$lang],$FORM,0,"Q");
//altri header
if($F['f_email_html'] == "SI") {
$headers .= "MIME-Version: 1.0\n";
if (!$F["f_allega_files"]) {
$headers .= "Content-type: text/html; charset=$DATI[email_encode]\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
}
} else {
$headers .= "MIME-Version: 1.0\n";
if (!$F["f_allega_files"]) {
$headers .= "Content-Type: text/plain; charset=$DATI[email_encode]\n";
}
//$headers .= "Content-Transfer-Encoding: 8bit\n";
}
$headers .= $F['f_from'];//"utili" solo per f_return_only dopo passaggio a indi_email / phpmailer6
//cecca 23/03/2016 per return path giusto e passare spf da gmail per esempio
//per info da base.inc.php
//come standard hack è uguale a SI
//$CONF['email_hack_sendmail'] = 'SI'; //imposta come mittente di ritorno della mail l' indirizzo from_email automatico, ovvero quello del sito
//$CONF['email_return'] = 'postmaster@tnx.it'; //e-mail di ritorno per tutte le mail inviate con email_hack_sendmail=NO
//return path
if($DATI["dove_sono"] == "rem") {
if($DATI['email_hack_sendmail'] == "SI") {
//lo standard, vedi sopra
//$sendmail_path = "-F $F[f_email_form] -f $F[f_email_form]"; //cecca, prendeva l'email di chi compilava il form invece di mettere l'email del proprietario del sito
//$sendmail_path = "-F $F[f_email_dest] -f $F[f_email_dest]";
$sendmail_path = "-F $fromEmail -f $fromEmail"; //cecca, vedi sopra dove controlla f_reply_to, per forzare il mittente (problema bellatoscana mail ad agente e cc a bellatoscana)
$ARR["from_email"] = $fromEmail;//aggiornamento carlo/ceccca dopo phpmailer6 dic 2020
} else {
$sendmail_path = "-F $DATI[email_return] -f $DATI[email_return]";
$ARR["from_email"] = $DATI['email_return'];//aggiornamento carlo/ceccca dopo phpmailer6 dic 2020
}
}
//con indi_email non serve più
// $oggetto = indiEncodeQuoteMailHeader($F['f_oggetto'][$lang], $DATI['email_encode']);
$oggetto = $F['f_oggetto'][$lang];
//HTML
if($F['f_email_html'] == "SI") {
$messaggio_html = nl2br($messaggio.$messaggio_agg2);
$messaggio = "
$messaggio_html
";
} else {
$messaggio = $messaggio.$messaggio_agg2;
}
//SPEDIZIONE E-MAIL
/*
//cecca 13/04/2016 provo invio tramite indi_email per allegati
if (!$F["f_allega_files"]) {
//e-mail principale del form con eventuale CC
if ($F['f_email_dest'] != "") {
if($DATI["email_log"] == "SI") {
indi_log_file("EMAIL \"$oggetto\" - from: $fromEmail -> to:$F[f_email_dest] cc: $F[f_email_cc]");
}
if($F['f_return_only']) {
return array($F['f_email_dest'], $oggetto,$messaggio,$headers.$CC_header.$BCC_header, $sendmail_path);//carlo: la uso per gli scammer su mtp
} else {
indi_email_wrapper($F['f_email_dest'], $oggetto, $messaggio, $headers.$CC_header.$BCC_header, $sendmail_path);
}
}
//e-mail di copia ed e-mail di INDI
//CARLO 8/2/2018: adesso usa bcc per vedere vero destinatario e cc
//if($F['f_email_indi'] != "" and $F['f_email_dest'] != "" and $GLOBALS['CONF']['dove_sono'] != 'loc') {
// indi_email_wrapper($F['f_email_indi'], "INDI:FORM:".$oggetto,$messaggio,$headers, $sendmail_path);
//}
//copia webmaster disabilitata c'e' Account condiviso
} else {
$ARR["to"] = $F['f_email_dest'];
if($F['f_email_indi'] != "" and $F['f_email_dest'] != "" and $GLOBALS['CONF']['dove_sono'] != 'loc') {
$ARR["email_copia"] = $F['f_email_indi'];
}
//per forzare di non inviare l'email "COPIA:" o cambiare il destinatario dell'email copia
if ($F['f_email_copia']) {
$ARR["email_copia"] = $F['f_email_copia'];
}
$ARR["email_allegati_post_files"] = $_FILES;
$ARR["oggetto"] = $oggetto;
$ARR["messaggio"] = $messaggio;
$ARR["headers"] = $headers;
// $ARR["sendmail_path"] = $sendmail_path;//aggiornamento carlo/ceccca dopo phpmailer6 dic 2020
$ARR["email_html"] = $F['f_email_html'];//aggiornamento carlo/ceccca dopo phpmailer6 dic 2020
indi_email($ARR);
}
*/
//cecca 14/05/2021 unifico invio email passando da indi_email
if ($F['f_email_dest'] != "") {
if($DATI["email_log"] == "SI") {
indi_log_file("EMAIL \"$oggetto\" - from: $fromEmail -> to:$F[f_email_dest] cc: $F[f_email_cc]");
}
if($F['f_return_only']) {
return array($F['f_email_dest'], $oggetto,$messaggio,$headers.$CC_header.$BCC_header, $sendmail_path);//carlo: la uso per gli scammer su mtp
}
$ARR["to"] = $F['f_email_dest'];
if($F['f_email_indi'] != "" and $F['f_email_dest'] != "" and $GLOBALS['CONF']['dove_sono'] != 'loc') {
$ARR["email_copia"] = $F['f_email_indi'];
}
//per forzare di non inviare l'email "COPIA:" o cambiare il destinatario dell'email copia
if ($F['f_email_copia']) {
$ARR["email_copia"] = $F['f_email_copia'];
}
if ($F["f_allega_files"] && $_FILES) {
$listaFiles = [];
foreach($_FILES as $kFile => $infoFile) if($infoFile["tmp_name"]) $listaFiles[$kFile] = $infoFile;
if($listaFiles) $ARR["email_allegati_post_files"] = $listaFiles;
}
$ARR["oggetto"] = $oggetto;
$ARR["messaggio"] = $messaggio;
// $ARR["headers"] = $headers;//non supportati con phpmailer6
$ARR["email_replyto"] = $indirizzoRisposte;
$ARR["email_replyto_name"] = $fromName;
// $ARR["sendmail_path"] = $sendmail_path;
$ARR["email_html"] = $F['f_email_html'];
if($CC) $ARR['email_cc'] = $CC;
if($BCC) $ARR['email_bcc'] = $BCC;
if ($isSpam) {
$ARR["oggetto"] = "[indiControlloAntispamCheckInvio:SPAM] " . $oggetto;
}
//27/10/2025 cecca, aggiungo log per trovare soluzione a questi invii da bot
$full_url = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://") . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$dblogform = ["sito"=>$DATI["nome_sito"]
, "url"=>$full_url
, "mitt"=>$ARR["from_email"]
, "reply_to"=>$ARR["email_replyto"]
, "dest"=>$ARR["to"]
, "dest_cc"=>$ARR["email_cc"]
, "dest_bcc"=>$ARR["email_bcc"]
, "oggetto"=>$ARR["oggetto"]
, "messaggio"=>$ARR["messaggio"]
, "altro"=>print_r($ARR, true)
, "remote_ip"=>$_SERVER["REMOTE_ADDR"]
, "ua"=>$_SERVER["HTTP_USER_AGENT"]
];
if($_DB) $_DB->insert("indi_admin.form_log", $dblogform);
indi_email($ARR);
}
if ($isSpam) return false;
$out = encode(f_resoconto());
//d($messaggio,"MESSAGGIO");
//d($out,"RISPOSTA");
return $out;
} else {
return FALSE;
}
}
//header
function f_head($nome_form=NULL) {
global $F,$DATI;
$lang = $DATI['lang'];
$out = str_replace("#NOME_FORM#",$F['f_nome_form'],$F['f_txt_head'][$lang]);
return $out;
}
function f_form() {
global $F,$FORM,$DATI;
f_init();
//DEBUG
//d($F,"CONFIGURAZIONE");
//d($FORM,"FORM");
//se non ci sono errori e
if(!is_array($F['f_errori']) and $FORM) {
return TRUE;
}
else return FALSE;
}
function f_auto() {
global $F,$DATI;
$lang = $DATI['lang'];
f_init();
//print "aa";
//creo la form
if(f_invio() == FALSE) {
reset($F);
$out_table = $F['f_table_t'][$lang];
while(list($k, $v)=@each($F)) {
if(is_array($v) and $v['tipo']) {
if($F[$k]['tipo'] != "hidden") {
$form_tmp = str_replace("#NOME_CAMPO#",fn($k),$F['f_table_riga_t'][$lang]);
$form_tmp = str_replace("#CAMPO#",f($k),$form_tmp);
$form .= $form_tmp;
} else {
$out_hidden_tmp .= f($k);
}
}
}
$out_table = str_replace("#HEADER#",f_head(),$out_table);
$out_table = str_replace("#ERRORI#",f_errori(),$out_table);
$out_table = str_replace("#SUBMIT#",$F['f_submit'][$lang],$out_table);
$out_table = str_replace("#FORM#",$form,$out_table);
$out_table = str_replace("#HIDDEN#",$out_hidden_tmp,$out_table);
$out_table = str_replace("#NOME_FORM#",$F['f_nome_form'],$out_table);
return $out_table;
} else {
$out = str_replace("#CONFERMA#",f_invio(),$F['f_table_risp_t'][$lang]);
$out = str_replace("#NOME_FORM#",$F['f_nome_form'],$out);
return $out;
}
}
// Lore 8/10/20 alias per problemi validazione codice su vscode. fn è diventata una funzione riservata di php7.
function flabel($nome,$AGG=NULL) {
return fn($nome,$AGG);
}
function fControllaCampoNonCompilato($obb){
global $DATI, $F;
if($DATI["indi_subversion"] > 5) {
if($obb == "SI" and $F['f_err_class'] and f_is_real_post()) return true;
} else {
if($obb == "SI" and $F['f_err_class']) return true;
}
return false;
}
?>