function eme_actions_init() { // first the no cache headers nocache_headers(); eme_load_textdomain(); // now, first update the DB if needed $db_version = get_option('eme_version'); if ($db_version && $db_version != EME_DB_VERSION) { // add possible new options eme_add_options(); // update the DB tables // to do: check if the DB update succeeded ... eme_create_tables(); // now set the version correct update_option('eme_version', EME_DB_VERSION); // let the admin side know if the update succeeded update_option('eme_update_done', 1); } // now first all ajax ops: exit needed if (isset($_GET['eme_ical']) && $_GET['eme_ical'] == 'public_single' && isset($_GET['event_id'])) { header("Content-type: text/calendar; charset=utf-8"); header("Content-Disposition: inline; filename=eme_single.ics"); eme_ical_single(); exit; } if (isset($_GET['eme_ical']) && $_GET['eme_ical'] == 'public') { header("Content-type: text/calendar; charset=utf-8"); header("Content-Disposition: inline; filename=eme_public.ics"); eme_ical(); exit; } if (isset($_POST['eme_ajaxCalendar']) && $_POST['eme_ajaxCalendar'] == true) { header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset')); eme_filter_calendar_ajax(); exit; } if (isset($_GET['eme_rss']) && $_GET['eme_rss'] == 'main') { header("Content-type: text/xml"); eme_rss(); exit; } if (isset($_POST['eme_ajax_action']) && $_POST['eme_ajax_action'] == 'client_clock_submit') { eme_client_clock_callback(); exit; } if (isset($_GET['eme_admin_action']) && $_GET['eme_admin_action'] == 'booking_data' && is_admin() && isset($_GET['event_id'])) { header("Content-type: application/json; charset=utf-8"); echo '{"bookedSeats":' . eme_get_booked_seats(intval($_GET['event_id'])) . ',"availableSeats":' . eme_get_available_seats(intval($_GET['event_id'])) . '}'; exit; } if (isset($_GET['eme_admin_action']) && $_GET['eme_admin_action'] == 'autocomplete_locations' && is_admin()) { eme_locations_search_ajax(); exit; } if (isset($_GET['eme_admin_action']) && $_GET['eme_admin_action'] == 'autocomplete_people' && is_admin()) { eme_people_search_ajax(); exit; } if (isset($_GET['eme_admin_action']) && $_GET['eme_admin_action'] == 'booking_printable' && is_admin() && isset($_GET['event_id'])) { eme_printable_booking_report(intval($_GET['event_id'])); exit; } if (isset($_GET['eme_admin_action']) && $_GET['eme_admin_action'] == 'booking_csv' && is_admin() && isset($_GET['event_id'])) { eme_csv_booking_report(intval($_GET['event_id'])); exit; } if (is_admin() && current_user_can(get_option('eme_cap_registrations')) && isset($_REQUEST['eme_admin_action']) && $_REQUEST['eme_admin_action'] == 'remove_booking' && isset($_REQUEST['booking_id'])) { $booking_id = intval($_REQUEST['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); if (get_option('eme_deny_mail_event_edit')) { eme_email_rsvp_booking($booking, "denyRegistration"); } // delete the booking answers after the mail is sent, so the answers can still be used in the mail eme_delete_answers($booking_id); exit; } if (isset($_GET['query']) && $_GET['query'] == 'GlobalMapData') { $eventful = isset($_GET['eventful']) ? $_GET['eventful'] : false; $map_id = isset($_GET['map_id']) ? $_GET['map_id'] : 0; $eventful = $eventful === "true" || $eventful === "1" ? true : $eventful; $eventful = $eventful === "false" || $eventful === "0" ? false : $eventful; eme_global_map_json((bool) $eventful, $_GET['scope'], $_GET['category'], $map_id); exit; } if (isset($_GET['eme_eventAction']) && ($_GET['eme_eventAction'] == "paypal_notification" || $_GET['eme_eventAction'] == "paypal_ipn")) { eme_paypal_notification(); exit; } if (isset($_GET['eme_eventAction']) && ($_GET['eme_eventAction'] == "2co_notification" || $_GET['eme_eventAction'] == "2co_ins")) { eme_2co_notification(); exit; } if (isset($_GET['eme_eventAction']) && $_GET['eme_eventAction'] == "webmoney_notification") { eme_webmoney_notification(); exit; } if (isset($_GET['eme_eventAction']) && $_GET['eme_eventAction'] == "mollie_notification") { eme_mollie_notification(); exit; } if (isset($_POST['eme_eventAction']) && ($_POST['eme_eventAction'] == "fdgg_notification" || $_POST['eme_eventAction'] == "fdgg_ipn")) { eme_fdgg_notification(); exit; } if (isset($_GET['eme_eventAction']) && $_GET['eme_eventAction'] == "worldpay_notification") { eme_worldpay_notification(); exit; } if (isset($_GET['eme_eventAction']) && $_GET['eme_eventAction'] == "sagepay_notification") { eme_sagepay_notification(); // sagepay doesn't use a notification url, but sends the status along as part of the return url, so we just check // the status and set payed or not, but then we continue regular flow of events } }
function eme_cancel_booking_url($booking_id) { if (!is_user_logged_in()) return; $booking=eme_get_booking($booking_id); $current_userid=get_current_user_id(); if ($booking['wp_id']!=$current_userid) return; $def_language = eme_detect_lang(); $language = $def_language; $the_link = ""; // some plugins add the lang info to the home_url, remove it so we don't get into trouble or add it twice $the_link = remove_query_arg('lang',$the_link); $the_link = add_query_arg( array( 'eme_cancel_booking' => $booking_id ), $the_link ); if (!empty($language)) $the_link = add_query_arg( array( 'lang' => $language ), $the_link ); return $the_link; }
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_replace_placeholders($format, $event = "", $target = "html", $do_shortcode = 1, $lang = '') { global $wp_query; global $eme_need_gmap_js, $booking_id_done; // an initial filter for the format, in case people want to change anything before the placeholders get replaced if (has_filter('eme_events_format_prefilter')) { $format = apply_filters('eme_events_format_prefilter', $format, $event); } // some variables we'll use further down more than once $current_userid = get_current_user_id(); $person_id = eme_get_person_id_by_wp_id($current_userid); $eme_enable_notes_placeholders = get_option('eme_enable_notes_placeholders'); if (isset($event['location_id']) && $event['location_id']) { $location = eme_get_location($event['location_id']); } else { $location = eme_new_location(); } // first replace the notes sections, since these can contain other placeholders if ($eme_enable_notes_placeholders) { $format = eme_replace_notes_placeholders($format, $event, $target); } // then we do the custom attributes, since these can contain other placeholders preg_match_all("/#(ESC|URL)?_ATT\\{.+?\\}(\\{.+?\\})?/", $format, $results); foreach ($results[0] as $resultKey => $result) { $need_escape = 0; $need_urlencode = 0; $orig_result = $result; if (strstr($result, '#ESC')) { $result = str_replace("#ESC", "#", $result); $need_escape = 1; } elseif (strstr($result, '#URL')) { $result = str_replace("#URL", "#", $result); $need_urlencode = 1; } $replacement = ""; //Strip string of placeholder and just leave the reference $attRef = substr(substr($result, 0, strpos($result, '}')), 6); if (isset($event['event_attributes'][$attRef])) { $replacement = $event['event_attributes'][$attRef]; } if (trim($replacement) == '' && isset($results[2][$resultKey]) && $results[2][$resultKey] != '') { //Check to see if we have a second set of braces; $replacement = substr($results[2][$resultKey], 1, strlen(trim($results[2][$resultKey])) - 2); } if ($need_escape) { $replacement = eme_sanitize_request(eme_sanitize_html(preg_replace('/\\n|\\r/', '', $replacement))); } if ($need_urlencode) { $replacement = rawurlencode($replacement); } $format = str_replace($orig_result, $replacement, $format); } // and now all the other placeholders $legacy = get_option('eme_legacy'); $deprecated = get_option('eme_deprecated'); if ($legacy) { preg_match_all("/#(ESC|URL)?@?_?[A-Za-z0-9_]+(\\[.*\\])?(\\[.*\\])?/", $format, $placeholders); } else { preg_match_all("/#(ESC|URL)?@?_?[A-Za-z0-9_]+(\\{.*?\\})?(\\{.*?\\})?/", $format, $placeholders); } // make sure we set the largest matched placeholders first, otherwise if you found e.g. // #_LOCATION, part of #_LOCATIONPAGEURL would get replaced as well ... usort($placeholders[0], 'sort_stringlenth'); // if the add and remove booking form appear on the same page, we need to decide which form shows the "message" upon booking // the first one wins $a1 = strpos($format, "ADDBOOKINGFORM"); $a2 = strpos($format, "REMOVEBOOKINGFORM"); $show_message_on_add = 1; $show_message_on_remove = 1; if ($a1 !== false && $a2 !== false) { if ($a1 < $a2) { $show_message_on_remove = 0; } else { $show_message_on_add = 0; } } foreach ($placeholders[0] as $result) { $need_escape = 0; $need_urlencode = 0; $orig_result = $result; $found = 1; if (strstr($result, '#ESC')) { $result = str_replace("#ESC", "#", $result); $need_escape = 1; } elseif (strstr($result, '#URL')) { $result = str_replace("#URL", "#", $result); $need_urlencode = 1; } $replacement = ""; // matches all fields placeholder if ($event && preg_match('/#_EDITEVENTLINK/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = "<a href=' " . admin_url("admin.php?page=events-manager&eme_admin_action=edit_event&event_id=" . $event['event_id']) . "'>" . __('Edit') . "</a>"; } } elseif ($event && preg_match('/#_EDITEVENTURL/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = admin_url("admin.php?page=events-manager&eme_admin_action=edit_event&event_id=" . $event['event_id']); } } elseif ($event && preg_match('/#_EVENTPRINTBOOKINGSLINK/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_list_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = "<a href=' " . admin_url("admin.php?page=eme-people&eme_admin_action=booking_printable&event_id=" . $event['event_id']) . "'>" . __('Printable view of bookings', 'eme') . "</a>"; } } elseif ($event && preg_match('/#_EVENTPRINTBOOKINGSURL/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_list_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = admin_url("admin.php?page=eme-people&eme_admin_action=booking_printable&event_id=" . $event['event_id']); } } elseif ($event && preg_match('/#_EVENTCSVBOOKINGSLINK/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_list_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = "<a href=' " . admin_url("admin.php?page=eme-people&eme_admin_action=booking_csv&event_id=" . $event['event_id']) . "'>" . __('Printable view of bookings', 'eme') . "</a>"; } } elseif ($event && preg_match('/#_EVENTCSVBOOKINGSURL/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_list_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = admin_url("admin.php?page=eme-people&eme_admin_action=booking_csv&event_id=" . $event['event_id']); } } elseif ($event && preg_match('/#_STARTDATE/', $result)) { $replacement = eme_localised_date($event['event_start_date']); } elseif ($event && preg_match('/#_STARTTIME/', $result)) { $replacement = eme_localised_time($event['event_start_time']); } elseif ($event && preg_match('/#_ENDDATE/', $result)) { $replacement = eme_localised_date($event['event_end_date']); } elseif ($event && preg_match('/#_ENDTIME/', $result)) { $replacement = eme_localised_time($event['event_end_time']); } elseif ($event && preg_match('/#_24HSTARTTIME/', $result)) { $replacement = substr($event['event_start_time'], 0, 5); } elseif ($event && preg_match('/#_24HENDTIME$/', $result)) { $replacement = substr($event['event_end_time'], 0, 5); } elseif ($event && preg_match('/#_PAST_FUTURE_CLASS/', $result)) { if (strtotime($event['event_start_date'] . " " . $event['event_start_time']) > time()) { $replacement = "eme-future-event"; } elseif (strtotime($event['event_end_date'] . " " . $event['event_end_time']) > time()) { $replacement = "eme-ongoing-event"; } else { $replacement = "eme-past-event"; } } elseif ($event && preg_match('/#_12HSTARTTIME$/', $result)) { $replacement = date("h:i A", strtotime($event['event_start_time'])); } elseif ($event && preg_match('/#_12HENDTIME$/', $result)) { $replacement = date("h:i A", strtotime($event['event_end_time'])); } elseif ($event && preg_match('/#_12HSTARTTIME_NOLEADINGZERO/', $result)) { $replacement = date("g:i A", strtotime($event['event_start_time'])); if (get_option('eme_time_remove_leading_zeros')) { $replacement = str_replace(":0", ":", $replacement); } } elseif ($event && preg_match('/#_12HENDTIME_NOLEADINGZERO/', $result)) { $replacement = date("g:i A", strtotime($event['event_end_time'])); if (get_option('eme_time_remove_leading_zeros')) { $replacement = str_replace(":0", ":", $replacement); } } elseif ($event && preg_match('/#_MAP/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } elseif (isset($event['location_id']) && $event['location_id']) { $replacement = eme_single_location_map($location); } } elseif ($event && preg_match('/#_DIRECTIONS/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } elseif (isset($event['location_id']) && $event['location_id']) { $replacement = eme_add_directions_form($location); } } elseif ($event && preg_match('/#_EVENTS_FILTERFORM/', $result)) { if ($target == "rss" || $target == "text" || eme_is_single_event_page()) { $replacement = ""; } else { $replacement = eme_filter_form(); } } elseif ($event && preg_match('/#_ADDBOOKINGFORM$/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } else { if ($booking_id_done && eme_event_can_pay_online($event)) { $booking = eme_get_booking($booking_id_done); if (eme_get_total_booking_price($event, $booking) > 0) { $replacement = eme_payment_form($event, $booking_id_done); } else { $replacement = eme_add_booking_form($event['event_id'], $show_message_on_add); } } else { $replacement = eme_add_booking_form($event['event_id'], $show_message_on_add); } } } elseif ($event && preg_match('/#_ADDBOOKINGFORM_IF_NOT_REGISTERED/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } elseif (is_user_logged_in()) { // we show the form if the user did not register yet, or after registration to show the paypal form if ($booking_id_done && eme_event_can_pay_online($event)) { $booking = eme_get_booking($booking_id_done); if (eme_get_total_booking_price($event, $booking) > 0) { $replacement = eme_payment_form($event, $booking_id_done); } elseif (!eme_get_booking_ids_by_wp_id($current_userid, $event['event_id'])) { $replacement = eme_add_booking_form($event['event_id'], $show_message_on_add); } } elseif (!eme_get_booking_ids_by_wp_id($current_userid, $event['event_id'])) { $replacement = eme_add_booking_form($event['event_id'], $show_message_on_add); } } } elseif ($event && preg_match('/#_REMOVEBOOKINGFORM$/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } else { // when the booking just happened and the user needs to pay, we don't show the remove booking form if ($booking_id_done && eme_event_can_pay_online($event)) { $replacement = ""; } else { $replacement = eme_delete_booking_form($event['event_id'], $show_message_on_remove); } } } elseif ($event && preg_match('/#_REMOVEBOOKINGFORM_IF_REGISTERED/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } elseif (is_user_logged_in()) { // when the booking just happened and the user needs to pay, we don't show the remove booking form if ($booking_id_done && eme_event_can_pay_online($event)) { $replacement = ""; } elseif (eme_get_booking_ids_by_wp_id($current_userid, $event['event_id'])) { $replacement = eme_delete_booking_form($event['event_id'], $show_message_on_remove); } } } elseif ($event && preg_match('/#_(AVAILABLESPACES|AVAILABLESEATS)$/', $result)) { $replacement = eme_get_available_seats($event['event_id']); } elseif ($deprecated && preg_match('/#_(AVAILABLESPACES|AVAILABLESEATS)(\\d+)/', $result, $matches) || preg_match('/#_(AVAILABLESPACES|AVAILABLESEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; if (eme_is_multi($event['event_seats'])) { $seats = eme_get_available_multiseats($event['event_id']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_(TOTALSPACES|TOTALSEATS)$/', $result)) { $replacement = $event['event_seats']; } elseif ($deprecated && preg_match('/#_(TOTALSPACES|TOTALSEATS)(\\d+)/', $result, $matches) || preg_match('/#_(TOTALSPACES|TOTALSEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; if (eme_is_multi($event['event_seats'])) { $seats = eme_convert_multi2array($event['event_seats']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_(RESERVEDSPACES|BOOKEDSEATS)$/', $result)) { $replacement = eme_get_booked_seats($event['event_id']); } elseif ($deprecated && preg_match('/#_(RESERVEDSPACES|BOOKEDSEATS)(\\d+)/', $result, $matches) || preg_match('/#_(RESERVEDSPACES|BOOKEDSEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; if (eme_is_multi($event['event_seats'])) { $seats = eme_get_booked_multiseats($event['event_id']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_(PENDINGSPACES|PENDINGSEATS)$/', $result)) { $replacement = eme_get_pending_seats($event['event_id']); } elseif ($event && preg_match('/#_(PENDINGSPACES|PENDINGSEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; if (eme_is_multi($event['event_seats'])) { $seats = eme_get_pending_multiseats($event['event_id']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_(APPROVEDSPACES|APPROVEDSEATS)$/', $result)) { $replacement = eme_get_approved_seats($event['event_id']); } elseif ($event && preg_match('/#_(APPROVEDSPACES|APPROVEDSEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; if (eme_is_multi($event['event_seats'])) { $seats = eme_get_approved_multiseats($event['event_id']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_USER_(RESERVEDSPACES|BOOKEDSEATS)$/', $result)) { if (is_user_logged_in()) { $replacement = eme_get_booked_seats_by_wp_event_id($current_userid, $event['event_id']); } } elseif ($event && preg_match('/#_LINKEDNAME/', $result)) { $event_link = eme_event_url($event, $lang); if ($target == "html") { $replacement = "<a href='{$event_link}' title='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'>" . eme_trans_sanitize_html($event['event_name'], $lang) . "</a>"; } else { $replacement = eme_translate($event['event_name'], $lang); } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_ICALLINK/', $result)) { $url = site_url("/?eme_ical=public_single&event_id=" . $event['event_id']); $replacement = "<a href='{$url}'>ICAL</a>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_ICALURL/', $result)) { $replacement = site_url("/?eme_ical=public_single&event_id=" . $event['event_id']); } elseif ($event && preg_match('/#_EVENTIMAGE$/', $result)) { if (!empty($event['event_image_id'])) { $event['event_image_url'] = wp_get_attachment_url($event['event_image_id']); } if ($event['event_image_url'] != '') { $replacement = "<img src='" . $event['event_image_url'] . "' alt='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'/>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_EVENTIMAGEURL$/', $result)) { if (!empty($event['event_image_id'])) { $event['event_image_url'] = wp_get_attachment_url($event['event_image_id']); } if ($event['event_image_url'] != '') { $replacement = $event['event_image_url']; } } elseif ($event && preg_match('/#_EVENTIMAGETHUMB$/', $result)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], get_option('eme_thumbnail_size')); $thumb_url = $thumb_array[0]; $thumb_width = $thumb_array[1]; $thumb_height = $thumb_array[2]; $replacement = "<img width='{$thumb_width}' height='{$thumb_height}' src='" . $thumb_url . "' alt='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'/>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_EVENTIMAGETHUMBURL$/', $result)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], get_option('eme_thumbnail_size')); $thumb_url = $thumb_array[0]; $replacement = $thumb_url; } } elseif ($event && preg_match('/#_EVENTIMAGETHUMB\\{(.+)\\}/', $result, $matches)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], $matches[1]); $thumb_url = $thumb_array[0]; $thumb_width = $thumb_array[1]; $thumb_height = $thumb_array[2]; $replacement = "<img width='{$thumb_width}' height='{$thumb_height}' src='" . $thumb_url . "' alt='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'/>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($legacy && $event && preg_match('/#_EVENTIMAGETHUMB\\[(.+)\\]/', $result, $matches)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], $matches[1]); $thumb_url = $thumb_array[0]; $thumb_width = $thumb_array[1]; $thumb_height = $thumb_array[2]; $replacement = "<img width='{$thumb_width}' height='{$thumb_height}' src='" . $thumb_url . "' alt='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'/>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_EVENTIMAGETHUMBURL\\{(.+)\\}/', $result, $matches)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], $matches[1]); $thumb_url = $thumb_array[0]; $replacement = $thumb_url; } } elseif ($legacy && $event && preg_match('/#_EVENTIMAGETHUMBURL\\[(.+)\\]/', $result, $matches)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], $matches[1]); $thumb_url = $thumb_array[0]; $replacement = $thumb_url; } } elseif ($event && preg_match('/#_EVENTATT\\{(.+)\\}\\{(.+)\\}/', $result, $matches)) { $tmp_event_id = intval($matches[1]); $tmp_event_attkey = $matches[2]; $tmp_event = eme_get_event($tmp_event_id); if (isset($tmp_event['event_attributes'][$tmp_event_attkey])) { $replacement = $tmp_event['event_attributes'][$tmp_event_attkey]; } } elseif ($event && preg_match('/#_MYLOCATIONATT\\{(.+)\\}/', $result, $matches)) { $tmp_attkey = $matches[1]; if (isset($location['location_attributes'][$tmp_attkey])) { $replacement = $location['location_attributes'][$tmp_attkey]; } } elseif ($event && preg_match('/#_EVENTPAGEURL\\{(.+)\\}/', $result, $matches)) { $events_page_link = eme_get_events_page(true, false); $replacement = add_query_arg(array('event_id' => intval($matches[1])), $events_page_link); if (!empty($lang)) { $replacement = add_query_arg(array('lang' => $lang), $replacement); } } elseif ($legacy && $event && preg_match('/#_EVENTPAGEURL\\[(.+)\\]/', $result, $matches)) { $events_page_link = eme_get_events_page(true, false); $replacement = add_query_arg(array('event_id' => intval($matches[1])), $events_page_link); if (!empty($lang)) { $replacement = add_query_arg(array('lang' => $lang), $replacement); } } elseif ($event && preg_match('/#_EVENTPAGEURL$/', $result)) { $replacement = eme_event_url($event, $lang); } elseif ($event && preg_match('/#_(NAME|EVENTNAME)$/', $result)) { $field = "event_name"; if (isset($event[$field])) { $replacement = $event[$field]; } if ($target == "html") { $replacement = eme_trans_sanitize_html($replacement, $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate($replacement, $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate($replacement, $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_EVENTID/', $result)) { $field = "event_id"; $replacement = $event[$field]; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_DAYS_TILL_START/', $result)) { $now = date("Y-m-d"); $replacement = eme_daydifference($now, $event['event_start_date']); } elseif ($event && preg_match('/#_DAYS_TILL_END/', $result)) { $now = date("Y-m-d"); $replacement = eme_daydifference($now, $event['event_end_date']); } elseif ($event && preg_match('/#_HOURS_TILL_START/', $result)) { $now = date("Y-m-d H:i"); $replacement = eme_hourdifference($now, $event['event_start_date'] . " " . $event['event_start_time']); } elseif ($event && preg_match('/#_HOURS_TILL_END/', $result)) { $now = date("Y-m-d H:i"); $replacement = eme_hourdifference($now, $event['event_end_date'] . " " . $event['event_end_time']); } elseif ($event && preg_match('/#_EVENTPRICE$|#_PRICE$/', $result)) { $field = "price"; if ($event[$field]) { $replacement = $event[$field]; } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($deprecated && $event && preg_match('/#_(EVENT)?PRICE(\\d+)/', $result, $matches) || $event && preg_match('/#_(EVENT)?PRICE\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2] - 1); if ($event["price"] && eme_is_multi($event["price"])) { $prices = eme_convert_multi2array($event["price"]); if (is_array($prices) && array_key_exists($field_id, $prices)) { $replacement = $prices[$field_id]; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } } elseif ($event && preg_match('/#_CURRENCY/', $result)) { $field = "currency"; // currency is only important if the price is not empty as well if ($event['price']) { $replacement = $event[$field]; } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_ATTENDEES/', $result)) { $replacement = eme_get_attendees_list_for($event); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_BOOKINGS/', $result)) { $replacement = eme_get_bookings_list_for_event($event); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_(CONTACTNAME|CONTACTPERSON)/', $result)) { $contact = eme_get_contact($event); if ($contact) { $replacement = $contact->display_name; } $replacement = eme_trans_sanitize_html($replacement, $lang); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_(CONTACTEMAIL|PLAIN_CONTACTEMAIL)/', $result)) { $contact = eme_get_contact($event); if ($contact) { $replacement = $contact->user_email; if ($target == "html") { // ascii encode for primitive harvesting protection ... $replacement = eme_ascii_encode($replacement); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_CONTACTPHONE/', $result)) { $contact = eme_get_contact($event); if ($contact) { $phone = eme_get_user_phone($contact->ID); // ascii encode for primitive harvesting protection ... $replacement = eme_ascii_encode($phone); } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_AUTHORNAME/', $result)) { $author = eme_get_author($event); if ($author) { $replacement = $author->display_name; } $replacement = eme_trans_sanitize_html($replacement, $lang); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_AUTHOREMAIL/', $result)) { $author = eme_get_author($event); if ($author) { $replacement = $author->user_email; if ($target == "html") { // ascii encode for primitive harvesting protection ... $replacement = eme_ascii_encode($replacement); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_AUTHORPHONE/', $result)) { $author = eme_get_author($event); if ($author) { $phone = eme_get_user_phone($author->ID); // ascii encode for primitive harvesting protection ... $replacement = eme_ascii_encode($phone); } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif (preg_match('/#_EVENTCREATIONDATE/', $result)) { $replacement = eme_localised_date($event['creation_date']); } elseif (preg_match('/#_EVENTMODIFDATE/', $result)) { $replacement = eme_localised_date($event['modif_date']); } elseif (preg_match('/#_EVENTCREATIONTIME/', $result)) { $replacement = eme_localised_time($event['creation_date']); } elseif (preg_match('/#_EVENTMODIFTIME/', $result)) { $replacement = eme_localised_time($event['modif_date']); } elseif ($event && preg_match('/#[A-Za-z]$/', $result)) { // matches all PHP date placeholders for startdate-time $replacement = eme_localised_date($event['event_start_date'] . " " . $event['event_start_time'], ltrim($result, "#")); if (get_option('eme_time_remove_leading_zeros') && $result == "#i") { $replacement = ltrim($replacement, "0"); } } elseif ($event && preg_match('/#@[A-Za-z]$/', $result)) { // matches all PHP time placeholders for enddate-time $replacement = eme_localised_date($event['event_end_date'] . " " . $event['event_end_time'], ltrim($result, "#@")); if (get_option('eme_time_remove_leading_zeros') && $result == "#@i") { $replacement = ltrim($replacement, "0"); } } elseif ($event && preg_match('/#_EVENTCATEGORYIDS$/', $result) && get_option('eme_categories_enabled')) { $categories = $event['event_category_ids']; if ($target == "html") { $replacement = eme_trans_sanitize_html($categories, $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_trans_sanitize_html($categories, $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_trans_sanitize_html($categories, $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_(EVENT)?CATEGORIES$/', $result) && get_option('eme_categories_enabled')) { $categories = eme_get_event_category_names($event['event_id']); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(", ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_EVENTCATEGORYDESCRIPTIONS$/', $result) && get_option('eme_categories_enabled')) { $categories = eme_get_event_category_descriptions($event['event_id']); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(", ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_LINKED(EVENT)?CATEGORIES$/', $result) && get_option('eme_categories_enabled')) { $categories = eme_get_event_categories($event['event_id']); $cat_links = array(); foreach ($categories as $category) { $cat_link = eme_category_url($category); $cat_name = $category['category_name']; if ($target == "html") { array_push($cat_links, "<a href='{$cat_link}' title='" . eme_trans_sanitize_html($cat_name, $lang) . "'>" . eme_trans_sanitize_html($cat_name, $lang) . "</a>"); } else { array_push($cat_links, eme_translate($cat_name, $lang)); } } $replacement = join(", ", $cat_links); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/^#_(EVENT)?CATEGORIES\\{(.*?)\\}\\{(.*?)\\}/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[2]; $exclude_cats = $matches[3]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_category_names($event['event_id'], $extra_conditions); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(", ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($legacy && $event && preg_match('/^#_(EVENT)?CATEGORIES\\[(.*?)\\]\\[(.*?)\\]/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[2]; $exclude_cats = $matches[3]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_category_names($event['event_id'], $extra_conditions); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(", ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_LINKED(EVENT)?CATEGORIES\\{(.*?)\\}\\{(.*?)\\}/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[2]; $exclude_cats = $matches[3]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_categories($event['event_id'], $extra_conditions); $cat_links = array(); foreach ($categories as $category) { $cat_link = eme_category_url($category); $cat_name = $category['category_name']; if ($target == "html") { array_push($cat_links, "<a href='{$cat_link}' title='" . eme_trans_sanitize_html($cat_name, $lang) . "'>" . eme_trans_sanitize_html($cat_name, $lang) . "</a>"); } else { array_push($cat_links, eme_translate($cat_name, $lang)); } } $replacement = join(", ", $cat_links); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($legacy && $event && preg_match('/#_LINKED(EVENT)?CATEGORIES\\[(.*?)\\]\\[(.*?)\\]/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[2]; $exclude_cats = $matches[3]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_categories($event['event_id'], $extra_conditions); $cat_links = array(); foreach ($categories as $category) { $cat_link = eme_category_url($category); $cat_name = $category['category_name']; if ($target == "html") { array_push($cat_links, "<a href='{$cat_link}' title='" . eme_trans_sanitize_html($cat_name, $lang) . "'>" . eme_trans_sanitize_html($cat_name, $lang) . "</a>"); } else { array_push($cat_links, eme_translate($cat_name, $lang)); } } $replacement = join(", ", $cat_links); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif (preg_match('/#_CALENDAR_DAY/', $result)) { $day_key = get_query_var('calendar_day'); $replacement = eme_localised_date($day_key); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_RECURRENCE_DESC|#_RECURRENCEDESC/', $result)) { if ($event['recurrence_id']) { $replacement = eme_get_recurrence_desc($event['recurrence_id']); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_RECURRENCE_NBR/', $result)) { // returns the sequence number of an event in a recurrence series if ($event['recurrence_id']) { $events = eme_get_recurrence_eventids($event['recurrence_id']); $nbr = array_search($event['event_id'], $events); if ($nbr !== false) { $replacement = $nbr + 1; } } } elseif ($event && preg_match('/#_RSVPEND/', $result)) { // show the end date+time for which a user can rsvp for an event if (eme_is_event_rsvp($event)) { $rsvp_number_days = $event['rsvp_number_days']; $rsvp_number_hours = $event['rsvp_number_hours']; $rsvp_end_datetime = strtotime("-{$rsvp_number_days} days -{$rsvp_number_hours} hours", strtotime($event['event_start_date'] . " " . $event['event_start_time'])); $rsvp_end_date = eme_localised_unixdatetime($rsvp_end_datetime); $rsvp_end_time = eme_localised_unixtime($rsvp_end_datetime); $replacement = $rsvp_end_date . " " . $rsvp_end_time; } } elseif (preg_match('/#_IS_RSVP_ENDED/', $result)) { if (eme_is_event_rsvp($event)) { $event_start_datetime = strtotime($event['event_start_date'] . " " . $event['event_start_time']); $rsvp_end_datetime = $event_start_datetime - $event['rsvp_number_days'] * 60 * 60 * 24 - $event['rsvp_number_hours'] * 60 * 60; if ($rsvp_end_datetime < time()) { $replacement = 1; } else { $replacement = 0; } } } elseif (preg_match('/#_IS_SINGLE_DAY/', $result)) { if (eme_is_single_day_page()) { $replacement = 1; } else { $replacement = 0; } } elseif (preg_match('/#_IS_SINGLE_EVENT/', $result)) { if (eme_is_single_event_page()) { $replacement = 1; } else { $replacement = 0; } } elseif (preg_match('/#_IS_LOGGED_IN/', $result)) { if (is_user_logged_in()) { $replacement = 1; } else { $replacement = 0; } } elseif (preg_match('/#_IS_ADMIN_PAGE/', $result)) { if (is_admin()) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_RSVP_ENABLED/', $result)) { if (eme_is_event_rsvp($event)) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_PRIVATE_EVENT/', $result)) { if ($event['event_status'] == STATUS_PRIVATE) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_RECURRENT_EVENT/', $result)) { if ($event['recurrence_id']) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_ONGOING_EVENT/', $result)) { if (strtotime($event['event_start_date'] . " " . $event['event_start_time']) <= time() && strtotime($event['event_end_date'] . " " . $event['event_end_time']) >= time()) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_REGISTERED/', $result)) { if (is_user_logged_in() && eme_get_booking_ids_by_wp_id($current_userid, $event['event_id'])) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_MULTIPRICE/', $result)) { if (eme_is_multi($event['price'])) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_MULTISEAT/', $result)) { if (eme_is_multi($event['event_seats'])) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_ALLDAY/', $result)) { if ($event['event_properties']['all_day']) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_ATTENDANCE/', $result)) { if ($event['event_properties']['take_attendance']) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_AUTHOR$/', $result)) { if ($event['event_author'] == $current_userid) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_CONTACTPERSON/', $result)) { if ($event['event_contactperson_id'] == $current_userid) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_AUTHOR_OR_CONTACTPERSON/', $result)) { if ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_MULTIDAY/', $result)) { if (strtotime($event['event_start_date']) != strtotime($event['event_end_date'])) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_FIRST_RECURRENCE/', $result)) { // returns 1 if the event is the first event in a recurrence series if ($event['recurrence_id']) { $events = eme_get_recurrence_eventids($event['recurrence_id']); $nbr = array_search($event['event_id'], $events); if ($nbr !== false && $nbr == 0) { $replacement = 1; } } } elseif ($event && preg_match('/#_IS_LAST_RECURRENCE/', $result)) { // returns 1 if the event is the last event in a recurrence series if ($event['recurrence_id']) { $events = eme_get_recurrence_eventids($event['recurrence_id']); $nbr = array_search($event['event_id'], $events); $last_index = count($events) - 1; if ($nbr !== false && $nbr == $last_index) { $replacement = 1; } } } elseif (preg_match('/#_LOCALE/', $result)) { $replacement = get_locale(); } else { $found = 0; } if ($found) { if ($need_escape) { $replacement = eme_sanitize_request(eme_sanitize_html(preg_replace('/\\n|\\r/', '', $replacement))); } if ($need_urlencode) { $replacement = rawurlencode($replacement); } $format = str_replace($orig_result, $replacement, $format); } } # now handle all possible location placeholders # but the eme_replace_locations_placeholders can't do "do_shortcode" at the end, because # this would cause [eme_if] tags to be replaced here already, while some placeholders of the # event haven't been replaced yet (like time placeholders, and event details) $format = eme_replace_locations_placeholders($format, $location, $target, 0, $lang); // for extra date formatting, eg. #_{d/m/Y} preg_match_all("/#(ESC|URL)?@?_\\{.*?\\}/", $format, $results); // make sure we set the largest matched placeholders first, otherwise if you found e.g. // #_LOCATION, part of #_LOCATIONPAGEURL would get replaced as well ... usort($results[0], 'sort_stringlenth'); foreach ($results[0] as $result) { $need_escape = 0; $need_urlencode = 0; $orig_result = $result; if (strstr($result, '#ESC')) { $result = str_replace("#ESC", "#", $result); $need_escape = 1; } elseif (strstr($result, '#URL')) { $result = str_replace("#URL", "#", $result); $need_urlencode = 1; } $replacement = ''; if (substr($result, 0, 3) == "#@_") { $my_date = "event_end_date"; $my_time = "event_end_time"; $offset = 4; } else { $my_date = "event_start_date"; $my_time = "event_start_time"; $offset = 3; } $replacement = eme_localised_date($event[$my_date] . " " . $event[$my_time], substr($result, $offset, strlen($result) - ($offset + 1))); if ($need_escape) { $replacement = eme_sanitize_request(eme_sanitize_html(preg_replace('/\\n|\\r/', '', $replacement))); } if ($need_urlencode) { $replacement = rawurlencode($replacement); } $format = str_replace($orig_result, $replacement, $format); } # we handle NOTES the last, this used to be the default behavior # so no placeholder replacement happened accidentaly in possible shortcodes inside #_NOTES # but since we have templates to aid in all that ... if (!$eme_enable_notes_placeholders) { $format = eme_replace_notes_placeholders($format, $event, $target); } // now, replace any language tags found in the format itself $format = eme_translate($format, $lang); if ($do_shortcode) { return do_shortcode($format); } else { return $format; } }
function eme_registration_seats_page($pending = 0) { global $wpdb, $plugin_page; // do the actions if required if (isset($_GET['eme_admin_action']) && $_GET['eme_admin_action'] == "editRegistration" && isset($_GET['booking_id'])) { $booking_id = intval($_GET['booking_id']); $booking = eme_get_booking($booking_id); $event_id = $booking['event_id']; $event = eme_get_event($event_id); // we need to set the action url, otherwise the GET parameters stay and we will fall in this if-statement all over again $action_url = admin_url("admin.php?page={$plugin_page}"); $ret_string = "<form id='eme-rsvp-form' name='booking-form' method='post' action='{$action_url}'>"; $ret_string .= __('Send mails for changed registration?', 'eme') . eme_ui_select_binary(1, "send_mail"); $ret_string .= eme_replace_formfields_placeholders($event, $booking); $ret_string .= "\n <input type='hidden' name='eme_admin_action' value='updateRegistration' />\n <input type='hidden' name='booking_id' value='{$booking_id}' />\n </form>"; print $ret_string; return; } else { $action = isset($_POST['eme_admin_action']) ? $_POST['eme_admin_action'] : ''; $send_mail = isset($_POST['send_mail']) ? intval($_POST['send_mail']) : 1; if ($action == 'newRegistration') { $event_id = intval($_POST['event_id']); $event = eme_get_event($event_id); $ret_string = "<form id='eme-rsvp-form' name='booking-form' method='post' action=''>"; $ret_string .= __('Send mails for new registration?', 'eme') . eme_ui_select_binary(1, "send_mail"); $ret_string .= eme_replace_formfields_placeholders($event); $ret_string .= "\n <input type='hidden' name='eme_admin_action' value='addRegistration' />\n <input type='hidden' name='event_id' value='{$event_id}' />\n </form>"; print $ret_string; return; } elseif ($action == 'addRegistration') { $event_id = intval($_POST['event_id']); $booking_payed = isset($_POST['booking_payed']) ? intval($_POST['booking_payed']) : 0; $event = eme_get_event($event_id); $booking_res = eme_book_seats($event, $send_mail); $result = $booking_res[0]; $booking_id_done = $booking_res[1]; if (!$booking_id_done) { print "<div id='message' class='error'><p>{$result}</p></div>"; } else { print "<div id='message' class='updated'><p>{$result}</p></div>"; eme_update_booking_payed($booking_id_done, $booking_payed); } } elseif ($action == 'updateRegistration') { $booking_id = intval($_POST['booking_id']); $booking = eme_get_booking($booking_id); $deprecated = get_option('eme_deprecated'); //$event_id = $booking['event_id']; //$event = eme_get_event($event_id); if (isset($_POST['comment'])) { $bookerComment = eme_strip_tags($_POST['comment']); } else { $bookerComment = ""; } if (isset($_POST['bookedSeats'])) { $bookedSeats = intval($_POST['bookedSeats']); } else { $bookedSeats = 0; } // for multiple prices, we have multiple booked Seats as well // the next foreach is only valid when called from the frontend $bookedSeats_mp = array(); //if (eme_is_multi($event['price'])) { if (eme_is_multi($booking['booking_price'])) { // make sure the array contains the correct keys already, since // later on in the function eme_record_booking we do a join //$booking_prices_mp=eme_convert_multi2array($event['price']); $booking_prices_mp = eme_convert_multi2array($booking['booking_price']); foreach ($booking_prices_mp as $key => $value) { $bookedSeats_mp[$key] = 0; } foreach ($_POST as $key => $value) { if (preg_match('/bookedSeats(\\d+)/', $key, $matches)) { $field_id = intval($matches[1]) - 1; $bookedSeats += $value; $bookedSeats_mp[$field_id] = $value; } } eme_update_booking($booking_id, $booking['event_id'], eme_convert_array2multi($bookedSeats_mp), $booking['booking_price'], $bookerComment); } else { eme_update_booking($booking_id, $booking['event_id'], $bookedSeats, $booking['booking_price'], $bookerComment); } eme_update_person_with_postinfo($booking['person_id']); if ($send_mail) { eme_email_rsvp_booking($booking, $action); } print "<div id='message' class='updated'><p>" . __("Booking updated", "eme") . "</p></div>"; } elseif ($action == 'approveRegistration' || $action == 'denyRegistration' || $action == 'updatePayedStatus') { $bookings = isset($_POST['bookings']) ? $_POST['bookings'] : array(); $selected_bookings = isset($_POST['selected_bookings']) ? $_POST['selected_bookings'] : array(); $bookings_seats = isset($_POST['bookings_seats']) ? $_POST['bookings_seats'] : array(); $bookings_payed = isset($_POST['bookings_payed']) ? $_POST['bookings_payed'] : array(); foreach ($bookings as $key => $booking_id) { if (!in_array($booking_id, $selected_bookings)) { continue; } // make sure the seats are integers $booking = eme_get_booking($booking_id); if ($action == 'updatePayedStatus') { if ($booking['booking_payed'] != intval($bookings_payed[$key])) { eme_update_booking_payed($booking_id, intval($bookings_payed[$key])); } } elseif ($action == 'approveRegistration') { eme_approve_booking($booking_id); if ($booking['booking_payed'] != intval($bookings_payed[$key])) { eme_update_booking_payed($booking_id, intval($bookings_payed[$key])); } if ($send_mail) { eme_email_rsvp_booking($booking, $action); } } elseif ($action == 'denyRegistration') { eme_delete_booking($booking_id); if ($send_mail) { eme_email_rsvp_booking($booking, $action); } } } } } // now show the menu eme_registration_seats_form_table($pending); }
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; } }
function eme_registration_seats_page($pending=0) { global $wpdb,$plugin_page,$eme_timezone; // do the actions if required if (isset($_GET['eme_admin_action']) && $_GET['eme_admin_action'] == "editRegistration" && isset($_GET['booking_id'])) { $booking_id = intval($_GET['booking_id']); $booking = eme_get_booking($booking_id); $event_id = $booking['event_id']; $event = eme_get_event($event_id); // we need to set the action url, otherwise the GET parameters stay and we will fall in this if-statement all over again $action_url = admin_url("admin.php?page=$plugin_page"); $ret_string = "<form id='eme-rsvp-form' name='booking-form' method='post' action='$action_url'>"; $ret_string.= __('Send mails for changed registration?','eme') . eme_ui_select_binary(1,"send_mail"); $all_events = eme_get_events("extra_conditions=".urlencode("event_rsvp=1 AND event_id!=$event_id")); if (count($all_events)>0) { $ret_string.= "<br />".__('Move booking to event','eme'); $ret_string.= " <select name='event_id'>"; $ret_string.= "<option value='0' ></option>"; foreach ( $all_events as $this_event ) { if ($this_event ['event_rsvp']) { $option_text=$this_event['event_name']." (".eme_localised_date($this_event['event_start_date']." ".$this_event['event_start_time']." ".$eme_timezone).")"; $ret_string.= "<option value='".$this_event['event_id']."' >".$option_text."</option>"; } } $ret_string .= "</select>"; } $ret_string.= eme_replace_formfields_placeholders ($event,$booking); $ret_string .= " <input type='hidden' name='eme_admin_action' value='updateRegistration' /> <input type='hidden' name='booking_id' value='$booking_id' /> </form>"; print $ret_string; return; } else { $action = isset($_POST ['eme_admin_action']) ? $_POST ['eme_admin_action'] : ''; $send_mail = isset($_POST ['send_mail']) ? intval($_POST ['send_mail']) : 1; if ($action == 'newRegistration') { $event_id = intval($_POST['event_id']); $event = eme_get_event($event_id); $ret_string = "<form id='eme-rsvp-form' name='booking-form' method='post' action=''>"; $ret_string.= __('Send mails for new registration?','eme') . eme_ui_select_binary(1,"send_mail"); $ret_string.= eme_replace_formfields_placeholders ($event); $ret_string .= " <input type='hidden' name='eme_admin_action' value='addRegistration' /> <input type='hidden' name='event_id' value='$event_id' /> </form>"; print $ret_string; return; } elseif ($action == 'addRegistration') { $event_id = intval($_POST['event_id']); $booking_payed = isset($_POST ['booking_payed']) ? intval($_POST ['booking_payed']) : 0; $event = eme_get_event($event_id); $booking_res = eme_book_seats($event, $send_mail); $result=$booking_res[0]; $booking_id_done=$booking_res[1]; if (!$booking_id_done) { print "<div id='message' class='error'><p>$result</p></div>"; } else { print "<div id='message' class='updated'><p>$result</p></div>"; eme_update_booking_payed($booking_id_done,$booking_payed); } } elseif ($action == 'updateRegistration') { $booking_id = intval($_POST['booking_id']); $event_id = isset($_POST ['event_id']) ? intval($_POST ['event_id']) : 0; if ($event_id) eme_move_booking_event($booking_id,$event_id); $booking = eme_get_booking ($booking_id); if (isset($_POST['comment'])) $bookerComment = eme_strip_tags($_POST['comment']); else $bookerComment = ""; if (isset($_POST['bookedSeats'])) $bookedSeats = intval($_POST['bookedSeats']); else $bookedSeats = 0; // for multiple prices, we have multiple booked Seats as well // the next foreach is only valid when called from the frontend $bookedSeats_mp = array(); //if (eme_is_multi($event['price'])) { if (eme_is_multi($booking['booking_price'])) { // make sure the array contains the correct keys already, since // later on in the function eme_record_booking we do a join //$booking_prices_mp=eme_convert_multi2array($event['price']); $booking_prices_mp=eme_convert_multi2array($booking['booking_price']); foreach ($booking_prices_mp as $key=>$value) { $bookedSeats_mp[$key] = 0; } foreach($_POST as $key=>$value) { if (preg_match('/bookedSeats(\d+)/', $key, $matches)) { $field_id = intval($matches[1])-1; $bookedSeats += $value; $bookedSeats_mp[$field_id]=$value; } } eme_update_booking($booking_id,$booking['event_id'],eme_convert_array2multi($bookedSeats_mp),$booking['booking_price'],$bookerComment); } else { eme_update_booking($booking_id,$booking['event_id'],$bookedSeats,$booking['booking_price'],$bookerComment); } eme_update_person_with_postinfo($booking['person_id']); // now get the changed booking and send mail if wanted $booking = eme_get_booking ($booking_id); if ($send_mail) eme_email_rsvp_booking($booking,$action); print "<div id='message' class='updated'><p>".__("Booking updated","eme")."</p></div>"; } elseif ($action == 'approveRegistration' || $action == 'denyRegistration' || $action == 'updatePayedStatus') { $bookings = isset($_POST ['bookings']) ? $_POST ['bookings'] : array(); $selected_bookings = isset($_POST ['selected_bookings']) ? $_POST ['selected_bookings'] : array(); $bookings_seats = isset($_POST ['bookings_seats']) ? $_POST ['bookings_seats'] : array(); $bookings_payed = isset($_POST ['bookings_payed']) ? $_POST ['bookings_payed'] : array(); foreach ( $bookings as $key=>$booking_id ) { if (!in_array($booking_id,$selected_bookings)) { continue; } // make sure the seats are integers $booking = eme_get_booking ($booking_id); if ($action == 'updatePayedStatus') { if ($booking['booking_payed']!= intval($bookings_payed[$key])) eme_update_booking_payed($booking_id,intval($bookings_payed[$key])); } elseif ($action == 'approveRegistration') { eme_approve_booking($booking_id); if ($booking['booking_payed']!= intval($bookings_payed[$key])) { eme_update_booking_payed($booking_id,intval($bookings_payed[$key])); // we changed something in the booking, so get the updated booking // before sending out the mail $booking = eme_get_booking ($booking_id); } if ($send_mail) eme_email_rsvp_booking($booking,$action); } elseif ($action == 'denyRegistration') { // the mail needs to be sent after the deletion, otherwise the count of free spaces is wrong eme_delete_booking($booking_id); if ($send_mail) eme_email_rsvp_booking($booking,$action); // delete the booking answers after the mail is sent, so the answers can still be used in the mail eme_delete_answers($booking_id); } } } } // now show the menu eme_registration_seats_form_table($pending); }