$config->session_duration) { session_unset(); session_destroy(); session_start(); $_SESSION['hash'] = $hash; } $_SESSION['last_activity'] = $time; return $_SESSION['hash']; } $_SESSION['hash'] = $hash; return $hash; } function PP_DestroySession($hash = 0, $id_utente = 0){ global $config; if (!empty($hash)) { $hash = PP_Secure($hash); session_unset(); session_destroy(); $query = "DELETE FROM " . T_SESSIONI . " WHERE hash = '$hash'"; mysqli_query($config->db, $query); } if (!empty($id_utente)) { $id_utente = PP_Secure($id_utente); session_unset(); session_destroy(); $query = "DELETE FROM " . T_SESSIONI . " WHERE id_utente = $id_utente"; mysqli_query($config->db, $query); } return true; } function PP_CheckSession($hash = '', $require_login = false) { global $config; if (!isset($_SESSION['hash']) || empty($_SESSION['hash'])) { return false; } if (empty($hash)) { return false; } if ($hash == $_SESSION['hash']) { if(!$require_login){ return true; }else{ $query = "SELECT id_utente FROM " . T_SESSIONI . " WHERE hash = '$hash' LIMIT 1"; $query = mysqli_query($config->db, $query); $query_sql = mysqli_fetch_assoc($query); if ($query_sql['id_utente'] > 0 && !empty($_SESSION['id_utente']) && $query_sql['id_utente'] == $_SESSION['id_utente']) { return true; } } } return false; } function PP_GetIP() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress; } function PP_Secure($string, $censored_words = 1, $br = true, $strip = 0) { global $config; $string = trim($string); $string = PP_CleanString($string); $string = mysqli_real_escape_string($config->db, $string); //$string = htmlspecialchars($string, ENT_QUOTES); if ($br == true) { $string = str_replace('\r\n', "
", $string); $string = str_replace('\n\r', "
", $string); $string = str_replace('\r', "
", $string); $string = str_replace('\n', "
", $string); } else { $string = str_replace('\r\n', "", $string); $string = str_replace('\n\r', "", $string); $string = str_replace('\r', "", $string); $string = str_replace('\n', "", $string); } if ($strip == 1) { $string = stripslashes($string); } //$string = str_replace('&#', '&#', $string); /* if ($censored_words == 1) { global $config; $censored_words = @explode(",", $config['censored_words']); foreach ($censored_words as $censored_word) { $censored_word = trim($censored_word); $string = str_replace($censored_word, '****', $string); } } */ return $string; } function PP_CleanString($string) { return $string = preg_replace("/&#?[a-z0-9]+;/i","", $string); } function PP_PrintIfKeyExist($array, $key){ if(array_key_exists($key, $array)) { return $array[$key]; } return null; } function PP_SearchComune($data){ global $config; if(strlen($data['term']) >= 2){ $query = "SELECT id as id, comune as label, id as value FROM " . T_COMUNI . " WHERE comune LIKE '%{$data['term']}%'"; $query = mysqli_query($config->db, $query); $comuni = array(); while($query_sql = mysqli_fetch_assoc($query)){ $comuni[] = $query_sql; } return $comuni; }else{ return null; } } function PP_GetComuneById($id){ global $config; $query = "SELECT * FROM " . T_COMUNI . " WHERE id = $id"; $query = mysqli_query($config->db, $query); if($query_sql = mysqli_fetch_assoc($query)){ return $query_sql; } return null; } function PP_TempoDueCifre($tempo){ if(intval($tempo) < 10){ $tempo = '0'.$tempo; } return $tempo; } function PP_BuildCalendarUtenti($month, $year, $id_attivita){ global $config; $tempi = PP_GetTempiByIdAttivita($id_attivita); $prenotazioni = PP_GetNumeroPrenotazioniMese(PP_GetPrenotazioni($id_attivita, null, date("{$year}-{$month}-01"), date("{$year}-{$month}-t"), null, null)); $daysOfWeek = array('D','L','M','M','G','V','S'); $firstDayOfMonth = mktime(0,0,0,$month,1,$year); $numberDays = date('t',$firstDayOfMonth); $dateComponents = getdate($firstDayOfMonth); $monthName = $dateComponents['month']; $monthName = $config->mesi[intval($month) - 1]; $dayOfWeek = $dateComponents['wday']; $calendar = "

$monthName $year

"; $calendar .= ""; $calendar .= ""; foreach($daysOfWeek as $day) { $calendar .= ""; } $currentDay = 1; $calendar .= ""; if ($dayOfWeek > 0) { $calendar .= ""; } $month = str_pad($month, 2, "0", STR_PAD_LEFT); while($currentDay <= $numberDays){ if($dayOfWeek == 7){ $dayOfWeek = 0; $calendar .= ""; } $currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT); $date = "$year-$month-$currentDayRel"; $today = ''; $prenotabile = ''; if(date('Y-m-d') == $date) { $today = 'success'; } $html_prenotazioni = ''; if(count(PP_GetTempiByDayWeek($tempi, $dayOfWeek))>0 && date('Y-m-d') <= $date){ $prenotabile = 'day-click'; $html_prenotazioni = (!empty($prenotazioni[$currentDay]['count'])) ? "
".$prenotazioni[$currentDay]['count']."
" : ""; } $calendar .= ""; $currentDay++; $dayOfWeek++; } if($dayOfWeek != 7){ $remainingDays = 7 - $dayOfWeek; $calendar .= ""; } $calendar .= ""; $calendar .= "
$day
 
$html_prenotazioni
$currentDay
 
"; return $calendar; } function PP_BuildCalendarAttivita($month, $year, $id_attivita){ global $config; $tempi = PP_GetTempiByIdAttivita($id_attivita); $prenotazioni = PP_GetNumeroPrenotazioniMese(PP_GetPrenotazioni($id_attivita, null, date("{$year}-{$month}-01"), date("{$year}-{$month}-t"), null, null)); $daysOfWeek = array('D','L','M','M','G','V','S'); $firstDayOfMonth = mktime(0,0,0,$month,1,$year); $numberDays = date('t',$firstDayOfMonth); $dateComponents = getdate($firstDayOfMonth); $monthName = $dateComponents['month']; $monthName = $config->mesi[intval($month) - 1]; $dayOfWeek = $dateComponents['wday']; $calendar = "

$monthName $year

"; $calendar .= ""; $calendar .= ""; foreach($daysOfWeek as $day) { $calendar .= ""; } $currentDay = 1; $calendar .= ""; if ($dayOfWeek > 0) { $calendar .= ""; } $month = str_pad($month, 2, "0", STR_PAD_LEFT); while($currentDay <= $numberDays){ if($dayOfWeek == 7){ $dayOfWeek = 0; $calendar .= ""; } $currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT); $date = "$year-$month-$currentDayRel"; $today = ''; $prenotabile = ''; if(date('Y-m-d') == $date) { $today = 'success'; } if(count(PP_GetTempiByDayWeek($tempi, $dayOfWeek))>0){ $prenotabile = 'day-click'; } $html_prenotazioni = (!empty($prenotazioni[$currentDay]['count'])) ? "
".$prenotazioni[$currentDay]['count']."
" : ""; $calendar .= ""; $currentDay++; $dayOfWeek++; } if($dayOfWeek != 7){ $remainingDays = 7 - $dayOfWeek; $calendar .= ""; } $calendar .= ""; $calendar .= "
$day
 
$html_prenotazioni
$currentDay
 
"; return $calendar; } function PP_UrlfyString($string){ return preg_replace('/[^a-zA-Z0-9_-]+/', '-', strtolower($string)); } function PP_GetNAziende($real = false){ global $config; $query = "SELECT COUNT(*) as totale FROM " . T_ATTIVITA . ""; $query = mysqli_query($config->db, $query); if($totale = mysqli_fetch_assoc($query)){ if($real){ return $totale['totale']; } return intval((time() - strtotime("2020-05-01"))/(60*30) + $totale['totale']); } return 0; } function PP_GetNUtenti($real = false){ global $config; $query = "SELECT COUNT(*) as totale FROM " . T_UTENTI . ""; $query = mysqli_query($config->db, $query); if($totale = mysqli_fetch_assoc($query)){ if($real){ return $totale['totale']; } return intval((time() - strtotime("2020-05-15"))/(60) + $totale['totale']); } return 0; } function PP_PrintLastNDay($n){ $days=[]; for ($i=0; $i<$n; $i++){ $days[] = date("d/m/Y", strtotime($i." days ago")); } return $days; } function PP_GraficoUtenti(){ global $config; $query = "SELECT DISTINCT ( DATE_FORMAT( data_iscrizione, '%d/%m/%Y' ) ) AS data, COUNT( id ) AS iscritti FROM ".T_UTENTI." WHERE data_iscrizione BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE() + INTERVAL 1 DAY GROUP BY data ORDER BY data_iscrizione DESC"; $query = mysqli_query($config->db, $query); while($dati_giorno = mysqli_fetch_assoc($query)){ $data[] = $dati_giorno; } return $data; } function PP_GraficoAttivita(){ global $config; $query = "SELECT DISTINCT ( DATE_FORMAT( data_aggiornamento, '%d/%m/%Y' ) ) AS data, COUNT( id ) AS iscritti FROM ".T_ATTIVITA." WHERE data_aggiornamento BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE() + INTERVAL 1 DAY GROUP BY data ORDER BY data_aggiornamento DESC"; $query = mysqli_query($config->db, $query); while($dati_giorno = mysqli_fetch_assoc($query)){ $data[] = $dati_giorno; } return $data; } function PP_GraficoPrenotazioni(){ global $config; $query = "SELECT DISTINCT ( DATE_FORMAT( data_aggiornamento, '%d/%m/%Y' ) ) AS data, COUNT( id ) AS iscritti FROM ".T_PRENOTAZIONI." WHERE data_aggiornamento BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE() + INTERVAL 1 DAY GROUP BY data ORDER BY data_aggiornamento DESC"; $query = mysqli_query($config->db, $query); while($dati_giorno = mysqli_fetch_assoc($query)){ $data[] = $dati_giorno; } return $data; } function PP_GetNPrenotazioni($real = false){ global $config; $query = "SELECT COUNT(*) as totale FROM " . T_PRENOTAZIONI . " WHERE data_prenotazione > '".date("Y-m-d")."'"; $query = mysqli_query($config->db, $query); if($totale = mysqli_fetch_assoc($query)){ if($real){ return $totale['totale']; } return intval((time() - strtotime("2020-05-15"))/(60) + $totale['totale']); } return 0; } function PP_SendMail($mailobj, $usesmtp = false, $marketing = false){ $mail = new PHPMailer(); if($usesmtp){ $mail->IsSMTP(); $mail->Mailer = "smtp"; $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Port = 465; $mail->Host = "smtps.aruba.it"; $mail->Username = "info@prenotaposti.it"; $mail->Password = "seagaldeniro"; /*$mail->SMTPSecure = "tls"; $mail->Port = 587; $mail->Host = "smtp.gmail.com"; $mail->Username = "prenotaposti@gmail.com"; $mail->Password = "seagaldeniro";*/ } $mail->IsHTML(true); $mail->AddAddress($mailobj['to'], $mailobj['to_name']); /* if(!isset($mailobj['nodebug'])){ $mail->addBCC("prenotaposti@gmail.com"); } */ if(isset($mailobj["attachment"])){ $mail->AddAttachment($mailobj["attachment"]); } $mail->SetFrom("info@prenotaposti.it", "PrenotaPosti.it"); $mail->AddReplyTo("info@prenotaposti.it", "PrenotaPosti.it"); $mail->Subject =$mailobj['subject']; $template = file_get_contents(PATH."class/template_mail.html"); $template = str_replace("##content##", $mailobj['content'], $template); /* $template = str_replace("##link##", $mailobj['link'], $template); $template = str_replace("##link_button##", $mailobj['link_button'], $template); */ if($marketing){ $template = str_replace("##unsubscribe##", "
Non vuoi più ricevere queste comunicazioni?
unsubscribe
", $template); }else{ $template = str_replace("##unsubscribe##", "", $template); } $mail->MsgHTML($template); if(!$mail->Send()) { //echo $mail->ErrorInfo; return false; } else { return true; } } function PP_GetCategorieVirgilio(){ global $config; foreach(range('a', 'z') as $a){ $pagina = file_get_contents("https://aziende.virgilio.it/ita/elenco-categorie/$a"); $pattern_category = '/
  • (.*?)(.*?)<\/a>(.*?)<\/li>/is'; preg_match_all($pattern_category, $pagina, $matches_category); if(count($matches_category[2]) > 0){ foreach($matches_category[2] as $cat){ $data_aggiornamento = date("Y-m-d H:i:s"); $query = "INSERT INTO elenco_categorie (nome, data_aggiornamento) VALUES ('$cat', '$data_aggiornamento')"; mysqli_query($config->db, $query); $id = mysqli_insert_id($config->db); if(!($id > 0)){ $query = "UPDATE elenco_categorie SET nome = '$nome', data_aggiornamento = '$data_aggiornamento' WHERE nome = '$nome'"; mysqli_query($config->db, $query); } } } } } function PP_GetAziendeVirgilio(){ global $config; $query = "SELECT * FROM elenco_categorie ORDER BY data_aggiornamento ASC LIMIT 20"; $query = mysqli_query($config->db, $query); $cats = array(); $query_id = array(); while($query_sql = mysqli_fetch_assoc($query)){ $cats[] = $query_sql; $query_id[] = $query_sql['id']; } $query_id = implode(",", $query_id); $data_aggiornamento = date("Y-m-d H:i:s"); $query = "UPDATE elenco_categorie SET data_aggiornamento = '$data_aggiornamento' WHERE id IN ($query_id)"; mysqli_query($config->db, $query); foreach($cats as $cat){ foreach(range(1,100) as $i){ $indice = str_replace(".html", "_($i).html", $cat['nome']); $subpagina = file_get_contents("https://aziende.virgilio.it/ita/cat/$indice"); $pattern_element = '/
    (.*?)(.*?)(.*?)<\/a>(.*?)<\/h3>(.*?)(.*?)<\/span>(.*?)(.*?)<\/span>(.*?)(.*?)/is'; preg_match_all($pattern_element, $subpagina, $matches_element); if(count($matches_element[5]) > 0){ foreach($matches_element[5] as $key=>$value){ $url = trim(strip_tags($matches_element[5][$key])); $nome = trim(strip_tags($matches_element[7][$key])); $indirizzo = trim(strip_tags($matches_element[10][$key])); $cap = trim(strip_tags($matches_element[12][$key])); $citta = trim(strip_tags($matches_element[15][$key])); $regione = trim(strip_tags($matches_element[17][$key])); $negozio = file_get_contents($url); $query = "SELECT * FROM ".T_COMUNI." WHERE comune LIKE '%$citta%' LIMIT 1"; $query = mysqli_query($config->db, $query); if($query_sql = mysqli_fetch_assoc($query)){ $citta = $query_sql['id']; } $pattern_email = '/ 0){ $email = trim(strip_tags($matches_email[2][0])); } $pattern_telefono = '/db, $query); $id = mysqli_insert_id($config->db); if(!($id > 0)){ $query = "UPDATE ".T_DATI." SET id_categoria = {$cat['id']}, nome = '$nome', indirizzo = '$indirizzo', cap = '$cap', id_citta = '$citta', regione = '$regione', telefono = '$telefono', email = '$email', data_aggiornamento = '$data_aggiornamento' WHERE nome = '$nome' AND indirizzo = '$indirizzo'"; mysqli_query($config->db, $query); } } } } } } //MAIL MARKETING function PP_Marketing1(){ //Nuovi clienti global $config; $count = 0; $n = 50; $query = "SELECT * FROM " . T_DATI . " WHERE email != '' AND data_mail = 0 AND subscribe = 1 LIMIT $n"; $query = mysqli_query($config->db, $query); while($query_sql = mysqli_fetch_assoc($query)){ echo 'M1'.$query_sql['email'].'
    '; $mailobj = array(); $mailobj["to"] = $query_sql['email']; $mailobj['to_name'] = ''; $boundary = uniqid('np'); $mailobj['subject'] = "Qualcuno ha appena cercato {$query_sql['nome']} su PrenotaPosti.it"; $mailobj['link'] = "https://prenotaposti.it?mail=1"; $mailobj['link_button'] = "Registrati"; if($count <= $n){ $mailobj['nodebug'] = 1; } $mailobj['content'] = "Ciao qualcuno ha appena cercato la tua azienda sul portale PrenotaPosti.it.

    PrenotaPosti.it è un software GRATUITO per gestire le prenotazioni a distanza

    Prenota posti nasce da un'iniziativa di volontariato personale, nei confronti delle migliaia di attività Italiane in difficoltà a causa dell'emergenza COVID-19.

    PrenotaPosti.it è un servizio senza scopo di lucro

    Registrati su ".$mailobj['link']; PP_SendMail($mailobj, true, true); $query_update = "UPDATE " . T_DATI . " SET data_mail = CURDATE() WHERE id = {$query_sql['id']}"; mysqli_query($config->db, $query_update); $count++; } } function PP_Marketing2(){ //Utenti che non accedono da 3 giorni global $config; $query = "SELECT u.id, u.nome, u.cognome, u.email FROM " . T_UTENTI . " u JOIN attivita a ON a.id_utente = u.id WHERE u.data_ultimo_accesso < CURDATE() - INTERVAL 3 DAY AND u.subscribe = 1 AND u.data_ultima_mail < CURDATE() - INTERVAL 7 DAY"; $query = mysqli_query($config->db, $query); while($query_sql = mysqli_fetch_assoc($query)){ echo 'M2'.$query_sql['email'].'
    '; $mailobj = array(); $mailobj["to"] = $query_sql['email']; $mailobj['to_name'] = "{$query_sql['nome']} {$query_sql['cognome']}"; $mailobj['subject'] = "Tutto bene {$query_sql['nome']}? Problemi?"; $mailobj['link'] = "https://prenotaposti.it/login"; $mailobj['link_button'] = "Login"; $mailobj['nodebug'] = 1; $mailobj['content'] = "Ciao, {$query_sql['nome']} ti inviamo questa email per essere certi che vada tutto bene.

    Stai sfruttando al meglio le funzionalità del nostro servizio?

    Se così non fosse contattaci rispondendo a questa mail, siamo pronti a chiarire ogni tuo dubbio.

    Ti ricordiamo che PrenotaPosti.it è un servizio senza scopo di lucro, GRATUITO in ogni sua funzionalità

    Effettua nuovamente l'accesso al seguente link {$mailobj['link']}"; PP_SendMail($mailobj, true, true); $query_update = "UPDATE " . T_UTENTI . " u SET data_ultima_mail = CURDATE() WHERE id = {$query_sql['id']}"; mysqli_query($config->db, $query_update); } } ?>db, $query)){ //$id_utente = mysqli_insert_id($config->db); //$_SESSION['id_utente'] = $id_utente; $mailobj = array(); $mailobj['to'] = $email; $mailobj['to_name'] = $nome." ".$cognome; $mailobj['subject'] = "{$config->sitename} - Registrazione effettuata correttamente"; $mailobj['link'] = PATH."login"; $mailobj['content'] = "Ciao {$nome}! Ti sei registrato correttamente su {$config->sitename}."; $mailobj['link_button'] = "Login"; PP_SendMail($mailobj); if(PP_Login($data)){ return true; } } return false; } function PP_AggiornaProfilo($data){ global $config; if(empty($data['email'])){ return false; } if(empty($data['nome'])){ return false; } if(empty($data['cognome'])){ return false; } $update_password = ''; if(!empty($data['password'])){ if($data['password'] == $data['re_password'] && PP_PasswordSecure($data['password'])){ $password = md5($data['password']); $update_password = ", password = '$password'"; }else{ return false; } } if(PP_EmailExist($data['email']) && PP_EmailExist($data['email']) != $data['id']){ return false; } $email = PP_Secure($data['email']); $nome = PP_Secure($data['nome']); $cognome = PP_Secure($data['cognome']); $query = "UPDATE " . T_UTENTI . " SET email = '$email', nome = '$nome', cognome = '$cognome' $update_password WHERE id = {$data['id']}"; if(mysqli_query($config->db, $query)){ return true; } return false; } function PP_Login($data){ global $config; if(empty($data['email'])){ return false; } if(empty($data['password'])){ return false; } $email = PP_Secure($data['email']); if(isset($_COOKIE["remember_password"]) && isset($_COOKIE["remember_email"]) && $_COOKIE["remember_email"] == $data['email']) { $password = $_COOKIE["remember_password"]; }else{ $password = md5($data['password']); } $query = "SELECT * FROM " . T_UTENTI . " WHERE email = '$email' AND password = '$password' LIMIT 1"; $query = mysqli_query($config->db, $query); $query_sql = mysqli_fetch_assoc($query); if (!empty($query_sql['id'])) { $data_creazione = date('Y-m-d H:i:s'); $ip = PP_GetIP(); PP_DestroySession($data['hash']); session_start(); if(!empty($data["remember"])) { setcookie ("remember_email", $email, time() + $config->cookie_duration, "/"); setcookie ("remember_password", $password, time() + $config->cookie_duration, "/"); } else { if(isset($_COOKIE["remember_email"])) { setcookie ("remember_email", "", 0, "/"); setcookie ("remember_password", "", 0, "/"); } } $_SESSION['hash'] = $data['hash']; $_SESSION['id_utente'] = $query_sql['id']; $query = "INSERT INTO " . T_SESSIONI . " (id_utente, hash, data_creazione, ip) VALUES ({$query_sql['id']}, '{$data['hash']}', '$data_creazione', '$ip')"; mysqli_query($config->db, $query); $query = "UPDATE " . T_UTENTI . " SET data_ultimo_accesso = '$data_creazione' WHERE id = '{$query_sql['id']}'"; mysqli_query($config->db, $query); return true; } return false; } function PP_RecuperaPassword($data){ global $config; if(empty($data['email'])){ return false; } $email = PP_Secure($data['email']); $query = "SELECT * FROM " . T_UTENTI . " WHERE email = '$email' LIMIT 1"; $query = mysqli_query($config->db, $query); $query_sql = mysqli_fetch_assoc($query); if (!empty($query_sql['id'])) { $data_creazione = date('Y-m-d H:i:s'); $ip = PP_GetIP(); $query = "INSERT INTO " . T_SESSIONI . " (id_utente, hash, data_creazione, ip) VALUES ('{$query_sql['id']}', '{$data['hash']}', '$data_creazione', '$ip')"; mysqli_query($config->db, $query); $mailobj = array(); $mailobj['to'] = $query_sql['email']; $mailobj['to_name'] = $query_sql['nome']." ".$query_sql['cognome']; $mailobj['subject'] = $config->sitename." - Recupero password"; $mailobj['link'] = PATH."recupera-password?code=".$data['hash']; $mailobj['content'] = "Ciao! Cliccando su recupera password potrai sostituire la tua password su PrenotaPosti.it.
    Se non sei stato tu ad effettuare questa richiesta ignorala.
    Se il link non dovesse funzionare copia e incolla il seguente link nella barra degli indirizzi del tuo browser
    ".$mailobj['link'].""; $mailobj['link_button'] = "Recupera password"; if(PP_SendMail($mailobj)){ return true; } } return false; } function PP_Unsubscribe($data){ global $config; if(empty($data['email'])){ return false; } $email = PP_Secure($data['email']); $query = "UPDATE " . T_UTENTI . " SET subscribe = 0 WHERE email = '{$data['email']}'"; mysqli_query($config->db, $query); $query = "UPDATE " . T_DATI . " SET subscribe = 0 WHERE email = '{$data['email']}'"; mysqli_query($config->db, $query); return true; } function PP_Subscribe($data){ global $config; if(empty($data['email'])){ return false; } $email = PP_Secure($data['email']); $query = "UPDATE " . T_UTENTI . " SET subscribe = 1 WHERE email = '$email'"; mysqli_query($config->db, $query); return true; } function PP_CambioPassword($data){ global $config; if(empty($data['code'])){ return false; } if($data['password'] != $data['re_password'] || !PP_PasswordSecure($data['password'])){ return false; } $code = PP_Secure($data['code']); $password = md5($data['password']); $query = "SELECT * FROM " . T_SESSIONI . " WHERE hash = '$code' LIMIT 1"; $query = mysqli_query($config->db, $query); $query_sql = mysqli_fetch_assoc($query); if (!empty($query_sql['id'])) { $query = "UPDATE " . T_UTENTI . " SET password = '$password' WHERE id = {$query_sql['id_utente']}"; if(mysqli_query($config->db, $query)){ return true; } } return false; } function PP_Logout(){ global $config; if(!empty($_SESSION['hash']) && !empty($_SESSION['id_utente'])){ PP_DestroySession($_SESSION['hash'], $_SESSION['id_utente']); }else{ session_unset(); session_destroy(); } return true; } function PP_Loggato(){ global $config; if(!empty($_SESSION['id_utente']) && !empty($_SESSION['hash'])){ $query = "SELECT * FROM " . T_SESSIONI . " WHERE hash = '{$_SESSION['hash']}' AND id_utente = {$_SESSION['id_utente']} LIMIT 1"; $query = mysqli_query($config->db, $query); $query_sql = mysqli_fetch_assoc($query); if (!empty($query_sql['id'])) { return true; } } return false; } function PP_IsAdmin(){ global $config; if(PP_Loggato() && $_SESSION['id_utente'] == 1){ return true; } return false; } function PP_EmailExist($email){ global $config; $email = PP_Secure($email); $query = "SELECT id, email FROM " . T_UTENTI . " WHERE email = '$email' LIMIT 1"; $query = mysqli_query($config->db, $query); $query_sql = mysqli_fetch_assoc($query); if (!empty($query_sql['email']) && $query_sql['email'] == $email) { return $query_sql['id']; } return false; } function PP_GetUtente($id){ global $config; $id = PP_Secure($id); $query = "SELECT * FROM " . T_UTENTI . " WHERE id = '$id' LIMIT 1"; $query = mysqli_query($config->db, $query); if($utente = mysqli_fetch_assoc($query)){ return $utente; } return null; } function PP_EliminaUtente($data){ global $config; $query_where = []; if(!empty($data['id'])){ $query_where[] = ' id = '.$data['id']; } if($query_where){ $query = "DELETE FROM " . T_UTENTI . " WHERE ".implode(" AND ", $query_where); mysqli_query($config->db, $query); if(!empty($data['id'])){ //Rimozione ricorsiva di attivita, posti, fasce, prenotazioni $attivita = PP_AttivitaUtente($data['id']); PP_EliminaAttivita(array("id_utente" => $data['id']), true); foreach($attivita as $a){ PP_EliminaPosto(array("id_attivita" => $a['id']), true); PP_EliminaTempo(array("id_attivita" => $a['id']), true); PP_EliminaPrenotazione(array("id_attivita" => $a['id']), true); } PP_EliminaPrenotazione(array("id_utente" => $data['id']), true); } return true; } return false; } function PP_GetListaUtenti(){ global $config; $query = "SELECT id, email, nome, cognome, DATE_FORMAT(data_iscrizione, '%d/%m/%Y %H:%i:%s') FROM " . T_UTENTI; $query = mysqli_query($config->db, $query); $utenti = []; while($utente = mysqli_fetch_array($query, MYSQLI_NUM)){ $utenti[]= $utente; } return $utenti; } function PP_GetUtenteAttivita($id_attivita){ global $config; $id_attivita = PP_Secure($id_attivita); $query = "SELECT u.* FROM " . T_UTENTI . " u LEFT JOIN " . T_ATTIVITA . " a ON u.id = a.id_utente WHERE a.id = '$id_attivita' LIMIT 1"; $query = mysqli_query($config->db, $query); if($utente = mysqli_fetch_assoc($query)){ return $utente; } return null; } function PP_IsProprietario($id_attivita){ global $config; $utente = PP_GetUtenteAttivita($id_attivita); if($_SESSION['id_utente'] == $utente['id']){ return true; } return false; } function PP_PasswordSecure($password){ if(strlen($password) >= 8){ return true; } return false; } /******* FUNZIONI UTENTE **************/ /******* FUNZIONI ATTIVITA **************/ function PP_AttivitaUtente($id_utente){ global $config; $id_utente = PP_Secure($id_utente); $query = "SELECT a.*, c.comune as citta FROM " . T_ATTIVITA . " a JOIN comuni c ON a.id_citta = c.id WHERE a.id_utente = $id_utente"; $query = mysqli_query($config->db, $query); $attivita = array(); while($query_sql = mysqli_fetch_assoc($query)){ $attivita[] = $query_sql; } return $attivita; } function PP_GetAttivitaById($id_attivita){ global $config; $id_attivita = PP_Secure($id_attivita); $query = "SELECT a.*, c.comune as citta FROM " . T_ATTIVITA . " a JOIN comuni c ON a.id_citta = c.id WHERE a.id = $id_attivita LIMIT 1"; $query = mysqli_query($config->db, $query); if($attivita = mysqli_fetch_assoc($query)){ return $attivita; } return null; } function PP_GetListaAttivita(){ global $config; $query = "SELECT a.id, CONCAT(u.nome, ' ', u.cognome) as utente, a.nome, a.indirizzo, c.comune as citta, DATE_FORMAT(a.data_aggiornamento, '%d/%m/%Y %H:%i:%s') FROM " . T_ATTIVITA ." a LEFT JOIN ".T_UTENTI." u ON u.id = a.id_utente LEFT JOIN ".T_COMUNI." c ON c.id = a.id_citta "; $query = mysqli_query($config->db, $query); $attivita = []; while($a = mysqli_fetch_array($query, MYSQLI_NUM)){ $attivita[]= $a; } return $attivita; } function PP_RimuoviAttivitaDuplicate($nome, $indirizzo, $id_citta){ global $config; $nome = PP_Secure($nome); $indirizzo = PP_Secure($indirizzo); $id_citta = PP_Secure($id_citta); $query = "SELECT id, MATCH(nome) AGAINST ('$nome' IN BOOLEAN MODE) AS point1, MATCH(indirizzo) AGAINST ('$indirizzo' IN BOOLEAN MODE) AS point2 FROM dati_attivita_estratti WHERE MATCH(nome) AGAINST ('$nome' IN BOOLEAN MODE) AND MATCH(indirizzo) AGAINST ('$indirizzo' IN BOOLEAN MODE) AND id_citta = $id_citta LIMIT 1"; $query = mysqli_query($config->db, $query); if($attivita = mysqli_fetch_assoc($query)){ if($attivita['point1'] >= 3 && $attivita['point1'] >= 2){ $query = "UPDATE " . T_DATI . " SET bloccato = 1 WHERE id = {$attivita['id']}"; mysqli_query($config->db, $query); } } } function PP_SalvaAttivita($data){ global $config; if(empty($data['nome'])){ return false; } if(empty($data['indirizzo'])){ return false; } if(empty($data['id_citta'])){ return false; } if(empty($data['email'])){ return false; } if(empty($data['telefono'])){ return false; } if(empty($data['tipo_posti'])){ return false; } if(empty($_SESSION['id_utente'])){ return false; } $id_utente = $_SESSION['id_utente']; $email = PP_Secure($data['email']); $indirizzo = PP_Secure($data['indirizzo']); $nome = PP_Secure($data['nome']); $id_citta = PP_Secure($data['id_citta']); $email = PP_Secure($data['email']); $telefono = PP_Secure($data['telefono']); $tipo_posti = PP_Secure($data['tipo_posti']); $data_aggiornamento = date('Y-m-d H:i:s'); PP_RimuoviAttivitaDuplicate($nome, $indirizzo, $id_citta); if(empty($data['id_attivita'])){ $query = "INSERT INTO " . T_ATTIVITA . " (id_utente, nome, indirizzo, id_citta, email, telefono, tipo_posti, data_aggiornamento) VALUES ($id_utente, '$nome', '$indirizzo', $id_citta, '$email', '$telefono', $tipo_posti, '$data_aggiornamento')"; if(mysqli_query($config->db, $query)){ return mysqli_insert_id($config->db); } }else{ $query = "UPDATE " . T_ATTIVITA . " SET id_utente = $id_utente, nome = '$nome', indirizzo = '$indirizzo', id_citta = $id_citta, email = '$email', telefono = '$telefono', tipo_posti = $tipo_posti, data_aggiornamento = '$data_aggiornamento' WHERE id = {$data['id_attivita']}"; if(mysqli_query($config->db, $query)){ return $data['id_attivita']; } } return false; } function PP_EliminaAttivita($data, $force = false){ global $config; if(empty(PP_GetPrenotazioni($data['id'], null, null, null, null, null, null, 0 )) || $force){ $query_where = []; if(!empty($data['id'])){ $query_where[] = ' id = '.$data['id']; } if(!empty($data['id_utente'])){ $query_where[] = ' id_utente = '.$data['id_utente']; } if($query_where){ //elimianzione ricorsiva posti, tempi, prenotazioni PP_EliminaPosto(array("id_attivita" => $data['id']), true); PP_EliminaTempo(array("id_attivita" => $data['id']), true); PP_EliminaPrenotazione(array("id_attivita" => $data['id']), true); $query = "DELETE FROM " . T_ATTIVITA . " WHERE ".implode(" AND ", $query_where); mysqli_query($config->db, $query); return true; } } return false; } function PP_RicercaAttivita($data){ global $config; $ricerca = []; $terms = PP_Secure($data['search']); $terms = explode(" ", $terms); $sql_terms = []; foreach($terms as $t){ $sql_terms[] = "a.nome LIKE '%".$t."%'"; } $limit = PP_Secure($data['limit']); $start = PP_Secure($data['start']); $citta = ''; if(!empty($data['id_citta'])){ $citta = " AND id_citta = {$data['id_citta']} "; } /* $query = "SELECT a.*, c.comune as citta FROM (SELECT id, id_utente, nome, indirizzo, id_citta, email, telefono, tipo_posti, data_aggiornamento, bloccato FROM " . T_ATTIVITA . " UNION SELECT 0 as id, 0 as id_utente, nome, indirizzo, id_citta, email, telefono, tipo_posti, data_aggiornamento, bloccato FROM " . T_DATI . ") a JOIN " . T_COMUNI . " c ON a.id_citta = c.id WHERE a.bloccato = 0 AND (".implode(" OR ", $sql_terms).") $citta ORDER by a.id DESC LIMIT ".(intval($limit)*intval($start)).",".(intval($limit)+1); */ $query = "SELECT a.*, c.comune as citta FROM " . T_ATTIVITA . " a JOIN " . T_COMUNI . " c ON a.id_citta = c.id WHERE a.bloccato = 0 AND (".implode(" OR ", $sql_terms).") $citta ORDER by a.id DESC LIMIT ".(intval($limit)*intval($start)).",".(intval($limit)+1); $query = mysqli_query($config->db, $query); while($query_sql = mysqli_fetch_assoc($query)){ $ricerca[] = $query_sql; } return $ricerca; } function PP_GetPostoById($id){ global $config; $posti = []; $query = "SELECT * FROM " . T_POSTI . " WHERE id = $id"; $query = mysqli_query($config->db, $query); if($posto = mysqli_fetch_assoc($query)){ return $posto; } return null; } function PP_GetPostiByIdAttivita($id_attivita){ global $config; $posti = []; $query = "SELECT * FROM " . T_POSTI . " WHERE id_attivita = $id_attivita"; $query = mysqli_query($config->db, $query); while($query_sql = mysqli_fetch_assoc($query)){ $posti[$query_sql["id"]]=$query_sql; } return $posti; } function PP_GetListaPosti(){ global $config; $query = "SELECT p.id, a.nome as attivita, a.tipo_posti, p.capienza, p.nome, p.descrizione, DATE_FORMAT(p.data_aggiornamento, '%d/%m/%Y %H:%i:%s') FROM " . T_POSTI ." p LEFT JOIN ".T_ATTIVITA." a ON a.id = p.id_attivita"; $query = mysqli_query($config->db, $query); $posti = []; while($p = mysqli_fetch_array($query, MYSQLI_NUM)){ $posti[]= $p; } return $posti; } function PP_SalvaPosto($data){ global $config; if(empty($data['id_attivita'])){ return false; } if(empty($data['capienza'])){ return false; } if(empty($data['tipo_posti'])){ return false; } if($data['tipo_posti'] == 2 && empty($data['nome'])){ return false; } if($data['tipo_posti'] == 1 && empty($data['nome'])){ $data['nome'] = ''; } if($data['tipo_posti'] == 2 && empty($data['descrizione'])){ return false; } if($data['tipo_posti'] == 1 && empty($data['descrizione'])){ $data['descrizione'] = ''; } $id_attivita = PP_Secure($data['id_attivita']); $capienza = PP_Secure($data['capienza']); $nome = PP_Secure($data['nome']); $descrizione = PP_Secure($data['descrizione']); $data_aggiornamento = date('Y-m-d H:i:s'); if(empty($data['id_posto'])){ $query = "INSERT INTO " . T_POSTI . " (id_attivita, capienza, nome, descrizione, data_aggiornamento) VALUES ($id_attivita, $capienza, '$nome', '$descrizione', '$data_aggiornamento')"; if(mysqli_query($config->db, $query)){ return mysqli_insert_id($config->db); } }else{ $query = "UPDATE " . T_POSTI . " SET id_attivita = $id_attivita, capienza = $capienza, nome = '$nome', descrizione = '$descrizione', data_aggiornamento = '$data_aggiornamento' WHERE id = {$data['id_posto']}"; if(mysqli_query($config->db, $query)){ return $data['id_posto']; } } return false; } function PP_EliminaPosto($data, $force = false){ global $config; if(empty(PP_GetPrenotazioni(null, null, null, null, null, $data['id'], null, 0)) || $force){ $query_where = []; if(!empty($data['id'])){ $query_where[] = ' id = '.$data['id']; } if(!empty($data['id_attivita'])){ $query_where[] = ' id_attivita = '.$data['id_attivita']; } if($query_where){ $query = "DELETE FROM " . T_POSTI . " WHERE ".implode(" AND ", $query_where); mysqli_query($config->db, $query); return true; } } return false; } function PP_GetTempoById($id){ global $config; $posti = []; $query = "SELECT * FROM " . T_FASCE_ORARIE . " WHERE id = $id"; $query = mysqli_query($config->db, $query); if($tempo = mysqli_fetch_assoc($query)){ return $tempo; } return null; } function PP_GetTempiByIdAttivita($id_attivita){ global $config; $tempi = []; $query = "SELECT * FROM " . T_FASCE_ORARIE . " WHERE id_attivita = $id_attivita ORDER BY ora_inizio ASC"; $query = mysqli_query($config->db, $query); while($query_sql = mysqli_fetch_assoc($query)){ $tempi[]=$query_sql; } return $tempi; } function PP_GetTempiByDayWeek($tempi, $dayweek){ global $config; $_tempi = []; foreach($tempi as $t){ $giorni_settimana = explode(',',$t['giorni_settimana']); if(in_array($dayweek, $giorni_settimana)){ $_tempi[] = $t; } } return $_tempi; } function PP_GetListaTempi(){ global $config; $query = "SELECT f.id, a.nome as attivita, CONCAT(f.ora_inizio,':', f.minuto_inizio) , CONCAT(f.ora_fine,':', f.minuto_fine), f.giorni_settimana, DATE_FORMAT(f.data_aggiornamento, '%d/%m/%Y %H:%i:%s') FROM " . T_FASCE_ORARIE ." f LEFT JOIN ".T_ATTIVITA." a ON a.id = f.id_attivita"; $query = mysqli_query($config->db, $query); $tempi = []; while($t = mysqli_fetch_array($query, MYSQLI_NUM)){ $tempi[]= $t; } return $tempi; } function PP_SalvaTempo($data){ global $config; if(empty($data['id_attivita'])){ return false; } if(!isset($data['ora_inizio'])){ return false; } if(!isset($data['minuto_inizio'])){ return false; } if(!isset($data['ora_fine'])){ return false; } if(!isset($data['minuto_fine'])){ return false; } if(empty($data['giorni_settimana'])){ return false; } $id_attivita = PP_Secure($data['id_attivita']); $ora_inizio = PP_Secure($data['ora_inizio']); $ora_fine = PP_Secure($data['ora_fine']); $minuto_inizio = PP_Secure($data['minuto_inizio']); $minuto_fine = PP_Secure($data['minuto_fine']); $giorni_settimana = PP_Secure(implode(",", $data['giorni_settimana'])); $data_aggiornamento = date('Y-m-d H:i:s'); if(empty($data['id_tempo'])){ $query = "INSERT INTO " . T_FASCE_ORARIE . " (id_attivita, ora_inizio, minuto_inizio, ora_fine, minuto_fine, giorni_settimana, data_aggiornamento) VALUES ($id_attivita, $ora_inizio, $minuto_inizio, $ora_fine, $minuto_fine, '$giorni_settimana', '$data_aggiornamento')"; if(mysqli_query($config->db, $query)){ return mysqli_insert_id($config->db); } }else{ $query = "UPDATE " . T_FASCE_ORARIE . " SET id_attivita = $id_attivita, ora_inizio = $ora_inizio, minuto_inizio = $minuto_inizio, ora_fine = $ora_fine, minuto_fine = $minuto_fine, giorni_settimana = '$giorni_settimana', data_aggiornamento = '$data_aggiornamento' WHERE id = {$data['id_tempo']}"; if(mysqli_query($config->db, $query)){ return $data['id_tempo']; } } return false; } function PP_EliminaTempo($data, $force = false){ global $config; if(empty(PP_GetPrenotazioni(null, null, null, null, $data['id'], null, null, 0 )) || $force){ $query_where = []; if(!empty($data['id'])){ $query_where[] = ' id = '.$data['id']; } if(!empty($data['id_attivita'])){ $query_where[] = ' id_attivita = '.$data['id_attivita']; } if($query_where){ $query = "DELETE FROM " . T_FASCE_ORARIE . " WHERE ".implode(" AND ", $query_where); mysqli_query($config->db, $query); return true; } } return false; } /******* FUNZIONI ATTIVITA **************/ /******* FUNZIONI PRENOTAZIONE **************/ function PP_GetPrenotazioneById($id){ global $config; $query = "SELECT * FROM " . T_PRENOTAZIONI . " WHERE id = '$id' LIMIT 1"; $query = mysqli_query($config->db, $query); if($prenotazione = mysqli_fetch_assoc($query)){ return $prenotazione; } return null; } function PP_GetListaPrenotazioni(){ global $config; $query = "SELECT pr.id, CONCAT(u.nome, ' ', u.cognome) as utente, a.nome as attivita, CONCAT(f.ora_inizio,':', f.minuto_inizio, '-', f.ora_fine,':', f.minuto_fine) as fascia_oraria, p.nome as nome_posto, pr.persone, pr.conferma, DATE_FORMAT(pr.data_prenotazione, '%d/%m/%Y %H:%i:%s') , DATE_FORMAT(pr.data_aggiornamento, '%d/%m/%Y %H:%i:%s') FROM " . T_PRENOTAZIONI ." pr LEFT JOIN ".T_UTENTI." u ON u.id = pr.id_utente LEFT JOIN ".T_ATTIVITA." a ON a.id = pr.id_attivita LEFT JOIN ".T_POSTI." p ON p.id = pr.id_posto LEFT JOIN ".T_FASCE_ORARIE." f ON f.id = pr.id_fascia_oraria"; $query = mysqli_query($config->db, $query); $prenotazioni = []; while($p = mysqli_fetch_array($query, MYSQLI_NUM)){ $prenotazioni[]= $p; } return $prenotazioni; } function PP_VerificaPrenotazione($data){ global $config; $query = "SELECT * FROM " . T_PRENOTAZIONI . " WHERE code = '{$data['code']}' AND conferma = 0 LIMIT 1"; $query = mysqli_query($config->db, $query); if($prenotazione = mysqli_fetch_assoc($query)){ return $prenotazione; } return null; } function PP_ConfermaPrenotazione($data){ global $config; $query = "UPDATE " . T_PRENOTAZIONI . " SET conferma = 1 WHERE id = {$data['id']}"; if(mysqli_query($config->db, $query)){ $prenotazione = PP_GetPrenotazioneById($data['id']); $utente = PP_GetUtente($prenotazione['id_utente']); $attivita = PP_GetAttivitaById($prenotazione['id_attivita']); $utente_attivita = PP_GetUtenteAttivita($prenotazione['id_attivita']); $data_ora_prenotazione = date("d/m/Y", strtotime($prenotazione['data_prenotazione'])); $mailobj = array(); $mailobj['to'] = $utente['email']; $mailobj['to_name'] = $utente['nome']." ".$utente['cognome']; $mailobj['subject'] = "{$config->sitename} - Prenotazione {$attivita['nome']} confermata, buona permanenza!"; $mailobj['link'] = PATH."mie-prenotazioni"; $mailobj['content'] = "Ciao {$utente['nome']}! Prenotazione confermata presso {$attivita['nome']}.

    Lo staff di PrenotaPosti ti augura una buona permanenza presso l'attività!"; $mailobj['link_button'] = "Visualizza prenotazioni"; PP_SendMail($mailobj); $mailobj = array(); $mailobj['to'] = $utente_attivita['email']; $mailobj['to_name'] = $utente_attivita['nome']." ".$utente_attivita['cognome']; $mailobj['subject'] = "{$config->sitename} - Hai confermato la prenotazione di {$utente['nome']} {$utente['cognome']}"; $mailobj['link'] = PATH."gestione-prenotazioni/".$attivita['id']; $mailobj['content'] = "Ciao {$utente_attivita['nome']}! Hai confermato la prenotazione di {$utente['nome']} {$utente['cognome']} presso {$attivita['nome']} di giorno $data_ora_prenotazione"; $mailobj['link_button'] = "Visualizza prenotazioni"; PP_SendMail($mailobj); return true; } return false; } function PP_GetPrenotazioni($id_attivita, $id_utente, $start_date, $end_date, $id_fascia_oraria = null, $id_posto = null, $code = null, $conferma = null){ global $config; $prenotazioni = []; $query_where = []; if(!empty($id_attivita)){ $query_where[] = " p.id_attivita = $id_attivita "; } if(!empty($id_utente)){ $query_where[] = " p.id_utente = $id_utente "; } if(!empty($start_date)){ $query_where[] = " data_prenotazione >= '$start_date' "; } if(!empty($end_date)){ $query_where[] = " data_prenotazione <= '$end_date' "; } if(!empty($id_fascia_oraria)){ $query_where[] = " id_fascia_oraria = $id_fascia_oraria "; } if(!empty($id_posto)){ $query_where[] = " id_posto = $id_posto "; } if(!empty($code)){ $query_where[] = " code = '$code' "; } if(isset($conferma)){ $query_where[] = " conferma = $conferma "; } $query = "SELECT p.*, a.nome as nome_attivita, a.indirizzo as indirizzo_attivita, a.telefono as telefono_attivita, a.email as email_attivita, c.comune as citta, f.ora_inizio, f.minuto_inizio, f.ora_fine, f.minuto_fine, u.nome as nome_utente, u.cognome as cognome_utente, po.nome as nome_posto FROM " . T_PRENOTAZIONI . " p LEFT JOIN " . T_UTENTI . " u ON u.id = p.id_utente LEFT JOIN " . T_POSTI ." po ON po.id = p.id_posto LEFT JOIN " . T_FASCE_ORARIE ." f ON f.id = p.id_fascia_oraria LEFT JOIN " .T_ATTIVITA ." a ON a.id = p.id_attivita LEFT JOIN " .T_COMUNI ." c ON c.id = a.id_citta WHERE ".implode(" AND ", $query_where)." ORDER BY p.data_prenotazione DESC, f.ora_inizio DESC"; $query = mysqli_query($config->db, $query); while($query_sql = mysqli_fetch_assoc($query)){ $prenotazioni[]=$query_sql; } return $prenotazioni; } function PP_GetNumeroPrenotazioniMese($prenotazioni){ global $config; $_prenotazioni = []; if(empty($prenotazioni)){ return false; } foreach($prenotazioni as $p){ $giorno_prenotazione = intval(date('d', strtotime($p['data_prenotazione']))); if(!isset($_prenotazioni[$giorno_prenotazione])){ $_prenotazioni[$giorno_prenotazione] = []; $_prenotazioni[$giorno_prenotazione]['count'] = 0; $_prenotazioni[$giorno_prenotazione]['elenco_prenotazioni'] = []; } $_prenotazioni[$giorno_prenotazione]['count'] = $_prenotazioni[$giorno_prenotazione]['count'] + $p['persone']; $_prenotazioni[$giorno_prenotazione]['elenco_prenotazioni'][] = $p; } return $_prenotazioni; } function PP_GetNumeroPrenotazioniGiorno($prenotazioni){ global $config; $_prenotazioni = []; if(empty($prenotazioni)){ return false; } foreach($prenotazioni as $p){ if(!isset($_prenotazioni[$p['id_fascia_oraria']])){ $_prenotazioni[$p['id_fascia_oraria']] = []; $_prenotazioni[$p['id_fascia_oraria']]['count'] = 0; $_prenotazioni[$p['id_fascia_oraria']]['elenco_prenotazioni'] = []; } $_prenotazioni[$p['id_fascia_oraria']]['count'] = $_prenotazioni[$p['id_fascia_oraria']]['count'] + $p['persone']; $_prenotazioni[$p['id_fascia_oraria']]['elenco_prenotazioni'][] = $p; } return $_prenotazioni; } function PP_GetPrenotazioniFascia($prenotazioni){ global $config; $html = ''; $_prenotazioni = []; if(empty($prenotazioni)){ $html = 'Nessuna prenotazione'; }else{ foreach($prenotazioni as $p){ if(!isset($_prenotazioni[$p['id_posto']])){ $_prenotazioni[$p['id_posto']] = []; } $_prenotazioni[$p['id_posto']][] = $p; } foreach($_prenotazioni as $pp){ $html.= "
    Posto: ".$pp[0]['nome_posto']."
    "; $html.= "
    Nome utente
    Posti
    "; foreach($pp as $p){ $data_prenotazione = strtotime($p['data_prenotazione']." ".PP_TempoDueCifre($p['ora_inizio']).":".PP_TempoDueCifre($p['minuto_inizio'])); if($p['conferma'] == 0 && $data_prenotazione >= time()){ $azione_elimina = "
    "; $azione_elimina.= "
    "; }else if($p['conferma'] == 1){ $azione_elimina = "
    "; }else{ $azione_elimina = "
    "; } $html.= "
    ".$p['persone']."
    $azione_elimina
    "; } $html.= "
    "; } } return $html; } function PP_EliminaPrenotazione($data, $force = false){ global $config; $query_where = []; if(!empty($data['id'])){ $query_where[] = ' id = '.$data['id']; $prenotazione = PP_GetPrenotazioneById($data['id']); $utente = PP_GetUtente($prenotazione['id_utente']); $attivita = PP_GetAttivitaById($prenotazione['id_attivita']); $utente_attivita = PP_GetUtenteAttivita($prenotazione['id_attivita']); $data_ora_prenotazione = date("d/m/Y", strtotime($prenotazione['data_prenotazione'])); } if(!empty($data['id_attivita'])){ $query_where[] = ' id_attivita = '.$data['id_attivita']; } if(!empty($data['id_utente'])){ $query_where[] = ' id_attivita = '.$data['id_utente']; } if($query_where){ $query = "DELETE FROM " . T_PRENOTAZIONI . " WHERE ".implode(" AND ", $query_where); if(mysqli_query($config->db, $query)){ if(!empty($data['id'])){ $mailobj = array(); $mailobj['to'] = $utente['email']; $mailobj['to_name'] = $utente['nome']." ".$utente['cognome']; $mailobj['subject'] = "{$config->sitename} - Prenotazione {$attivita['nome']} annullata"; $mailobj['link'] = PATH."mie-prenotazioni"; $mailobj['content'] = "Ciao {$utente['nome']}! Prenotazione annullata presso {$attivita['nome']} di giorno $data_ora_prenotazione"; $mailobj['link_button'] = "Visualizza prenotazioni"; PP_SendMail($mailobj); $mailobj = array(); $mailobj['to'] = $utente_attivita['email']; $mailobj['to_name'] = $utente_attivita['nome']." ".$utente_attivita['cognome']; $mailobj['subject'] = "{$config->sitename} - Prenotazione {$attivita['nome']} annullata"; $mailobj['link'] = PATH."gestione-prenotazioni/".$attivita['id']; $mailobj['content'] = "Ciao {$utente_attivita['nome']}! L'utente {$utente['nome']} {$utente['cognome']} ha annullato la sua prenotazione presso {$attivita['nome']} di giorno $data_ora_prenotazione"; $mailobj['link_button'] = "Visualizza prenotazioni"; PP_SendMail($mailobj); } return true; } } return false; } function PP_GetPrenotazioniFasciaUtente($id_attivita, $data_prenotazione, $id_fascia_oraria, $prenotazioni){ global $config; $html = ''; $_prenotazioni = []; $posti = PP_GetPostiByIdAttivita($id_attivita); foreach($prenotazioni as $p){ if(!isset($_prenotazioni[$p['id_posto']])){ $_prenotazioni[$p['id_posto']] = []; } $_prenotazioni[$p['id_posto']][] = $p; } foreach($posti as $posto){ $html.= "
    Posto: ".$posto['nome']."
    "; $html.= "
    Utente
    Posti
    "; $somma_posto = 0; if(!empty($_prenotazioni[$posto['id']])){ foreach($_prenotazioni[$posto['id']] as $p){ if($p['id_utente'] == $_SESSION['id_utente']){ $nome_utente = $p['nome_utente']." ".$p['cognome_utente']; if($p['conferma'] == 0){ $azione_elimina = "
    "; }else{ $azione_elimina = "
    "; } }else{ $nome_utente = substr($p['nome_utente'], 0, 1).'####  ####'.substr($p['cognome_utente'], strlen($p['cognome_utente'])-1, 1); $azione_elimina = ""; } $html.= "
    ".$nome_utente."
    ".$p['persone']."
    $azione_elimina
    "; $somma_posto = $somma_posto + intval($p['persone']); } } $posti_residui = intval($posto['capienza']) - intval($somma_posto); $html.= " ".$posti_residui." posti residui"; if($posti_residui > 0){ $html.= "
    "; } $html.= "
    "; } return $html; } function PP_Prenota($data){ global $config; if(empty($data['id_utente'])){ return false; } if(!isset($data['id_attivita'])){ return false; } if(!isset($data['id_fascia_oraria'])){ return false; } if(!isset($data['id_posto'])){ return false; } if(!isset($data['persone'])){ return false; } if(!isset($data['data_prenotazione'])){ return false; } if(!PP_Prenotabile($data)){ return false; } $id_utente = PP_Secure($data['id_utente']); $id_attivita = PP_Secure($data['id_attivita']); $id_fascia_oraria = PP_Secure($data['id_fascia_oraria']); $id_posto = PP_Secure($data['id_posto']); $persone = PP_Secure($data['persone']); $testo_persone = intval($persone) > 1 ? "persone" : "persona"; $data_prenotazione = PP_Secure($data['data_prenotazione']); $data_aggiornamento = date('Y-m-d H:i:s'); $code = md5($data_aggiornamento); $qrcode = base64_encode(file_get_contents(PATH.'class/qrcode.php?code='.$code)); $query = "INSERT INTO " . T_PRENOTAZIONI . " (id_utente, id_attivita, id_fascia_oraria, id_posto, persone, code, data_prenotazione, data_aggiornamento) VALUES ($id_utente, $id_attivita, $id_fascia_oraria, $id_posto, $persone, '$code', '$data_prenotazione', '$data_aggiornamento')"; if(mysqli_query($config->db, $query)){ $id_prenotazione = mysqli_insert_id($config->db); //Invio notifiche mail $utente = PP_GetUtente($id_utente); $attivita = PP_GetAttivitaById($id_attivita); $tempo = PP_GetTempoById($id_fascia_oraria); $data_ora_prenotazione = date("d/m/Y", strtotime($data_prenotazione))." alle ore ".PP_TempoDueCifre($tempo['ora_inizio']).":".PP_TempoDueCifre($tempo['minuto_inizio']); $mailobj = array(); $mailobj['to'] = $utente['email']; $mailobj['to_name'] = $utente['nome']." ".$utente['cognome']; $mailobj['subject'] = "{$config->sitename} - Prenotazione {$attivita['nome']} effettuata correttamente"; $mailobj['link'] = PATH."mie-prenotazioni"; $mailobj['content'] = "Ciao {$utente['nome']}!

    Prenotazione effettuata correttamente per $persone $testo_persone!

    {$attivita['nome']} ti aspetta giorno $data_ora_prenotazione.

    Mostra questo codice al proprietario per verificare la prenotazione.

    "; $mailobj['link_button'] = "Visualizza prenotazioni"; PP_SendMail($mailobj); $utente_attivita = PP_GetUtenteAttivita($id_attivita); $mailobj = array(); $mailobj['to'] = $utente_attivita['email']; $mailobj['to_name'] = $utente_attivita['nome']." ".$utente_attivita['cognome']; $mailobj['subject'] = "{$config->sitename} - Prenotazione da parte di {$utente['nome']} {$utente['cognome']}"; $mailobj['link'] = PATH."gestione-prenotazioni-giorno/".$id_attivita."/".$data_prenotazione; $mailobj['content'] = "Ciao {$utente_attivita['nome']}! {$utente['nome']} {$utente['cognome']} ha prenotato per $persone $testo_persone presso la tua attività per giorno $data_ora_prenotazione"; $mailobj['link_button'] = "Gestisci prenotazioni"; PP_SendMail($mailobj); return array("id_prenotazione" => $id_prenotazione, "attivita"=> $attivita, "tempo" => $tempo); } return false; } function PP_Prenotabile($data){ global $config; $query = "SELECT SUM(persone) as somma, capienza FROM " .T_PRENOTAZIONI. " pp JOIN " .T_POSTI. " p ON p.id = pp.id_posto WHERE id_posto = {$data['id_posto']} AND id_fascia_oraria = {$data['id_fascia_oraria']} AND data_prenotazione = '{$data['data_prenotazione']}'"; $query = mysqli_query($config->db, $query); if($query_sql = mysqli_fetch_assoc($query)){ if(intval($query_sql['capienza']) - intval($query_sql['somma']) >= intval($data['persone'])){ return true; } } return false; } /******* FUNZIONI ATTIVITA **************/ /******* FUNZIONI MARKETING **************/ function PP_GetDatiAttivitaEstratti($id){ global $config; $query = "SELECT d.id, d.nome, d.indirizzo, d.regione, d.cap, d.email, d.telefono, c.comune as citta FROM " . T_DATI . " d LEFT JOIN ". T_COMUNI ." c ON c.id = d.id_citta WHERE d.id = $id"; $query = mysqli_query($config->db, $query); if($query_sql = mysqli_fetch_assoc($query)){ return $query_sql; } return null; } function PP_GetElencoDatiAttivitaEstratti($offset, $n){ global $config; PP_Secure($offset); PP_Secure($n); $query = "SELECT d.*, c.comune as citta FROM " . T_DATI . " d LEFT JOIN " . T_COMUNI . " c ON d.id_citta = c.id LIMIT $offset, $n"; $query = mysqli_query($config->db, $query); $attivita = array(); while($query_sql = mysqli_fetch_assoc($query)){ $attivita[] = $query_sql; } return $attivita; } function PP_CountDatiAttivitaEstratti(){ global $config; $query = "SELECT COUNT(*) as totale FROM " . T_DATI; $query = mysqli_query($config->db, $query); if($query_sql = mysqli_fetch_assoc($query)){ return $query_sql['totale']; } return 0; } ?>