Skip to content

Instantly share code, notes, and snippets.

@CarloMartini
Created November 12, 2017 17:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CarloMartini/61ff9d0fc961b5e94bc7a938c6b5fc4d to your computer and use it in GitHub Desktop.
Save CarloMartini/61ff9d0fc961b5e94bc7a938c6b5fc4d to your computer and use it in GitHub Desktop.
<?php
class MP_Notification
{
private static $headers = "From: Musica a Palazzo <prenotazioni@musicapalazzo.com>\r\n";
private static $footer = "\n\n-- \n Musica a Palazzo \n Palazzo Barbarigo Minotto \n Fondamenta Duodo o Barbarigo \n S. Marco 2504, Venezia \n phone (9 am - 7:30 pm): +39 340 97 17 272 | \n www.musicapalazzo.com";
private static function admin_mails()
{
return 'prenotazioni@musicapalazzo.com';
$users = get_users();
$mails = '';
foreach ($users as $user) {
$mails .= $user->user_email . ', ';
}
return $mails;
}
private static $reminder = array(
'subject' => array(
'it' => 'In attesa di conferma ',
'en' => 'Confirmation request for ',
'fr' => 'Demande de confirmation pour ',
'es' => 'Solicitud de confirmación para ',
),
'admin' => 'Richiesta di conferma per ',
'client' => array(
'it' => "Gentile Ospite, \n\n\n Vi scriviamo per ricordarvi che siete cortesemente invitati a confermare la vostra presenza a Musica a Palazzo per ",
'en' => "Dear Guest,\n\n\n We would like to remind you that you are kindly asked to confirm your attendance at Musica a Palazzo for ",
'fr' => "Bonjour,\n\n\n Nous vous écrivons pour vous rappeler que vous êtes cordialement invité/ée à confirmer votre présence à Musica a Palazzo pour ",
'es' => "Buenos Días,\n\n\n Nos dirigimos a usted para recordarle que se le invita amablemente a confirmar su asistencia a Musica a Palazzo por ",
),
'client2' => array(
'it' => ". \n\n Potete contattarci entro le 19.30 di stasera tramite email o chiamandoci al numero riportato in calce. \n\n In caso di mancata conferma, la vostra prenotazione sarà annullata. \n\nNOTA BENE: Qualora aveste già confermato la vostra presenza o aveste cancellato/modificato la vostra prenotazione, vi preghiamo di ignorare questo messaggio. \n\nRimaniamo in attesa di una vostra cortese risposta. \n\n\n Cordiali Saluti.",
'en' => ". \n\n You may contact us until 7.30 pm today either by e-mail or by calling us at the telephone number that you find in the footnote. \n\n In case you do not confirm your booking, it will be cancelled. \n\nPLEASE NOTE If you already confirmed your booking not earlier than a few days ago, or if you modified/cancelled your reservation, please ignore this message. \n\n\n We are looking forward to your reply. \n\n Best Regards.",
'fr' => ". \n\n Vous pouvez nous contacter jusqu'à 19h30 de ce soir par e-mail ou en nous appelant au numéro indiqué ci-dessous. \n\n En cas d'absence de confirmation, votre réservation sera annulée. \n\n Si vous avez déjà confirmé, ou si vous avez modifié / annulé votre réservation, vous pouvez ignorer ce message. \n\n\n Dans l'attente de votre aimable réponse, nous vous adressons nos salutations distinguées.",
'es' => ".\n\n Puede ponerse en contacto con nosotros, por correo electrónico o llamando al número que aparece en el pié de página antes las 19h30 de hoy.\n\n En caso de que no recibamos su confirmación, su reserva será anulada. \n\n Si ya confirmado, o si ha modificado o cancelado su reserva, puede ignorar este mensaje. \n\n\n Esperando su amable respuesta, le hacemos llegar nuestros mejores deseos.",
),
'client3' => array(
'it' => " in data ",
'en' => " on ",
'fr' => " du ",
'es' => " el ",
),
);
private static $request = array(
'subject' => array(
'it' => 'Richiesta',
'en' => 'Request',
'fr' => 'Réservation reçue',
'es' => 'Solicitud de reserva recibida',
),
'admin' => 'x',
'client' => array(
'it' => "Grazie, la vostra richiesta di prenotazione ci è pervenuta correttamente. \n\n Riceverete una risposta entro 24 ore. \n\n Per dettagli e informazioni potete visitare la pagina delle Domande Frequenti: www.musicapalazzo.com/f-a-q/",
'en' => "Thank you, we have received your booking request. You will receive a reply within 24 hours (but usually much sooner). \n\n We pride ourselves on replying to each and every valid request that we receive. Sometimes, our messages get blocked or deleted by anti-spam filters.\n\nIn case you don't see our reply, please check your spam folder before submitting a new request. \n\n For further details you can visit our FAQ page: www.musicapalazzo.com/en/faq/",
'fr' => "Merci, votre demande de réservation nous est parvenue. \n\n Vous recevrez une réponse dans les 24 heures. \n\n Pour plus de détails et d'informations, vous pouvez visiter la page des questions fréquentes: www.musicapalazzo.com/fr/faq/.",
'es' => "Gracias, hemos recibido su solicitud de reserva.\n\n Recibirá nuestra respuesta en las próximas 24 horas.\n\n Por más información, puede visitar nuestra página FAQ: www.musicapalazzo.com/f-a-q/.",
),
);
private static $deny = array(
'subject' => array(
'it' => 'Sold Out',
'en' => 'Sold Out',
'fr' => 'Sold Out',
'es' => 'Sold Out',
),
'admin' => 'Sold Out',
'client' => array(
'it' => "Gentile Ospite, \n\n\n siamo spiacenti di informarvi che la vostra prenotazione non può essere accettata in quanto la data da voi richiesta non ha più posti disponibili. \n\n Se desiderate fare una nuova prenotazione per un’altra data, potete consultare nuovamente la pagina delle prenotazioni del nostro sito web (www.musicapalazzo.com/prenota-subito/) oppure contattarci a uno dei nostri indirizzi riportati in calce. \n\n\n Distinti saluti.",
'en' => "Dear Guest,\n\n\n We are sorry to inform you that your booking cannot be accepted because the date you have requested is sold out. \n\n If you wish to book another date, you can return to the booking page on our website (www.musicapalazzo.com/book-now/) or contact us at one of the addresses specified in the footnote. \n\n\n Kind regards",
'fr' => "Bonjour,\n\n\n nous avons le regret de vous informer que votre réservation ne peut pas être acceptée car la representation que vous nous avez demandé est complète.\n\n Si vous souhaitez effectuer une nouvelle réservation pour une autre date vous pouvez revenir à la page de réservation de notre site internet (www.musicapalazzo.com/reservation-rapide/)ou nous contacter à l'une de nos adresses ci-dessous.\n\n\n Cordialement",
'es' => "Buenos Días,\n\n\n Lamentamos tener que informarle que no hemos podido aceptar su reserva ya que las entradas para el día seleccionado están agotadas.\n\n Si desea realizar una nueva reserva para otra fecha, vuelva a la página Reservas de nuestro sitio web (www.musicapalazzo.com/reserva-rapida/) o comuníquese a través de los contactos que aparecen en el pié de página.\n\n\n Saludos Cordiales,",
),
);
private static $afternoon = array(
'subject' => array(
'it' => 'Spettacolo extra, ore 17.00 (La Traviata)',
'en' => 'Extra show at 5pm (La Traviata)',
'fr' => 'Représentation supplémentaire à 17h00 (La Traviata)',
'es' => 'Espectáculo adicional a las 17:00 (La Traviata)',
),
'admin' => 'Proposta pomeridiano ',
'client' => array(
'it' => "Gentile Ospite, \n\n Siamo spiacenti di informarvi che la vostra prenotazione non può essere accettata in quanto il concerto da voi richiesto non ha più posti disponibili. \n\n Siamo tuttavia lieti di comunicarvi che, dato il numero di richieste che ci stanno pervenendo per questo spettacolo, abbiamo deciso di organizzare una replica pomeridiana di LA TRAVIATA che andrà in scena lo stesso giorno alle 5 del pomeriggio (apertura porte alle 16.30).\n\n Le tariffe (a persona) sono le stesse dello spettacolo serale:\n Adulti: 85 € \n Ragazzi fino ai 15 anni: 30 €. \n\n Qualora desideraste prenotare per la replica pomeridiana, siete pregati di rispondere a questo messaggio. Altrimenti vi invitiamo a consultare nuovamente il nostro sito e a scegliere un altro spettacolo di vostro gradimento. \n\n In attesa di un vostro cortese riscontro, vi porgiamo i nostri più distinti saluti.",
'en' => "Dear Guest, \n\n We are sorry to inform you that our evening show is sold out on the day you requested. \n\n However, due to the many requests we are receiving, we are going to have an extra performance of LA TRAVIATA at 5pm on the same day. \n\n The price is as follows (the same as the evening performance): \n Adults: € 85,00 per person \n Children (up to 15 y.o.): € 30,00 per person \n\n If you wish to book some seats for the afternoon, please answer to this email. \n\n Best Regards,",
'fr' => "Bonjour, \n\n Nous sommes désolés de vous informer que ce spectacle est complet. \n\n Toutefois, en raison des nombreuses demandes que nous recevons, nous allons avoir une représentation supplémentaire de LA TRAVIATA à 17 heures le même jour. \n\n Le prix est le suivant (le même que le spectacle du soir): \n\n Adultes: € 85,00 / personne \n Enfants (jusqu'à 15 ans): € 30,00 / personne \n\n Si vous souhaitez réserver des sièges pour l'après-midi, répondez à ce courriel s'il vous plaît. \n\n Cordialement,",
'es' => "Buenos Días, \n\n Lamentamos informarle que nuestro espectáculo nocturno está agotado. \n\n Pero, debido a las numerosas peticiones que recibimos, vamos a tener un espectáculo adicional de LA TRAVIATA a las 17.00 en el mismo día. \n\n El precio es el siguiente (el mismo que la función de la noche):\n Adultos: € 85,00 / persona \n Niños (hasta 15 años): € 30,00 / persona \n\n Si desea reservar algunas plazas para la tarde, por favor responda a este email. \n\n Saludos Cordiales,",
),
);
private static $accept = array(
'subject' => array(
'it' => 'Prenotazione Accettata',
'en' => 'Booking Confirmed',
'fr' => 'Reservatiòn Acceptée',
'es' => 'Reserva Aceptada',
),
'admin' => 'Accettata',
'client' => array(
'it' => "Gentile Ospite,\n\nLa vostra prenotazione è stata accettata.\nQui di seguito troverete alcune informazioni utili.\n\nTARIFFE \nMusica a Palazzo è un'Associazione Culturale e pertanto l'accesso agli spettacoli è riservato ai soci. È necessario compilare un modulo per ogni Ospite. È possibile associarsi prima di ogni spettacolo, compilando il modulo d'iscrizione che trovate allegato a questo messaggio con i propri dati anagrafici e presentandolo all’ingresso. Vi preghiamo di compilarne uno per persona e di NON inviarlo via posta elettronica. Qualora non abbiate la possibilità di stampare i moduli, potrete compilare quelli che vi saranno forniti all'ingresso, la sera dello spettacolo. \n\nLa quota di iscrizione è:\nAdulti: € 85,00 / persona \nBambini (fino ai 15 anni): € 30,00 / persona \nPer assistere allo spettacolo richiesto non sono previsti ulteriori costi o biglietti.\n\nPAGAMENTO\nMusica a Palazzo non ha la possibilità di offrire un servizio di pagamento tramite Bancomat o carte di credito. È pertanto necessario effettuare il pagamento in contanti, la sera stessa dello spettacolo prenotato.\n\nORARIO\nMusica a Palazzo apre alle 20.00 e lo spettacolo inizia alle 20.30.\nAll'inizio dello spettacolo, le porte verranno chiuse e il campanello verrà spento: raccomandiamo pertanto la massima puntualità.\n\nABBIGLIAMENTO CONSIGLIATO\nEvening casual\n(si invitano i signori uomini a indossare pantaloni lunghi e calzature consone all'occasione)\n\nIMPORTANTE\nPer confermare la prenotazione, vi chiediamo cortesemente di contattarci via e-mail o via telefono il giorno prima dello spettacolo da voi prenotato (potete trovare i nostri contatti in calce), altrimenti la vostra prenotazione verrà cancellata. A tal proposito, il nostro sistema vi invierà una mail per ricordarvi tale necessità.\n\nNel caso desideraste annullare la vostra prenotazione, vi preghiamo di avvisarci tempestivamente.\n\nCOME RAGGIUNGERCI\nMusica a Palazzo si trova alla fine della Fondamenta Duodo o Barbarigo, vicino alla fermata del vaporetto S. Maria del Giglio (linea 1 ACTV). Consigliamo di controllare l'esatta posizione sulla mappa presente sul nostro sito web www.musicapalazzo.com/#contact.\n\nPer ulteriori informazioni può visitare la nostra pagina delle domande frequenti www.musicapalazzo.com/f-a-q/.\n\nIn attesa di ricevervi a Palazzo, vi porgiamo i nostri più distinti saluti.",
'en' => "Dear Guest, \n\nYour reservation has been accepted.\nHere below you will find some useful information. \n\nFEES \nAdults: € 85.00 / person \nKids (under 15): € 30.00 / person \n\nMusica a Palazzo is a cultural association and therefore admission to performances is allowed to members only. It is necessary to fill in an application form (one per person). It is possible to become a member of the association just before a performance, by printing the application form attached to this message, filling it in with your personal data and handing it in at the front desk. Please DO NOT send the forms by email. In case you don't have access to a printer, you will be provided with empty forms at the front desk upon your arrival. \n\nThere are no additional charges or tickets.\n\nPAYMENT \nRegrettably, we cannot accept payments by debit or credit card. It is therefore necessary to pay in cash at the entrance, the same evening as the performance (from 8 pm).\n\nOPENING TIMES \nMusica a Palazzo opens at 8 pm and the performance starts at 8.30 pm. \nOnce the show has started, the doors will be closed and the doorbell will be turned off: therefore we strongly recommend you to be on time. \n\nRECOMMENDED DRESS CODE \nEvening casual\n(Male guests should wear long trousers and nice shoes) \n\nPLEASE READ!\nIn order to confirm your booking, you are kindly asked to contact us by e-mail or by phone the day before the performance that you have booked (you will find our contacts in the footnote). You will receive a reminder from this email address, so you can simply reply to that message.\n\nIf you need to cancel your booking, we kindly ask you to inform us as soon as possible.\n\nHOW TO REACH US \nMusica a Palazzo is located at the end of the Fondamenta Duodo or Barbarigo, close to the S. Maria del Giglio waterbus stop (ACTV line 1). We recommend you to check the exact position on the map on our website www.musicapalazzo.com/language/en/#contact. \nFor further information, please visit our FAQ page www.musicapalazzo.com/en/faq/. \n\nWe are looking forward to having you as our guest.\n\n Best Regards.",
'fr' => "Bonjour,\n\nVotre réservation a été acceptée.\nVoici ci-dessous, vous trouverez des informations utiles.\n\nTARIFS\nMusica a Palazzo est une association culturelle et donc l'accès aux spectacles est réservé aux membres. Il est nécessaire de remplir un formulaire pour chaque invité. Vous avez la possibilité de devenir membre avant chaque spectacle, en imprimant le formulaire d'inscription que vous trouvez ci-joint (ou à la réception le soir du spectacle), en le remplissant avec vos données personnelles et en le présentant à l'entrée. N'ENVOYEZ PAS les formulaires par e-mail, s'il vous plait. \n\nLes frais d'inscription sont de: \nAdultes: 85,00€ / personne \nEnfants (moins de 15 ans): 30,00€ / personne\nIl n'y a aucun frais ou des billets supplémentaires.\n\nPAIEMENT\nNous n'acceptons pas les cartes de crédit. Il est donc nécessaire de payer les frais d'inscription en espèces, le soir même du spectacle réservé.\n\nHORAIRES\nMusica a Palazzo ouvre ses portes à 20h00 et le spectacle commence à 20h30.\nAu début du spectacle, les portes seront fermées et la sonnerie sera désactivée: nous vous recommandons la plus grande ponctualité. En cas de retard il sera nécessaire d' attendre la fin du premier acte pour accéder à nos salons.\n\nHABILLEMENT CONSEILLE\nTenue décontractée\n\nLISEZ SVP\nPour confirmer votre réservation, vous devez nous contacter par e-mail ou par téléphone la veille du spectacle que vous avez réservé (vous trouverez nos contacts ci-dessous).\n\nDans le cas où vous souhaiteriez annuler votre réservation, veuillez s'il vous plaît nous aviser dans les plus brefs délais.\n\nCOMMENT NOUS REJOINDRE\nMusica a Palazzo se trouve à la fin de la Fondamenta Duodo o Barbarigo près de l'arrêt de vaporetto de Santa Maria del Giglio (ligne 1 de l'ACTV). Nous vous conseillons de vérifier l'emplacement exact sur la carte disponible sur notre site internet www.musicapalazzo.com/language/fr/#contact.\n\nPour plus d'informations vous pouvez consulter la page des demandes fréquentes www.musicapalazzo.com/fr/faq/.\n\nDans l'attente de vous compter parmi nos invités. Bien cordialement,",
'es' => "Buenos Días,\n\nSu reserva ha sido aceptada.\nA continuación se puede leer informaciones útiles.\n\nTARIFAS\nMusica a Palazzo es una asociación cultural y el acceso a los espectáculos es reservado únicamente a los socios. Es necesario llenar un formulario para cada invitado que desea asociarse. Es posible hacerse socio antes de cada función, llenando el formulario adjunto con sus datos personales y entregándolo en la entrada.\nLa cuota de inscripción es:\nAdultos: 85,00€ / persona \nNiños (hasta 15 años): 30,00€ / persona \nNo hay cuotas o billetes adicionales.\n\nMODALIDADES DE PAGO\nNo aceptamos tarjetas de crédito ni débito. Es necesario pagar la cuota de inscripción en efectivo, la misma noche del espectáculo indicada en la reserva.\n\nHORARIOS\nMusica a Palazzo abre a las 20:00 hs. y el espectáculo comienza a las 20:30 hs.\nDespués que comienza la función, se cierran las puertas y se apaga el timbre, por lo tanto, aconsejamos la máxima puntualidad. En caso de llegar tarde, se debe esperar el final del primer acto para poder acceder a las salas.\n\nVESTIMENTA APROPIADA\nInformal Elegante\n\nIMPORTANTE\nEL DIA ANTES del espectáculo indicado en su reserva debe contactarse con nosotros por e-mail o llamar para confirmar su reserva, (podrá encontrar nuestros contactos en el pié de página). Usted recibirá un recordatorio el dias antes.\n\nEn caso de que desee anular su reserva, le rogamos comunicarse con nosotros a la brevedad posible.\n\nCÓMO LLEGAR\nMusica a Palazzo se encuentra al final de la \"Fondamenta Duodo o Barbarigo\", cerca de la parada del ferry \"S. Maria del Giglio\" (línea 1 ACTV). Le aconsejamos corroborar la posición exacta en el mapa presente en nuestro sitio web www.musicapalazzo.com/language/es/#contact.\nPor más información, visite nuestra página www.musicapalazzo.com/f-a-q/.\n\nQuedamos a la espera de su agradable visita.\n\n\nSaludos Cordiales.",
),
);
/* This used get_post_meta() and has been updated to $post->meta syntax */
private static function get_booking_info($booking_id)
{
$post = get_post( $booking_id );
$myInfo = array(
'name' => $post->post_title,
'event' => MP_Booking_Register::get_event_name($post->booking_show),
'mail' => $post->booking_email,
'language' => $post->booking_language,
'seats' => $post->booking_seats,
'date' => $post->booking_date,
);
return $myInfo;
}
/* In the mail received by the admin, can't see any of those information, except for event name and post title */
private static function get_info_for_admin($booking_id)
{
$booking_info = self::get_booking_info($booking_id);
return "{$booking_info['seats']}\n\n {$booking_info['name']} \n spettacolo: {$booking_info['event']} \n e-mail: {$booking_info['mail']} \n numero di posti: {$booking_info['seats']} \n data: {$booking_info['date']} \n lingua: {$booking_info['language']}";
}
private static function get_title_info($booking_id)
{
$booking_info = self::get_booking_info($booking_id);
$booking_info['date'] = date('F d', strtotime($booking_info['date']));
return "{$booking_info['date']} - {$booking_info['event']} - {$booking_info['name']} x{$booking_info['seats']}";
}
private static function get_reminder_timestamp($date)
{
$one_day_before = (60 * 24) * 60;
return strtotime($date) - $one_day_before;
}
public static function deny_booking($booking_id)
{
$booking_info = self::get_booking_info($booking_id);
$message = self::$deny['client'][$booking_info['language']] . self::$footer;
$subject = self::get_title_info($booking_id) . ' - ' . self::$deny['subject'][$booking_info['language']];
wp_mail($booking_info['mail'], $subject, $message, self::$headers);
$message = self::$deny['admin'] . self::get_info_for_admin($booking_id);
$subject = self::get_title_info($booking_id) . ' - ' . self::$deny['subject']['it'];
wp_mail(self::admin_mails(), $subject, $message, self::$headers);
}
public static function afternoon_booking($booking_id)
{ //nuova funzione aggiunta per segnalare sold out serale + proposta spettacolo pomeridiano
$booking_info = self::get_booking_info($booking_id);
$message = self::$afternoon['client'][$booking_info['language']] . self::$footer;
$subject = self::get_title_info($booking_id) . ' - ' . self::$afternoon['subject'][$booking_info['language']];
wp_mail($booking_info['mail'], $subject, $message, self::$headers);
$message = self::$afternoon['admin'] . self::get_info_for_admin($booking_id);
$subject = self::get_title_info($booking_id) . ' - ' . self::$afternoon['subject']['it'];
wp_mail(self::admin_mails(), $subject, $message, self::$headers);
}
/* Here we are actually sending the e-mail (wp_mail) */
public static function accept_booking($booking_id)
{
$booking_info = self::get_booking_info($booking_id);
$message = self::$accept['client'][$booking_info['language']] . self::$footer;
$subject = self::get_title_info($booking_id) . ' - ' . self::$accept['subject'][$booking_info['language']];
// Doesn't get sent...
wp_mail($booking_info['mail'], $subject, $message, self::$headers);
$message = self::$accept['admin'] . self::get_info_for_admin($booking_id);
$subject = self::get_title_info($booking_id) . ' - ' . self::$accept['subject']['it'];
// An admin makes a resevation - probably just for testing! - and it is working...
wp_mail(self::admin_mails(), $subject, $message, self::$headers);
wp_schedule_single_event(self::get_reminder_timestamp($booking_info['date']), 'reminder', array($booking_info));
}
public static function special_accept_booking($booking_id)
{
$booking_info = self::get_booking_info($booking_id);
$message = self::$special_accept['client'][$booking_info['language']] . self::$footer;
$subject = self::get_title_info($booking_id) . ' - ' . self::$special_accept['subject'][$booking_info['language']];
wp_mail($booking_info['mail'], $subject, $message, self::$headers);
$message = self::$special_accept['admin'] . self::get_info_for_admin($booking_id);
$subject = self::get_title_info($booking_id) . ' - ' . self::$special_accept['subject']['it'];
wp_mail(self::admin_mails(), $subject, $message, self::$headers);
wp_schedule_single_event(self::get_reminder_timestamp($booking_info['date']), 'reminder', array($booking_info));
}
public static function send_request($booking_id)
{
$booking_info = self::get_booking_info($booking_id);
$subject = self::get_title_info($booking_id) . ' - ' . self::$request['subject'][$booking_info['language']];
$message = self::$request['client'][$booking_info['language']] . self::$footer;
wp_mail($booking_info['mail'], $subject, $message, self::$headers);
$subject = self::get_title_info($booking_id) . ' - ' . self::$request['subject']['it'];
$message = self::$request['admin'] . self::get_info_for_admin($booking_id);
wp_mail(self::admin_mails(), $subject, $message, self::$headers);
}
public static function send_reminder($booking_info)
{
$booking_info['date'] = date('F d', strtotime($booking_info['date']));
$subject = self::$reminder['subject'][$booking_info['language']] . ': ' . $booking_info['date'] . ' - ' . $booking_info['event'] . ' - ' . $booking_info['name'];
$message = self::$reminder['client'][$booking_info['language']] . $booking_info['event'] . self::$reminder['client3'][$booking_info['language']] . $booking_info['date'] . self::$reminder['client2'][$booking_info['language']] . self::$footer;
wp_mail($booking_info['mail'], $subject, $message, self::$headers);
}
}
add_action('reminder', array('MP_Notification', 'send_reminder'), 10, 1);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment