function eme_replace_booking_placeholders($format, $event, $booking, $is_multibooking = 0, $target = "html", $lang = '') { $deprecated = get_option('eme_deprecated'); preg_match_all("/#(ESC)?_?[A-Za-z0-9_]+(\\{[A-Za-z0-9_]+\\})?/", $format, $placeholders); $person = eme_get_person($booking['person_id']); $current_userid = get_current_user_id(); $answers = eme_get_answers($booking['booking_id']); $payment_id = eme_get_booking_payment_id($booking['booking_id']); $payment = eme_get_payment($payment_id); $booking_ids = array(); $bookings = array(); if ($payment_id) { $booking_ids = eme_get_payment_booking_ids($payment_id); $bookings = eme_get_bookings($booking_ids); } usort($placeholders[0], 'sort_stringlenth'); foreach ($placeholders[0] as $result) { $replacement = ''; $found = 1; $need_escape = 0; $orig_result = $result; if (strstr($result, '#ESC')) { $result = str_replace("#ESC", "#", $result); $need_escape = 1; } if (preg_match('/#_RESPID/', $result)) { $replacement = $person['person_id']; $replacement = eme_sanitize_html($replacement); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } else { $replacement = apply_filters('eme_general_rss', $replacement); } } elseif (preg_match('/#_RESP(NAME|LASTNAME|FIRSTNAME|ZIP|CITY|STATE|COUNTRY|ADDRESS1|ADDRESS2|PHONE|EMAIL)/', $result)) { $field = preg_replace("/#_RESP/", "", $result); $field = strtolower($field); if ($field == "name") { $field = "lastname"; } $replacement = $person[$field]; $replacement = eme_sanitize_html($replacement); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } else { $replacement = apply_filters('eme_general_rss', $replacement); } } elseif (preg_match('/#_(RESPCOMMENT|COMMENT)/', $result)) { $replacement = $booking['booking_comment']; $replacement = eme_sanitize_html($replacement); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } else { $replacement = apply_filters('eme_general_rss', $replacement); } } elseif ($deprecated && preg_match('/#_RESPSPACES(\\d+)/', $result, $matches) || preg_match('/#_RESPSPACES\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[1]) - 1; if (eme_is_multi($booking['booking_price'])) { $seats = eme_convert_multi2array($booking['booking_seats_mp']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif (preg_match('/#_TOTALPRICE$/', $result)) { $price = eme_get_total_booking_price($event, $booking); $replacement = sprintf("%01.2f", $price); } elseif (preg_match('/#_BOOKINGPRICEPERSEAT$/', $result)) { $price = eme_get_seat_booking_price($event, $booking); $replacement = sprintf("%01.2f", $price); } elseif (preg_match('/#_BOOKINGPRICEPERSEAT\\{(\\d+)\\}/', $result, $matches)) { // total price to pay per price if multiprice $total_prices = eme_get_seat_booking_multiprice($event, $booking); $field_id = intval($matches[1]) - 1; if (array_key_exists($field_id, $total_prices)) { $price = $total_prices[$field_id]; $replacement = sprintf("%01.2f", $price); } } elseif (preg_match('/#_TOTALPRICE\\{(\\d+)\\}/', $result, $matches)) { // total price to pay per price if multiprice $total_prices = eme_get_total_booking_multiprice($event, $booking); $field_id = intval($matches[1]) - 1; if (array_key_exists($field_id, $total_prices)) { $price = $total_prices[$field_id]; $replacement = sprintf("%01.2f", $price); } } elseif ($deprecated && preg_match('/#_TOTALPRICE(\\d+)/', $result, $matches)) { // total price to pay per price if multiprice $total_prices = eme_get_total_booking_multiprice($event, $booking); $field_id = intval($matches[1]) - 1; if (array_key_exists($field_id, $total_prices)) { $price = $total_prices[$field_id]; $replacement = sprintf("%01.2f", $price); } } elseif (preg_match('/#_CHARGE\\{(.+)\\}$/', $result, $matches)) { $price = eme_get_total_booking_price($event, $booking); $replacement = eme_payment_provider_extra_charge($price, $matches[1]); } elseif (preg_match('/#_RESPSPACES$/', $result)) { $replacement = eme_get_multitotal($booking['booking_seats']); } elseif (preg_match('/#_BOOKINGCREATIONDATE/', $result)) { $replacement = eme_localised_date($booking['creation_date']); } elseif (preg_match('/#_BOOKINGMODIFDATE/', $result)) { $replacement = eme_localised_date($booking['modif_date']); } elseif (preg_match('/#_BOOKINGCREATIONTIME/', $result)) { $replacement = eme_localised_time($booking['creation_date']); } elseif (preg_match('/#_BOOKINGMODIFTIME/', $result)) { $replacement = eme_localised_time($booking['modif_date']); } elseif (preg_match('/#_BOOKINGID/', $result)) { $replacement = $booking['booking_id']; } elseif (preg_match('/#_TRANSFER_NBR_BE97/', $result)) { $replacement = $booking['transfer_nbr_be97']; } elseif (preg_match('/#_PAYMENT_URL/', $result)) { if ($payment_id && eme_event_can_pay_online($event)) { $replacement = eme_payment_url($payment_id); } } elseif (preg_match('/#_CANCEL_LINK$/', $result)) { $url = eme_cancel_url($payment['random_id']); $replacement = "<a href='{$url}'>" . __('Cancel booking', 'eme') . "</a>"; } elseif (preg_match('/#_CANCEL_URL$/', $result)) { $replacement = eme_cancel_url($payment['random_id']); } elseif (preg_match('/#_CANCEL_CODE$/', $result)) { $replacement = $payment['random_id']; } elseif (preg_match('/#_FIELDS/', $result)) { $field_replace = ""; foreach ($answers as $answer) { $tmp_answer = eme_convert_answer2tag($answer); $field_replace .= $answer['field_name'] . ": {$tmp_answer}\n"; } $replacement = eme_trans_sanitize_html($field_replace, $lang); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } else { $replacement = apply_filters('eme_general_rss', $replacement); } } elseif (preg_match('/#_PAYED/', $result)) { $replacement = $booking['booking_payed'] ? __('Yes') : __('No'); } elseif ($deprecated && preg_match('/#_FIELDNAME(\\d+)/', $result, $matches) || preg_match('/#_FIELDNAME\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[1]); $formfield = eme_get_formfield_byid($field_id); $replacement = eme_trans_sanitize_html($formfield['field_name'], $lang); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } else { $replacement = apply_filters('eme_general_rss', $replacement); } } elseif ($deprecated && preg_match('/#_FIELD(\\d+)/', $result, $matches) || preg_match('/#_FIELD\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[1]); $formfield = eme_get_formfield_byid($field_id); $field_replace = ""; foreach ($answers as $answer) { if ($answer['field_name'] == $formfield['field_name']) { $tmp_answer = eme_convert_answer2tag($answer); $field_replace = $tmp_answer; } } $replacement = eme_trans_sanitize_html($field_replace, $lang); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } else { $replacement = apply_filters('eme_general_rss', $replacement); } } elseif (preg_match('/#_FIELDVALUE\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[1]); $formfield = eme_get_formfield_byid($field_id); foreach ($answers as $answer) { if ($answer['field_name'] == $formfield['field_name']) { if (is_array($answer['answer'])) { $tmp_answer = eme_convert_array2multi($answer['answer']); } else { $tmp_answer = $answer['answer']; } $field_replace = $tmp_answer; } } $replacement = eme_trans_sanitize_html($field_replace, $lang); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } else { $replacement = apply_filters('eme_general_rss', $replacement); } } elseif (preg_match('/#_MULTIBOOKING_SEATS$/', $result)) { if ($is_multibooking) { // returns the total of all seats for all bookings in the payment id related to this booking $replacement = eme_bookings_total_booking_seats($bookings); } } elseif (preg_match('/#_MULTIBOOKING_TOTALPRICE$/', $result)) { if ($is_multibooking) { // returns the price for all bookings in the payment id related to this booking $price = eme_bookings_total_booking_price($bookings); $replacement = sprintf("%01.2f", $price); } } elseif (preg_match('/#_MULTIBOOKING_DETAILS_TEMPLATE\\{(\\d+)\\}$/', $result, $matches)) { $template_id = intval($matches[1]); $template = eme_get_template_format($template_id); $res = ""; if ($template && $is_multibooking) { // don't let eme_replace_placeholders replace other shortcodes yet, let eme_replace_booking_placeholders finish and that will do it foreach ($bookings as $tmp_booking) { $tmp_event = eme_get_event_by_booking_id($tmp_booking['booking_id']); $tmp_res = eme_replace_placeholders($template, $tmp_event, "text", 0); $res .= eme_replace_booking_placeholders($tmp_res, $tmp_event, $tmp_booking, $is_multibooking, "text") . "\n"; } } $replacement = $res; } elseif (preg_match('/#_IS_MULTIBOOKING/', $result)) { $replacement = $is_multibooking; } else { $found = 0; } if ($found) { if ($need_escape) { $replacement = eme_sanitize_request(eme_sanitize_html(preg_replace('/\\n|\\r/', '', $replacement))); } $format = str_replace($orig_result, $replacement, $format); } } // now, replace any language tags found in the format itself $format = eme_translate($format, $lang); return do_shortcode($format); }
function eme_update_payment_payed($payment_id) { $booking_ids = eme_get_payment_booking_ids($payment_id); foreach ($booking_ids as $booking_id) { $booking = eme_get_booking($booking_id); $event = eme_get_event_by_booking_id($booking_id); if ($event['event_properties']['auto_approve'] == 1 && $booking['booking_approved'] == 0) { eme_update_booking_payed($booking_id, 1, 1); } else { eme_update_booking_payed($booking_id, 1, 0); } if (has_action('eme_ipn_action')) { do_action('eme_ipn_action', $booking); } } }
function eme_events_page_content() { global $wpdb; $format_header = get_option('eme_event_list_item_format_header'); if (empty($format_header)) { $format_header = DEFAULT_EVENT_LIST_HEADER_FORMAT; } $format_footer = get_option('eme_event_list_item_format_footer'); if (empty($format_footer)) { $format_footer = DEFAULT_EVENT_LIST_FOOTER_FORMAT; } if (isset($_REQUEST['eme_cancel_booking'])) { // GET for cancel links, POST for the cancel form $payment_randomid = eme_strip_tags($_REQUEST['eme_cancel_booking']); return eme_cancel_confirm_form($payment_randomid); } elseif (isset($_POST['eme_confirm_cancel_booking']) && isset($_POST['eme_pmt_rndid'])) { $payment_randomid = eme_strip_tags($_POST['eme_pmt_rndid']); $payment = eme_get_payment(0, $payment_randomid); $booking_ids = eme_get_payment_booking_ids($payment['id']); if (isset($_POST['eme_rsvp_nonce']) && wp_verify_nonce($_POST['eme_rsvp_nonce'], "cancel booking {$payment_randomid}")) { foreach ($booking_ids as $booking_id) { $booking = eme_get_booking($booking_id); // delete the booking before the mail is sent, so free spaces are correct eme_delete_booking($booking_id); eme_email_rsvp_booking($booking, "cancelRegistration"); // delete the booking answers after the mail is sent, so the answers can still be used in the mail eme_delete_answers($booking_id); } eme_delete_payment($payment['id']); } return "<div class='eme-rsvp-message'>" . __("The bookings have been cancelled", 'eme') . "</div>"; } elseif (get_query_var('eme_pmt_result') && get_option('eme_payment_show_custom_return_page')) { // show the result of a payment, but not for a multi-booking payment result $result = get_query_var('eme_pmt_result'); if ($result == 'succes') { $format = get_option('eme_payment_succes_format'); } else { $format = get_option('eme_payment_fail_format'); } if (get_option('eme_payment_add_bookingid_to_return') && get_query_var('eme_pmt_id') && get_query_var('event_id')) { $event = eme_get_event(intval(get_query_var('event_id'))); $payment_id = intval(get_query_var('eme_pmt_id')); $booking_ids = eme_get_payment_booking_ids($payment_id); if ($booking_ids) { // since each booking is for a different event, we can't know which one to show // so we show only the first one $booking = eme_get_booking($booking_ids[0]); return eme_replace_booking_placeholders($format, $event, $booking); } else { return; } } elseif (get_query_var('event_id')) { $event = eme_get_event(intval(get_query_var('event_id'))); return eme_replace_placeholders($format, $event); } else { return $format; } } elseif (get_query_var('eme_pmt_id')) { $payment_id = intval(get_query_var('eme_pmt_id')); $booking_ids = eme_get_payment_booking_ids($payment_id); if (count($booking_ids) == 1) { $page_body = eme_payment_form("", $payment_id); } else { $page_body = eme_multipayment_form($payment_id); } return $page_body; } if (get_query_var('eme_town')) { $eme_town = eme_sanitize_request(get_query_var('eme_town')); $location_ids = join(',', eme_get_town_location_ids($eme_town)); $stored_format = get_option('eme_event_list_item_format'); if (count($location_ids) > 0) { $format_header = get_option('eme_location_list_item_format_header'); if (empty($format_header)) { $format_header = DEFAULT_EVENT_LIST_HEADER_FORMAT; } $format_footer = get_option('eme_location_list_item_format_footer'); if (empty($format_footer)) { $format_footer = DEFAULT_EVENT_LIST_FOOTER_FORMAT; } $page_body = eme_get_events_list(get_option('eme_event_list_number_items'), "future", "ASC", $stored_format, $format_header, $format_footer, 0, '', '', 0, '', '', 0, $location_ids); } else { $page_body = "<div id='events-no-events'>" . get_option('eme_no_events_message') . "</div>"; } return $page_body; } if (get_query_var('location_id')) { $location = eme_get_location(intval(get_query_var('location_id'))); $single_location_format = get_option('eme_single_location_format'); $page_body = eme_replace_locations_placeholders($single_location_format, $location); return $page_body; } if (!get_query_var('calendar_day') && get_query_var('eme_event_cat')) { $format_header = get_option('eme_cat_event_list_item_format_header'); if (empty($format_header)) { $format_header = DEFAULT_CAT_EVENT_LIST_HEADER_FORMAT; } $format_footer = get_option('eme_cat_event_list_item_format_footer'); if (empty($format_footer)) { $format_footer = DEFAULT_CAT_EVENT_LIST_FOOTER_FORMAT; } $eme_event_cat = eme_sanitize_request(get_query_var('eme_event_cat')); $cat_ids = join(',', eme_get_category_ids($eme_event_cat)); $stored_format = get_option('eme_event_list_item_format'); if (!empty($cat_ids)) { $page_body = eme_get_events_list(get_option('eme_event_list_number_items'), "future", "ASC", $stored_format, $format_header, $format_footer, 0, $cat_ids); } else { $page_body = "<div id='events-no-events'>" . get_option('eme_no_events_message') . "</div>"; } return $page_body; } //if (isset ( $_REQUEST['event_id'] ) && $_REQUEST['event_id'] != '') { if (eme_is_single_event_page()) { // single event page $event_id = intval(get_query_var('event_id')); return eme_display_single_event($event_id); } elseif (get_query_var('calendar_day')) { $scope = eme_sanitize_request(get_query_var('calendar_day')); $location_id = isset($_GET['location_id']) ? urldecode($_GET['location_id']) : ''; $category = isset($_GET['category']) ? urldecode($_GET['category']) : ''; $notcategory = isset($_GET['notcategory']) ? urldecode($_GET['notcategory']) : ''; $author = isset($_GET['author']) ? urldecode($_GET['author']) : ''; $contact_person = isset($_GET['contact_person']) ? urldecode($_GET['contact_person']) : ''; $event_list_item_format = get_option('eme_event_list_item_format'); $show_single_event = 1; $page_body = eme_get_events_list(0, $scope, "ASC", $event_list_item_format, $format_header, $format_footer, $location_id, $category, '', 0, $author, $contact_person, 0, '', 0, 1, 0, $notcategory, 0, 0, 0, 0, "", $show_single_event); return $page_body; } else { // Multiple events page isset($_GET['scope']) ? $scope = eme_sanitize_request($_GET['scope']) : ($scope = "future"); $stored_format = get_option('eme_event_list_item_format'); if (get_option('eme_display_calendar_in_events_page')) { $page_body = eme_get_calendar('full=1'); } else { $page_body = eme_get_events_list(get_option('eme_event_list_number_items'), $scope, "ASC", $stored_format, $format_header, $format_footer, 0); } return $page_body; } }