array( "email" => $email, "link_verifica" => $link_verifica ), "to" => $email, "from_nome" => $DATI['nome_sito'], "from_email" => $DATI['email'], "oggetto" => $TXT[$cancellazione?'newsletter_email_cancellazione_oggetto':'newsletter_email_oggetto']." (".$email.") [{dominio_sito}]", "email_copia" => "NO",//aggiunto carlo 13/12/2018 "messaggio" => $TXT[$cancellazione?'newsletter_email_cancellazione_corpo':'newsletter_email_corpo'] )); return TRUE; } else { return FALSE; } } } function generaLinkVerificaEmailNewsletter($email, $cancellazione = false, $lingua = null){ global $lang; if(!$lingua) $lingua = $lang; $linkVerifica = ""; if(trim($email) != "") { $codice = db_qrs("SELECT cod_conferma FROM " . newsletter_getTab("users") . " WHERE email = '$email'"); $parametriGenerazioneVerifica = []; $parametriGenerazioneVerifica["action"] = "newsletter_verifica"; $parametriGenerazioneVerifica["email"] = $email; $parametriGenerazioneVerifica["cod"] = $codice; if($cancellazione) $parametriGenerazioneVerifica["cancellazione"] = 1; $linkVerifica = genera_link_email('newsletter',$lingua,$parametriGenerazioneVerifica,"newsletter"); } return $linkVerifica; } function newsletter_visita_link(){ global $_DB, $DATI; //frequentemente arrivano encodati male // https://filarete.mangiaadomicilio.it/?action=newsletter_go&i=b092c325&to=https%3A%2F%2Fm.facebook.com%2FMangia.a.Domicilio%2F&mid=887832&uid=5193&p=newsletter&l=ita // [amp;i] => b092c325 // [amp;to] => https://m.facebook.com/Mangia.a.Domicilio/ // [amp;mid] => 887832 // [amp;uid] => 5193 // [amp;p] => newsletter // [amp;l] => ita if(!$_GET['to'] && $_GET['amp;to']) $_GET['to'] = $_GET['amp;to']; if(!$_GET['mid'] && $_GET['amp;mid']) $_GET['mid'] = $_GET['amp;mid']; if(!$_GET['i'] && $_GET['amp;i']) $_GET['i'] = $_GET['amp;i']; if(!$_GET['uid'] && $_GET['amp;uid']) $_GET['uid'] = $_GET['amp;uid']; if(!$_GET['to']){ $errore = "Parametro \"to\" non trovato"; } else if(substr(sha1("TnX".$_GET['to']), 0, 8) != $_GET['i']){ $errore = "Url hash check fallito"; } else if(!$_DB->qrs("select count(*) from " . newsletter_getTab("mails") . " where id = ?", [$_GET['mid']])){ $errore = "Mail non trovata"; $errore = true;//no trigger_error } else if(!$_DB->qrs("select count(*) from " . newsletter_getTab("mails") . " where id = ? AND user_id = ?", [$_GET['mid'], $_GET['uid']])){ $errore = "Mail non indrizzata all'utente"; $errore = true;//no trigger_error } if($errore){ // if($errore !== true) trigger_error_to_carlo("[NEWSLETTER] $errore"); indi_redirect_pagina($DATI['pagina_def']); } else{ $_DB->insert(newsletter_getTab('mailclicks'), ['link'=>$_GET['to'], 'mail_id'=>$_GET['mid']]); $_DB->q('UPDATE '.newsletter_getTab("mails").' SET track_date = now() WHERE id = ?', [$_GET['mid']]); } header("Location: ".$_GET['to']); } function newsletter_visita_link_post_include(){ if($_REQUEST['action'] == "newsletter_go") newsletter_visita_link(); } indi_add_action("post_include", "newsletter_visita_link_post_include"); //Iscrizione function newsletterIscrizioneFormBase($datiPost, $datiForm) { global $DATI; if($datiPost["email"]){ $email = $datiPost["email"]; $nome = array_key_exists("name", $datiPost) && $datiPost["name"] ? $datiPost["name"] : null; $cognome = array_key_exists("lastname", $datiPost) && $datiPost["lastname"] ? $datiPost["lastname"] : null; $iscrizioneOk = newsletter_iscrizione($email, $nome, $cognome, true); } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_err_1|div(err ajax)##"; $iscrizioneOk = false; } $return = []; $return["completato"] = $iscrizioneOk; if($iscrizioneOk){ if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $vars = []; $numeroMessaggio = 0; if($DATI["newsletter_msg_iscrizione"]["completato"] == "error") $stampaForm = true; $vars["elemento"]["messaggi"]["lista"][0]["tipologia"] = $DATI["newsletter_msg_iscrizione"]["completato"]; // ok|error|warning|info $vars["elemento"]["messaggi"]["lista"][0]["dati"]["testo"]["html"] = $DATI["newsletter_msg_iscrizione"]["testo"]; $numeroMessaggio++; ob_start(); include($DATI["cdn_basepath"]."_pagine/elementi/messaggioBox/messaggioBox.inc.php"); $return["output"] = ob_get_clean(); } else { $return["output"] = $DATI['newsletter_msg_iscrizione']; } } else { $return["errori"][] = $DATI['newsletter_msg_iscrizione']; } return $return; } function newsletter_iscrizione($email=NULL,$nomePassato=null,$cognomePassato=null) { global $DATI,$TXT,$lang; $DATI['newsletter_msg_iscrizione'] = $DATI["formato_dati_messaggi_newsletter"] == "array" ? [] : ""; if(!$email){ //rimetto nell' array del GET le variabili passate via ajaxs if($_REQUEST['ajax_data']) parse_str($_REQUEST['ajax_data'], $_REQUEST); $_REQUEST['email'] = strtolower(trim($_REQUEST['email'])); if(!$_REQUEST['privacy']) { if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_iscrizione']["completato"] = "error"; $DATI['newsletter_msg_iscrizione']["testo"] = "##newsletter_err_4##"; } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_err_4|div(err ajax)##"; } return false; } //msg iscrizione $email = $_REQUEST['email']; } if($DATI["newsletter_verifica"] == "SI") $verifiedSql = "verified"; else $verifiedSql = "1"; if($email == "") { if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_iscrizione']["completato"] = "error"; $DATI['newsletter_msg_iscrizione']["testo"] = "##newsletter_err_1##"; } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_err_1|div(err ajax)##"; } return FALSE; } elseif(vemail($email) != 0) { if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_iscrizione']["completato"] = "error"; $DATI['newsletter_msg_iscrizione']["testo"] = "##newsletter_err_2##"; } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_err_2|div(err ajax)##"; } return FALSE; } elseif(db_qrs("SELECT email FROM " . newsletter_getTab("users") . " WHERE email = '$email' and $verifiedSql=1 and newsletter = 1")) { //utente già iscritto if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_iscrizione']["completato"] = "info"; $DATI['newsletter_msg_iscrizione']["testo"] = "##newsletter_ok_1##"; } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_ok_1|div(ok ajax)##"; } return TRUE; } elseif(db_qrs("SELECT email FROM " . newsletter_getTab("users") . " WHERE email = '$email' and ($verifiedSql != 1 or newsletter != 1)")) { //stato $DATI["newsletter_action"] = "iscrizione"; if($DATI["newsletter_verifica"] == "SI") { newsletter_email_verifica($email); if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_iscrizione']["completato"] = "warning"; $DATI['newsletter_msg_iscrizione']["testo"] = "##newsletter_err_3##"; } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_err_3|div(err ajax)##"; } } else { //aggiorno $res = db_q("UPDATE " . newsletter_getTab("users") . " SET newsletter = 1 WHERE email = '".$email."' " ); if($res) { if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_iscrizione']["completato"] = "ok"; $DATI['newsletter_msg_iscrizione']["testo"] = "##newsletter_ver_ok##"; } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_ver_ok|div(ok ajax)##"; } } } return TRUE; } else { $DATI["newsletter_action"] = "iscrizione"; if($DATI["newsletter_verifica"] == "SI"){ if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_iscrizione']["completato"] = "ok"; $DATI['newsletter_msg_iscrizione']["testo"] = "##newsletter_ok_2##"; } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_ok_2|div(ok ajax)##"; } } else { if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_iscrizione']["completato"] = "warning"; $DATI['newsletter_msg_iscrizione']["testo"] = "##newsletter_ver_ok##"; } else { $DATI['newsletter_msg_iscrizione'] = "##newsletter_ver_ok|div(ok ajax)##"; } } //genero password $pass = indi_genera_codice("4"); $cod_conferma = indi_genera_codice("8"); $pass_md5 = md5($pass); //SALVO REFERRER $referrer = $_SESSION["STAT"]['ref']; //referrer alternativo/forzato if($_COOKIE['alt_referrer'] != "") $referrer = $_COOKIE['alt_referrer']; if($DATI["newsletter_verifica"] == "SI") $verified = 0; else $verified = 1; $email = strtolower(trim($email)); //inserisce l' utente nel database //???username da togliere forse $nome = $email; if($nomePassato){ $nome = $nomePassato; } else if($_REQUEST["nome"]){ $nome = $_REQUEST["nome"]; } else if($_REQUEST["newsletter_name"]){ $nome = $_REQUEST["newsletter_name"]; } if($cognomePassato){ $lastname = $cognomePassato; } else if($_REQUEST["newsletter_lastname"]){ $lastname = $_REQUEST["newsletter_lastname"]; } //carlo: può esserci duplicate entry $res = db_q("INSERT INTO " . newsletter_getTab("users") . " SET username = '".$email."', name = '".$nome."', lastname = '".$lastname."', email='".$email."', newsletter = 1, passwd='$pass_md5', cod_conferma='$cod_conferma', lingua_comunicazioni='$lang', verified='$verified', active='0', group_id='$DATI[newsletter_id_gruppo]', created=CURRENT_TIMESTAMP " ); if(!$res) { return FALSE; } else { $id = db_qrs("SELECT LAST_INSERT_ID()"); } if($id && function_exists("operazioniAggiuntivePostIscrizioneNewsletter")){ operazioniAggiuntivePostIscrizioneNewsletter($id); } //EMAIL CONFERMA INSCRIZIONE if($DATI["newsletter_email_conferma"] == "SI" and $id) { indi_email(array( "TPL" => array( "email" => $email, "link_verifica" => $link_verifica ), "to" => $email, "from_nome" => $DATI['nome_sito'], "from_email" => $DATI['email'], "oggetto" => $TXT['newsletter_email_registrazione_oggetto']." (".$email.") [{dominio_sito}]", "messaggio" => $TXT['newsletter_email_registrazione_corpo'], "email_copia" => "NO",//aggiunto carlo 13/12/2018 )); } //NAZIONE aggiunge nazione se necessario if($DATI["newsletter_nazione"] == "SI" and $id) { $nazione = addslashes($indi_get_nazione_from_ip($_SERVER['REMOTE_ADDR'])); if($nazione) { if(!db_q("update " . newsletter_getTab("users") . " SET nazione = '$nazione' WHERE id = $id")) d_err("ERRORE newsletter, Salvataggio NAZIONE: '$nazione' "); } } //REFERRER if($DATI["newsletter_referrer"] == "SI" and $id) { $referrer = addslashes($referrer); if($referrer) { $res = db_q("update " . newsletter_getTab("users") . " SET referrer = '$referrer' WHERE id = $id"); if(!$res) d_err("ERRORE newsletter, Salvataggio REFERRER: '$referrer'"); } } //manda e-mail if($DATI["newsletter_verifica"] == "SI") newsletter_email_verifica($email); //controllo se esiste la tabella o se c'è ma manca una colonna //1054 unknown column 1146 table not exist /* if (mysql_tnx_errno() == 1054 || mysql_tnx_errno() == 1146) { //caso errore colonna if (mysql_tnx_errno() == 1054) { db_q("rename table newsletter to newsletter_old_indi_automatico"); } db_q(" CREATE TABLE `newsletter` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `email` VARCHAR(255) NOT NULL, `codice_conferma` VARCHAR(255) NULL DEFAULT NULL, `attivo` INT(1) NOT NULL DEFAULT '0', `data_registrazione` TIMESTAMP NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `email` (`email`)) "); db_q($sql); } */ return TRUE; } } //rimozione function newsletter_cancellazione_query($email,$cod){ //newsletter_rem - rimuove dalla newsletter //cecca aggiungo colonna per vedere quando hanno cliccato su newsletter_rem $tsrem = db_qrs("SHOW COLUMNS FROM " . newsletter_getTab("users") . " LIKE 'newsletter_rem'"); if (!$tsrem) { db_q("ALTER TABLE " . newsletter_getTab("users") . " ADD COLUMN `newsletter_rem` DATETIME NULL DEFAULT NULL"); } $res = db_q("UPDATE " . newsletter_getTab("users") . " SET newsletter_rem = '" . date('Y-m-d H:i:s') . "' WHERE cod_conferma = '$cod' and email='$email'"); $res = db_q("UPDATE " . newsletter_getTab("users") . " SET newsletter = 0 WHERE cod_conferma = '$cod' and email='$email'"); if(db_qrs("select id from " . newsletter_getTab("users") . " WHERE email='$email' and cod_conferma = '$cod' and newsletter = 0") and $email) return true; else return false; } //rimozione function newsletter_cancellazione_query_forzata($email){ //inserisce nel database $res = db_q("UPDATE " . newsletter_getTab("users") . " SET newsletter = 0 WHERE email='$email'"); if(db_qrs("select id from " . newsletter_getTab("users") . " WHERE email='$email' and newsletter = 0") and $email) return true; else return false; } //PERSONALIZZATA DENTRO SITO INVOICEX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! function newsletter_rimozione($email=NULL,$cod=NULL) { global $DATI,$TXT; if($email == NULL and $cod == NULL) { //rimetto nell' array del GET le variabili passate via ajaxs if($_REQUEST['ajax_data']) parse_str($_REQUEST['ajax_data'], $_REQUEST); // else{ // $headers = getallheaders(); // if($headers['List-Unsubscribe']) //non serve // } $email = $_REQUEST['email']; $cod = $_REQUEST['cod']; } $email = strtolower(trim($email)); $cod = trim($cod); if(!isset($DATI['newsletter_msg_verifica'])){ $DATI['newsletter_msg_verifica'] = $DATI["formato_dati_messaggi_newsletter"] == "array" ? [] : ""; } if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_rimozione']["completato"] = "error"; $DATI['newsletter_msg_rimozione']["testo"] = "##newsletter_rem_err##"; } else { $DATI['newsletter_msg_rimozione'] = "##newsletter_rem_err|div(err ajax)##"; } //rimozione senza codice (in futuro con cod_conferma) if($email == "") { if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_rimozione']["completato"] = "error"; $DATI['newsletter_msg_rimozione']["testo"] = "##newsletter_err_1##"; } else { $DATI['newsletter_msg_rimozione'] = "##newsletter_err_1|div(err ajax)##"; } } else { if(!$cod){ if(db_qrs("SELECT email FROM " . newsletter_getTab("users") . " WHERE email = '" . addslashes($email) . "'")) { newsletter_email_verifica($email, true); if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_rimozione']["completato"] = "error"; $DATI['newsletter_msg_rimozione']["testo"] = "##newsletter_err_5|div(err ajax)##"; } else { $DATI['newsletter_msg_rimozione'] = "##newsletter_err_5|div(err ajax)##"; } return true; } else { if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_rimozione']["completato"] = "warning"; $DATI['newsletter_msg_rimozione']["testo"] = "##newsletter_rem_err##"; } else { $DATI['newsletter_msg_rimozione'] = "##newsletter_rem_err|div(err ajax)##"; } } } else { if(newsletter_cancellazione_query($email, $cod) || (function_exists("newsletter_cancellazione_custom") && newsletter_cancellazione_custom($email, $cod))) { if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_rimozione']["completato"] = "ok"; $DATI['newsletter_msg_rimozione']["testo"] = "##newsletter_rem_ok##"; } else { $DATI['newsletter_msg_rimozione'] = "##newsletter_rem_ok|div(ok ajax)##"; } //EMAIL CONFERMA DISISCRIZIONE if($DATI["newsletter_email_conferma"] == "SI") { indi_email(array( "TPL" => array( "email" => $email, "link_verifica" => $link_verifica ), "to" => $email, "from_nome" => $DATI['nome_sito'], "from_email" => $DATI['email'], "oggetto" => $TXT['newsletter_email_rimozione_oggetto']." (".$email.") [{dominio_sito}]", "messaggio" => $TXT['newsletter_email_rimozione_corpo'] )); } return TRUE; } } } return false; } //verifica newsletter, con click dall' e-mail function newsletter_verifica() { global $DATI; //default da errore if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_verifica']["completato"] = "error"; $DATI['newsletter_msg_verifica']["testo"] = "##newsletter_ver_err##"; } else { $DATI['newsletter_msg_verifica']= "##newsletter_ver_err##"; } $DATI['testo_verifica'] = "##newsletter_ver_err##"; if($_REQUEST['cod'] != "" and $_REQUEST['email'] != "") { $_REQUEST['email'] = strtolower(trim($_REQUEST['email'])); if(db_qrs("SELECT email FROM " . newsletter_getTab("users") . " WHERE email = '$_GET[email]' and cod_conferma = '$_GET[cod]'")) { $flag = $_REQUEST['cancellazione'] ? 0 : 1; if(db_q("UPDATE " . newsletter_getTab("users") . " SET verified = 1, newsletter = $flag WHERE email = '$_GET[email]' and cod_conferma = '$_GET[cod]'")) { $DATI['testo_verifica'] = $_REQUEST['cancellazione'] ? "##newsletter_cancellazione_ver_ok##" : "##newsletter_ver_ok##"; if($DATI["formato_dati_messaggi_newsletter"] == "array"){ $DATI['newsletter_msg_verifica']["completato"] = "ok"; $DATI['newsletter_msg_verifica']["testo"] = $_REQUEST['cancellazione'] ? "##newsletter_cancellazione_ver_ok##" : "##newsletter_ver_ok##"; } else { $DATI['newsletter_msg_verifica']= $_REQUEST['cancellazione'] ? "##newsletter_cancellazione_ver_ok|div(ok ajax)##" : "##newsletter_ver_ok|div(ok ajax)##"; } return TRUE; } } } return FALSE; } function newsletter_track() { indiObCleanAll(); if(!is_spider()){ @$NEWSLETTER = cakeBoot('Newsletter'); @$NEWSLETTER->track($_REQUEST['track_check']); } $trans_gif_64 = "R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw=="; indiObCleanAll(); header("Content-type: image/gif"); echo base64_decode($trans_gif_64); die(); } function newsletter_read() { global $CONF; //all'interno della pagina c'è l'immagine che fa il track indiObCleanAll(); $NEWSLETTERCONTROLLER = cakeBoot('NewslettersController'); $nl = $NEWSLETTERCONTROLLER->Newsletter->read($_REQUEST); if(strpos($nl, "cid:") !== false){ $nl = $NEWSLETTERCONTROLLER->replaceCIDimages($nl, $NEWSLETTERCONTROLLER->Newsletter->newsletterIdFromTrackCheck($_REQUEST['id']), $CONF["CAKE_DIR"]); } if(!$nl) $nl = $GLOBALS['DATI']['lang'] == 'ita' ? "Questo contenuto non è più disponibile" : "This content is no longer available"; die($nl); } ?>