Example #1
0
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);
}
Example #2
0
function eme_fdgg_notification()
{
    $store_name = get_option('eme_fdgg_store_name');
    $shared_secret = get_option('eme_fdgg_shared_secret');
    require_once 'payment_gateways/fdgg/fdgg-util_sha2.php';
    $payment_id = intval($_POST['invoicenumber']);
    $charge_total = $_POST['charge_total'];
    $approval_code = $_POST['approval_code'];
    $response_hash = $_POST['response_hash'];
    $response_status = $_POST['status'];
    //$cur=$event['currency'];
    // First Data only allows USD
    $cur = "USD";
    $payment = eme_get_payment($payment_id);
    $timezone_short = "GMT";
    $eme_date_obj = new ExpressiveDate($payment['creation_date_gmt'], $timezone_short);
    $datetime = $eme_date_obj->format("Y:m:d-H:i:s");
    $calc_hash = fdgg_createHash($shared_secret . $approval_code . $charge_total . $cur . $datetime . $store_name);
    if ($response_hash != $calc_hash) {
        die('Hash Incorrect');
    }
    // TODO: do some extra checks, like the price payed and such
    #$price=eme_get_total_booking_price($event,$booking);
    if (strtolower($response_status) == 'approved') {
        eme_update_payment_payed($payment_id);
    }
}
Example #3
0
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;
    }
}