Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
spawns
/
wp-content
/
plugins
/
eventer
/
front
:
front_functions.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php defined('ABSPATH') or die('No script kiddies please!'); /* * eventer_enqueue_scripts function * Enqueue the style and js for front end * Variables of strings are used to send them in js file using wp_localize_script function, so that they can be fully translatable * wp_add_inline_style function used to generate dynamic css of color selected by user through settings page */ $stripe_switch = eventer_get_settings('eventer_stripe_payment_switch'); if ($stripe_switch == '1') { include('stripe/init.php'); } if ( ! function_exists( 'hex2rgba' ) ) : function hex2rgba( $color, $opacity = false ) { $default = 'rgb(0,0,0)'; // Return default if no color provided if( empty( $color ) ) { return $default; } // Sanitize $color if "#" is provided if( $color[0] == '#' ) { $color = substr( $color, 1 ); } // Check if color has 6 or 3 characters and get values if( strlen( $color ) == 6 ) { $hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); } elseif( strlen( $color ) == 3 ) { $hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ); } else { return $default; } // Convert hexadec to rgb $rgb = array_map( 'hexdec', $hex ); // Check if opacity is set(rgba or rgb) if( $opacity ) { if( abs( $opacity ) > 1 ) { $opacity = 1.0; } if( preg_match("/^[0-9,]+$/", $opacity) ) { $opacity = str_replace(',', '.', $opacity); } $output = 'rgba(' . implode( ",", $rgb ) . ',' . $opacity . ')'; } else { $output = 'rgb(' . implode( ",", $rgb ) . ')'; } // Return rgb(a) color string return $output; } endif; if ( ! function_exists('eventer_enqueue_scripts' ) ) { function eventer_enqueue_scripts() { /*global $post; $shortcode_array = array('eventer_grid', 'eventer_list', 'eventer_slider', 'eventer_counter', 'eventer_calendar', 'eventer_fields', 'eventer_fields_display', 'eventer_paid', 'eventer_offline', 'eventer_free', 'eventer_field_row', 'eventer_field_halfcol', 'eventer_tkturl', 'eventer_add_new', 'eventer_login', 'eventer_dashboard', 'eventer_bookings', 'eventer_submissions', 'eventer_dash_terms', 'eventer_metas', 'eventer_tickets', 'eventer_ajax_tickets', 'eventer_ajax_tickets_meta', 'eventer_social_share', 'eventer_save_events'); $content = $post->post_content; $display_scripts = false; foreach ($shortcode_array as $shortcode) { if (has_shortcode($content, $shortcode)) { $display_scripts = true; break; } } if ( class_exists( 'WooCommerce' ) ) { if ( is_cart() || is_checkout() || is_account_page() || is_product() || is_shop() ) { $display_scripts = true; } } $register_status = (get_query_var('reg')) ? get_query_var('reg') : ''; if ( is_singular('eventer') || $display_scripts || $register_status ) { */ $eventer_paypal_server = eventer_get_settings('eventer_paypal_payment_type'); $eventer_dotpay_server = eventer_get_settings('eventer_dotpay_payment_type'); $mandatory_registrations = eventer_get_settings('eventer_registrants_fields_mandatory'); $mandatory_time_slots = eventer_get_settings('eventer_time_slots_mandatory'); $stripe_switch = eventer_get_settings('eventer_stripe_payment_switch'); $paypal_site = ($eventer_paypal_server == "1") ? "https://www.paypal.com/cgi-bin/webscr" : "https://www.sandbox.paypal.com/cgi-bin/webscr"; $dotpay_site = ($eventer_dotpay_server == "1") ? "https://ssl.dotpay.pl/t2/" : "https://ssl.dotpay.pl/test_payment/"; $stripe_site = EVENTER__PLUGIN_URL . "front/stripe/lib/Stripe.php"; $paypal_email = eventer_get_settings('eventer_paypal_business_email'); $dotpay_business_id = eventer_get_settings('eventer_dotpay_business_id'); $woocommerce_ticketing = eventer_get_settings('eventer_enable_woocommerce_ticketing'); $eventer_woo_layout = eventer_get_settings('eventer_woo_layout'); $register_status = (get_query_var('reg')) ? get_query_var('reg') : ''; $offline_payment_switch = eventer_get_settings('eventer_offline_payment_switch'); $all_required_msg = esc_html__("Please fill all required fields.", "eventer"); $number_msg = esc_html__("Field Should have Numbers Only.", "eventer"); $email_msg = esc_html__("Field Should have Email Only.", "eventer"); $blank_payment_options = esc_html__("Please select payment options.", "eventer"); $blank_tickets = esc_html__("Please select tickets.", "eventer"); $paypal_proceed = esc_html__("Proceed to paypal", "eventer"); $dotpay_proceed = esc_html__("Proceed to dotpay", "eventer"); $stripe_proceed = esc_html__("Pay with Stripe", "eventer"); $tickets_added = esc_html__("Tickets added.", "eventer"); $eventer_maximum_tickets_count = eventer_get_settings('eventer_tickets_quantity_set'); $eventer_maximum_tickets_count = ($eventer_maximum_tickets_count) ? $eventer_maximum_tickets_count : 10; $future_date_cal = esc_html__("Select Booking Date", "eventer"); $proceed_register = ($woocommerce_ticketing == 'on' && $eventer_woo_layout == 'on') ? esc_html__('Add Tickets', 'eventer') : esc_html__("Register", "eventer"); $stripe_publishable_key = eventer_get_settings('eventer_stripe_publishable_key'); $contact_manager_text = esc_html__('Details forwarded to event manager successfully.', 'eventer'); $google_calendar_id = eventer_get_settings('cal_id'); $plugin_data = get_plugin_data(__FILE__); $plugin_version = $plugin_data['Version']; $eventer_carousel_switch = eventer_get_settings('eventer_dequeue_carousel_scripts'); $woo_currency_position = get_option('woocommerce_currency_pos'); $woo_currency_position = ($woo_currency_position == "left" || $woo_currency_position == "left_space") ? "suffix" : "postfix"; $eventer_currency = ($woocommerce_ticketing != 'on' || !function_exists('get_woocommerce_currency_symbol')) ? eventer_get_currency_symbol(eventer_get_settings('eventer_paypal_currency')) : eventer_get_currency_symbol(get_option('woocommerce_currency')); //$woo_currency_position = ($woo_currency_position == "left" || $woo_currency_position == "left_space") ? "suffix" : "postfix"; $eventer_currency = ($woocommerce_ticketing != 'on' || !function_exists('get_woocommerce_currency_symbol')) ? eventer_get_currency_symbol(eventer_get_settings('eventer_paypal_currency')) : eventer_get_currency_symbol(get_option('woocommerce_currency')); $eventer_currency_position = ($woocommerce_ticketing != 'on') ? eventer_get_settings('eventer_currency_position') : $woo_currency_position; $query_args = array( 'family' => 'Oswald:400,700|Open+Sans:400,400i,700|Great+Vibes', 'subset' => '', ); $individual_field_checkbox = esc_html__('Add individual registrant details', 'eventer'); $individual_registrants_fields = eventer_get_settings('eventer_registrants_fields'); $individual_registrant = ($individual_registrants_fields == "on") ? 1 : ''; $registrant_name_label = esc_html__('Registrant name', 'eventer'); $registrant_email_label = esc_html__('Registrant email', 'eventer'); $registrant_email = esc_html__('Email', 'eventer'); $registrant_name = esc_html__('Name', 'eventer'); $registrant_label = esc_html__('Registrant', 'eventer'); $site_lang = EVENTER__LANGUAGE_CODE; $eventer_stored = get_option($site_lang . '_eventer_stored'); $eventer_style = EVENTER__PLUGIN_URL . 'css/eventer_style.css'; $woo_thanks_order = ''; if (function_exists('is_wc_endpoint_url')) { $woo_thanks_order = is_wc_endpoint_url('order-received'); } $registered_now = (get_query_var('reg') || $woo_thanks_order) ? '1' : ''; //Js wp_enqueue_script('jquery-ui-datepicker'); if ($stripe_switch == '1' && is_singular('eventer')) { wp_enqueue_script('eventer-stripe', 'https://js.stripe.com/v3/', array(), $plugin_version, false); } wp_enqueue_script('fullcalendar-moment', EVENTER__PLUGIN_URL . 'front/fullcalendar/lib/moment.min.js', array(), $plugin_version, false); wp_enqueue_script('eventer-plugins', EVENTER__PLUGIN_URL . 'js/plugins.js', array('jquery'), $plugin_version, true); wp_localize_script('eventer-plugins', 'upcoming_data', array('c_time' => date_i18n('U'))); if ($eventer_carousel_switch != 'on') { wp_register_script('owl-carousel-min', EVENTER__PLUGIN_URL . 'vendors/owl-carousel/js/owl.carousel.min.js', array('jquery'), $plugin_version, true); wp_register_script('eventer-carousel-init', EVENTER__PLUGIN_URL . 'vendors/owl-carousel/js/carousel-init.js', array('jquery'), $plugin_version, true); } wp_enqueue_script('eventer-qrcode', EVENTER__PLUGIN_URL . 'js/jquery-qrcode-0.14.0.min.js', array('jquery-ui-autocomplete', 'jquery'), $plugin_version, true); wp_enqueue_script('eventer-modal', EVENTER__PLUGIN_URL . 'js/jquery.modal.min.js', array('jquery'), $plugin_version, true); //if($registered_now=='1') //{ wp_enqueue_script('eventer-qrcode1', 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js', array('jquery'), $plugin_version, true); //} wp_enqueue_script('eventer-init', EVENTER__PLUGIN_URL . 'js/init.js', array('jquery'), $plugin_version, true); wp_enqueue_script('eventer-filters', EVENTER__PLUGIN_URL . 'js/filters.js', array('jquery'), $plugin_version, true); wp_localize_script('eventer-filters', 'filters', array('ajax_url' => admin_url('admin-ajax.php'), 'root' => esc_url_raw(rest_url()), 'nonce' => wp_create_nonce('wp_rest'))); $localized_data = array('ajax_url' => admin_url('admin-ajax.php'), 'future_date_cal' => $future_date_cal, 'eventer_style' => $eventer_style, 'register_status' => $register_status, 'email_msg' => $email_msg, 'number_msg' => $number_msg, 'organizer_contact' => wp_create_nonce("eventer_create_nonce_for_corganizer"), 'contact_manager_text' => $contact_manager_text, 'event_tickets_set' => $eventer_maximum_tickets_count, 'mandatory_registrants' => $mandatory_registrations,'mandatory_timeslot' => $mandatory_time_slots, 'individual_label' => $individual_field_checkbox, 'registrant_label' => $registrant_label, 'registrant_name' => $registrant_name, 'registrant_name_label' => $registrant_name_label, 'registrant_email' => $registrant_email, 'registrant_email_label' => $registrant_email_label, 'individual_reg' => $individual_registrant, 'curr_position' => $eventer_currency_position, 'curr' => $eventer_currency, 'paypal_site' => $paypal_site, 'dotpay_site' => $dotpay_site, 'paypal_proceed' => $paypal_proceed, 'dotpay_proceed' => $dotpay_proceed, 'stripe_proceed' => $stripe_proceed, 'stripe_site' => $stripe_site, 'offline_switch' => $offline_payment_switch, 'woo_payment_switch' => $woocommerce_ticketing, 'proceed_register' => $proceed_register, 'paypal_email' => $paypal_email, 'paypal_curr' => eventer_get_settings('eventer_paypal_currency'), 'paypal_email' => $paypal_email, 'business_id' => $dotpay_business_id, 'all_required' => $all_required_msg, 'blank_payment' => $blank_payment_options, 'blank_tickets' => $blank_tickets, 'wpml_lang' => $site_lang, 'eventers_name' => '', 'eventer_stored' => $eventer_stored, 'reg_now' => $registered_now, 'tickets_added' => $tickets_added, 'stripe_publishable_key' => $stripe_publishable_key, 'stripe_switch' => $stripe_switch); $translation_array = array( "total" => esc_attr__( 'The total number of tickets can not be greater than', 'eventer' ), "already" => esc_attr__( 'You have already booked the ticket', 'eventer' ), "error" => esc_attr__( 'There is some error. Please try again', 'eventer' ), ); if (function_exists('is_checkout') && is_checkout() && !empty(is_wc_endpoint_url('order-received'))) { $localized_event_data = array(); } elseif (is_singular('eventer')) { $woocommerceLayout = eventer_get_settings('eventer_woo_layout'); $localized_event_data = array('enabled_date' => get_post_meta(get_the_ID(), 'eventer_all_dates', true), 'min_date' => get_query_var('edate'), 'max_date' => date_i18n('Y,m,d', strtotime(max(get_post_meta(get_the_ID(), 'eventer_all_dates', true)))), 'optional_tickets' => get_post_meta(get_the_ID(), 'eventer_optional_tickets', true), 'woo_layout' => $woocommerceLayout, 'dynamic_event' => get_the_ID(), 'minimum_ticket' => eventer_get_settings('eventer_minimum_default_ticket')); } $user_fields = eventer_get_settings('individual_registrant_fields'); if (is_singular('eventer') || (function_exists('is_checkout()') && is_checkout() && !empty(is_wc_endpoint_url('order-received')))) { wp_enqueue_script('eventer-single-scripts', EVENTER__PLUGIN_URL . 'js/single-scripts.js', array('jquery'), uniqid(), true); $custom_registration_form = get_post_meta(get_the_ID(), 'eventer_event_individual_registrants_fields', true); $user_fields = ($custom_registration_form != '') ? $custom_registration_form : $user_fields; $user_fields = do_shortcode($user_fields); $user_fields = array( 'user_fields' => $user_fields, ); wp_localize_script('eventer-single-scripts', 'single', array_merge($localized_data, $localized_event_data, $translation_array, $user_fields)); } //CSS $fonts_args = array( 'family' => 'Merriweather:400,400i,700,700i|Open+Sans:400,400i,700,700i', 'subset' => '', ); wp_localize_script('eventer-init', 'initval', array('ajax_url' => admin_url('admin-ajax.php'), 'month_events_nonce' => wp_create_nonce("eventer_create_nonce_for_month"), 'ticket_registrant' => wp_create_nonce("eventer_create_nonce_for_registrant"), 'paypal_curr' => eventer_get_settings('eventer_paypal_currency'), 'paypal_email' => $paypal_email, 'all_required' => $all_required_msg, 'blank_payment' => $blank_payment_options, 'blank_tickets' => $blank_tickets, 'wpml_lang' => $site_lang, 'eventers_name' => '', 'eventer_stored' => $eventer_stored, 'reg_now' => $registered_now, 'tickets_added' => $tickets_added)); //Register for front end form wp_enqueue_style('eventer_ui_css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css', false, "1.9.0", false); wp_register_style('eventer_datetimepicker', EVENTER__PLUGIN_URL . 'css/jquery.simple-dtpicker.css'); wp_register_script('eventer_datetimepicker', EVENTER__PLUGIN_URL . 'js/jquery.simple-dtpicker.js', array('jquery-ui-core'), '', true); wp_register_script('eventer_front_form', EVENTER__PLUGIN_URL . 'js/front_form.js', array('jquery-ui-autocomplete', 'jquery'), '', true); wp_localize_script('eventer_front_form', 'frontForm', array('week_start' => get_option('start_of_week'), 'nonce' => wp_create_nonce('wp-rest'))); wp_register_script('eventer_admin_form', EVENTER__PLUGIN_URL . 'js/admin_form.js', array('jquery', 'jquery-ui-sortable'), '', true); wp_register_script('eventer-dashboard-scripts', EVENTER__PLUGIN_URL . 'js/eventer_dashboard.js', array('jquery', 'jquery-ui-sortable'), '', true); //CSS wp_enqueue_style('eventer-style', EVENTER__PLUGIN_URL . 'css/eventer_style.css', array(), $plugin_version, 'all'); if ($eventer_carousel_switch != 'on') { wp_register_style('eventer-owl-carousel', EVENTER__PLUGIN_URL . 'vendors/owl-carousel/css/owl.carousel.css', array(), $plugin_version, 'all'); wp_register_style('eventer-owl-theme', EVENTER__PLUGIN_URL . 'vendors/owl-carousel/css/owl.theme.css', array(), $plugin_version, 'all'); } wp_enqueue_style('eventer-line-icons', EVENTER__PLUGIN_URL . 'css/eventer-simple-line-icons.css', array(), $plugin_version, 'all'); wp_enqueue_style('eventer-google-css-oswald', add_query_arg($query_args, "//fonts.googleapis.com/css"), array(), $plugin_version, 'all'); wp_enqueue_style('eventer-modal', EVENTER__PLUGIN_URL . 'css/jquery.modal.min.css', array(), $plugin_version, 'all'); $eventer_default_color = eventer_get_settings('event_default_color'); $eventer_color = ($eventer_default_color) ? $eventer_default_color : '#00B4FC'; $css = '.eventer .eventer-btn-primary,.eventer .eventer-btn-primary:hover,.eventer input[type="radio"]:checked, .eventer input[type="checkbox"]:checked,.eventer-btn-default:hover,.fc button.fc-state-active{ border-color: ' . $eventer_color . '!important } .eventer-loader,.eventer input[type="radio"]:checked:before, .eventer input[type="checkbox"]:checked:before,.eventer-ticket-confirmation-left > div:before,.eventer-ticket-price-total,.eventer .eventer-btn-default:hover,.eventer-countdown .eventer-event-date,.eventer .eventer-pagination li.active,.eventer-event-grid-item-dbg .eventer-event-grid-item-inside,.eventer-switcher-current-month-in > span,.eventer-plain-links,.eventer-detailed-list .eventer-dater,.eventer-modern-list .eventer-dater,.eventer-modern-list .eventer-dater:before,.eventer-quick-ticket-info .eventer-ticket-type-price,.eventer-featured-date,.eventer-slider-type1 .eventer-slider-content,.eventer-custom-label-badge,.eventer .eventer-pop-nav li.ev-active-tab{ background-color: ' . $eventer_color . ' } .eventer .eventer-btn-primary,.eventer .eventer-btn-primary:disabled,.eventer .eventer-btn-primary:disabled:hover,.eventer .eventer-btn-primary:hover,.eventer-q-field input[type="button"]:hover,.eventer-switcher-actions-view a:hover,.eventer .eventer-switcher-actions-view a.active,.fc button.fc-state-active,.eventer-custom-ui-datepicker.ui-datepicker .ui-widget-header, .eventer-custom-ui-datepicker.ui-datepicker .ui-datepicker-header,.eventer-custom-ui-datepicker.ui-datepicker td.ui-datepicker-current-day,.eventer-custom-ui-datepicker.ui-datepicker td .ui-state-hover,.eventer .eventer-switcher-actions-view a.today-btn,.eventer .eventer-switcher-actions-view .trigger-active,.eventer-dash-nav-right li.eventer-fe-usermenu img, .eventer-fe-usermenu .eventer-fe-dropdown-in,.eventer-fe-ele-icon,.eventer-fe-datepicker.eventer-datepicker>.eventer-datepicker_header,.eventer-fe-datepicker.eventer-datepicker>.eventer-datepicker_inner_container>.eventer-datepicker_calendar>.eventer-datepicker_table>tbody>tr>td.hover,.eventer-fe-datepicker.eventer-datepicker>.eventer-datepicker_inner_container>.eventer-datepicker_calendar>.eventer-datepicker_table>tbody>tr>td.active,.eventer-fe-datepicker.eventer-datepicker>.eventer-datepicker_inner_container>.eventer-datepicker_calendar>.eventer-datepicker_table>tbody>tr>td.wday_sat:not(.day_in_past):hover,.eventer-fe-datepicker.eventer-datepicker>.eventer-datepicker_inner_container>.eventer-datepicker_calendar>.eventer-datepicker_table>tbody>tr>td.wday_sun:not(.day_in_past):hover,.eventer-fe-add-field-value:hover,.eventer-fe-datepicker.eventer-datepicker>.eventer-datepicker_inner_container>.eventer-datepicker_calendar>.eventer-datepicker_table>tbody>tr>td.wday_sat.active,.eventer-fe-datepicker.eventer-datepicker>.eventer-datepicker_inner_container>.eventer-datepicker_calendar>.eventer-datepicker_table>tbody>tr>td.wday_sun.active,.eventer-fe-ticket-count,.eventer-accent-bg,.eventer-schedule-time{ background: ' . $eventer_color . ' } .eventer .eventer-ticket-confirmation-right a:not(.eventer-btn),.eventer-ticket-printable h3, .eventer a,.eventer-actions a:hover,.eventer-event-save > ul > li a:hover,.eventer-compact-list .eventer-event-venue i,.eventer-fe-dash-nav ul li a:hover,.eventer-fe-dash-nav ul li.active a,.eventer-dash-nav-right li.eventer-fe-usermenu a:hover,.eventer-fe-dash-nav ul li a:hover i,.eventer-fe-dash-nav ul li.active a i,.eventer-fe-infolist li strong,.eventer-fe-ele-settings:hover,.eventer-fe-ele-copy:hover,.eventer-fe-ele-paste:hover,.eventer-nav-all-users li a:hover,.eventer-booking-order, .eventer-accent-color,.eventer-detailed-col .eventer-event-title a:hover,.eventer-grid-clean .eventer-event-title a:hover,.eventer-grid-featured .eventer-event-title a:hover,.eventer-grid-featured .eventer-event-share li a:hover,.eventer-grid-products .eventer-event-title a:hover,.eventer-grid-products .eventer-grid-meta > div > i,.eventer-grid-modern .eventer-event-day,.eventer-grid-modern .eventer-event-title a:hover,.eventer-slider-type1 .eventer-event-title a:hover,.eventer-single-style2 .eventer-single-header .eventer-event-share li a:hover,.eventer-organizer-block .eventer-organizer-info > span,.eventer-organizer-block ul > li i,.eventer-organizer-block .eventer-organizer-info > ul > li a:hover,#eventer-tab-ev-location h3 + div i{ color: ' . $eventer_color . ' } /*.eventer-fe-ele-settings:hover,.eventer-fe-ele-copy:hover,.eventer-fe-ele-paste:hover,.eventer-nav-all-users li a:hover{ color: ' . $eventer_color . '!important }*//* This code was commented out while adding eventer stage2*/ .eventer-actions a:hover,.eventer-fe-usermenu.eventer-fe-dd:before{ border-bottom-color: ' . $eventer_color . ' } .eventer-compact-list .eventer-event-date{ border-top-color: ' . $eventer_color . ' } .eventer-minimal-list .eventer-event-list-item,.eventer-event-grid-item-plain .eventer-event-grid-item-inside,.eventer-event-grid-item-dbg .eventer-event-grid-item-inside,.eventer-no-event-found{ border-left-color: ' . $eventer_color . ' } .eventer-grid-featured .eventer-grid-fimage,.eventer input[type="radio"]:hover, .eventer input[type="checkbox"]:hover,.eventer-slider-type1 .eventer-event-slide > .eventer-grid-fimage{ background-color: '.hex2rgba( $eventer_color, 0.4 ).' } .eventer-no-event-found{ background-color: '.hex2rgba( $eventer_color, 0.05 ).' }'; wp_add_inline_style('eventer-style', $css); /*}*/ } add_action('wp_enqueue_scripts', 'eventer_enqueue_scripts'); } /* * eventer_calendar_scripts_enqueue function * Registers the style and js for front end view of calendar * We just register the scripts and styles here and use them in calendar shortcode, so that these files should not load at unnecessary pages */ if (!function_exists('eventer_calendar_scripts_enqueue')) { function eventer_calendar_scripts_enqueue() { $plugin_data = get_plugin_data(__FILE__); $plugin_version = $plugin_data['Version']; wp_register_script('fullcalendar-min', EVENTER__PLUGIN_URL . 'front/fullcalendar/fullcalendar.min.js', array('jquery'), $plugin_version, true); wp_register_script('fullcalendar-gcal', EVENTER__PLUGIN_URL . 'front/fullcalendar/gcal.js', array('jquery'), $plugin_version, true); wp_register_script('fullcalendar-locale', EVENTER__PLUGIN_URL . 'front/fullcalendar/locale-all.js', array('jquery'), $plugin_version, true); wp_register_script('fullcalendar-load', EVENTER__PLUGIN_URL . 'js/eventer_calendar.js', array('jquery'), $plugin_version, true); wp_register_style('fullcalendar-min', EVENTER__PLUGIN_URL . 'front/fullcalendar/fullcalendar.min.css', array(), $plugin_version, 'all'); wp_register_style('fullcalendar-print-min', EVENTER__PLUGIN_URL . 'front/fullcalendar/fullcalendar.print.min.css', array(), $plugin_version, 'print'); } add_action('wp_enqueue_scripts', 'eventer_calendar_scripts_enqueue'); } /* * eventer_set_template function * This function is used to load correct file while viewing the archive or single pages for eventer * This function will search for eventer.php file in child theme then parent theme otherwise plugin's eventer.php file would load * User can just create file with the name of eventer.php and place all code of page.php of the activated theme into that file and can use eventer_content function to display events to site properly */ if (!function_exists('eventer_set_template')) { function eventer_set_template($template) { global $post; $preview_id = get_option("eventer_shortcode_preview"); if (is_object($post) && $post->ID == $preview_id) { return EVENTER__PLUGIN_PATH . 'eventers/preview.php'; } if (file_exists(trailingslashit(get_stylesheet_directory()) . 'single-eventer.php') && get_post_type($post) == 'eventer' && is_singular('eventer')) { if (is_singular('eventer')) { add_filter('the_content', 'eventer_single_post_content'); } return trailingslashit(get_stylesheet_directory()) . 'single-eventer.php'; } elseif (file_exists(trailingslashit(get_template_directory()) . 'single-eventer.php') && get_post_type($post) == 'eventer' && is_singular('eventer')) { if (is_singular('eventer')) { add_filter('the_content', 'eventer_single_post_content'); } return trailingslashit(get_template_directory()) . 'single-eventer.php'; } if (file_exists(trailingslashit(get_stylesheet_directory()) . 'eventer.php') && get_post_type($post) == 'eventer') { return trailingslashit(get_stylesheet_directory()) . 'eventer.php'; } elseif (file_exists(trailingslashit(get_template_directory()) . 'eventer.php') && get_post_type($post) == 'eventer') { return trailingslashit(get_template_directory()) . 'eventer.php'; } elseif (get_post_type($post) == 'eventer' && !is_singular('eventer')) { return EVENTER__PLUGIN_PATH . 'eventers/eventer.php'; } else { if (is_singular('eventer')) { add_filter('the_content', 'eventer_single_post_content'); } return $template; } } add_filter('template_include', 'eventer_set_template', 99); } function eventer_single_post_content($content) { if (!in_the_loop() || !is_main_query() || !is_singular() || has_shortcode($content, 'eventer_metas') || has_shortcode($content, 'eventer_tickets')) { return $content; } $eventer_content = ''; $eventer_loop_start = apply_filters('eventer_registration_data_collect', 1, get_the_ID()); $eventer_image_size = (eventer_get_settings('eventer_image_size_single') != '') ? eventer_get_settings('eventer_image_size_single') : 'full'; $registration_switch = get_post_meta(get_the_ID(), 'eventer_event_registration_swtich', true); if ($registration_switch == "1") { $eventer_content .= '<div class="eventer-is-tickets-active">'; } $eventer_content .= do_shortcode('[eventer_metas]'); $eventer_content .= do_shortcode('[eventer_tickets]'); if ($registration_switch == "1") { $eventer_content .= '</div>'; } $eventer_content .= '<div class="eventer-save-share-wrap">'; $eventer_content .= do_shortcode('[eventer_social_share]'); $eventer_content .= do_shortcode('[eventer_save_events]'); $eventer_content .= '</div>'; $eventer_content .= $content; remove_filter('the_content', 'eventer_single_post_content'); return $eventer_content; } function eventer_clean_string($string) { $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens. return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars. } /* * eventer_regenerate_calender_index function * This function is used to add one second to the date if Google events are of same date and time for currently viewing month calendar * Used in eventer_fetch_google_events function */ if (!function_exists('eventer_regenerate_calender_index')) { function eventer_regenerate_calender_index($index, $google_event_array) { $index = ($index + 1); if (array_key_exists($index, $google_event_array)) { return eventer_regenerate_calender_index($index, $google_event_array); } return $index; } } function eventer_generate_Google_events_list($calender_id = '', $api_key = '') { $GoogleEvents = array(); $sb = str_replace('+00:00', 'Z', gmdate('c', strtotime(date_i18n('Y-m-d')))); $sbe = str_replace('+00:00', 'Z', gmdate('c', strtotime('2021-12-01'))); $events = wp_remote_get('https://www.googleapis.com/calendar/v3/calendars/' . $calender_id . '/events/?key=' . $api_key . '&timeMin=' . $sb . '&timeMax=' . $sbe); if (is_wp_error($events) || $api_key == '' || $calender_id == '') { return false; } $body = wp_remote_retrieve_body($events); $data = json_decode($body); $gevents = (property_exists($data, 'items')) ? $data->items : array(); if (!empty($gevents)) { foreach ($gevents as $ev) { $multi_events = array($ev); $recurrence = (property_exists($ev, 'recurrence')) ? '1' : ''; $id = $ev->id; if ($recurrence == '1') { $event_instances = wp_remote_get('https://www.googleapis.com/calendar/v3/calendars/' . $calender_id . '/events/' . $id . '/instances?key=' . $api_key . '&timeMin=' . $sb . '&timeMax=' . $sbe); $body_instances = wp_remote_retrieve_body($event_instances); $data_instances = json_decode($body_instances); $instances_event = $data_instances->items; $multi_events = $instances_event; } foreach ($multi_events as $nevent) { if ($nevent->status != 'confirmed') { continue; } $googleEvents = array(); $start_date = (property_exists($nevent->start, 'dateTime')) ? $nevent->start->dateTime : $nevent->start->date; $start_date = get_the_date($start_date); $start_date = date_i18n('Y-m-d H:i:s', strtotime($start_date)); $all_day = (property_exists($nevent->start, 'dateTime')) ? '' : esc_html__('All day', 'eventer'); $end_date = (property_exists($nevent->end, 'dateTime')) ? $nevent->end->dateTime : $nevent->end->date; $end_date = get_the_date($end_date); $end_date = date_i18n('Y-m-d H:i:s', strtotime($end_date)); $htnl_link = (property_exists($nevent, 'htmlLink')) ? $nevent->htmlLink : ''; $title = (property_exists($nevent, 'summary')) ? $nevent->summary : ''; $description = (property_exists($nevent, 'description')) ? $nevent->description : ''; $location = (property_exists($nevent, 'location')) ? $nevent->location : ''; $googleEvents['start_time'] = $start_date; $googleEvents['end_time'] = $end_date; $googleEvents['url'] = $htnl_link; $googleEvents['title'] = $title; $googleEvents['event_day'] = ''; $googleEvents['description'] = $description; $googleEvents['location'] = $location; $googleEvents['allday'] = $all_day; $googleEvents['color'] = ''; $GoogleEvents[] = $googleEvents; } } } return $GoogleEvents; } /* * eventer_fetch_google_events function * This function is fetches the events from provided Google calendar ID */ if (!function_exists('eventer_fetch_google_events')) { function eventer_fetch_google_events($status = '') { $google_calendar_id = eventer_get_settings('cal_id'); $google_calendar_api = eventer_get_settings('google_cal_apikey'); $google_event_array = array(); $items = eventer_generate_Google_events_list($google_calendar_id, $google_calendar_api); if (!$items) { return array(); } foreach ($items as $entry) { $title = $entry['title']; $link = $entry['url']; $event_start_time = $entry['start_time']; $google_event_end_time = $entry['end_time']; $index = strtotime($event_start_time); $description = $entry['description']; $location = $entry['location']; $allday = $entry['allday']; $color = $entry['color']; if (!empty($index) && array_key_exists($index, $google_event_array)) { $index = eventer_regenerate_calender_index($index, $google_event_array); } $start_date_format = get_date_from_gmt(date_i18n('Y-m-d H:i:s', $index), 'Y-m-d H:i:s'); $end_date_format = get_date_from_gmt(date_i18n('Y-m-d H:i:s', strtotime($google_event_end_time)), 'Y-m-d H:i:s'); $allday_text = ($allday == '1') ? esc_html__('All day', 'eventer') : ''; $google_event_array[$start_date_format] = array('start_time' => strtotime($start_date_format), 'featured' => '', 'multi' => '', 'title' => $title, 'link' => $link, 'end' => $end_date_format, 'location' => $location, 'desc' => $description, 'allday' => $allday, 'color' => $color, 'type' => 'google', 'featured_set' => '', 'start' => $start_date_format, 'id' => array('start_time' => $start_date_format, 'title' => $title, 'link' => $link, 'end' => $end_date_format, 'location' => $location, 'desc' => $description, 'allday' => $allday, 'color' => $color, 'type' => 'google', 'featured_set' => '', 'start' => $start_date_format, 'multi' => '', 'featured' => '')); } return $google_event_array; } } function eventer_generatePaymentResponse($intent) { if (($intent->status == 'requires_action' || $intent->status == 'requires_source_action') && $intent->next_action->type == 'use_stripe_sdk') { # Tell the client to handle the action return json_encode([ 'requires_action' => true, 'payment_intent_client_secret' => $intent->client_secret ]); } else if ($intent->status == 'succeeded') { # The payment didn’t need any additional actions and completed! # Handle post-payment fulfillment return json_encode([ 'success' => true ]); } else { # Invalid status http_response_code(500); return json_encode(['error' => 'Invalid PaymentIntent status']); } } function eventer_sort_asc($x, $y) { return $x['start_time'] - $y['start_time']; } function eventer_sort_desc($x, $y) { return $y['start_time'] - $x['start_time']; } /* * eventer_get_events_array function * This function is creating the event array with dates, this function used multiple number of parameters * $ids variable used to get events by specific event ID * $status variable used to get events by future/past/monthly * $series is the date variable where user can provide start date and end date to get events from that date range only, format Y-m-d * $offset is used to skip number of events from array * $count is number of events to show * $events_type is used to show events of two types WP/Google * $event_until is used to show events to page until start time or end time * $page_lang is used to get events of specific language while using WPML * $pass is the variable to use direct WP Query instead of saved data */ if (!function_exists('eventer_get_events_array')) { function eventer_get_events_array($id = array(), $status = "future", $series = "", $offset = 0, $count = '', $events_type = '', $event_until = '1', $page_lang = '', $pass = '', $occurrence = '', $featured = '') { //$start = microtime(true); $all_events_data_wp_only = $all_events_data_google_only = $featured_events_set = $all_events_merged = array(); $show_event_until = $event_until; $event_count = $count; $event_occurance = eventer_get_settings('eventer_show_single_occurance'); if ($count == '') { $event_count = eventer_get_settings('event_limit'); if ($event_count == '') { $event_count = get_option('posts_per_page'); } } $site_lang = EVENTER__LANGUAGE_CODE; $site_lang = ($page_lang == '') ? $site_lang : $page_lang; $offset = ($offset == '') ? 0 : ($offset - 1) * $event_count; $all_events_data = $default_featured_set = array(); $eventer_saved_future = get_option($site_lang . '_eventer_future_data_formatted_wp'); if ((empty($eventer_saved_future)) || ($pass == "1")) { $id = ($pass != "1") ? array() : $id; $all_events_data_google = eventer_fetch_google_events(); $all_events_data_new = $default_featured_set = array(); $event_arg = array('post_type' => 'eventer', 'post__in' => $id, 'posts_per_page' => -1, 'post_status' => 'publish'); $event_list = new WP_Query($event_arg); if ($event_list->have_posts()) : while ($event_list->have_posts()) : $event_list->the_post(); $event_start_date = get_post_meta(get_the_ID(), 'eventer_event_start_dt', true); $event_end_date = get_post_meta(get_the_ID(), 'eventer_event_end_dt', true); $default_featured = get_post_meta(get_the_ID(), 'eventer_event_featured', true); if ($default_featured == 'on') { $default_featured_set[] = get_the_ID(); } $all_day = get_post_meta(get_the_ID(), 'eventer_event_all_day', true); $all_day = ($all_day) ? esc_html__('All day', 'eventer') : ''; $allday_code = ($all_day) ? '1' : ''; $event_end_date = ($event_end_date != '') ? $event_end_date : $event_start_date; $event_start_dt_str = strtotime($event_start_date); $event_end_dt_str = strtotime($event_end_date); $multi_day = (date_i18n('Y-m-d', $event_end_dt_str) != date_i18n('Y-m-d', $event_start_dt_str)) ? '1' : ''; $all_dates = get_post_meta(get_the_ID(), 'eventer_all_dates', true); $all_dynamic_dates = ''; if ($occurrence == 'dynamic') { $all_dynamic_dates = get_post_meta(get_the_ID(), 'eventer_event_multiple_dt_inc', true); $all_dynamic_dates = array_map('trim', explode(',', $all_dynamic_dates)); $all_dynamic_dates = array_filter($all_dynamic_dates); $all_dates = array_diff($all_dates, $all_dynamic_dates); } $all_dates = array_filter($all_dates); if (!empty($all_dynamic_dates) && $occurrence == 'dynamic') { $dynamic_set = array(); foreach ($all_dynamic_dates as $dynamic) { $dynamic_set[] = $dynamic; } $all_dates = array_merge($all_dates, $dynamic_set); } $diff_seconds = $event_end_dt_str - $event_start_dt_str; $start_time_only = date_i18n('H:i', $event_start_dt_str); $end_time_only = date_i18n('H:i', $event_end_dt_str); $random_id = 1; $event_id = get_the_ID(); $registration_switch = get_post_meta(get_the_ID(), 'eventer_event_registration_swtich', true); foreach ($all_dates as $all_date) { $ready_end_date = ($diff_seconds > 0) ? strtotime($all_date . ' ' . $start_time_only) + $diff_seconds : strtotime($all_date); $end_time_create = strtotime($all_date) + $diff_seconds; $end_time_create = date_i18n('Y-m-d', $end_time_create); $all_events_data_new[$event_id . '-' . $random_id] = array('start' => $all_date . ' ' . $start_time_only, 'end' => date_i18n('Y-m-d ' . $end_time_only, $ready_end_date), 'id' => $event_id, 'start_time' => strtotime($all_date . ' ' . $start_time_only), 'end_time' => strtotime($end_time_create . ' ' . $start_time_only), 'actual_start' => $event_start_dt_str, 'actual_end' => $event_end_dt_str, 'featured' => '', 'multi' => $multi_day, 'featured_set' => $default_featured, 'registration_switch' => $registration_switch, 'type' => 'wp', 'allday' => $all_day, 'allday_code' => $allday_code); $random_id++; } $all_events_data_wp_only = $all_events_data_new; $all_events_data_google_only = $all_events_data_google; $all_events_merged = array_merge($all_events_data_wp_only, $all_events_data_google_only); endwhile; endif; wp_reset_postdata(); if ($all_events_merged) { update_option('eventer_extreme_last_event_date', max(array_column($all_events_merged, 'start'))); update_option('eventer_extreme_first_event_date', min(array_column($all_events_merged, 'start'))); } update_option($site_lang . '_eventer_future_data_formatted_wp', $all_events_data_new); update_option('eventer_future_data_google', $all_events_data_google); $all_events_data_new = array_merge($all_events_data_new, $all_events_data_google); } else { switch ($events_type) { case "2": $all_events_data_new = (!empty(get_option('eventer_future_data_google'))) ? get_option('eventer_future_data_google') : array(); $all_events_data_wp_only = array(); $all_events_data_google_only = (!empty(get_option('eventer_future_data_google'))) ? get_option('eventer_future_data_google') : array(); break; case "1": $all_events_data_new = $eventer_saved_future; $all_events_data_wp_only = $eventer_saved_future; $all_events_data_google_only = array(); break; default: $all_events_data_wp = $eventer_saved_future; $all_events_data_google = (!empty(get_option('eventer_future_data_google'))) ? get_option('eventer_future_data_google') : array(); $all_events_data_new = array_merge($all_events_data_wp, $all_events_data_google); $all_events_data_wp_only = $eventer_saved_future; $all_events_data_google_only = (!empty(get_option('eventer_future_data_google'))) ? get_option('eventer_future_data_google') : array(); } } if (!empty($id)) { $all_events_data_new = array_filter($all_events_data_wp_only, function ($date) use ($id) { return (in_array($date['id'], (array) $id)); }); } if (($status == "future" || $status == "counters") && (empty($series))) { $series = array(date_i18n('Y-m-d G:i'), date_i18n('Y-m-d G:i', strtotime(date("Y-m-d", time()) . " + 1825 day"))); } elseif (($status == "past") && (empty($series))) { $series = array(date_i18n('Y-m-d G:i', strtotime(date("Y-m-d", time()) . " - 1825 day")), date_i18n('Y-m-d G:i')); } else { $series = ($series == '') ? date_i18n('Y-m') : $series; } $all_events_data_new = array_filter($all_events_data_new, function ($date) use ($series) { if (!is_array($series)) { $start = date_i18n('Y-m-01 00:01', strtotime($series)); $end = date_i18n('Y-m-t 23:59', strtotime($series)); } else { $start = date_i18n('Y-m-d H:i', strtotime($series[0])); $end = date_i18n('Y-m-d 23:59', strtotime($series[1])); } return (strtotime($date['end']) >= strtotime($start) and strtotime($date['end']) <= strtotime($end)) || (strtotime($date['start']) >= strtotime($start) and strtotime($date['start']) <= strtotime($end)); }); if ($status == "past") { uasort($all_events_data_new, 'eventer_sort_desc'); } else { uasort($all_events_data_new, 'eventer_sort_asc'); $all_events_data_featured = array_filter($all_events_data_new, function ($data) { return ($data['featured_set'] == 'on'); }); $featured_events = $already_set = array(); if ($all_events_data_featured) { foreach ($all_events_data_featured as $key => $feat_set) { if (in_array($feat_set['id'], $already_set) || $feat_set['type'] == 'google') continue; $already_set[] = $feat_set['id']; $feat_set['featured'] = 'on'; unset($all_events_data_new[$key]); $featured_events[$key] = $feat_set; } $all_events_data_new = array_merge($featured_events, $all_events_data_new); } } if ($event_occurance == 'on') { $duplicate_events = $new_single_array = array(); foreach ($all_events_data_new as $key => $this_event) { if (in_array($this_event['id'], $duplicate_events)) continue; $duplicate_events[] = $this_event['id']; $new_single_array[$key] = $this_event; } $all_events_data_new = $new_single_array; } $output_events = array_slice($all_events_data_new, $offset, $event_count, true); $total_result = count($all_events_data_new); return array('results' => $total_result, 'events' => $output_events); } } /* * eventer_search_result_data function * This function is used for showing result on search page */ if (!function_exists('eventer_search_result_data')) { function eventer_search_result_data($id = array(), $status = "future", $series = "", $offset = 0, $count = '', $events_type = '', $event_until = '1', $page_lang = '') { $show_event_until = $event_until; $event_count = $count; $event_occurance = eventer_get_settings('eventer_show_single_occurance'); if ($count == '') { $event_count = eventer_get_settings('event_limit'); if ($event_count == '') { $event_count = get_option('posts_per_page'); } } $site_lang = EVENTER__LANGUAGE_CODE; $all_events_data_google = array(); $site_lang = ($page_lang == '') ? $site_lang : $page_lang; $offset = ($offset == '') ? 0 : ($offset - 1) * $event_count; $all_events_data = array(); $eventer_saved_future = get_option($site_lang . '_eventer_future_data_wp'); $eventer_saved_show_until = get_option('eventer_saved_show_until'); $eventer_multi_date = (!empty(get_option('eventer_multi_day_event'))) ? get_option('eventer_multi_day_event') : array(); $all_events_data_new = array(); if (have_posts()) : while (have_posts()) : the_post(); $event_start_date = get_post_meta(get_the_ID(), 'eventer_event_start_dt', true); $event_end_date = get_post_meta(get_the_ID(), 'eventer_event_end_dt', true); $event_end_date = ($event_end_date != '') ? $event_end_date : $event_start_date; $event_start_dt_str = strtotime($event_start_date); $event_end_dt_str = strtotime($event_end_date); $event_time = ($show_event_until == 1) ? date_i18n("H:i", $event_start_dt_str) : date_i18n("H:i", $event_end_dt_str); $days_diff = eventer_dateDiff($event_start_date, $event_end_date); $all_dates = get_post_meta(get_the_ID(), 'eventer_all_dates', true); $all_dates = (is_array($all_dates)) ? array_filter($all_dates) : array($all_dates); if (date('Y-m-d', $event_start_dt_str) != date('Y-m-d', $event_end_dt_str) && $show_event_until != 1) { $s = strtotime('2025-01-01 ' . date_i18n('H:i', $event_start_dt_str)); $e = strtotime('2025-01-02 ' . date_i18n('H:i', $event_end_dt_str)); $diff = ($e - $s) / 3600; if ($diff > 0) { $diff_minutes = $diff * 60; $sn = date("G:i", $event_start_dt_str); $all_dates = array_map(function ($date) use ($sn, $diff_minutes) { $st = strtotime($date . ' ' . $sn); return date("Y-m-d H:i", strtotime('+' . $diff_minutes . ' minutes', $st)); }, $all_dates); } else { $st_date = date_i18n("H:i", $event_start_dt_str); $all_dates = preg_filter('/$/', ' ' . $st_date, $all_dates); } } else { $all_dates = preg_filter('/$/', ' ' . $event_time, $all_dates); } $fill_id = array_fill_keys($all_dates, get_the_ID()); foreach ($fill_id as $key => $value) { $check_keys = array($key, $key . ':01', $key . ':02', $key . ':03', $key . ':04', $key . ':05', $key . ':06', $key . ':07', $key . ':08', $key . ':09'); $count_total_duplicate_keys = count(array_intersect_key(array_flip($check_keys), $all_events_data_new)); if ($count_total_duplicate_keys > 0) { $mod_key = str_pad($count_total_duplicate_keys, 2, "0", STR_PAD_LEFT); $all_events_data_new[$key . ':' . $mod_key] = $all_events_data_new[$key]; } } $all_events_data_new = array_merge($all_events_data_new, $fill_id); $all_events_data_wp_only = $all_events_data_new; $all_events_data_google_only = $all_events_data_google; endwhile; endif; if (!empty($id)) { $all_events_data_new = array_intersect($all_events_data_new, $id); } //Below Code is written for event which have different date in start and end date field, so that the event should display only one time for future or event start date if don't have any future date if ((!empty($eventer_multi_date) && !empty($all_events_data_wp_only)) || ($event_occurance == "on" && !empty($all_events_data_wp_only))) { $all_events_data_new_singleday = array_diff($all_events_data_wp_only, $eventer_multi_date); $eventer_multi_date = ($event_occurance == "on") ? array_values($all_events_data_wp_only) : $eventer_multi_date; $all_events_data_selected = ($event_occurance == "on") ? $all_events_data_wp_only : array_intersect($all_events_data_wp_only, $eventer_multi_date); $all_events_data_new_again = array_filter($all_events_data_selected, function ($date) { return (strtotime($date) >= date_i18n('U')); }, ARRAY_FILTER_USE_KEY); $single_occurrecnce = array_unique($all_events_data_new_again); $diff_ids = array_diff($eventer_multi_date, $all_events_data_new_again); $diff_ids = array_unique($diff_ids); if (!empty($diff_ids)) { $each_non_future_events = array(); foreach ($diff_ids as $multi) { $all_events_passed_nont_future = array_intersect($all_events_data_wp_only, array($multi)); $all_events_passed_event = array_unique($all_events_passed_nont_future); $each_non_future_events = array_merge($each_non_future_events, $all_events_passed_event); } $single_occurrecnce = array_merge($single_occurrecnce, $each_non_future_events); } $all_events_data_first = ($event_occurance != "on") ? array_merge($all_events_data_new_singleday, $single_occurrecnce) : $single_occurrecnce; $all_events_data_new = array_merge($all_events_data_first, (array) $all_events_data_google_only); } //End code of multiple date event if ($status == "future" || $status == "counters") { $series = array(date_i18n('Y-m-d G:i'), date_i18n('Y-m-d G:i', strtotime(date("Y-m-d", time()) . " + 1825 day"))); } elseif ($status == "past") { $series = array(date_i18n('Y-m-d G:i', strtotime(date("Y-m-d", time()) . " - 1825 day")), date_i18n('Y-m-d G:i')); } else { $series = ($series == '') ? date_i18n('Y-m') : $series; } $all_events_data_new = array_filter($all_events_data_new, function ($date) use ($series) { if (!is_array($series)) { $start = date_i18n('Y-m-01 00:01', strtotime($series)); $end = date_i18n('Y-m-t 23:59', strtotime($series)); } else { $start = $series[0]; $end = $series[1]; } return (strtotime($date) >= strtotime($start) and strtotime($date) <= strtotime($end)); }, ARRAY_FILTER_USE_KEY); if ($status == "past") { krsort($all_events_data_new); } else { ksort($all_events_data_new); } $output_events = array_slice($all_events_data_new, $offset, $event_count, true); $total_result = count($all_events_data_new); $output = array('events' => $output_events, 'results' => $total_result); //echo microtime(true) - $start; return $output; } } //eventer_dotpay_chk_security_create function to use chk field for payment /* #$DotpayId is dotpay account ID #$DotpayPin is pin of account that can access from settings of dashboard */ function eventer_dotpay_chk_security_create($DotpayId, $DotpayPin, $Environment, $RedirectionMethod, $ParametersArray, $MultiMerchantList, $customer_base64) { $ParametersArray['id'] = $DotpayId; $ParametersArray['customer'] = $customer_base64; $chk = $DotpayPin . (isset($ParametersArray['api_version']) ? $ParametersArray['api_version'] : null) . (isset($ParametersArray['lang']) ? $ParametersArray['lang'] : null) . (isset($ParametersArray['id']) ? $ParametersArray['id'] : null) . (isset($ParametersArray['pid']) ? $ParametersArray['pid'] : null) . (isset($ParametersArray['amount']) ? $ParametersArray['amount'] : null) . (isset($ParametersArray['currency']) ? $ParametersArray['currency'] : null) . (isset($ParametersArray['description']) ? $ParametersArray['description'] : null) . (isset($ParametersArray['control']) ? $ParametersArray['control'] : null) . (isset($ParametersArray['channel']) ? $ParametersArray['channel'] : null) . (isset($ParametersArray['credit_card_brand']) ? $ParametersArray['credit_card_brand'] : null) . (isset($ParametersArray['ch_lock']) ? $ParametersArray['ch_lock'] : null) . (isset($ParametersArray['channel_groups']) ? $ParametersArray['channel_groups'] : null) . (isset($ParametersArray['onlinetransfer']) ? $ParametersArray['onlinetransfer'] : null) . (isset($ParametersArray['url']) ? $ParametersArray['url'] : null) . (isset($ParametersArray['type']) ? $ParametersArray['type'] : null) . (isset($ParametersArray['buttontext']) ? $ParametersArray['buttontext'] : null) . (isset($ParametersArray['urlc']) ? $ParametersArray['urlc'] : null) . (isset($ParametersArray['firstname']) ? $ParametersArray['firstname'] : null) . (isset($ParametersArray['lastname']) ? $ParametersArray['lastname'] : null) . (isset($ParametersArray['email']) ? $ParametersArray['email'] : null) . (isset($ParametersArray['street']) ? $ParametersArray['street'] : null) . (isset($ParametersArray['street_n1']) ? $ParametersArray['street_n1'] : null) . (isset($ParametersArray['street_n2']) ? $ParametersArray['street_n2'] : null) . (isset($ParametersArray['state']) ? $ParametersArray['state'] : null) . (isset($ParametersArray['addr3']) ? $ParametersArray['addr3'] : null) . (isset($ParametersArray['city']) ? $ParametersArray['city'] : null) . (isset($ParametersArray['postcode']) ? $ParametersArray['postcode'] : null) . (isset($ParametersArray['phone']) ? $ParametersArray['phone'] : null) . (isset($ParametersArray['country']) ? $ParametersArray['country'] : null) . (isset($ParametersArray['code']) ? $ParametersArray['code'] : null) . (isset($ParametersArray['p_info']) ? $ParametersArray['p_info'] : null) . (isset($ParametersArray['p_email']) ? $ParametersArray['p_email'] : null) . (isset($ParametersArray['n_email']) ? $ParametersArray['n_email'] : null) . (isset($ParametersArray['expiration_date']) ? $ParametersArray['expiration_date'] : null) . (isset($ParametersArray['deladdr']) ? $ParametersArray['deladdr'] : null) . (isset($ParametersArray['recipient_account_number']) ? $ParametersArray['recipient_account_number'] : null) . (isset($ParametersArray['recipient_company']) ? $ParametersArray['recipient_company'] : null) . (isset($ParametersArray['recipient_first_name']) ? $ParametersArray['recipient_first_name'] : null) . (isset($ParametersArray['recipient_last_name']) ? $ParametersArray['recipient_last_name'] : null) . (isset($ParametersArray['recipient_address_street']) ? $ParametersArray['recipient_address_street'] : null) . (isset($ParametersArray['recipient_address_building']) ? $ParametersArray['recipient_address_building'] : null) . (isset($ParametersArray['recipient_address_apartment']) ? $ParametersArray['recipient_address_apartment'] : null) . (isset($ParametersArray['recipient_address_postcode']) ? $ParametersArray['recipient_address_postcode'] : null) . (isset($ParametersArray['recipient_address_city']) ? $ParametersArray['recipient_address_city'] : null) . (isset($ParametersArray['application']) ? $ParametersArray['application'] : null) . (isset($ParametersArray['application_version']) ? $ParametersArray['application_version'] : null) . (isset($ParametersArray['warranty']) ? $ParametersArray['warranty'] : null) . (isset($ParametersArray['bylaw']) ? $ParametersArray['bylaw'] : null) . (isset($ParametersArray['personal_data']) ? $ParametersArray['personal_data'] : null) . (isset($ParametersArray['credit_card_number']) ? $ParametersArray['credit_card_number'] : null) . (isset($ParametersArray['credit_card_expiration_date_year']) ? $ParametersArray['credit_card_expiration_date_year'] : null) . (isset($ParametersArray['credit_card_expiration_date_month']) ? $ParametersArray['credit_card_expiration_date_month'] : null) . (isset($ParametersArray['credit_card_security_code']) ? $ParametersArray['credit_card_security_code'] : null) . (isset($ParametersArray['credit_card_store']) ? $ParametersArray['credit_card_store'] : null) . (isset($ParametersArray['credit_card_store_security_code']) ? $ParametersArray['credit_card_store_security_code'] : null) . (isset($ParametersArray['credit_card_customer_id']) ? $ParametersArray['credit_card_customer_id'] : null) . (isset($ParametersArray['credit_card_id']) ? $ParametersArray['credit_card_id'] : null) . (isset($ParametersArray['blik_code']) ? $ParametersArray['blik_code'] : null) . (isset($ParametersArray['credit_card_registration']) ? $ParametersArray['credit_card_registration'] : null) . (isset($ParametersArray['surcharge_amount']) ? $ParametersArray['surcharge_amount'] : null) . (isset($ParametersArray['surcharge']) ? $ParametersArray['surcharge'] : null) . (isset($ParametersArray['surcharge']) ? $ParametersArray['surcharge'] : null) . (isset($ParametersArray['ignore_last_payment_channel']) ? $ParametersArray['ignore_last_payment_channel'] : null) . (isset($ParametersArray['vco_call_id']) ? $ParametersArray['vco_call_id'] : null) . (isset($ParametersArray['vco_update_order_info']) ? $ParametersArray['vco_update_order_info'] : null) . (isset($ParametersArray['vco_subtotal']) ? $ParametersArray['vco_subtotal'] : null) . (isset($ParametersArray['vco_shipping_handling']) ? $ParametersArray['vco_shipping_handling'] : null) . (isset($ParametersArray['vco_tax']) ? $ParametersArray['vco_tax'] : null) . (isset($ParametersArray['vco_discount']) ? $ParametersArray['vco_discount'] : null) . (isset($ParametersArray['vco_gift_wrap']) ? $ParametersArray['vco_gift_wrap'] : null) . (isset($ParametersArray['vco_misc']) ? $ParametersArray['vco_misc'] : null) . (isset($ParametersArray['vco_promo_code']) ? $ParametersArray['vco_promo_code'] : null) . (isset($ParametersArray['credit_card_security_code_required']) ? $ParametersArray['credit_card_security_code_required'] : null) . (isset($ParametersArray['credit_card_operation_type']) ? $ParametersArray['credit_card_operation_type'] : null) . (isset($ParametersArray['credit_card_avs']) ? $ParametersArray['credit_card_avs'] : null) . (isset($ParametersArray['credit_card_threeds']) ? $ParametersArray['credit_card_threeds'] : null) . (isset($ParametersArray['customer']) ? $ParametersArray['customer'] : null) . (isset($ParametersArray['gp_token']) ? $ParametersArray['gp_token'] : null); foreach ($MultiMerchantList as $item) { foreach ($item as $key => $value) { $chk = $chk . (isset($value) ? $value : null); } } return $chk; } /* * eventer_display_time function * This is the helper function of eventer_explore_event_ids * This function is used to set date and time for all events used for this plugin */ if (!function_exists('eventer_display_time')) { function eventer_display_time($key = '', $id = '', $stime_format = '', $etime_format = '', $time_separator = '-', $counter_until = "1") { $date_format = esc_attr(eventer_get_settings('eventer_date_format')); $date_format = ($date_format == '') ? get_option('date_format') : $date_format; $counter_status = $output_time = $exit_rest = ''; $show_counter = $key; if (!$id) { return; } $event_start_date = get_post_meta($id, 'eventer_event_start_dt', true); $event_end_date = get_post_meta($id, 'eventer_event_end_dt', true); $event_end_date = ($event_end_date != '') ? $event_end_date : $event_start_date; $event_start_dt_str = strtotime($event_start_date); $event_end_dt_str = strtotime($event_end_date); $days_diff = eventer_dateDiff($event_start_date, $event_end_date); $hours_diff = (intval($event_end_dt_str) - intval($event_start_dt_str)); $result_event_multipledays = $multiday_set_start = $multiday_set_end = ''; $edtstr = $key; if ($hours_diff > 86400 && $counter_until != "1") { $show_event_until = $counter_until; if ($show_event_until != "1") { $s = strtotime('2025-01-01 ' . date_i18n('G:i', $event_start_dt_str)); $e = strtotime('2025-01-02 ' . date_i18n('G:i', $event_end_dt_str)); $diff = ($e - $s) / 3600; if ($diff > 0) { $diff_minutes = $diff * 60; $lessed_time = date("Y-m-d G:i", strtotime('-' . $diff_minutes . ' minutes', $key)); $show_counter = strtotime($lessed_time); } } } if ($hours_diff > 86400) { $multiday_set_start = date_i18n('j M', $event_start_dt_str); $multiday_set_end = date_i18n('j M', $event_end_dt_str); } $sdate = date_i18n('Y-m-d', $show_counter); $stime = date_i18n("G:i", $event_start_dt_str); $etime = date_i18n("G:i", $event_end_dt_str); $sdtstr = strtotime($sdate . ' ' . $stime); $edtstr = strtotime($sdate . ' ' . $etime); $counter_status = ($sdtstr <= date_i18n('U') && $edtstr >= date_i18n('U')) ? esc_html__('Ongoing', 'eventer') : esc_html__('Upcoming', 'eventer'); $all_day = get_post_meta($id, 'eventer_event_all_day', true); $show_start_time = date_i18n($stime_format, $sdtstr); $show_end_time = date_i18n($etime_format, $edtstr); if (date_i18n('Y-m-d', $event_start_dt_str) != date_i18n('Y-m-d', $event_end_dt_str) && $key >= date_i18n('U') && $counter_until != "1") { $output_time = date_i18n($date_format, $show_counter) . ' ' . $time_separator . ' ' . date_i18n($date_format, $key); } elseif ((date_i18n('Y-m-d', $event_start_dt_str) != date_i18n('Y-m-d', $event_end_dt_str)) && (date_i18n('Y', $event_start_dt_str) != date_i18n('Y', $event_end_dt_str))) { $multiday_set_start = $multiday_set_end = ''; $output_time = date_i18n($date_format, $event_start_dt_str) . ' ' . $time_separator . ' ' . date_i18n($date_format, $event_end_dt_str); } elseif ($hours_diff > 86400) { $output_time = date_i18n($date_format, $event_start_dt_str) . ' ' . $time_separator . ' ' . date_i18n($date_format, $event_end_dt_str); } elseif ($all_day) { $output_time = esc_html__('All Day', 'eventer'); } elseif ($stime_format != '' && $etime_format != '') { $output_time = $show_start_time . ' ' . $time_separator . ' ' . $show_end_time; } elseif ($stime_format != '' && $etime_format == '') { $output_time = $show_start_time; } elseif ($stime_format == '' && $etime_format != '') { $output_time = $show_end_time; } else { $time_format = get_option('time_format'); $output_time = date_i18n($time_format, $show_start_time); } return array($counter_status, $output_time, $show_counter, $multiday_set_start, $multiday_set_end); } } /* * eventer_explore_event_ids function * This function is used to set date/time/color/title/URL/location metas for events on site */ if (!function_exists('eventer_explore_event_ids')) { function eventer_explore_event_ids($key = '', $value = '', $stime_format = '', $etime_format = '', $time_separator = '-', $event_until = "1") { $easy_eventer = array(); $elocation = $color = ''; if (is_array($value)) { $title = $value['title']; $location = $value['location']; $allday = $value['allday']; $color = $value['color']; $end_time = $value['end_time']; $google_url = $value['link']; $show_start_time = date_i18n($stime_format, $key); $show_end_time = date_i18n($etime_format, strtotime($end_time)); $counter_status = esc_html__('Upcoming Event', 'eventer'); if ($allday == 1) { $output_time = esc_html__('All Day', 'eventer'); } elseif ($stime_format != '' && $etime_format != '') { $output_time = $show_start_time . ' ' . $time_separator . ' ' . $show_end_time; } elseif ($stime_format != '' && $etime_format == '') { $output_time = $show_start_time; } elseif ($stime_format == '' && $etime_format != '') { $output_time = $show_end_time; } else { $time_format = get_option('time_format'); //$output_time = '<span class="eventer-event-time">'.date_i18n($time_format, $key).'</span>'; } $easy_eventer = array('eid' => '', 'etitle' => $title, 'elocation' => $location, 'etime' => $output_time, 'status' => $counter_status, 'show_counter' => $key, 'color' => $color, 'google_url' => $google_url); } else { $google_url = $venue_name = ''; $time = eventer_display_time($key, $value, $stime_format, $etime_format, $time_separator, $event_until); $primary_term = get_post_meta($value, 'eventer_primary_term', true); if (has_term(array($primary_term), 'eventer-venue', $value)) { $location_address = get_term_meta($primary_term, 'venue_address', true); if ($location_address != '') { $elocation = $location_address; } else { $venue_title = get_term_by('id', $primary_term, 'eventer-venue'); $elocation = $venue_title->name; } $venue_name = $venue_title->name; } else { $venues = get_the_terms($value, 'eventer-venue'); $eventer_category = get_the_terms($value, 'eventer-category'); if (!is_wp_error($eventer_category) && !empty($eventer_category)) { $color = get_term_meta($eventer_category[0]->term_id, 'category_color', true); $color = ($color != '') ? $color : ''; } if (!is_wp_error($venues) && !empty($venues)) { $location_address = get_term_meta($venues[0]->term_id, 'venue_address', true); if ($location_address != '') { $elocation = $location_address; } else { $elocation = $venues[0]->name; } $venue_name = $venues[0]->name; } } $easy_eventer = array('eid' => $value, 'etitle' => apply_filters('eventer_raw_event_title', '', $value), 'elocation' => $elocation, 'etime' => $time[1], 'status' => $time[0], 'show_counter' => $time[2], 'color' => $color, 'google_url' => $google_url, 'multiday_start' => $time[3], 'multiday_end' => $time[4], 'venue_name' => $venue_name); } return $easy_eventer; } } if (!function_exists('eventer_get_currency_symbol')) { /* * eventer_get_currency_symbol function * This function convert currency to HTML entity */ add_action('init', 'eventer_get_currency_symbol'); function eventer_get_currency_symbol($currency = '', $price = '') { if (!$currency) { $currency = 'USD'; } switch ($currency) { case 'AED': $currency_symbol = 'د.إ'; break; case 'AFN': $currency_symbol = '؋'; break; case 'ALL': $currency_symbol = 'L'; break; case 'BRL': $currency_symbol = 'R$'; break; case 'AMD': $currency_symbol = 'AMD'; break; case 'ANG': $currency_symbol = 'ƒ'; break; case 'AOA': $currency_symbol = 'Kz'; break; case 'AWG': $currency_symbol = 'ƒ'; break; case 'AZN': $currency_symbol = 'AZN'; break; case 'BAM': $currency_symbol = 'KM'; break; case 'BDT': $currency_symbol = '৳ '; break; case 'BGN': $currency_symbol = 'лв.'; break; case 'BHD': $currency_symbol = '.د.ب'; break; case 'BIF': $currency_symbol = 'Fr'; break; case 'BOB': $currency_symbol = 'Bs.'; break; case 'BRL': $currency_symbol = 'R$'; break; case 'BTC': $currency_symbol = '฿'; break; case 'BTN': $currency_symbol = 'Nu.'; break; case 'BWP': $currency_symbol = 'P'; break; case 'BYR': $currency_symbol = 'Br'; break; case 'BYN': $currency_symbol = 'byn'; break; case 'CDF': $currency_symbol = 'Fr'; break; case 'CHF': $currency_symbol = 'CHF'; break; case 'CNY': $currency_symbol = '¥'; break; case 'CRC': $currency_symbol = '₡'; break; case 'CZK': $currency_symbol = 'Kč'; break; case 'DJF': $currency_symbol = 'Fr'; break; case 'DKK': $currency_symbol = 'DKK'; break; case 'DOP': $currency_symbol = 'RD$'; break; case 'DZD': $currency_symbol = 'د.ج'; break; case 'EGP': $currency_symbol = 'EGP'; break; case 'ERN': $currency_symbol = 'Nfk'; break; case 'ETB': $currency_symbol = 'Br'; break; case 'FJD': $currency_symbol = '$'; break; case 'FKP': $currency_symbol = 'EGP'; break; case 'GEL': $currency_symbol = 'ლ'; break; case 'GHS': $currency_symbol = '₵'; break; case 'GMD': $currency_symbol = 'D'; break; case 'GNF': $currency_symbol = 'Fr'; break; case 'GTQ': $currency_symbol = 'Q'; break; case 'HNL': $currency_symbol = 'L'; break; case 'HRK': $currency_symbol = 'Kn'; break; case 'HTG': $currency_symbol = 'G'; break; case 'HUF': $currency_symbol = 'Ft'; break; case 'IDR': $currency_symbol = 'Rp'; break; case 'ILS': $currency_symbol = '₪'; break; case 'INR': $currency_symbol = '₹'; break; case 'IQD': $currency_symbol = 'ع.د'; break; case 'IRR': $currency_symbol = '﷼'; break; case 'IRT': $currency_symbol = 'تومان'; break; case 'ISK': $currency_symbol = 'Kr.'; break; case 'JOD': $currency_symbol = 'د.ا'; break; case 'KES': $currency_symbol = 'KSh'; break; case 'KGS': $currency_symbol = 'сом'; break; case 'KHR': $currency_symbol = '៛'; break; case 'KMF': $currency_symbol = 'Fr'; break; case 'KPW': $currency_symbol = '₩'; break; case 'KRW': $currency_symbol = '₩'; break; case 'KWD': $currency_symbol = 'د.ك'; break; case 'KZT': $currency_symbol = 'KZT'; break; case 'LAK': $currency_symbol = '₭'; break; case 'LBP': $currency_symbol = 'ل.ل'; break; case 'LKR': $currency_symbol = 'රු'; break; case 'LSL': $currency_symbol = 'L'; break; case 'LYD': $currency_symbol = 'ل.د'; break; case 'MAD': $currency_symbol = 'د.م.'; break; case 'MDL': $currency_symbol = 'MDL'; break; case 'MGA': $currency_symbol = 'Ar'; break; case 'MKD': $currency_symbol = 'ден'; break; case 'MMK': $currency_symbol = 'Ks'; break; case 'MNT': $currency_symbol = '₮'; break; case 'MOP': $currency_symbol = 'P'; break; case 'MRO': $currency_symbol = 'UM'; break; case 'MUR': $currency_symbol = '₨'; break; case 'MVR': $currency_symbol = '.ރ'; break; case 'MWK': $currency_symbol = 'MK'; break; case 'MYR': $currency_symbol = 'RM'; break; case 'MZN': $currency_symbol = 'MT'; break; case 'NGN': $currency_symbol = '₦'; break; case 'NIO': $currency_symbol = 'C$'; break; case 'NOK': $currency_symbol = 'kr'; break; case 'NPR': $currency_symbol = '₨'; break; case 'OMR': $currency_symbol = 'ر.ع.'; break; case 'PAB': $currency_symbol = 'B/.'; break; case 'PEN': $currency_symbol = 'S/.'; break; case 'PGK': $currency_symbol = 'K'; break; case 'PHP': $currency_symbol = '₱'; break; case 'PKR': $currency_symbol = '₨'; break; case 'PLN': $currency_symbol = 'zł'; break; case 'PRB': $currency_symbol = 'р.'; break; case 'PYG': $currency_symbol = '₲'; break; case 'QAR': $currency_symbol = 'ر.ق'; break; case 'RON': $currency_symbol = 'lei'; break; case 'RSD': $currency_symbol = 'дин.'; break; case 'RUB': $currency_symbol = '₽'; break; case 'RWF': $currency_symbol = 'Fr'; break; case 'SAR': $currency_symbol = 'ر.س'; break; case 'SCR': $currency_symbol = '₨'; break; case 'SDG': $currency_symbol = 'ج.س.'; break; case 'SEK': $currency_symbol = 'kr'; break; case 'SLL': $currency_symbol = 'Le'; break; case 'SOS': $currency_symbol = 'Sh'; break; case 'STD': $currency_symbol = 'Db'; break; case 'SYP': $currency_symbol = 'ل.س'; break; case 'SZL': $currency_symbol = 'L'; break; case 'THB': $currency_symbol = '฿'; break; case 'TJS': $currency_symbol = 'ЅМ'; break; case 'TMT': $currency_symbol = 'm'; break; case 'TND': $currency_symbol = 'د.ت'; break; case 'TOP': $currency_symbol = 'T$'; break; case 'TRY': $currency_symbol = '₺'; break; case 'TWD': $currency_symbol = 'NT$'; break; case 'TZS': $currency_symbol = 'Sh'; break; case 'UAH': $currency_symbol = '₴'; break; case 'UGX': $currency_symbol = 'UGX'; break; case 'UZS': $currency_symbol = 'UZS'; break; case 'VEF': $currency_symbol = 'Bs F'; break; case 'VND': $currency_symbol = '₫'; break; case 'VUV': $currency_symbol = 'Vt'; break; case 'WST': $currency_symbol = 'T'; break; case 'XAF': $currency_symbol = 'Fr'; break; case 'XOF': $currency_symbol = 'Fr'; break; case 'XPF': $currency_symbol = 'Fr'; break; case 'YER': $currency_symbol = '﷼'; break; case 'ZAR': $currency_symbol = 'R'; break; case 'ZMW': $currency_symbol = 'ZK'; break; case 'EUR': $currency_symbol = '€'; break; case 'ARS': case 'AUD': case 'BBD': case 'BMD': case 'BND': case 'BSD': case 'BZD': case 'CAD': case 'CLP': case 'COP': case 'CUC': case 'CUP': case 'CVE': case 'GYD': case 'HKD': case 'JMD': case 'KYD': case 'LRD': case 'MXN': case 'NAD': case 'NZD': case 'SBD': case 'SGD': case 'SRD': case 'TTD': case 'USD': case 'UYU': case 'XCD': $currency_symbol = '$'; break; case 'FKP': case 'GBP': case 'GGP': case 'GIP': case 'IMP': case 'JEP': case 'SHP': case 'SSP': $currency_symbol = '£'; break; case 'JPY': case 'RMB': $currency_symbol = '¥'; break; default: $currency_symbol = ''; break; } $left_blank_space = $right_blank_space = ''; $woocommerce_switch = eventer_get_settings('eventer_enable_woocommerce_ticketing'); if ($woocommerce_switch == 'on' && get_option('woocommerce_currency_pos') == 'left_space') { $left_blank_space = ' ' . $price; } elseif ($woocommerce_switch == 'on' && get_option('woocommerce_currency_pos') == 'right_space') { $right_blank_space = $price . ' '; } elseif ($woocommerce_switch == 'on' && get_option('woocommerce_currency_pos') == 'right') { $right_blank_space = $price; } elseif ($woocommerce_switch == 'on' && get_option('woocommerce_currency_pos') == 'left') { $left_blank_space = $price; } elseif (eventer_get_settings('eventer_currency_position') == 'postfix') { $right_blank_space = $price; } elseif (eventer_get_settings('eventer_currency_position') == 'suffix') { $left_blank_space = $price; } return $right_blank_space . $currency_symbol . $left_blank_space; } } function eventer_filtering_values($status = 'monthly', $get_month_act = '', $i = 0) { $filter_data = ''; $get_month_act = ($get_month_act == '') ? date_i18n('Y-m-d') : $get_month_act; $arrow = "1"; if ($status == 'daily') { $proper_formatted_date = date_parse_from_format('Y-m-d', $get_month_act); $year = ($proper_formatted_date['year']) ? $proper_formatted_date['year'] : date_i18n('Y'); $month = ($proper_formatted_date['month']) ? $proper_formatted_date['month'] : date_i18n('m'); $day = ($proper_formatted_date['day']) ? $proper_formatted_date['day'] : date_i18n('d'); $get_month_act = $year . '-' . $month . '-' . $day; $tabs = 'day'; $tabs_date = 'l'; $tab_length = 6; $increment_format = 'Y-m-d'; if ($arrow == "1") { $get_months = date_i18n($increment_format, strtotime('+' . $i . ' ' . $tabs, strtotime($get_month_act))); } else { $get_months = date_i18n($increment_format, strtotime('-' . $i . ' ' . $tabs, strtotime($get_month_act))); } $date_start = date_i18n('Y-m-d 00:01', strtotime($get_months)); $date_end = date_i18n('Y-m-d 23:59', strtotime($get_months)); $label_month = date_i18n('l', strtotime($date_start)); $label_year = '<span>' . date_i18n('F', strtotime($date_start)) . '</span>'; $filter_data = array('tabs' => $tabs, 'tabs_format' => $tabs_date, 'tabs_length' => $tab_length, 'start_dt' => $date_start, 'end_dt' => $date_end, 'label_month' => $label_month, 'label_year' => $label_year, 'get_dates' => $get_months, 'inc_format' => $increment_format, 'calview' => $status, 'current_date' => $get_month_act); } elseif ($status == 'yearly') { $proper_formatted_date = date_parse_from_format('Y-m-d', $get_month_act); $year = ($proper_formatted_date['year']) ? $proper_formatted_date['year'] : date_i18n('Y'); $get_month_act = $year . '-01-01'; $tabs = 'year'; $tabs_date = 'Y'; $tab_length = 10; $increment_format = 'Y'; if ($arrow == "1") { $get_months = date_i18n($increment_format . '-01-01', strtotime('+' . $i . ' ' . $tabs, strtotime($get_month_act))); } else { $get_months = date_i18n($increment_format . '-01-01', strtotime('-' . $i . ' ' . $tabs, strtotime($get_month_act))); } $date_start = date_i18n('Y-01-01 00:01', strtotime($get_months)); $date_end = date_i18n('Y-12-31 23:59', strtotime($get_months)); $label_month = date_i18n('Y', strtotime($date_start)); $label_year = ''; $filter_data = array('tabs' => $tabs, 'tabs_format' => $tabs_date, 'tabs_length' => $tab_length, 'start_dt' => $date_start, 'end_dt' => $date_end, 'label_month' => $label_month, 'label_year' => $label_year, 'get_dates' => $get_months, 'inc_format' => $increment_format, 'calview' => $status, 'current_date' => $get_month_act); } elseif ($status == 'weekly') { $proper_formatted_date = date_parse_from_format('Y-m-d', $get_month_act); $year = ($proper_formatted_date['year']) ? $proper_formatted_date['year'] : date_i18n('Y'); $month = ($proper_formatted_date['month']) ? $proper_formatted_date['month'] : date_i18n('m'); $day = ($proper_formatted_date['day']) ? $proper_formatted_date['day'] : date_i18n('d'); $get_month_act = $year . '-' . $month . '-' . $day; $date = new DateTime($get_month_act); $week = $date->format("W"); $year = $date->format("Y"); $date_array = eventer_get_start_end_date_byweek($week - 1, $year); $increment_format = 'Y-m-d'; $date_start = $date_array[0]; $date_end = $date_array[1]; $tabs = 'week'; $tabs_date = 'Y-m-d'; $label_month = date_i18n(get_option('date_format'), strtotime($date_start)) . ' ' . esc_html__('to', 'eventer') . ' ' . date_i18n(get_option('date_format'), strtotime($date_end)); $label_year = ''; $tab_length = 1; $next_result = 1; if ($arrow == "1") { $get_months = date_i18n($increment_format, strtotime('+' . $i . ' ' . $tabs, strtotime($get_month_act))); } else { $get_months = date_i18n($increment_format, strtotime('-' . $i . ' ' . $tabs, strtotime($get_month_act))); } $filter_data = array('tabs' => $tabs, 'tabs_format' => $tabs_date, 'tabs_length' => $tab_length, 'start_dt' => $date_start, 'end_dt' => $date_end, 'label_month' => $label_month, 'label_year' => $label_year, 'get_dates' => $get_months, 'inc_format' => $increment_format, 'calview' => $status, 'current_date' => $get_month_act); } else { $proper_formatted_date = date_parse_from_format('Y-m-d', $get_month_act); $year = ($proper_formatted_date['year']) ? $proper_formatted_date['year'] : date_i18n('Y'); $month = ($proper_formatted_date['month']) ? $proper_formatted_date['month'] : date_i18n('m'); $day = ($proper_formatted_date['day']) ? $proper_formatted_date['day'] : '01'; $get_month_act = $year . '-' . $month . '-' . $day; $tabs = 'month'; $tabs_date = 'M'; $tab_length = 12; $increment_format = 'Y-m'; $arrow = 1; if ($arrow == "1") { $get_months = date_i18n($increment_format, strtotime('+' . $i . ' ' . $tabs, strtotime($get_month_act))); } else { $get_months = date_i18n($increment_format, strtotime('-' . $i . ' ' . $tabs, strtotime($get_month_act))); } $date_start = date_i18n('Y-m-01 00:01', strtotime($get_months)); $date_end = date_i18n('Y-m-t 23:59', strtotime($get_months)); $label_month = date_i18n('F', strtotime($date_start)); $label_year = '<span>' . date_i18n('Y', strtotime($date_start)) . '</span>'; $filter_data = array('tabs' => $tabs, 'tabs_format' => $tabs_date, 'tabs_length' => $tab_length, 'start_dt' => $date_start, 'end_dt' => $date_end, 'label_month' => $label_month, 'label_year' => $label_year, 'get_dates' => $get_months, 'inc_format' => $increment_format, 'calview' => $status, 'current_date' => $get_month_act); } return $filter_data; } /* * eventer_month_wise_events function * This function is used to display events on list page while using ajax query, this function sends json data to init.js file where all the html is generated using the values of this function and display them to list page */ if (!function_exists('eventer_month_wise_events')) { function eventer_month_wise_events() { if (!wp_verify_nonce($_REQUEST['nonce'], "eventer_create_nonce_for_month")) { exit(); } $halfyear = $fullyear = $halfyear_msg = $fullyear_msg = $next_class = $next_result = ''; $output = $monthsgrid = array(); $get_month_act = $_REQUEST['get_month']; $arrow = $_REQUEST['arrow']; $shortcode_attr = (isset($_REQUEST['shortcode_attr'])) ? $_REQUEST['shortcode_attr'] : array(); $filters = (isset($_REQUEST['filters'])) ? $_REQUEST['filters'] : array(); $status = (isset($_REQUEST['stat'])) ? $_REQUEST['stat'] : ''; $event_count = $shortcode_attr['count']; if ($status == "month") { $event_count = 1000; } global $wp_locale; $date_array = ''; $list_layout = $shortcode_attr['view']; $ids = (isset($shortcode_attr['ids'])) ? $shortcode_attr['ids'] : array(); $from_date = (isset($shortcode_attr['efrom'])) ? $shortcode_attr['efrom'] : ''; $to_date = (isset($shortcode_attr['eto'])) ? $shortcode_attr['eto'] : ''; $terms_cats = (isset($shortcode_attr['terms_cats'])) ? $shortcode_attr['terms_cats'] : array(); $terms_cats = (isset($filters['terms_cats'])) ? array_merge($terms_cats, (array) $filters['terms_cats']) : $terms_cats; $terms_tags = (isset($shortcode_attr['terms_tags'])) ? $shortcode_attr['terms_tags'] : array(); $terms_tags = (isset($filters['terms_tags'])) ? array_merge($terms_tags, (array) $filters['terms_tags']) : $terms_tags; $terms_venue = (isset($shortcode_attr['terms_venue'])) ? $shortcode_attr['terms_venue'] : array(); $terms_venue = (isset($filters['terms_venue'])) ? array_merge($terms_venue, (array) $filters['terms_venue']) : $terms_venue; $terms_organizer = (isset($shortcode_attr['terms_organizer'])) ? $shortcode_attr['terms_organizer'] : array(); $terms_organizer = (isset($filters['terms_organizer'])) ? array_merge($terms_organizer, (array) $filters['terms_organizer']) : $terms_organizer; $event_ids = eventer_merge_all_ids($ids, $terms_cats, $terms_tags, $terms_venue, $terms_organizer); $eventer_keyword_id = (isset($shortcode_attr['eventerid'])) ? array_map('trim', explode(',', $shortcode_attr['eventerid'])) : array(); $eventer_keyword_id = array_unique(array_filter($eventer_keyword_id)); $eventer_new_ids = array_merge($event_ids, (array) $eventer_keyword_id); $jump = (isset($_REQUEST['datajump'])) ? $_REQUEST['datajump'] : '0'; $pagination = $shortcode_attr['pagination']; $pagin = ($pagination) ? get_query_var('pagin') : 1; $last_event_date = get_option('eventer_extreme_last_event_date'); $last_event_date = ($last_event_date == '') ? '2100-01-01' : $last_event_date; $first_event_date = get_option('eventer_extreme_first_event_date'); for ($i = 0; $i <= $jump; $i++) { if ($shortcode_attr['month_filter'] != '') { $filtering_data = eventer_filtering_values($status, $get_month_act, $i); $tabs = $filtering_data['tabs']; $tabs_date = $filtering_data['tabs_format']; $tab_length = $filtering_data['tabs_length']; $date_start = $filtering_data['start_dt']; $date_end = $filtering_data['end_dt']; $label_month = $filtering_data['label_month']; $label_year = $filtering_data['label_year']; $get_months = $filtering_data['get_dates']; $increment_format = $filtering_data['inc_format']; $event_count = 1000; } $date_array = ($from_date != '' && $to_date != '') ? array($from_date, $to_date) : array($date_start, $date_end); if (is_search()) { $events = eventer_search_result_data($eventer_new_ids, $status, $date_array, $pagin, $event_count, $shortcode_attr['type'], $shortcode_attr['event_until']); } else { $events = eventer_get_events_array($eventer_new_ids, $status, $date_array, $pagin, $event_count, $shortcode_attr['type'], $shortcode_attr['event_until'], $shortcode_attr['pass']); } if ($events['results'] > 0) { break; } } $eventer = $events['events']; for ($is = 1; $is <= $tab_length; $is++) { if (strtotime($last_event_date) < strtotime(date_i18n('Y-m-d 23:59', strtotime('+' . $is . ' ' . $tabs, strtotime($get_months))))) { break; } $next_result = 1; $monthsgrid[] = array('lival' => date_i18n($increment_format, strtotime('+' . $is . ' ' . $tabs, strtotime($get_months))), 'lishow' => date_i18n($tabs_date, strtotime('+' . $is . ' ' . $tabs, strtotime($get_months)))); } $previous_result = (strtotime($first_event_date) < strtotime($get_months)) ? 1 : ''; $prevmonth = date_i18n($increment_format, strtotime('-1 ' . $tabs, strtotime($get_months))); $nextmonth = date_i18n($increment_format, strtotime('+1 ' . $tabs, strtotime($get_months))); $longjump = ''; if ($arrow == "1" && $tabs == "month") { $halfyear_msg = esc_html__('Search events for next six months.', 'eventer'); $fullyear_msg = esc_html__('Search events for next twelve months.', 'eventer'); $next_class = "next-month"; $longjump = $nextmonth; } elseif ($tabs == "month") { $halfyear_msg = esc_html__('Search events for previous six months.', 'eventer'); $fullyear_msg = esc_html__('Search events for previous twelve months.', 'eventer'); $next_class = ""; $longjump = $prevmonth; } if (empty($eventer)) { $datacon = "1"; } else { $datacon = ''; } //if(empty(eventer)) exit(); $stime_format = esc_attr(eventer_get_settings('start_time_format')); $etime_format = esc_attr(eventer_get_settings('end_time_format')); $time_separator = esc_attr(eventer_get_settings('time_separator')); $date_format = esc_attr(eventer_get_settings('eventer_date_format')); $stime_format = ($stime_format == '') ? get_option('time_format') : $stime_format; $etime_format = ($etime_format == '') ? get_option('time_format') : $etime_format; $date_format = ($date_format == '') ? get_option('date_format') : $date_format; $time_separator = ($time_separator == '') ? ' - ' : $time_separator; $title_data_passed = array(); foreach ($eventer as $event_data) { $key = $event_data['start']; $keyend = $event_data['end']; $value = $event_data['id']; if (get_post_status($value) != 'publish') { continue; } $event_month = $event_year = $start_list = $event_time = $event_venue = $event_title = $image_url = ''; $string_date = strtotime($key); $eventer_data = eventer_explore_event_ids($string_date, $value, $stime_format, $etime_format, $time_separator, $shortcode_attr['event_until']); $event_all_dates = get_post_meta($value, 'eventer_event_frequency_type', true); $event_dynamic_dates = get_post_meta($value, 'eventer_event_multiple_dt_inc', true); $recurring_icon = (($recurring_icon_switch == "on" && is_numeric($event_all_dates)) || ($recurring_icon_switch == "on" && $event_dynamic_dates != '')) ? '1' : ''; $event_ymd = date_i18n('Y-m-d', $eventer_data['show_counter']); $eventer_url = ($eventer_data['google_url'] == '') ? eventer_generate_endpoint_url('edate', $event_ymd, get_permalink($value)) : $eventer_data['google_url']; $event_day = date_i18n('d', $eventer_data['show_counter']); $event_month = date_i18n('F', $eventer_data['show_counter']); $event_year = esc_attr(date_i18n(' Y', $eventer_data['show_counter'])); $event_time = $eventer_data['etime']; $original_event = eventer_wpml_original_post_id($value); $title_data_passed['event_cdate'] = strtotime($key); $title_data_passed['event_edate'] = strtotime($keyend); $title_data_passed['all_dates'] = get_post_meta($value, 'eventer_all_dates', true); eventer_update_date_wise_bookings_table($value, date_i18n('Y-m-d 00:00:00', strtotime($key)), array()); $title_data_passed['booked_tickets'] = eventer_update_date_wise_bookings_table($value, date_i18n('Y-m-d 00:00:00', strtotime($key)), array(), 2); $event_title = apply_filters('eventer_styled_listing_title', $title = '', $value, $title_data_passed); if ($eventer_data['elocation'] != '') { $event_venue = $eventer_data['elocation']; } if (has_post_thumbnail($value)) { $image_url = get_the_post_thumbnail_url($value, 'eventer-thumb-170x170'); } if ($list_layout == 'minimal') { $single_day_set = (isset($eventer_data['multiday_start']) && $eventer_data['multiday_start'] == '') ? '<span class="eventer-event-day pull-left">' . date_i18n('d', $eventer_data['show_counter']) . '</span>' : ''; $event_year = ($single_day_set != '') ? $event_year : ''; $event_month = ($single_day_set != '') ? $event_month : $eventer_data['multiday_start'] . '-' . $eventer_data['multiday_end']; } else { $multiday_class = (isset($eventer_data['multiday_start']) && $eventer_data['multiday_start'] != '') ? 'eventer-event-multiday ' : 'eventer-event-day '; $multiday_start = (isset($eventer_data['multiday_start']) && $eventer_data['multiday_start'] != '') ? '<span class="' . esc_attr($multiday_class) . ' eventer-event-multiday-border">' . $eventer_data['multiday_start'] . '</span>' : ''; $multiday_end = (isset($eventer_data['multiday_end']) && $eventer_data['multiday_end'] != '') ? '<span class="' . esc_attr($multiday_class) . '">' . $eventer_data['multiday_end'] . '</span>' : ''; $single_day_set = (isset($eventer_data['multiday_start']) && $eventer_data['multiday_start'] != '') ? $multiday_start . $multiday_end : '<span class="' . esc_attr($multiday_class) . '">' . date_i18n('d', $eventer_data['show_counter']) . '</span>'; } $border_left_color = ($eventer_data['color']) ? ' style="border-left-color:' . $eventer_data['color'] . '"' : ''; $border_top_color = ($eventer_data['color']) ? ' style="border-top-color:' . $eventer_data['color'] . '"' : ''; $time_icon = ($shortcode_attr['view'] == "compact") ? '<i class="eventer-icon-clock"></i>' : ''; $output[] = array('da' => $single_day_set, 'multidays' => $multiday_start, 'mon' => $event_month, 'year' => $event_year, 'time' => $event_time, 'venue' => $event_venue, 'title' => $event_title, 'bordertop' => $border_top_color, 'borderleft' => $border_left_color, 'image_url' => $image_url, 'ticon' => $time_icon, 'color' => $eventer_data['color'], 'eventer_url' => $eventer_url, 'recurring_icon' => $recurring_icon, 'tabs' => $tabs); $confirm_data = 1; } echo wp_send_json(array('layout' => $shortcode_attr['view'], 'lidata' => $output, 'noresult' => $datacon, 'thismonth' => $label_month, 'thisyear' => $label_year, 'prevmonth' => $prevmonth, 'nextmonth' => $nextmonth, 'blank' => esc_html__('Sorry, no more events available for this month.', 'eventer'), 'halfyear' => '<a class="eventer-btn show_month_events ' . $next_class . '" data-jump="5" data-arrow="' . $longjump . '">' . $halfyear_msg . '</a>', 'fullyear' => '<a class="eventer-btn show_month_events ' . $next_class . '" data-jump="11" data-arrow="' . $longjump . '">' . $fullyear_msg . '</a>', 'showmsg' => esc_html__('Sorry, there no more events found for your request.', 'eventer'), 'monthsgrid' => $monthsgrid, 'next_result' => $next_result, 'previous_result' => $previous_result)); wp_die(); } add_action('wp_ajax_eventer_month_wise_events', 'eventer_month_wise_events'); add_action('wp_ajax_nopriv_eventer_month_wise_events', 'eventer_month_wise_events'); } /* * eventer_get_start_end_date_byweek function * This function is used to set start and end date by week number and year, this used when viewing weekly events on list page */ function eventer_get_start_end_date_byweek($week, $year) { $time = strtotime("1 January $year", time()); $day = date('w', $time); $time += ((7 * $week) + 1 - $day) * 24 * 3600; $return[0] = date('Y-m-d 00:01', $time); $time += 6 * 24 * 3600; $return[1] = date('Y-m-d 23:59', $time); return $return; } /* * eventer_pagination function * This function is used to display pagination for list/grid view */ if (!function_exists('eventer_pagination')) { function eventer_pagination($pages = '', $paged = 1, $range = 4, $grid_id = '') { $default = ''; if (is_tax()) { $permalink = get_term_link(get_query_var('term'), get_query_var('taxonomy')); } elseif (is_post_type_archive()) { $permalink = get_post_type_archive_link(get_query_var('post_type')); } else { $permalink = get_the_permalink(); } if (is_search()) { $default = 1; $permalink = home_url('/'); $search_term = '%s'; $permalink = esc_url(add_query_arg('p', '')); } $pagi = ''; $ajax_pagination = ($grid_id) ? 'eventer-dynamic-pagination' : ''; $showitems = $range + 1; if (1 != $pages) { $pagi .= '<ul class="eventer-pagination">'; if ($paged != 1) { $pagi .= '<li><a data-page="1" class="' . $ajax_pagination . '" href="' . esc_url(eventer_generate_endpoint_url('pagin', 1, $permalink, $default)) . '" title="' . __('First', 'eventer') . '">' . esc_html__('First', 'eventer') . '</a></li>'; } for ($i = 1; $i <= $pages; $i++) { if (1 != $pages && (!($i >= $paged + $range || $i <= $paged - $range) || $pages <= $showitems)) { $pagi .= ($paged == $i) ? "<li class=\"active\"><span>" . $i . "</span></li>" : "<li><a data-page='" . esc_attr($i) . "' href='" . esc_url(eventer_generate_endpoint_url('pagin', $i, $permalink, $default)) . "' class=\"" . $ajax_pagination . "\">" . $i . "</a></li>"; } } if ($paged != $pages) { $pagi .= '<li><a class="' . $ajax_pagination . '" data-page="' . esc_attr($pages) . '" href="' . esc_url(eventer_generate_endpoint_url('pagin', $pages, $permalink, $default)) . '" title="' . __('Last', 'eventer') . '">' . esc_html__('Last', 'eventer') . '</a></li>'; } $pagi .= '</ul>'; } return $pagi; } } /* * eventer_add_query_var function * This function is used to set query string variables so that they could easily accessible while add/remove from URL */ if (!function_exists('eventer_add_query_var')) { function eventer_add_query_var($vars) { $vars[] = "booking_status"; $vars[] = "reg"; $vars[] = "pagenum"; return $vars; } add_filter('query_vars', 'eventer_add_query_var'); } /* * eventer_encode_security_registration function * This function is used to set Unique number for registration code, so that it could not be understandable for everyone * The start value is the total of first and second digit of generated number and end variable is the total of second last and last digit of generated number, if total of start and end is not greater than 14 then user can not see tickets using any hack */ if (!function_exists('eventer_encode_security_registration')) { function eventer_encode_security_registration($reg = '', $start = 8, $end = 9) { if ($reg == '') { return; } //If blank registration number passed $random_number_start = rand(0, $start); //Generate any unique number starting from 0 to $start $random_number_end = rand(0, $end); //Generate any unique number starting from 0 to $end $random_number_start_second = $start - $random_number_start; $random_number_end_second = $end - $random_number_end; $total_corners = $start + $end; $calculated_position = ($total_corners <= 14) ? $random_number_start : $random_number_end_second; $calculate = $total_corners + $calculated_position; $create_number = $reg * $calculate; return $random_number_start . $random_number_start_second . $create_number . $random_number_end . $random_number_end_second; } } /* * eventer_decode_security_registration function * This function is used to decode the registration code to get actual registration ID of registrant */ if (!function_exists('eventer_decode_security_registration')) { function eventer_decode_security_registration($reg = '') { if ($reg == '' || strlen($reg < 6)) { return; } //If reg code length is not greater than equal to 6 digits $first_one = $reg[0]; //Getting first digit $first_two = $reg[1]; $last_one = $reg[strlen($reg) - 1]; $second_last = $reg[strlen($reg) - 2]; $registration_code = substr($reg, 2, -2); //Getting the number between $start and $end $start = $first_one + $first_two; $end = $last_one + $second_last; $total_corners = $start + $end; $calculated_position = ($total_corners <= 14) ? $first_one : $last_one; $calculate = $total_corners + $calculated_position; $actual_reg = (!is_float($registration_code / $calculate)) ? $registration_code / $calculate : ''; return array('reg_id' => $actual_reg, 'reg_pos' => $total_corners); } } /* * eventer_pass_email_registration function * This function is used to email the registration information to event manager and registrant */ if (!function_exists('eventer_pass_email_registration')) { function eventer_pass_email_registration($reg_id = '', $pre = '1') { $registrant_details = eventer_get_registrant_details('id', $reg_id); //Getting all registered details by registration ID if (empty($registrant_details)) { return; } $eventer_id = $registrant_details->eventer; $tickets = $registrant_details->tickets; $registrant_id = $registrant_details->id; $registrant_email = $registrant_details->email; $amount = $registrant_details->amount; $eventer_date = $registrant_details->eventer_date; $eventer_date_formatted = date_i18n(get_option('date_format'), strtotime($eventer_date)); $transaction_id = ($registrant_details->transaction_id != '') ? $registrant_details->transaction_id : md5(uniqid($registrant_id, true)); if ($registrant_details->transaction_id == '') { eventer_update_registrant_details(array('transaction_id' => $transaction_id), $registrant_id, array("%s", "%s")); } $payment_status = $registrant_details->status; $user_details = $registrant_details->user_details; $paymentmode = $registrant_details->paymentmode; $organizer = wp_get_object_terms($eventer_id, 'eventer-organizer'); $organizer_email = $completed_url_tkt = $pending_url_tkt = $failed_url_tkt = ''; $headers = array(); if (!is_wp_error($organizer) && !empty($organizer)) { foreach ($organizer as $org) { $organizer_id = $org->term_id; $organizer_email = get_term_meta($organizer_id, 'organizer_email', true); break; } } $sender = eventer_get_settings( 'email_from_address' ) ? eventer_get_settings( 'email_from_address' ) : get_option('admin_email'); $sender_name = eventer_get_settings( 'email_from_name' ) ? eventer_get_settings( 'email_from_name' ) : get_bloginfo('name'); $sender = ($organizer_email != '') ? $organizer_email : $sender; //If event do not have any event manager or event manager do not have email address then email will be forwarded to admin $headers[] = 'From: ' . $sender_name . ' <' . $sender . '>'; $headers[] = "MIME-Version: 1.0" . "\r\n"; $headers[] = "Content-Type: text/html; charset=" . get_bloginfo('charset') . "" . "\r\n"; if ($pre == '1') { //This is the condition when user fills registration info and ticket details //Only event manager will get this email $registration_content = eventer_get_settings('pre_registration_content'); $registration_content_switch = eventer_get_settings('pre_registration_content_switch'); if ($registration_content_switch == '0') { return 1; } $subject = esc_html__('Ticket Pre Registration Email', 'eventer'); $to = ''; } elseif ($pre == '2') { //This is the case if tickets are paid and using PayPal $registration_content = eventer_get_settings('payment_confirmation_content'); $registration_content_switch = eventer_get_settings('payment_confirmation_content_switch'); if ($registration_content_switch == '0') { return 1; } $subject = esc_html__('Payment verification email', 'eventer'); $to = $registrant_email; } else { //This is the case if ticket is booked in free or offline mode $registration_content = eventer_get_settings('payment_confirmation_content'); $registration_content_switch = eventer_get_settings('payment_confirmation_content_switch'); if ($registration_content_switch == '0') { return 1; } $subject = esc_html__('Ticket Registration email', 'eventer'); $to = $registrant_email; do_action( 'eventer_ticket_pdf_invoice_email', $registrant_id, $registrant_email, $registrant_details ); } $user_fields_val = $registrant_tickets_name = $registrant_tickets_vals = array(); if ($registration_content != '') { $message = apply_filters('eventer_filter_email_content_body', '', $registrant_details, $registration_content); $message = wpautop($message); } else { $message = "<p>" . esc_html__('New Registrant Details', 'eventer') . "<p>"; $message .= "<p>" . esc_html__('Registrant ID', 'eventer') . ": " . $registrant_id . "<p>"; $message .= "<p>" . esc_html__('Registrant Email', 'eventer') . ": " . $registrant_email . "<p>"; $message .= "<p>" . esc_html__('Amount Paid', 'eventer') . ": " . $amount . "<p>"; } if ($to != '') { wp_mail($to, $subject, $message, $headers); } $email_status = wp_mail($sender, $subject, $message, $headers); if ($email_status) { return 1; } else { return 0; } } } function eventer_search_ticket($name, $array, $loop = 1, $pid = '') { $last_key = null; $name = ($pid != '') ? $pid : $name; $search = ($pid != '') ? 'pid' : 'name'; foreach ($array as $key => $val) { if ($val[$search] == $name) { $last_key = $key; if ($loop == 1) { break; } } } return $last_key; } /* * eventer_registrant_tickets function * This function is used to insert registrant all details to the table * This function have hook of ajax so that it could work only on ajax call */ if (!function_exists('eventer_registrant_tickets')) { function eventer_registrant_tickets() { if (check_ajax_referer('eventer_create_nonce_for_registrant', 'booking_nonce', false)) { echo 'there is something went wrong.'; exit(); } //$email_cookie = (isset($_COOKIE["reg_email"]))?$_COOKIE["reg_email"]:''; $new_already_booked = array(); $reg_email = (isset($_POST['reg_mail'])) ? $_POST['reg_mail'] : ''; $eventer_id = esc_attr($_POST['eventer_id']); $tickets = (isset($_REQUEST['tickets'])) ? $_REQUEST['tickets'] : array(); $eventer_date = esc_attr($_POST['reg_event_date']); $eventer_time = (isset($_POST['reg_event_time']) && $_POST['reg_event_time'] != '') ? esc_attr($_POST['reg_event_time']) : '00:00:00'; global $wpdb; $table_name = $wpdb->prefix . "eventer_registrant"; $file = 'eventer_booking_csv'; $export_query = $wpdb->get_results("SELECT * FROM $table_name WHERE `eventer`= $eventer_id AND `email`='$reg_email'", ARRAY_A); $table_name_tickets = $wpdb->prefix . "eventer_tickets"; $registrations = []; if ($export_query) { $tickets_booked = $export_query[0]['tickets']; $tickets_booked = unserialize($tickets_booked); if ($tickets_booked) { foreach ($tickets_booked as $tbook) { $ticket_booked_name = $tbook['name']; $saved_ticket = $wpdb->get_results("SELECT * FROM $table_name_tickets WHERE `event` = $eventer_id AND `date` = '$eventer_date $eventer_time' AND `name` = '$ticket_booked_name' AND `restricts` = 1", ARRAY_A); if ($saved_ticket) { echo json_encode(['reg_invalid' => '1', 'ticket_name' => $ticket_booked_name]); wp_die(); } } } } $tickets_ser = (!empty($tickets)) ? serialize($tickets) : array(); $formdata = (isset($_POST['reg_data'])) ? $_POST['reg_data'] : array(); $services = (isset($_POST['services'])) ? $_POST['services'] : array(); $registrants = (isset($_POST['registrants'])) ? $_POST['registrants'] : array(); $user_filled_data = array_column($formdata, 'value', 'name'); $reg_details = serialize($formdata); $current_date = date_i18n('Y-m-d G:i'); $amount = (isset($_POST['amount'])) ? $_POST['amount'] : ''; $original_event = eventer_wpml_original_post_id($eventer_id); $cart_status = (isset($_POST['cart_status'])) ? $_POST['cart_status'] : ''; $eventer_time_slot = (isset($_POST['reg_event_slot'])) ? $_POST['reg_event_slot'] : ''; $status = 'Pending'; $book_type = (isset($_REQUEST['book_type'])) ? $_REQUEST['book_type'] : 'eventer'; $eventer_start_time = get_post_meta($eventer_id, 'eventer_event_start_dt', true); $eventer_allday = get_post_meta($eventer_id, 'eventer_event_all_day', true); $event_start_time_str = strtotime($eventer_start_time); $eventer_st_time = ($eventer_time != '00:00:00' && $eventer_time != '') ? date_i18n("H:i", strtotime($eventer_time)) : date_i18n("H:i", $event_start_time_str); if ($book_type == 'woo') { global $woocommerce; if ($cart_status != '') { foreach ($woocommerce->cart->get_cart() as $key => $item) { $cart_product_id = $item['product_id']; // the product ID if ( $cart_status == $cart_product_id ) { $woocommerce->cart->remove_cart_item($key); } } } $eventer_url = eventer_generate_endpoint_url('edate', $eventer_date, get_permalink($eventer_id)); $woo_checkout_name = $woo_checkout_email = ''; foreach ($tickets as $woo_ticket) { if ($woo_ticket['number'] == '') { continue; } $pid = $woo_ticket['pid']; $primary = $woo_ticket['primary']; $translated_id = (function_exists('icl_object_id')) ? icl_object_id($pid, 'product', false, ICL_LANGUAGE_CODE) : $pid; $product_id = $pid; $number = $woo_ticket['number']; $this_ticket_name = $woo_ticket['name']; if ($translated_id == '') { $product_id = icl_makes_duplicates($product_id); } $event_custom_price = $woo_ticket['price']; if ( ! has_term('eventer', 'product_cat', $product_id)) { continue; } if ( get_post_type($product_id) != 'product') { continue; } $this_ticket_registrants = (isset($registrants[$this_ticket_name])) ? $registrants[$this_ticket_name] : array(); // print_r( $this_ticket_registrants );exit(); $registrants_fields = []; if ( $woo_checkout_name == '' ) { foreach ( $this_ticket_registrants as $woo_checkout_data ) { $woo_checkout_name = $woo_checkout_data['name']; $woo_checkout_email = $woo_checkout_data['email']; setcookie('woo_checkout_user_name', $woo_checkout_name, (time() + 3600), "/"); setcookie('woo_checkout_user_email', $woo_checkout_email, (time() + 3600), "/"); break; } } foreach ($woocommerce->cart->get_cart() as $key => $item) { $item_id = $item['wceventer_id']; $cart_product_id = $item['product_id']; // the product ID } $cart_item_data = array( 'wceventer_name' => apply_filters('eventer_raw_event_title', '', $eventer_id), 'wceventer_id' => $eventer_id, 'wceventer_date' => strtotime($eventer_date . ' ' . $eventer_st_time), 'wceventer_time' => date_i18n(get_option('time_format'), strtotime($eventer_st_time)), 'wceventer_url' => $eventer_url, 'eventer_custom_price' => $event_custom_price, 'eventer_registrants' => $this_ticket_registrants, 'wceventer_product' => 'ticket', '_eventer_custom_title' => $this_ticket_name, 'wceventer_allday' => $eventer_allday, 'wceventer_slot' => $eventer_time, 'wceventer_slot_title' => $eventer_time_slot, 'eventer_all_data' => $tickets, 'ticket_id' => $primary, 'registrants' => $registrants ); WC()->cart->add_to_cart($product_id, $number, '', array(), $cart_item_data ); } if (!empty($services)) { foreach ($services as $woo_service) { $service_name = $woo_service['name']; $service_type = $woo_service['value']; if ($service_type == '') { continue; } $service_pid = $woo_service['pid']; $service_cost = $woo_service['cost']; if (!has_term('eventer_services', 'product_cat', intval($service_pid))) { continue; } if (get_post_type($service_pid) != 'product') { continue; } foreach ($woocommerce->cart->get_cart() as $key => $item) { $item_id = $item['wceventer_id']; $cart_product_id = $item['product_id']; // the product ID if ($eventer_id == $item_id && $service_pid == $cart_product_id) { $woocommerce->cart->remove_cart_item($key); } } $cart_item_data = array('wceventer_name' => apply_filters('eventer_raw_event_title', '', $eventer_id), 'wceventer_id' => $eventer_id, 'wceventer_date' => strtotime($eventer_date . ' ' . $eventer_st_time), 'wceventer_time' => date_i18n(get_option('time_format'), strtotime($eventer_st_time)), 'wceventer_services' => $service_type, 'eventer_custom_price' => $service_cost, 'wceventer_url' => $eventer_url, 'wceventer_product' => 'service'); WC()->cart->add_to_cart($service_pid, 1, '', array(), $cart_item_data); } } $checkout_js_settings = eventer_get_settings('eventer_checkout_js'); $checkout_js_settings = (empty($checkout_js_settings)) ? array() : $checkout_js_settings; $all_gateway = get_option('woocommerce_stripe_settings'); $stripe_enabled = (isset($all_gateway['enabled']) && $all_gateway['enabled'] == 'yes') ? 1 : 0; ob_start(); echo '<div class="widget_shopping_cart_content">'; woocommerce_mini_cart(); echo '</div>'; $output = ob_get_contents(); ob_end_clean(); echo wp_json_encode(array('reg' => '', 'woo' => $output, 'stripe_error' => '1', 'stripe_msg' => '', 'reg_invalid' => '0')); wp_die(); } $stripe_status_success = '2'; $reg_email = (isset($_POST['reg_mail'])) ? $_POST['reg_mail'] : ''; $reg_name = (isset($_POST['reg_name'])) ? $_POST['reg_name'] : ''; $secret = ''; if ($book_type == 'stripe') { $card_credentials = (isset($_REQUEST['card_cred'])) ? $_REQUEST['card_cred'] : ''; $token = $card_credentials['token']; $stripe_publishable_key = eventer_get_settings('eventer_stripe_publishable_key'); $stripe_secret_key = eventer_get_settings('eventer_stripe_secret_key'); $itemName = get_the_title($eventer_id); $itemNumber = $eventer_id; $itemPrice = $amount; $currency = eventer_get_settings('eventer_paypal_currency'); \Stripe\Stripe::setApiKey($stripe_secret_key); $intent = \Stripe\PaymentIntent::create([ 'payment_method_data' => [ 'type' => 'card', 'card' => ['token' => $token], ], 'amount' => ($currency != 'JPY') ? ($itemPrice * 100) : $itemPrice, 'currency' => $currency, 'description' => $itemName, 'metadata' => array( 'order_id' => $itemNumber . '-' . wp_rand(1000, 999999), ), 'confirmation_method' => 'manual', 'confirm' => true, ]); $data = eventer_generatePaymentResponse($intent); $stripe_response = $intent->jsonSerialize(); $verified_amount_received = $stripe_response['amount_received']; $verified_status = $stripe_response['status']; $transaction_id = $stripe_response['charges']['data'][0]['balance_transaction']; $deducted_amount = ($currency != 'JPY') ? ($itemPrice * 100) : $itemPrice; if ($verified_status == 'succeeded' && $verified_amount_received == $deducted_amount) { $stripe_status_success = '1'; } else { $data = json_decode($data, true); if (isset($data['payment_intent_client_secret'])) { $secret = $data['payment_intent_client_secret']; } } } if (empty($registrants) && !empty($tickets)) { foreach ($tickets as $set_reg) { $registrants[$set_reg['name']] = array(array('name' => $reg_name, 'email' => $reg_email)); } } $update_new_val = array(); if (!empty($tickets)) { $all_dynamics = array(); $total_booked = 0; foreach ($tickets as $new_ticket) { $ticket_ids = (isset($new_ticket['id'])) ? $new_ticket['id'] : ''; $ticket_numbers = (isset($new_ticket['number'])) ? $new_ticket['number'] : ''; if ($ticket_numbers <= 0) { continue; } $all_dynamics[$ticket_ids] = $ticket_numbers; $total_booked = intval($total_booked) + intval($ticket_numbers); } if (get_post_meta($eventer_id, 'eventer_common_ticket_count', true) != '') { $get_all_tickets = eventer_update_date_wise_bookings_table($eventer_id, $eventer_date . ' ' . $eventer_time, array(), 2, 1, true); if ($get_all_tickets) { foreach ($get_all_tickets as $get_ticket) { $all_tickets = (isset($get_ticket['dynamic'])) ? $get_ticket['dynamic'] : ''; eventer_update_date_wise_bookings_table($eventer_id, $eventer_date . ' ' . $eventer_time, array(array('id' => $all_tickets, 'number' => $total_booked)), 1, 1, true); } } } else { eventer_update_date_wise_bookings_table($eventer_id, $eventer_date . ' ' . $eventer_time, $tickets, 1, 1, true); } } $ip = eventer_client_ip(); $user_reg_id = get_current_user_id(); $user_system_data = serialize(array('ip' => $ip, 'services' => $services, 'email_pre' => "1", 'registrants' => $registrants, 'time_slot' => $eventer_time, 'slot_title' => $eventer_time_slot)); $paymentMode = $user_filled_data['chosen-payment-option']; global $wpdb; $table_name = $wpdb->prefix . "eventer_registrant"; $wpdb->query( $wpdb->prepare( "INSERT INTO $table_name ( eventer, eventer_date, username, email, user_details, tickets, ctime, status, amount, user_system, user_id, paymentmode) VALUES ( %d, %s, %s, %s, %s, %s, %s, %s, %s, %s, %d, %s )", array($eventer_id, $eventer_date, $reg_name, $reg_email, $reg_details, $tickets_ser, $current_date, $status, $amount, $user_system_data, $user_reg_id, $paymentMode) ) ); $autocomplete_orders = eventer_get_settings('eventer_order_autocomplete'); $autocomplete_orders = ($status == 'completed') ? '1' : $autocomplete_orders; $lastid = $wpdb->insert_id; $dont_show_ticket = eventer_encode_security_registration($lastid, 6, 8); $show_ticket = eventer_encode_security_registration($lastid, 9, 8); $registration_id = ($amount > 0 && $autocomplete_orders != '1') ? $dont_show_ticket : $show_ticket; if ($lastid && $book_type == 'stripe' && $stripe_status_success == '1') { $update_in = array('transaction_id' => $transaction_id, 'status' => "Success", 'paypal_details' => serialize($stripe_response), 'paymentmode' => 'Stripe', 'amount' => ($verified_amount_received / 100)); $vals_in = array("%s", "%s", "%s", "%f"); eventer_update_registrant_details($update_in, $lastid, $vals_in); $registration_id = $show_ticket; } eventer_pass_email_registration($lastid, "1"); echo wp_json_encode(array('reg' => $registration_id, 'woo' => '', 'stripe_error' => '', 'stripe_msg' => '', 'secret' => $secret, 'reg_id' => $lastid, 'reg_invalid' => '0')); wp_die(); } add_action('wp_ajax_eventer_registrant_tickets', 'eventer_registrant_tickets'); add_action('wp_ajax_nopriv_eventer_registrant_tickets', 'eventer_registrant_tickets'); } function eventer_confirm_payment_stripe() { $secret = (isset($_REQUEST['secret'])) ? $_REQUEST['secret'] : ''; $lastid = (isset($_REQUEST['reg_id'])) ? $_REQUEST['reg_id'] : ''; $stripe_secret_key = eventer_get_settings('eventer_stripe_secret_key'); \Stripe\Stripe::setApiKey($stripe_secret_key); $intent = \Stripe\PaymentIntent::retrieve($secret); try { $intent->confirm(); } catch (\Stripe\Error\InvalidRequest $err) { die(json_error($err->getMessage())); } catch (\Stripe\Error\Card $err) { die(json_error($err->getMessage())); } $stripe_response = $intent->jsonSerialize(); $verified_amount_received = $stripe_response['amount_received']; $verified_status = $stripe_response['status']; $transaction_id = $stripe_response['charges']['data'][0]['balance_transaction']; if ($lastid && $verified_status == 'succeeded') { $update_in = array('transaction_id' => $transaction_id, 'status' => "Success", 'paypal_details' => serialize($stripe_response), 'paymentmode' => 'Stripe', 'amount' => ($verified_amount_received / 100)); $vals_in = array("%s", "%s", "%s", "%f"); eventer_update_registrant_details($update_in, $lastid, $vals_in); $registration_id = eventer_encode_security_registration($lastid, 9, 8); } if ( $intent->status == 'requires_action' && $intent->next_action->type == 'use_stripe_sdk' ) { # Tell the client to handle the action echo json_encode([ 'requires_action' => true, 'payment_intent_client_secret' => $intent->client_secret ]); } else if ($intent->status == 'succeeded') { # The payment didn’t need any additional actions and completed! # Handle post-payment fulfillment echo wp_json_encode(array('reg' => $registration_id, 'woo' => '', 'stripe_error' => '', 'stripe_msg' => '', 'secret' => '', 'success' => true)); } else { # Invalid status http_response_code(500); echo json_encode(['error' => 'Invalid PaymentIntent status']); } wp_die(); } add_action('wp_ajax_eventer_confirm_payment_stripe', 'eventer_confirm_payment_stripe'); add_action('wp_ajax_nopriv_eventer_confirm_payment_stripe', 'eventer_confirm_payment_stripe'); /* * eventer_get_registrant_details function * This function is used to get all details of registrant * $field required table row name * $val required value related to that field */ if (!function_exists('eventer_get_registrant_details')) { function eventer_get_registrant_details($field, $val) { if ($field != '' && $val != '') { $field = esc_attr($field); $val = esc_attr($val); global $wpdb; $table_name = $wpdb->prefix . "eventer_registrant"; $reg_details = $wpdb->get_row("SELECT * FROM $table_name WHERE $field = $val"); if ($reg_details) { return $reg_details; } else { return false; } } } } function eventer_get_terms_front($taxonomy = '', $event = '', $metas = array()) { $eventer_terms = get_the_terms($event, $taxonomy); $result = $meta_vals = array(); if (!is_wp_error($eventer_terms) && !empty($eventer_terms)) { foreach ($eventer_terms as $term) { if (!empty($metas)) { $meta_vals = array(); foreach ($metas as $meta) { $meta_vals[$meta] = get_term_meta($term->term_id, $meta, true); } } $result[] = array('name' => $term->name, 'slug' => $term->slug, 'id' => $term->term_id, 'metas' => $meta_vals); } } return $result; } /* * eventer_update_registrant_details function * This function is used to update details of registrants */ if (!function_exists('eventer_update_registrant_details')) { function eventer_update_registrant_details($fieldval, $where, $param) { if ($where != '') { global $wpdb; $table_name = $wpdb->prefix . "eventer_registrant"; $result = $wpdb->update( $table_name, $fieldval, array('id' => $where), $param, array('%d') ); if ($result === false) { return false; } else { return true; } } } } /* * eventer_contact_organizer function * This function is used to contact event manager using button provided at event details page * runs only on ajax call */ if (!function_exists('eventer_contact_organizer')) { function eventer_contact_organizer() { $organizer_fields = (isset($_POST['org_data'])) ? $_POST['org_data'] : array(); $eventer_id = (isset($_POST['eventer_id'])) ? $_POST['eventer_id'] : ''; $eventer_date = (isset($_POST['eventer_date'])) ? $_POST['eventer_date'] : ''; if (!empty($organizer_fields) && !empty($eventer_id)) { $organizer = get_the_terms($eventer_id, 'eventer-organizer'); $organizer_email = ''; $headers = array(); if (!is_wp_error($organizer) && !empty($organizer)) { $organizer_id = $organizer[0]->term_id; $organizer_email = get_term_meta($organizer_id, 'organizer_email', true); } $sender = eventer_get_settings( 'email_from_address' ) ? eventer_get_settings( 'email_from_address' ) : get_option('admin_email'); $sender_name = eventer_get_settings( 'email_from_name' ) ? eventer_get_settings( 'email_from_name' ) : get_bloginfo('name'); $sender = ($organizer_email != '') ? $organizer_email : $sender; //If event do not have any event manager or event manager do not have email address then email will be forwarded to admin $headers[] = 'From: ' . $sender_name . ' <' . $sender . '>'; $headers[] = "MIME-Version: 1.0" . "\r\n"; $headers[] = "Content-Type: text/html; charset=" . get_bloginfo('charset') . "" . "\r\n"; $message = "<p>" . esc_html__('Someone contacted for below event', 'eventer') . "<p>"; $message .= "<p>" . esc_url(eventer_generate_endpoint_url('edate', $eventer_date, get_permalink($eventer_id))) . "</p>"; foreach ($organizer_fields as $field) { $message .= '<p>' . $field['name'] . ': ' . $field['value'] . '</p>'; if (filter_var($field['value'], FILTER_VALIDATE_EMAIL)) { $person_email = $field['value']; } } $message = wpautop($message); $subject = esc_html__('Query for event', 'eventer') . ' ' . apply_filters('eventer_raw_event_title', '', $eventer_id); wp_mail($sender, $subject, $message, $headers); } wp_die(); } add_action('wp_ajax_eventer_contact_organizer', 'eventer_contact_organizer'); add_action('wp_ajax_nopriv_eventer_contact_organizer', 'eventer_contact_organizer'); } if (!function_exists('eventer_pdf_invoice_email')) { function eventer_pdf_invoice_email( $registrant_id, $registrant_email, $registrant_details ) { $eventer_id = $registrant_details->eventer; $email_pdf_invoice = eventer_get_settings('email_pdf_invoice'); $attachment_content = apply_filters('the_content', eventer_get_settings('email_pdf_invoices_body')); $woocommerce_ticketing = eventer_get_settings('eventer_enable_woocommerce_ticketing'); if ( $email_pdf_invoice == '0' || empty( $email_pdf_invoice ) || $woocommerce_ticketing == 'on' ) { return; } require_once EVENTER__PLUGIN_PATH . 'vendors/dompdf/vendor/autoload.php'; $post = get_post( $eventer_id ); $document_name = $registrant_details->id ? strip_tags( 'invoice-'.$registrant_details->id ) : 'document'; $html = ''; $html .= eventer_return_ob_html( $eventer_id, $registrant_details ); // print_r( $html );exit(); $options = new \Dompdf\Options(); $options->set( 'isRemoteEnabled', true ); $dompdf = new \Dompdf\Dompdf( $options ); $contxt = stream_context_create( array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'GET', 'user_agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', ), 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ), ) ); $dompdf->setHttpContext( $contxt ); $dompdf->loadHtml( $html, 'UTF-8' ); // Set paper size and orientation $dompdf->setPaper('A4', 'portrait'); // Enable header and footer $dompdf->set_option('enable_html5_parser', true); $dompdf->set_option('is_php_enabled', true); $dompdf->set_option('is_remote_enabled', true); // $dompdf->set_option( 'isRemoteEnabled', true ); // $dompdf->setPaper( 'a4', 'portrait' ); $dompdf->render(); // print_r( $dompdf );exit(); $upload_dir = wp_upload_dir(); $upload_basedir = $upload_dir['basedir'] . '/eventer_to_pdf/'; if ( ! file_exists( $upload_basedir ) ) { wp_mkdir_p( $upload_basedir ); } $current_user = wp_get_current_user(); $user_name = $current_user->display_name; $email = ( '' !== $registrant_email ) ? $registrant_email : $current_user->user_email; $output = $dompdf->output(); // $output = $dompdf->output(); $path = $upload_basedir . $document_name . '.pdf'; if ( file_exists( $path ) ) { @unlink( $path ); // phpcs:ignore } @file_put_contents( $path, $output ); // phpcs:ignore $sender = eventer_get_settings( 'email_from_address' ) ? eventer_get_settings( 'email_from_address' ) : get_option('admin_email'); $sender_name = eventer_get_settings( 'email_from_name' ) ? eventer_get_settings( 'email_from_name' ) : get_bloginfo('name'); // $sender = $sender; $headers = []; $headers[] = 'From: ' . $sender_name . ' <' . $sender . '>'; $headers[] = "Content-Type: text/html; charset=" . get_bloginfo('charset') . "" . "\r\n"; $body = apply_filters('the_content', eventer_get_settings('email_pdf_invoices_body') ); $subject = eventer_get_settings( 'ticket_invoice_email_title' ) ? eventer_get_settings( 'ticket_invoice_email_title' ) : 'PDF Invoice'; wp_mail( $email, $subject, apply_filters('eventer_filter_email_content_body', '', $registrant_details, $body ), $headers, array( $path ) ); do_action( 'eventer_after_send_pdf_invoice_email', $eventer_id, $user_name, $email ); } add_action('eventer_ticket_pdf_invoice_email', 'eventer_pdf_invoice_email', 99, 3 ); } function eventer_return_ob_html( $post_id, $registrant_details ) { $pgfw_header_use_in_pdf = 'yes'; $pgfw_header_comp_vat = eventer_get_settings('ticket_invoice_vat_number'); $pgfw_header_comp_email = eventer_get_settings('ticket_invoice_company_email'); $pgfw_header_comp_website = eventer_get_settings('ticket_invoice_company_website'); $pgfw_header_comp_name = eventer_get_settings('ticket_invoice_company_name'); $pgfw_header_tagline = eventer_get_settings('ticket_invoice_company_address'); $pgfw_header_logo = eventer_get_settings('pdf_image_company_logo'); $pgfw_header_color = '#000000'; $pgfw_header_width = '8'; $pgfw_header_font_style = 'helvetica'; $pgfw_header_font_size = '10'; $pgfw_header_top = '-60'; $user_details = $registrant_details->user_details; if ( is_serialized( $registrant_details->user_details ) ) { $user_details = unserialize( $registrant_details->user_details ); } $eventer_date = $registrant_details->eventer_date; $eventer_date_formatted = date_i18n(get_option('date_format'), strtotime($eventer_date)); $user_info = ''; $registration_content = ''; if (!empty($user_details)) { //Getting all user details that user fills before selecting event tickets $tickets = ''; $quantity = 0; $ticket_name = ''; $user_fields_val = $registrant_tickets_name = $registrant_tickets_vals = array(); if (!empty($registrant_details->tickets)) { $ticket_start = 1; $reg_tickets = $registrant_details->tickets; if ( is_serialized( $registrant_details->tickets ) ) { $reg_tickets = unserialize( $registrant_details->tickets ); } foreach($reg_tickets as $ticket) { if (isset($ticket['number']) && $ticket['number'] != '') { $tickets .= $ticket['name'] . ' X ' . $ticket['number'] . '<br/>'; } $registrant_tickets_name['{ticket' . $ticket_start . '}'] = $ticket['name']; $registrant_tickets_vals['{ticket_nos' . $ticket_start . '}'] = $ticket['number']; $ticket_start++; if ( $ticket['number'] > 0 ) { $quantity += $ticket['number']; $ticket_name = $ticket['name']; } } } $new_user_details = [ [ 'name' => 'Event URL', 'value' => esc_url(eventer_generate_endpoint_url('edate', $eventer_date, get_permalink($post_id))), ], [ 'name' => 'Ticket', 'value' => $tickets ], [ 'name' => 'Quantity', 'value' => $quantity ], [ 'name' => 'Amount', 'value' => $registrant_details->amount ], [ 'name' => 'Event Name', 'value' => get_the_title( $post_id ) ], [ 'name' => 'Ticket Name', 'value' => $ticket_name ], [ 'name' => 'No. of Tickets', 'value' => $quantity ], [ 'name' => 'Total Amount', 'value' => $registrant_details->amount ], ]; $user_details = array_merge($user_details, $new_user_details); $registration_content .= '<div class="box-container"><div class="row">'; $counter = 0; foreach ($user_details as $details) { if (!in_array($details['name'], ['Name', 'Event URL', 'email', 'Ticket', 'Quantity', 'Amount', 'Event Name', 'Ticket Name', 'No. of Tickets', 'Total Amount'])) { continue; } $registration_content .= '<div class="box"> <div class="box-heading">' . $details['name'] . '</div> <div class="box-content">' . $details['value'] . '</div> </div>'; $counter++; if ($counter % 2 === 0) { $registration_content .= '</div><div class="row">'; } } $registration_content .= '</div></div>'; } if ( $pgfw_header_logo ) { $pgfw_header_logo = wp_get_attachment_url( $pgfw_header_logo ); } else { $pgfw_header_logo = ''; } // body customisation settings. $pgfw_body_title_font_style = 'helvetica'; $pgfw_body_title_font_size = '20'; $pgfw_body_title_font_color = '#000000'; $pgfw_body_page_font_style = 'helvetica'; $pgfw_body_page_font_size = '12'; $pgfw_body_page_font_color = '#000000'; $pgfw_body_border_size = '0'; $pgfw_body_border_color = ''; $pgfw_body_margin_top = '70'; $pgfw_body_margin_left = '35'; $pgfw_body_margin_right = '10'; $pgfw_body_margin_bottom = '60'; $pgfw_body_rtl_support = 'no'; $pgfw_watermark_image_use_in_pdf = 'no'; $pgfw_border_position_top = '-110'; $pgfw_border_position_bottom = '-60'; $pgfw_border_position_left = '-34'; $pgfw_border_position_right = '-15'; $pgfw_body_custom_css = ''; $pgfw_body_watermark_text = ''; $pgfw_body_add_watermark = 'no'; $pgfw_body_watermark_color = ''; // footer settings. $pgfw_footer_use_in_pdf = 'yes'; $pgfw_footer_tagline = 'Footer'; $pgfw_footer_color = '#000000'; $pgfw_footer_width = '12'; $pgfw_footer_font_style = 'helvetica'; $pgfw_footer_font_size = '10'; $pgfw_footer_bottom = '-140'; $pgfw_footer_notes = get_post_meta( $post_id, 'eventer_event_ticket_pdf_notes', true ); $pgfw_body_meta_field_column = ''; if ( empty( $pgfw_footer_notes ) ) { $pgfw_footer_notes = eventer_get_settings('ticket_invoice_footer_notes'); } $status = get_option( 'status' ); if ( '' == $status ) { $post = get_post( $post_id ); $author_id = get_post_field( 'post_author', $post_id ); $display_name = get_the_author_meta( 'display_name', $author_id ); $post_date = get_the_date( 'd F Y', $post_id ); $post_title = get_the_title( $post ); } $display_author_name = $pgfw_footer_notes; if ( 'yes' === $pgfw_body_rtl_support ) { $pgfw_header_font_style = 'DejaVu Sans, sans-serif'; $pgfw_body_page_font_style = 'DejaVu Sans, sans-serif'; $pgfw_body_title_font_style = 'DejaVu Sans, sans-serif'; $pgfw_footer_font_style = 'DejaVu Sans, sans-serif'; } $html = ''; $html .= '<style> @page { margin-top : ' . $pgfw_body_margin_top . '; margin-left : ' . $pgfw_body_margin_left . '; margin-right : ' . $pgfw_body_margin_right . '; margin-bottom : ' . $pgfw_body_margin_bottom . '; } </style>'; if ( $pgfw_body_border_size > 0 ) { $html .= '<style> .pgfw-border-page { position : fixed; margin-bottom : ' . $pgfw_border_position_bottom . '; margin-left : ' . $pgfw_border_position_left . '; margin-top : ' . $pgfw_border_position_top . '; margin-right : ' . $pgfw_border_position_right . '; border : ' . $pgfw_body_border_size . 'px solid ' . $pgfw_body_border_color . '; } </style> <div class="pgfw-border-page" ></div>'; } // Header for pdf. if ( 'yes' === $pgfw_header_use_in_pdf ) { $html .= '<style> .pgfw-pdf-header-each-page{ position : fixed; left : 0px; right :0; height : 160px; top : ' . $pgfw_header_top . '; } .pgfw-pdf-header{ border-bottom : 2px solid gray; padding : ' . $pgfw_header_width . 'px; font-family : ' . $pgfw_header_font_style . '; font-size : ' . $pgfw_header_font_size . '; padding-bottom : 25px; height : 140px; margin-bottom : 25px; } .pgfw-header-logo{ width : 200px; height : auto; float : left; } .pgfw-header-tagline{ text-align : right; color : ' . $pgfw_header_color . '; } </style> <div class="pgfw-pdf-header-each-page"> <div class="pgfw-pdf-header"> <img src="' . esc_url( $pgfw_header_logo ) . '" alt="' . esc_html__( 'No image found', 'eventer' ) . '" class="pgfw-header-logo"> <div class="pgfw-header-tagline" > <span><b>' . esc_html( $pgfw_header_comp_name ) . '</b></span><br/> <span><b>' . esc_html( $pgfw_header_tagline ) . '</b></span><br/> <span>' . esc_html( strtoupper( $pgfw_header_comp_vat ) ) . '</span><br /> <span>' . esc_html( strtoupper( $pgfw_header_comp_email ) ) . '</span><br /> <span>' . esc_html( strtoupper( $pgfw_header_comp_website ) ) . '</span><br /> </div> </div> </div>'; } // footer for pdf. if ( 'yes' === $pgfw_footer_use_in_pdf ) { $html .= '<style> .pgfw-pdf-footer{ position : fixed; left : 0px; right :0; bottom : ' . $pgfw_footer_bottom . '; height : 150px; border-top : 2px solid gray; padding : ' . $pgfw_footer_width . 'px; font-family : ' . $pgfw_footer_font_style . '; font-size : ' . $pgfw_footer_font_size . '; } .pgfw-footer-tagline{ color : ' . $pgfw_footer_color . '; text-align : center; overflow : hidden; } .pgfw-footer-pageno:after { content : "Page " counter(page); } </style>'; $html .= '<div class="pgfw-pdf-footer"> <span class="pgfw-footer-pageno"></span> <div style="text-align:right; margin-top:-15px;"> <div> ' . esc_html( $display_author_name ) . '</div> </div> </div>'; } $post = get_post( $post_id ); if ( is_object( $post ) ) { $html .= '<style> .box-container { display: table; width: 100%; } .row { display: table-row; } .box { display: table-cell; width: 50%; padding: 10px; box-sizing: border-box; } .box-heading { font-weight: bold; margin-bottom: 5px; } .box-content { background-color: #f0f0f0; padding: 5px; } .pgfw-pdf-body-title{ font-family : ' . $pgfw_body_title_font_style . '; font-size : ' . $pgfw_body_title_font_size . 'px; color : ' . $pgfw_body_title_font_color . '; padding : 10px 0px; } .pgfw-pdf-body-title-image{ margin-top : 10px; } .pgfw-pdf-body-title-image img{ width : 200px; height : 200px; } .pgfw-pdf-body-content{ font-family : ' . $pgfw_body_page_font_style . '; font-size : ' . $pgfw_body_page_font_size . '; color : ' . $pgfw_body_page_font_color . '; margin-top : 100px; }'; $html .= '</style> <div class="pgfw-pdf-body"> <div class="pgfw-pdf-body-content"> <div> ' . apply_filters('eventer_filter_email_content_body', '', $registrant_details, $registration_content ) . ' </div>'; $html .= '</div></div><span style="page-break-after: always;overflow:hidden;"></span>'; } return $html; } /* * eventer_url_endpoint function * This function is used to create pretty permalink */ if (!function_exists('eventer_url_endpoint')) { function eventer_url_endpoint() { add_rewrite_endpoint('edate', EP_PERMALINK); add_rewrite_endpoint('pagin', EP_ALL); } add_action('init', 'eventer_url_endpoint'); } /* * eventer_setup_seo_endpoint function * This function is used to set permalink settings on different permalink settings */ if (!function_exists('eventer_setup_seo_endpoint')) { function eventer_setup_seo_endpoint() { $event_permalinks = eventer_get_settings('eventer_event_permalink'); $event_permalink = empty($event_permalinks) ? 'eventer' : $event_permalinks; // Ensures the $query_vars['item'] is available add_rewrite_tag('%pagin%', '([^&]+)'); // Requires flushing endpoints whenever the // front page is switched to a different page $page_on_front = get_option('page_on_front'); // Match the front page and pass item value as a query var. add_rewrite_rule('^pagin/([^/]*)/?', 'index.php?page_id=' . $page_on_front . '&pagin=$matches[1]', 'top'); // Match non-front page pages. add_rewrite_rule('^(.*)/pagin/([^/]*)/?', 'index.php?pagename=$matches[1]&pagin=$matches[2]', 'top'); // Match eventer archive page. //add_rewrite_rule('post-type/(.+)/(.+?)/?$', 'index.php?post-type=$matches[1]&pagin=$matches[2]','top'); add_rewrite_rule($event_permalink . '/pagin/?([0-9]{1,})?$', 'index.php?post_type=eventer&pagin=$matches[1]', 'top'); } add_action('init', 'eventer_setup_seo_endpoint', 1); } /* * eventer_disable_canonical_redirect_for_front_page function */ if (!function_exists('eventer_disable_canonical_redirect_for_front_page')) { // http://wordpress.stackexchange.com/a/220484/52463 // In order to keep WordPress from forcing a redirect to the canonical // home page, the redirect needs to be disabled. function eventer_disable_canonical_redirect_for_front_page($redirect) { if (is_page() && $front_page = get_option('page_on_front')) { if (is_page($front_page)) { $redirect = false; } } return $redirect; } add_filter('redirect_canonical', 'eventer_disable_canonical_redirect_for_front_page'); } /* * eventer_get_template_part function * This function is used to set appropriate template for event pages */ if (!function_exists('eventer_get_template_part')) { function eventer_get_template_part($slug, $name = null, $load = true) { do_action('get_template_part_' . $slug, $slug, $name); // Setup possible parts $templates = array(); if (isset($name)) { $templates[] = $slug . '-' . $name . '.php'; } $templates[] = $slug . '.php'; // Allow template parts to be filtered $templates = apply_filters('eventer_get_template_part', $templates, $slug, $name); // Return the part that is found return eventer_get_template_path($templates, $load, false); } } if (!function_exists('eventer_get_template_path')) { /* Extend locate_template from WP Core * Define a location of your plugin file dir to a constant in this case = PLUGIN_DIR_PATH * Note: PLUGIN_DIR_PATH - can be any folder/subdirectory within your plugin files */ function eventer_get_template_path($template_names, $load = false, $require_once = true) { $located = false; // Try to find a template file foreach ((array) $template_names as $template_name) { // Continue if template is empty if (empty($template_name)) { continue; } // Trim off any slashes from the template name $template_name = ltrim($template_name, '/'); // Check child theme first if (file_exists(trailingslashit(get_stylesheet_directory()) . 'eventers/' . $template_name)) { $located = trailingslashit(get_stylesheet_directory()) . 'eventers/' . $template_name; break; // Check parent theme next } elseif (file_exists(trailingslashit(get_template_directory()) . 'eventers/' . $template_name)) { $located = trailingslashit(get_template_directory()) . 'eventers/' . $template_name; break; // Check theme compatibility last } elseif (file_exists(trailingslashit(EVENTER__PLUGIN_PATH) . $template_name)) { $located = trailingslashit(EVENTER__PLUGIN_PATH) . $template_name; break; } } if ((true == $load) && !empty($located)) { load_template($located, $require_once); } return $located; } } function eventer_append_template_with_arguments($slug = null, $name = null, array $params = array()) { global $posts, $post, $wp_did_header, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID; $located = ''; do_action("get_template_part_{$slug}", $slug, $name); $templates = array(); if (isset($name)) { $template_name = "{$slug}-{$name}.php"; } if (file_exists(trailingslashit(get_stylesheet_directory()) . '' . $template_name)) { $located = trailingslashit(get_stylesheet_directory()) . '' . $template_name; //break; // Check parent theme next } elseif (file_exists(trailingslashit(get_template_directory()) . '' . $template_name)) { $located = trailingslashit(get_template_directory()) . '' . $template_name; //break; // Check theme compatibility last } elseif (file_exists(trailingslashit(EVENTER__PLUGIN_PATH) . $template_name)) { $located = trailingslashit(EVENTER__PLUGIN_PATH) . $template_name; //break; } if (is_array($wp_query->query_vars)) { extract($wp_query->query_vars, EXTR_SKIP); } if (!$located) { return; } extract($params, EXTR_SKIP); require $located; } /* * eventer_execute_registrant_event function * This function is used to generate tickets information on details page * This function also send required values to event details page */ if (!function_exists('eventer_execute_registrant_event')) { function eventer_execute_registrant_event($first, $eventer_id = '', $date_dynamic = '', $time_dynamic = '00:00:00') { $eventer_id = ($eventer_id == '') ? get_the_ID() : $eventer_id; $original_event = eventer_wpml_original_post_id($eventer_id); //if ( is_singular('eventer') && get_post_type()=='eventer') { $event_start_date = get_post_meta($original_event, 'eventer_event_start_dt', true); $event_end_date = get_post_meta($original_event, 'eventer_event_end_dt', true); $event_end_date = ($event_end_date != '') ? $event_end_date : $event_start_date; $event_start_dt_str = strtotime($event_start_date); $event_end_dt_str = strtotime($event_end_date); $stime_format = eventer_get_settings('start_time_format'); $etime_format = eventer_get_settings('end_time_format'); $time_separator = eventer_get_settings('time_separator'); $date_format = eventer_get_settings('eventer_date_format'); $stime_format = ($stime_format == '') ? get_option('time_format') : $stime_format; $etime_format = ($etime_format == '') ? get_option('time_format') : $etime_format; $date_format = ($date_format == '') ? get_option('date_format') : $date_format; $time_separator = ($time_separator == '') ? ' - ' : $time_separator; $all_day = get_post_meta($original_event, 'eventer_event_all_day', true); $days_diff = eventer_dateDiff($event_start_date, $event_end_date); $usersystem = ''; $all_dates = get_post_meta($original_event, 'eventer_all_dates', true); $woocommerce_ticketing = eventer_get_settings('eventer_enable_woocommerce_ticketing'); $event_current_date = get_query_var('edate'); $event_current_date = ($event_current_date) ? $event_current_date : $date_dynamic; if (!$event_current_date) { $event_time = date_i18n("H:i", $event_start_dt_str); $all_dates_with_time = preg_filter('/$/', ' ' . $event_time, $all_dates); $all_dates_with_time = (array) $all_dates_with_time; $all_dates_with_time = array_filter($all_dates_with_time, function ($date) { return (strtotime($date) >= date_i18n('U')); }); sort($all_dates_with_time); if (!empty($all_dates_with_time)) { $event_new_key = key($all_dates_with_time); $event_cdate = strtotime($all_dates_with_time[$event_new_key]); } else { $event_cdate = $event_start_dt_str; } } else { $event_cdate = strtotime($event_current_date); } //$booked_eventer_tickets = get_post_meta($original_event, 'specific_eventer_tickets', true); $eventer_formatted_date = date_i18n('Y-m-d', $event_cdate); $booked_tickets = eventer_update_date_wise_bookings_table($original_event, date_i18n('Y-m-d ' . $time_dynamic, $event_cdate), array()); //This functions is calling for existing users to store ticket info in new table $booked_tickets = eventer_update_date_wise_bookings_table($original_event, date_i18n('Y-m-d ' . $time_dynamic, $event_cdate), array(), 2); $registrant = $registrant_position = $user_system = $user_system_old = ''; $registrant_id = get_query_var('reg'); $registrant_vals = eventer_decode_security_registration($registrant_id); $registrant_vals = (is_array($registrant_vals) && isset($registrant_vals['reg_id'])) ? $registrant_vals : array('reg_id' => '', 'reg_pos' => ''); $booked_registrant_tickets = $user_details = array(); $transaction_id = (isset($_REQUEST['tx'])) ? $_REQUEST['tx'] : ''; $ticket_id = $registrant_email = $amount = $username = $mode = $ticket_id_db = ''; if ($first == 1 || $registrant_vals['reg_pos'] <= 14) { if ($registrant_vals) { $registrant = $registrant_vals['reg_id']; $registrant_position = (isset($registrant_vals['reg_pos'])) ? $registrant_vals['reg_pos'] : ''; $registrants = eventer_get_registrant_details('id', $registrant); $registrants = ($woocommerce_ticketing == 'on') ? eventer_get_registrant_details('eventer', $registrant) : $registrants; //$registrants = (!(array) $registrants)?$registrants:(!empty($registrants_woo) && get_post_type($registrants_woo)=='shop_order' && $woocommerce_ticketing=='on')?$registrants_woo:''; if ($registrants) { $booked_registrant_tickets = unserialize($registrants->tickets); $registrant_email = $registrants->email; $ticket_id = $registrants->id . '-' . $registrants->eventer; $ticket_id_db = $registrants->id; $amount = $registrants->amount; $username = $registrants->username; $user_details = unserialize($registrants->user_details); $user_details = ($user_details) ? array_column($user_details, 'value', 'name') : array(); $user_system = unserialize($registrants->user_system); $user_system_old = $user_system; $usersystem = $registrants->user_system; $payment_details = $registrants->paypal_details; $pos = strpos($payment_details, 'stripe'); $payment_mode = 'Offline'; if ($pos) { $payment_mode = 'Stripe'; } if ($registrant_position <= 14) { $user_system['email_pre'] = "1"; } if ($registrant_position > 14) { $user_system['email_post'] = "1"; } } if ($transaction_id) { $update_reg_data = (empty($user_system_old)) ? array('transaction_id' => $transaction_id, 'paymentmode' => 'paypal') : array('transaction_id' => $transaction_id, 'paymentmode' => 'paypal', 'user_system' => serialize($user_system)); $vals_in = (!empty($user_system_old)) ? array("%s", "%s", "%s") : array("%s", "%s"); if ((!isset($user_system_old['email_pre']) && !isset($user_system_old['email_post'])) || (!isset($user_system_old['email_post']) && $registrant_position > 14)) { eventer_update_registrant_details($update_reg_data, $registrant, $vals_in); } } elseif ((!isset($user_system_old['email_pre']) && !isset($user_system_old['email_post'])) || (!isset($user_system_old['email_post']) && $registrant_position > 14)) { $transaction_id = md5(uniqid($registrant, true)); $status = "completed"; $mode = "Free"; if ($amount > 0) { $mode = $payment_mode; } $update_in = (empty($user_system_old)) ? array('transaction_id' => $transaction_id, 'status' => $status, 'paymentmode' => $mode) : array('transaction_id' => $transaction_id, 'status' => $status, 'paymentmode' => $mode, 'user_system' => serialize($user_system)); $vals_in = (!empty($user_system_old)) ? array("%s", "%s", "%s", "%s") : array("%s", "%s", "%s"); eventer_update_registrant_details($update_in, $registrant, $vals_in); } if ((!isset($user_system_old['email_pre']) && !isset($user_system_old['email_post'])) || (!isset($user_system_old['email_post']) && $registrant_position > 14)) { $email_sent_status = eventer_pass_email_registration($registrant, "4"); } } } elseif ($first == 2) { if ($registrant_vals) { $registrant = $registrant_vals['reg_id']; $registrant_position = $registrant_vals['reg_pos']; $registrants = eventer_get_registrant_details('id', $registrant); if ($registrants) { $booked_registrant_tickets = unserialize($registrants->tickets); $registrant_email = $registrants->email; $ticket_id = $registrants->id . '-' . $registrants->eventer; $amount = $registrants->amount; $ticket_id_db = $registrants->id; $username = $registrants->username; $usersystem = $registrants->user_system; $user_details = unserialize($registrants->user_details); $user_details = ($user_details) ? array_column($user_details, 'value', 'name') : array(); } } } if ($days_diff > 0) { $event_time_show = date_i18n($date_format, $event_start_dt_str) . ' ' . $time_separator . ' ' . date_i18n($date_format, $event_end_dt_str); } elseif ($all_day) { $event_time_show = esc_html__('All Day', 'eventer'); } else { $st_time = date_i18n('H:i', $event_start_dt_str); $en_time = date_i18n('H:i', $event_end_dt_str); $new_st_time = strtotime($st_time . ' ' . date_i18n('Y-m-d', $event_cdate)); $new_en_time = strtotime($en_time . ' ' . date_i18n('Y-m-d', $event_cdate)); $event_time_show = date_i18n($stime_format, $new_st_time) . ' ' . $time_separator . ' ' . date_i18n($etime_format, $new_en_time); } $time_slot_values = $time_slot_title = ''; $time_slot_setup = get_post_meta($original_event, 'eventer_time_slot', true); if ($time_slot_setup) { $time_slot_values .= '<select class="eventer-time-slot">'; $time_slot_values .= '<option value="00:00:00">' . esc_html__('Select Time', 'eventer') . '</option>'; foreach ($time_slot_setup as $slot) { $time_slot_title = ($time_slot_title == '' && $time_dynamic == $slot['start'] . ':00') ? $slot['title'] . ' ' . $slot['start'] . '-' . $slot['end'] : $time_slot_title; $time_slot_values .= '<option ' . (($time_dynamic == $slot['start'] . ':00') ? 'selected' : '') . ' value="' . esc_attr(date_i18n('H:i:s', strtotime($slot['start']))) . '">' . $slot['title'] . ' ' . $slot['start'] . '-' . $slot['end'] . '</option>'; } $time_slot_values .= '</select>'; } $eventer_currency = ($woocommerce_ticketing != 'on' || !function_exists('get_woocommerce_currency_symbol')) ? eventer_get_currency_symbol(eventer_get_settings('eventer_paypal_currency')) : eventer_get_currency_symbol(get_option('woocommerce_currency')); $woo_currency_position = get_option('woocommerce_currency_pos'); $woo_currency_position = ($woo_currency_position == "left" || $woo_currency_position == "left_space") ? "suffix" : "postfix"; $eventer_currency_position = ($woocommerce_ticketing != 'on') ? eventer_get_settings('eventer_currency_position') : $woo_currency_position; return array('event_id' => $eventer_id, 'event_cdate' => $event_cdate, 'event_time_show' => $event_time_show, 'all_dates' => $all_dates, 'booked_tickets' => $booked_tickets, 'booked_registrant_tickets' => $booked_registrant_tickets, 'ticket_id' => $ticket_id, 'registrant_email' => $registrant_email, 'registrant' => $registrant, 'username' => $username, 'mode' => $mode, 'reg_position' => $registrant_position, 'eventer_currency' => $eventer_currency, 'currency_position' => $eventer_currency_position, 'usersystem' => $usersystem, 'allday' => $all_day, 'days_diff' => $days_diff, 'time_slot' => $time_dynamic, 'time_slot_values' => $time_slot_values, 'time_slot_title' => $time_slot_title, 'start_str' => $event_start_dt_str, 'end_str' => $event_end_dt_str, 'ticket_id_db' => $ticket_id_db, 'woo_ticketing' => $woocommerce_ticketing, 'user_details' => $user_details); //} } } add_filter('eventer_registration_data_collect', 'eventer_execute_registrant_event', 10, 4); /* * eventer_generate_endpoint_url function * This function is used to create permalinks for event according to value set in settings page of dashboard */ if (!function_exists('eventer_generate_endpoint_url')) { add_action('init', 'eventer_generate_endpoint_url'); function eventer_generate_endpoint_url($qarg = '', $qval = '', $qurl = '', $default = '') { if ($qarg != '' && $qval != '') { $raw_url = $qurl; $query = array(); $parts = parse_url($qurl); if (isset($parts['query'])) { parse_str($parts['query'], $query); $raw_url = strtok($qurl, '?'); } $arg = esc_attr($qarg); $val = esc_attr($qval); $qurl = ($qurl == '') ? get_permalink() : $raw_url; $url = rtrim($qurl, "/"); $permalink_status = get_option('permalink_structure'); if ($permalink_status != '' && $default != 1) { $st_url = esc_url($url) . '/' . $arg . '/' . $val; return esc_url(add_query_arg($query, $st_url)); } else { $query[$qarg] = $qval; return esc_url(add_query_arg($query, $url)); } } } } /* * eventer_save_events function * This function is used to save event in Google, icalendar etc. * This function has been modified as one of plugin's user noticed some issue and rectified according to his best knowledge https://support.imithemes.com/help/ticket/108012 */ if (!function_exists('eventer_save_events')) { function eventer_save_events() { $query_string_str = base64_decode($_SERVER['QUERY_STRING']); parse_str($query_string_str, $query_string); if (isset($query_string['action']) && isset($query_string['id']) && isset($query_string['key']) && $query_string['key'] == 'imic_save_event') { $action = $query_string['action']; $id = $query_string['id']; $key = $query_string['key']; $edate = $query_string['edate']; $custom_post = get_post($id); $title = $custom_post->post_title; $content = $custom_post->post_content; $excerpt = $custom_post->post_excerpt; if (!empty($excerpt)) { $content = $excerpt; } $eventer_venue = get_the_terms($id, 'eventer-venue'); $elocation = ''; if (!is_wp_error($eventer_venue) && !empty($eventer_venue)) { foreach ($eventer_venue as $venue) { $location_address = get_term_meta($venue->term_id, 'venue_address', true); $location_coordinates = get_term_meta($venue->term_id, 'venue_coordinates', true); $venue_name = $venue->name; if ($location_address != '') { $elocation = $location_address; } else { $elocation = $venue->name; } } } $imic_event_address = $elocation; $eventStartDate = get_post_meta($id, 'eventer_event_start_dt', true); $eventEndDate = get_post_meta($id, 'eventer_event_end_dt', true); $all_day = get_post_meta($id, 'eventer_event_all_day', true); $eventer_timezone = eventer_get_settings('eventer_save_event'); $random_name = substr(rand() . rand() . rand() . rand(), 0, 20); $start_dt_str = strtotime($eventStartDate); $end_dt_str = strtotime($eventEndDate); $triggerOn_start = date_i18n('Y-m-d H:i:s', $start_dt_str); $triggerOn_end = date_i18n('Y-m-d H:i:s', $end_dt_str); $event_url = get_permalink($id); switch ($action) { case 'gcalendar': $google_save_url = 'https://www.google.com/calendar/render?action=TEMPLATE'; $content .= '<p>' . $event_url . '</p>'; if ($all_day) { $google_save_url .= '&dates=' . date_i18n("Ymd", strtotime("$triggerOn_start")); $google_save_url .= '/' . date_i18n("Ymd", strtotime("$triggerOn_end")); } else { if ($eventer_timezone == "on") { $google_save_url .= '&dates=' . date_i18n("Ymd\THis", strtotime("$triggerOn_start")); $google_save_url .= '/' . date_i18n("Ymd\THis", strtotime("$triggerOn_end")); } else { $google_save_url .= '&dates=' . date_i18n("Ymd\THis\Z", strtotime("$triggerOn_start")); $google_save_url .= '/' . date_i18n("Ymd\THis\Z", strtotime("$triggerOn_end")); } } $google_save_url .= '&location=' . urlencode($imic_event_address); $google_save_url .= '&text=' . urlencode($title); $google_save_url .= '&details=' . urlencode($content); wp_redirect($google_save_url); exit; break; case 'icalendar': ob_start(); header("Content-Type: text/calendar; charset=utf-8"); header("Content-Disposition: inline; filename=addto_calendar_" . $random_name . ".ics"); $paragraph_breaks = array('</p>', '<br />', '<br>', '<hr />', '<hr>', '</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '<ul>'); $content = str_replace($paragraph_breaks, "\n\n", $content); $list_starts = array('<li>'); $content = str_replace($list_starts, "- ", $content); $list_ends = array('</li>', '</ul>'); $content = str_replace($list_ends, "\n\n", $content); $content = wp_strip_all_tags($content); $content = preg_replace('`\[[^\]]*\]`', '', $content); $content = addslashes($content); //$content = str_replace(array(",", ":", ";"), array("\,", "\:", "\;"), $content); $content = preg_replace('/\s+/', ' ', $content); $content = html_entity_decode($content); $imic_event_address = addslashes($imic_event_address); $imic_event_address = str_replace(array(",", ":", ";"), array("\,", "\:", "\;"), $imic_event_address); echo "BEGIN:VCALENDAR\n"; echo "VERSION:2.0\n"; echo "PRODID:Imitheme.com \n"; echo "BEGIN:VEVENT\n"; echo "UID:" . date_i18n('Ymd') . 'T' . date_i18n('His') . rand() . "\n"; echo "DTSTAMP;TZID=UTC:" . current_time('Y-m-d H:i:s') . "\n"; if ($eventer_timezone == "on") { //echo "DTSTART:" . get_gmt_from_date($triggerOn_start, "Ymd\THis") . "\n"; //echo "DTEND:" . get_gmt_from_date($triggerOn_end, "Ymd\THis") . "\n"; } else { //echo "DTSTART;TZID=UTC:" . date_i18n("Ymd\THis\Z", strtotime("$triggerOn_start")) . "\n"; //echo "DTEND;TZID=UTC:" . date_i18n("Ymd\THis\Z", strtotime("$triggerOn_end")) . "\n"; } echo "DTSTART;TZID=America/Los_Angeles:" . date_i18n("Ymd\THis", strtotime("$triggerOn_start")) . "\n"; echo "DTEND;TZID=America/Los_Angeles:" . date_i18n("Ymd\THis", strtotime("$triggerOn_end")) . "\n"; echo "SUMMARY:$title\n"; echo "LOCATION:$imic_event_address\n"; echo "DESCRIPTION:$content\n"; echo "URL:$event_url\n"; echo "END:VEVENT\n"; echo "END:VCALENDAR\n"; ob_flush(); exit; break; case 'outlook': ob_start(); header("Content-Type: text/calendar; charset=utf-8"); header("Content-Disposition: inline; filename=addto_calendar_" . $random_name . ".ics"); $content .= '<p>' . $event_url . '</p>'; $paragraph_breaks = array('</p>', '<br />', '<br>', '<hr />', '<hr>', '</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '<ul>'); $content = str_replace($paragraph_breaks, "\n\n", $content); $list_starts = array('<li>'); $content = str_replace($list_starts, "- ", $content); $list_ends = array('</li>', '</ul>'); $content = str_replace($list_ends, "\n\n", $content); $content = wp_strip_all_tags($content); $content = preg_replace('`\[[^\]]*\]`', '', $content); $content = addslashes($content); //$content = str_replace(array(",", ":", ";"), array("\,", "\:", "\;"), $content); $content = preg_replace('/\s+/', ' ', $content); $content = html_entity_decode($content); echo "BEGIN:VCALENDAR\n"; echo "VERSION:2.0\n"; echo "PRODID:Imitheme.com\n"; echo "BEGIN:VEVENT\n"; echo "UID:" . date_i18n('Ymd') . 'T' . date_i18n('His') . "-" . rand() . "\n"; echo "DTSTAMP;TZID=UTC:" . current_time('timestamp') . "\n"; echo "DTSTART;TZID=America/Los_Angeles:" . date_i18n("Ymd\THis", strtotime("$triggerOn_start")) . "\n"; echo "DTEND;TZID=America/Los_Angeles:" . date_i18n("Ymd\THis", strtotime("$triggerOn_end")) . "\n"; echo "SUMMARY:$title\n"; echo "LOCATION:$imic_event_address\n"; echo "DESCRIPTION: $content\n"; echo "URL:$event_url\n"; echo "END:VEVENT\n"; echo "END:VCALENDAR\n"; ob_flush(); exit; break; case 'outlooklive': $ical = "BEGIN:VCALENDAR VERSION:2.0 PRODID:-//hacksw/handcal//NONSGML v1.0//EN BEGIN:VEVENT UID:" . md5(uniqid(mt_rand(), true)) . site_url() . " DTSTAMP:" . date_i18n('Ymd') . 'T' . date_i18n('His') . " DTSTART:TZID=" . date_i18n("Ymd\THis", strtotime("$eventStartDate")) . " DTEND:TZID=" . date_i18n("Ymd\THis", strtotime("$eventEndDate")) . " SUMMARY:" . $title . " DESCRIPTION:" . $content . " END:VEVENT END:VCALENDAR"; header('Content-type: text/calendar; charset=utf-8'); header('Content-Disposition: inline; filename=calendar.ics'); echo $ical; exit; case 'yahoo': $yahoo_url = 'https://calendar.yahoo.com/?view=d&v=60&type=20'; $yahoo_url .= '&title=' . urlencode($title); $yahoo_url .= '&in_loc=' . urlencode($imic_event_address); $yahoo_url .= '&desc=' . urlencode($content); if ($eventer_timezone == "on") { $yahoo_url .= '&st=' . date_i18n("Ymd\THis", strtotime("$eventStartDate")); $yahoo_url .= '&et=' . date_i18n("Ymd\THis", strtotime("$eventEndDate")); } else { $yahoo_url .= '&st=' . date_i18n("Ymd\THis\Z", strtotime("$eventStartDate")); $yahoo_url .= '&et=' . date_i18n("Ymd\THis\Z", strtotime("$eventEndDate")); } wp_redirect($yahoo_url); exit; break; } } } } /* add action on init*/ add_action('init', 'eventer_save_events'); if (!function_exists('eventer_merge_all_ids')) { function eventer_merge_all_ids($ids = array(), $cats = array(), $tags = array(), $venues = array(), $organizer = array()) { if (empty($ids) && empty($cats) && empty($tags) && empty($venues) && empty($organizer)) { return array(); } $all_ids = $all_cats = $all_tags = $all_venues = $all_organizer = array(); $operator = eventer_get_settings('eventer_taxonomy_search_operator'); if ($operator == 'or') { if (!empty($ids)) { $all_ids = explode(',', $ids); } if (!empty($cats)) { $all_cats = get_objects_in_term(explode(',', $cats), 'eventer-category'); } if (!empty($tags)) { $all_tags = get_objects_in_term(explode(',', $tags), 'eventer-tag'); } if (!empty($venues)) { $all_venues = get_objects_in_term(explode(',', $venues), 'eventer-venue'); } if (!empty($organizer)) { $all_organizer = get_objects_in_term(explode(',', $organizer), 'eventer-organizer'); } } else { if (!empty($ids)) { $all_ids = explode(',', $ids); } if (!empty($cats)) { $all_cats_new = (array) $cats; foreach ((array) $cats as $cat) { $all_cats_terms = get_term_children($cat, 'eventer-category'); $all_cats_new = array_merge($all_cats_new, $all_cats_terms); } $all_cats = get_objects_in_term($all_cats_new, 'eventer-category'); } if (!empty($tags)) { $all_tags_new = (array) $tags; foreach ((array) $tags as $tag) { $all_tags_terms = get_term_children($tag, 'eventer-tag'); $all_tags_new = array_merge($all_tags_new, $all_tags_terms); } $all_tags = get_objects_in_term($all_tags_new, 'eventer-tag'); } if (!empty($venues)) { $all_venue_new = (array) $venues; foreach ((array) $venues as $venue) { $all_venue_terms = get_term_children($venue, 'eventer-venue'); $all_venue_new = array_merge($all_venue_new, $all_venue_terms); } $all_venues = get_objects_in_term($all_venue_new, 'eventer-venue'); } if (!empty($organizer)) { $all_organizer_new = (array) $organizer; foreach ((array) $organizer as $org) { $all_venue_terms = get_term_children($org, 'eventer-organizer'); $all_organizer_new = array_merge($all_organizer_new, $all_venue_terms); } $all_organizer = get_objects_in_term($all_organizer_new, 'eventer-organizer'); } } $all_terms_objects = array($all_ids, $all_cats, $all_tags, $all_venues, $all_organizer); $array = array_filter($all_terms_objects); $all_merged_ids = array_merge($all_ids, $all_cats, $all_tags, $all_venues, $all_organizer); $output_ids = (count($array) > 1) ? call_user_func_array('array_intersect', $array) : $array; $single_term_objects = (empty($output_ids)) ? array(23452345234523452345) : $output_ids; $output_ids = (count($array) == 1) ? $all_merged_ids : $single_term_objects; $output_ids = array_unique($output_ids); return $output_ids; } //add_action('init', 'eventer_merge_all_ids'); } if (!function_exists('eventer_merge_all_ids_or')) { function eventer_merge_all_ids_or($ids = array(), $cats = array(), $tags = array(), $venues = array(), $organizer = array()) { if (empty($ids) && empty($cats) && empty($tags) && empty($venues) && empty($organizer)) { return array(); } $all_ids = $all_cats = $all_tags = $all_venues = $all_organizer = array(); if (!empty($ids)) { $all_ids = explode(',', $ids); } if (!empty($cats)) { $all_cats = get_objects_in_term(explode(',', $cats), 'eventer-category'); } if (!empty($tags)) { $all_tags = get_objects_in_term(explode(',', $tags), 'eventer-tag'); } if (!empty($venues)) { $all_venues = get_objects_in_term(explode(',', $venues), 'eventer-venue'); } if (!empty($organizer)) { $all_organizer = get_objects_in_term(explode(',', $organizer), 'eventer-organizer'); } $all_terms_objects = array($all_ids, $all_cats, $all_tags, $all_venues, $all_organizer); $array = array_filter($all_terms_objects); $all_merged_ids = array_merge($all_ids, $all_cats, $all_tags, $all_venues, $all_organizer); $output_ids = (count($array) > 1) ? call_user_func_array('array_intersect', $array) : $array; $single_term_objects = (empty($output_ids)) ? array(23452345234523452345) : $output_ids; $output_ids = (count($array) == 1) ? $all_merged_ids : $single_term_objects; $output_ids = array_unique($output_ids); return $output_ids; } //add_action('init', 'eventer_merge_all_ids'); } if (!function_exists('eventer_convert_timeformat_tojs')) { /* * eventer_convert_timeformat_tojs function * This function is used to change time format of fullcalendar based on set in General Settings of dashboard */ function eventer_convert_timeformat_tojs($format) { $format_rules = array( 'B' => '', 'c' => 'u', 'd' => 'dd', 'D' => 'ddd', 'F' => 'MMMM', 'g' => 'h', 'G' => 'H', 'h' => 'hh', 'H' => 'HH', 'i' => 'mm', 'I' => '', 'j' => 'd', 'l' => 'dddd', 'L' => '', 'm' => 'MM', 'M' => 'MMM', 'n' => 'M', 'O' => '', 'r' => '', 's' => 'ss', 'S' => 'S', 't' => '', 'T' => '', 'U' => '', 'w' => '', 'W' => '', 'y' => 'yy', 'Y' => 'yyyy', 'z' => '', 'Z' => '', ); $ret = ''; for ($i = 0; $i < strlen($format); $i++) { if (isset($format_rules[$format[$i]])) { $ret .= $format_rules[$format[$i]]; } else { $ret .= $format[$i]; } } return $ret; } add_action('init', 'eventer_convert_timeformat_tojs'); } if (!function_exists('eventer_wpml_original_post_id')) { /* * eventer_wpml_original_post_id function * This function is used to get original post from which the translation was made in WPML plugin */ function eventer_wpml_original_post_id($ID = '') { $eventer_id = ($ID != '') ? $ID : get_the_ID(); if (function_exists('icl_object_id') && class_exists('SitePress')) { global $sitepress; $eventer_id = icl_object_id($eventer_id, 'eventer', false, $sitepress->get_default_language()); } elseif (function_exists('pll_get_post')) { $eventer_id = pll_get_post($eventer_id, pll_default_language()); $eventer_id = (empty($eventer_id)) ? $ID : $eventer_id; } return ($eventer_id) ? $eventer_id : $ID; } add_action('init', 'eventer_wpml_original_post_id'); } // Add image size add_image_size('eventer-thumb-170x170', 170, 170, true); add_image_size('eventer-thumb-600x400', 600, 400, true); add_image_size('eventer-thumb-400x400', 400, 400, true); $default_attribs = array('name' => array(), 'class' => array(), 'maxlength' => array(), 'multiple' => array(), 'id' => array(), 'data-tprice' => array(), 'type' => array(), 'name' => array(), 'value' => array(), 'class' => array(), 'data-mprice' => array(), 'style' => array(), 'data-booked' => array(), 'data-registrations' => array(), 'data-primary' => [], 'data-ticketid' => array(), 'data-tooltip' => array(), 'data-identify' => array(), 'data-cart' => array(), 'data-pid' => array(), 'data-limit' => array(), 'autocomplete' => array()); $eventer_allowed_tags = array( 'select' => $default_attribs, 'p' => $default_attribs, 'strong' => $default_attribs, 'div' => $default_attribs, 'label' => $default_attribs, 'input' => $default_attribs, 'del' => $default_attribs, 'span' => $default_attribs, 'i' => $default_attribs, ); $eventer_btn_allowed_tags = array( 'span' => $default_attribs, 'u' => $default_attribs, 'i' => $default_attribs, 'b' => $default_attribs, 'br' => $default_attribs, 'strong' => $default_attribs, 'del' => $default_attribs, 'strike' => $default_attribs, 'em' => $default_attribs, 'img' => $default_attribs, ); if (!function_exists('eventer_content')) { /* * eventer_content function * This function is used to load content on eveter.php file * This would work if user placed eventer.php file in child theme or parent theme folder * User just need to content of page.php file of activated theme to eventer.php file and use below function instead of the_content() * User also need to remove if and while loop from that file */ function eventer_content() { if (is_singular('eventer')) { eventer_get_template_part('eventers/single', 'loop'); eventer_get_template_part('eventers/single', 'options'); return; } $terms_arg = $ids = ''; if (is_tax('eventer-category')) { $template_design = eventer_get_settings('eventer_category_view'); $terms_arg = 'terms_cats="' . get_queried_object()->term_id . '"'; } elseif (is_tax('eventer-tag')) { $template_design = eventer_get_settings('eventer_tag_view'); $terms_arg = 'terms_tags="' . get_queried_object()->term_id . '"'; } elseif (is_tax('eventer-venue')) { $template_design = eventer_get_settings('eventer_venues_view'); $terms_arg = 'terms_venue="' . get_queried_object()->term_id . '"'; } elseif (is_tax('eventer-organizer')) { $template_design = eventer_get_settings('eventer_organizer_view'); $terms_arg = 'terms_organizer="' . get_queried_object()->term_id . '"'; } elseif (is_archive('eventer')) { $template_design = eventer_get_settings('eventer_archive_view'); $ids = (isset($_REQUEST['eid'])) ? $_REQUEST['eid'] : ''; $ids = 'ids="' . $ids . '"'; } elseif (is_search('eventer')) { $template_design = eventer_get_settings('eventer_search_view'); } $template_design = ($template_design != '') ? $template_design : "1"; switch ($template_design) { case "1": $content_output = '[eventer_list ' . $ids . ' ' . $terms_arg . ' type="1" count="10" pagination="yes"]'; break; case "2": $content_output = '[eventer_list ' . $ids . ' ' . $terms_arg . ' type="1" status="month" month_filter="1"]'; break; case "3": $content_output = '[eventer_list ' . $ids . ' ' . $terms_arg . ' type="1" month_filter="1" view="minimal" count="10" pagination="yes"]'; break; case "4": $content_output = '[eventer_list ' . $ids . ' ' . $terms_arg . ' type="1" view="minimal" status="month" month_filter="1"]'; break; case "5": $content_output = '[eventer_grid ' . $ids . ' ' . $terms_arg . ' type="1" background="" column="3" pagination="yes" count="10"]'; break; } return do_shortcode($content_output); } } function eventer_store_events_ids() { $site_lang = EVENTER__LANGUAGE_CODE; $eventer_stored = get_option($site_lang . '_eventer_stored'); if (!empty($eventer_stored)) { return; } $eventer_args = array('post_type' => 'eventer', 'posts_per_page' => -1); $eventer_lists = new WP_Query($eventer_args); $store_events = array(); if ($eventer_lists->have_posts()) : while ($eventer_lists->have_posts()) : $eventer_lists->the_post(); $store_events[get_the_ID()] = apply_filters('eventer_raw_event_title', '', get_the_ID()); endwhile; endif; wp_reset_postdata(); update_option($site_lang . '_eventer_stored', $store_events); } add_action('init', 'eventer_store_events_ids'); add_action('admin_init', 'eventer_store_events_ids'); function eventer_list_date_filters($atts, $filtering_data) { $date_array = $time_icon = $calview = $today_btn = $date_range = $eventkeys = $search_range = ''; $tabs = $filtering_data['tabs']; $tabs_date = $filtering_data['tabs_format']; $tab_length = $filtering_data['tabs_length']; $date_start = $filtering_data['start_dt']; $date_end = $filtering_data['end_dt']; $label_month = $filtering_data['label_month']; $label_year = $filtering_data['label_year']; $get_months = $filtering_data['get_dates']; $increment_format = $filtering_data['inc_format']; $cal_view = $filtering_data['calview']; $current_date = $filtering_data['current_date']; $event_count = 1000; $prev_btn = date_i18n($increment_format, strtotime('-1 ' . $tabs, strtotime($get_months))); $next_btn = date_i18n($increment_format, strtotime('+1 ' . $tabs, strtotime($get_months))); $last_event_date = get_option('eventer_extreme_last_event_date'); $last_event_date = ($last_event_date == '') ? '2100-01-01' : $last_event_date; $date_filters = ''; $date_filters .= '<div class="eventer-month-switcher"> <div class="eventer-switcher-current-month"> <div class="eventer-switcher-current-month-in">' . $label_month . $label_year . '</div>'; $date_filters .= '<div class="eventer-switcher-actions"> <a class="show_month_events prev-month single-run" title="Previous" data-jump="0" data-arrow="' . $prev_btn . '" href="javascript:void(0);"><i class="eventer-icon-arrow-left"></i></a> <a class="show_month_events next-month single-run" title="Next" data-jump="0" data-arrow="' . $next_btn . '" href="javascript:void(0);"><i class="eventer-icon-arrow-right"></i></a> </div> </div>'; if ($atts['calview'] != '') { $date_filters .= '<div class="eventer-switcher-actions eventer-switcher-actions-view">'; $calview = explode(',', $atts['calview']); foreach ($calview as $view) { switch ($view) { case 'yearly': $cal_label = esc_html__('Yearly', 'eventer'); break; case 'weekly': $cal_label = esc_html__('Weekly', 'eventer'); break; case 'daily': $cal_label = esc_html__('Daily', 'eventer'); break; case 'today': $today_btn = 1; break; case 'date_range': $date_range = 1; break; case 'eventkeys': $eventkeys = 1; $search_range = 0; break; case 'seventkeys': $eventkeys = 1; $search_range = 1; break; default: $cal_label = esc_html__('Monthly', 'eventer'); break; } if ($today_btn == 1 || $eventkeys == 1 || $date_range == 1) { continue; } $active_class = (($cal_view == $view) || ($atts['status'] == $view && $cal_view == '')) ? 'active' : 'show_month_events'; $date_filters .= '<a class="list_calendar_view ' . $active_class . '" data-arrow="' . $current_date . '" data-arrowclass="2" data-calview="' . $view . '">' . $cal_label . '</a>'; } if ($today_btn == 1) { $date_filters .= '<a class="list_calendar_view show_month_events today-btn" title="Return to current date" data-arrow="' . date_i18n('Y-m-d') . '" data-arrowclass="2">' . esc_html__('Today', 'eventer') . '</a>'; } if ($date_range == 1) { $date_filters .= '<a class="eventer-datewise-filter-trigger" title="Date range selector"><i class="eventer-icon-calendar"></i></a>'; } $date_filters .= '</div>'; } if ($date_range == 1) { // Load jQuery UI Datepicker script //wp_enqueue_script('jquery-ui-datepicker'); $date_filters .= '<div class="eventer-filter-datewise-wrap"><div class="eventer-fdww-inner"><span>' . esc_html__('Show events from ', 'eventer') . '</span><input type="text" class="eventer-filter-datewise" id="eventer_from" name="from" value="' . $atts['from_date'] . '"></div><div class="eventer-fdww-inner"><span> ' . esc_html__('to ', 'eventer') . '</span><input type="text" class="eventer-filter-datewise" id="eventer_to" name="to" value="' . $atts['to_date'] . '"></div></div>'; } $date_filters .= ($tab_length > 0) ? '<ul class="eventer-twelve-months">' : ''; $tab_length = ($atts['status'] == "weekly") ? 0 : $tab_length; for ($i = 1; $i <= $tab_length; $i++) { if (strtotime($last_event_date) < strtotime(date_i18n('Y-m-d 23:59', strtotime('+' . $i . ' ' . $tabs, strtotime($get_months))))) { break; } $date_filters .= '<li data-jump="0" data-arrow="' . date_i18n('Y-m', strtotime('+' . $i . ' ' . $tabs, strtotime($get_months))) . '" class="show_month_events next-month">' . date_i18n($tabs_date, strtotime('+' . $i . ' ' . $tabs, strtotime($get_months))) . '</li>'; } $date_filters .= ($tab_length > 0) ? '</ul>' : ''; $date_filters .= '</div>'; if ($eventkeys == 1) { //$date_filters .= '<input data-from="'.date_i18n('Y-m-d').'" data-to="'.date_i18n('Y-m-d',strtotime(date("Y-m-d", time()) . " + 1825 day")).'" data-range="'.$search_range.'" data-search="" data-arrow="'.$get_months.'" type="text" class="keyword-search-eventer" value="" name="keyword-search-eventer">'; } return $date_filters; } add_filter('eventer_list_date_filter', 'eventer_list_date_filters', 10, 2); function eventer_list_category_filters($atts, $all_cats) { if ($atts['filters'] == '') { return; } $category_filters = ''; $filters = explode(',', $atts['filters']); if (!empty($filters)) { $category_filters .= '<div class="eventer-filter-wrap">'; $category_filters .= '<label>' . esc_html__('Sort Events', 'eventer') . '</label>'; foreach ($filters as $filter) { $att_term = $filter; if ($filter == 'category') { $att_term = 'cats'; } if ($filter == 'tag') { $att_term = 'tags'; } $eventer_taxonomy = get_terms('eventer-' . $filter); switch ($filter) { case 'category': $taxonomy_name = esc_html__('Category', 'eventer'); break; case 'tag': $taxonomy_name = esc_html__('Tags', 'eventer'); break; case 'venue': $taxonomy_name = esc_html__('Venue', 'eventer'); break; case 'organizer': $taxonomy_name = esc_html__('Organizer', 'eventer'); break; } if (!is_wp_error($eventer_taxonomy) && !empty($eventer_taxonomy)) { $category_filters .= '<div class="eventer-filter-col"> <a class="eventer-filter-trigger eventer-btn eventer-btn-basic" href="javascript:void(0)">' . esc_html__('By Event', 'eventer') . ' ' . esc_attr($taxonomy_name) . ' <i class="eventer-icon-arrow-down"></i></a>'; $category_filters .= '<ul class="eventer-filter-select eventer-category-filter" data-taxonomy="terms_' . $att_term . '">'; foreach ($eventer_taxonomy as $cat) { $selected = (in_array($cat->term_id, $all_cats)) ? 'checked' : ''; $category_filters .= '<li class=""><label><input data-arrow="' . $atts['current_date'] . '" data-arrowclass="2" data-term="' . $cat->term_id . '" type="checkbox" ' . $selected . ' class="eventers-filter-check show_month_events" value="' . $cat->term_id . '"> ' . $cat->name . '</label></li>'; } $category_filters .= '</ul></div>'; } } $category_filters .= '</div>'; } return $category_filters; } add_filter('eventer_list_category_filter', 'eventer_list_category_filters', 10, 2); function eventer_client_ip() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { //check ip from share internet $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //to check ip is pass from proxy $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; } function eventer_tickets_payment_options($eventer_data, $payment_fields = '') { if (empty($eventer_data)) { return; } $stripe_switch = eventer_get_settings('eventer_stripe_payment_switch'); $stripe_default = eventer_get_settings('eventer_stripe_default_switch'); $paypal_switch = eventer_get_settings('eventer_paypal_payment_switch'); $paypal_default = eventer_get_settings('eventer_paypal_default_switch'); $dotpay_switch = eventer_get_settings('eventer_dotpay_payment_switch'); $dotpay_default = eventer_get_settings('eventer_dotpay_default_switch'); $offline_switch = eventer_get_settings('eventer_offline_payment_switch'); $offline_default = eventer_get_settings('eventer_offline_default_switch'); $coupons_switch = eventer_get_settings('eventer_coupon_field'); $offline_default = ($stripe_default != '1' && $paypal_default != '1') ? '1' : $offline_default; $offline_switch = ($stripe_switch == '' && $paypal_switch == '') ? '1' : $offline_switch; $default_set = ''; $offline_payment_msg = $eventer_data['offline_msg']; $eventer_currency = $eventer_data['eventer_currency']; $payment_fields = '<div class="payment-options-area"> <div class="eventer-row">'; if ($coupons_switch == 'on') { $payment_fields .= ' <div class="eventer-col10"> <div class="eventer-coupon-module"> <div class="eventer-have-cc"> <label><input type="checkbox" class="eventer-coupon-opener"> ' . esc_attr('Have coupon?', 'eventer') . '</label> </div> <div class="eventer-coupon-field"> <div class="eventer-input-wbtn"> <input type="text" class="eventer-apply-coupon" placeholder="' . esc_attr('Enter Coupon Code', 'eventer') . '"> <div class="eventer-gbtn"> <button class="eventer-btn eventer-btn-basic eventer-coupon-validate">' . esc_attr('Apply', 'eventer') . '</button> </div> </div> </div> </div> </div>'; } $payment_fields .= '</div> <div class="eventer-row"> <div class="eventer-col8 eventer-col6-xs"> <ul class="eventer-payment-options clearfix"> '; if ($stripe_switch == '1') { if ($stripe_default == '1') { $default_set = 'checked'; } $payment_fields .= '<li> <label class="eventer-radio"><input ' . esc_attr($default_set) . ' class="chosen-payment-option" value="2" type="radio" name="chosen-payment-option"> ' . esc_html__('Stripe', 'eventer') . '</label> </li>'; } if ($paypal_switch != '0') { $default_set = ($paypal_default == '1' && $default_set == '') ? 'checked' : ''; $payment_fields .= '<li> <label class="eventer-radio"><input ' . esc_attr($default_set) . ' class="chosen-payment-option" value="1" type="radio" name="chosen-payment-option"> <img src="' . esc_url(EVENTER__PLUGIN_URL . '/images/paypal_logo.png') . '" alt="PayPal"></label> </li>'; } if ($dotpay_switch != '100') { /*$default_set = ($paypal_default == '1' && $default_set == '') ? 'checked' : ''; $payment_fields .= '<li> <label class="eventer-radio"><input ' . esc_attr($default_set) . ' class="chosen-payment-option" value="3" type="radio" name="chosen-payment-option"> dotpay</label> </li>';*/ } if ($offline_switch != "0") { $default_set = ($offline_default == '1' && $default_set == '') ? 'checked' : ''; $payment_fields .= '<li> <label class="eventer-radio"><input ' . esc_attr($default_set) . ' class="chosen-payment-option" value="0" type="radio" name="chosen-payment-option"> ' . esc_html__('Offline payment', 'eventer') . '</label> </li>'; } $payment_fields .= '</ul> </div> <div class="eventer-col2 eventer-col4-xs"> <div class="eventer-ticket-price-total" data-fprice="">' . esc_attr($eventer_currency) . '0</div> </div> </div> <div class="eventer_stripe_field" ' . (($stripe_default != '1' || $stripe_switch != '1') ? 'style="display:none;"' : '') . '> <div class="eventer-row"> <div class="eventer-col10"> <div class="form-row"> <label for="card-element"> Credit or debit card </label> <div id="card-element"></div> </div> <div id="card-errors" role="alert"></div> </div> </div> </div> <div class="offline_message" ' . (($offline_default == '1') ? '' : 'style="display:none;"') . '> ' . wpautop($offline_payment_msg) . ' </div> </div>'; return $payment_fields; } add_filter('eventer_tickets_payment_fields', 'eventer_tickets_payment_options', 10, 1); function eventer_generate_tickets_row($eventer_data, $ticket_remaining_modal = '') { $eventer_id = (isset($eventer_data['event_id']) && $eventer_data['event_id'] != '') ? $eventer_data['event_id'] : get_the_ID(); $aviable_tickets = get_post_meta($eventer_id, 'eventer_event_available_tickets', true); $original_event = eventer_wpml_original_post_id($eventer_id); $tickets = get_post_meta($original_event, 'eventer_tickets', true); $tickets_with_ids = get_post_meta($original_event, 'wceventer_tickets', true); $tickets_translated = get_post_meta($eventer_id, 'eventer_tickets', true); $booked_tickets = $eventer_data['booked_tickets']; $show_tickets_info = (!empty($booked_tickets)) ? $booked_tickets : $tickets; $eventer_currency = $eventer_data['eventer_currency']; $event_cdate = $eventer_data['event_cdate']; $eventer_formatted_date = date_i18n('Y-m-d', $event_cdate); $eventer_url = eventer_generate_endpoint_url('edate', $eventer_formatted_date, get_permalink(get_the_ID())); $currency_position = $eventer_data['currency_position']; if (!empty($show_tickets_info)) { $start_ticket = 0; foreach ($show_tickets_info as $ticket) { $remaining_for_reg = ''; $ticket_name = (isset($ticket['name'])) ? $ticket['name'] : ''; $ticket_locale_name = (isset($ticket['cust_val1'])) ? json_decode($ticket['cust_val1'], true) : []; $ticket_name = ($ticket_locale_name && isset($ticket_locale_name[EVENTER__LANGUAGE_CODE]) && $ticket_locale_name[EVENTER__LANGUAGE_CODE] != '') ? $ticket_locale_name[EVENTER__LANGUAGE_CODE] : $ticket_name; $ticket_pid = (isset($ticket['pid'])) ? $ticket['pid'] : ''; $ticket_existing = (get_post_type($ticket_pid) == 'product' && get_post_status($ticket_pid) == 'publish') ? '' : esc_html__('It seems the ticket you added for this event is no more exists.', 'eventer'); $woo_ticket = (isset($eventer_data['woo_ticketing'])) ? $eventer_data['woo_ticketing'] : ''; /*if ($ticket_existing == '' && eventer_get_settings('eventer_enable_woocommerce_ticketing') == 'on') { global $woocommerce; if (WC()->cart->cart_contents_count == 0) { WC()->cart->add_to_cart($ticket_pid, 1); echo '<div id="reg_cart_status" style="display: none">' . $ticket_pid . '</div>'; } }*/ $ticket_existing = ($woo_ticket == 'on') ? $ticket_existing : ''; if (isset($tickets_translated[$start_ticket]) && isset($tickets_translated[$start_ticket]['pid']) && $tickets_translated[$start_ticket]['pid'] == $ticket_pid && $ticket_name != $tickets_translated[$start_ticket]['name']) { $ticket_name = $tickets_translated[$start_ticket]['name']; } $ticket_number = (isset($ticket['tickets'])) ? $ticket['tickets'] : ''; $ticket_price = (isset($ticket['price'])) ? number_format($ticket['price'], 2) : ''; $ticket_price_without_formatted = (isset($ticket['price'])) ? $ticket['price'] : ''; $ticket_generation_id = (isset($ticket['dynamic'])) ? $ticket['dynamic'] : ''; $ticketPrimary = (isset($ticket['ticket_id'])) ? $ticket['ticket_id'] : ''; $ticket_enabled_date = (isset($ticket['enabled'])) ? $ticket['enabled'] : ''; if ($ticket_enabled_date !== '' && strtotime($ticket_enabled_date) > date_i18n('U')) { continue; } if (isset($ticket['pid'])) { $ticket_product_id = $ticket['pid']; } elseif (isset($tickets_with_ids[$start_ticket])) { $ticket_product_id = $tickets_with_ids[$start_ticket]['wceventer_ticket_id']; } else { $ticket_product_id = ''; } $ticket_product_identify = (isset($ticket['id'])) ? $ticket['id'] : ''; $sold_individually = get_post_meta($ticket_product_id, '_sold_individually', true); $ticket_restrict = (isset($ticket['restricts'])) ? $ticket['restricts'] : ''; $restricted_class = ($ticket_restrict == "1") ? 'restricted-row' : ''; $ticket_currency = $eventer_currency; if (is_numeric($ticket_price_without_formatted) && $ticket_price != '') { $ticket_price_r = $ticket_price; $ticket_price = ($currency_position != 'postfix') ? $ticket_currency . $ticket_price : $ticket_price . $ticket_currency; $discounted_price = ''; $raw_price = $ticket['price']; } elseif (strpos($ticket_price, "-") !== false && $ticket_price != '') { $new_ticket_price = explode('-', $ticket_price); $calculate_discounted_price = intval($new_ticket_price[0]) - intval($new_ticket_price[1]); $discounted_price = $ticket_currency . $calculate_discounted_price; $show_price = ($currency_position != 'postfix') ? $ticket_currency . $new_ticket_price[0] : $new_ticket_price[0] . $ticket_currency; $ticket_price = '<del class="eventer-price-currency">' . $show_price . '</del>'; $raw_price = $calculate_discounted_price; } else { $ticket_price = $ticket_price; $discounted_price = ''; $ticket_currency = ''; $raw_price = $ticket['price']; } $ticket_remaining = (!isset($booked_tickets[$ticket_name])) ? $ticket_number : $booked_tickets[$ticket_name]; if ($ticket_remaining > 0) { $default_price = (isset($eventer_data['currency_position']) && $eventer_data['currency_position'] == "postfix") ? '0' . esc_attr($ticket_currency) : esc_attr($ticket_currency) . '0'; $ticket_cookie = (isset($_COOKIE[$eventer_formatted_date . '_' . $ticket_generation_id])) ? $_COOKIE[$eventer_formatted_date . '_' . $ticket_generation_id] : ''; $remaining_for_reg = 1; $remaining_html = '<div class="eventer-col2 eventer-col2-xs"> <label>' . esc_html__('Available', 'eventer') . '</label> <div class="remaining-ticket">' . $ticket_remaining . '</div></div>'; if ( $aviable_tickets == 'yes' ) { $remaining_html = ''; $first_col_class = 'eventer-col4 eventer-col5-xs'; } else{ $first_col_class = 'eventer-col2 eventer-col3-xs'; } if ($ticket_existing == '') { $min_value = eventer_get_settings('eventer_minimum_default_ticket' ) ? eventer_get_settings('eventer_minimum_default_ticket' ) : 0; $ticket_remaining_modal .= '<input type="hidden" class="eventer-common-tickets-remaining" value="' . $ticket_remaining . '">'; $ticket_remaining_modal .= '<div class="eventer-ticket-type-row" data-limit="' . esc_attr($sold_individually) . '"> <div class="eventer-row ' . esc_attr($restricted_class) . '" data-identify="' . esc_attr($ticket_product_identify) . '" data-cart="' . esc_attr($ticket_pid) . '" data-pid="' . esc_attr($ticket_product_id) . '" data-booked="' . $ticket_cookie . '" data-ticketid="' . $ticket_generation_id . '" data-primary="' . $ticketPrimary . '"> <div class="'.$first_col_class.'"> <label>' . esc_html__('Type', 'eventer') . '</label> <div class="name-ticket">' . $ticket_name . '</div> </div> '. $remaining_html .' <div class="eventer-col2 eventer-col2-xs"> <label>' . esc_html__('Price', 'eventer') . '</label> <div class="price-ticket" data-tprice="' . $raw_price . '">' . $ticket_price . ' ' . $discounted_price . '</div> </div> <div class="eventer-col2 eventer-col3-xs eventer-tq-wrap"> <span class="eventer-restricted-msg">' . esc_html__('One time registration allowed for this ticket', 'eventer') . '</span> <label>' . esc_html__('Quantity', 'eventer') . '</label> <div class="eventer-q-field"> <input type="text" name="quantity_tkt" value="'. $min_value .'" maxlength="99" class="num-tickets" autocomplete="off"> <input type="button" value="+" class="eventer-qtyplus"> <input type="button" value="-" class="eventer-qtyminus"> </div> </div> <div class="eventer-col2 eventer-hidden-xs"> <label>' . esc_html__('Total', 'eventer') . '</label> <div class="total-price" data-mprice="">' . $default_price . '</div> </div> </div> </div>'; } else { $ticket_remaining_modal .= '<div class="eventer-ticket-type-row"> <div class="eventer-row"> <div class="eventer-col10 eventer-col10-xs">' . $ticket_existing . ' </div> </div> </div>'; } } $start_ticket++; } } return '<div class="eventer_ticket-filter">' . $ticket_remaining_modal . '</div>'; } add_filter('eventer_get_tickets', 'eventer_generate_tickets_row', 10, 2); function eventer_generate_services_row($eventer_data, $ticket_additional_services = '') { $eventer_id = (isset($eventer_data['event_id']) && $eventer_data['event_id'] != '') ? $eventer_data['event_id'] : get_the_ID(); $original_event = eventer_wpml_original_post_id($eventer_id); $eventer_additional_services = get_post_meta($original_event, 'eventer_additional_services', true); $eventer_currency = $eventer_data['eventer_currency']; $currency_position = $eventer_data['currency_position']; if (!empty($eventer_additional_services)) { add_action('eventer_ticket_services_tab', 'eventer_additional_services_details', 10, 3); foreach ($eventer_additional_services as $services) { $multiple = (isset($services['multiple']) && $services['multiple'] == '1') ? 'checkbox' : 'radio'; $services_mandatory = (isset($services['tickets_mandatory']) && $services['tickets_mandatory'] == '1') ? 'restrict-service' : ''; $services_field_mandatory = (isset($services['tickets_mandatory']) && $services['tickets_mandatory'] == '1') ? 'restrict-service-field' : ''; $stype1 = (isset($services['type1'])) ? $services['type1'] : ''; $sprice1 = (isset($services['price1'])) ? $services['price1'] : ''; $stype2 = (isset($services['type2'])) ? $services['type2'] : ''; $sprice2 = (isset($services['price2'])) ? $services['price2'] : ''; $stype3 = (isset($services['type3'])) ? $services['type3'] : ''; $sprice3 = (isset($services['price3'])) ? $services['price3'] : ''; $stype4 = (isset($services['type4'])) ? $services['type4'] : ''; $sprice4 = (isset($services['price4'])) ? $services['price4'] : ''; $service_type = array_filter(array($stype1, $stype2, $stype3, $stype4)); $show_price = (isset($services['price']) && is_numeric($services['price'])) ? ($currency_position == "postfix") ? ' ' . esc_attr($services['price']) . esc_attr($eventer_currency) : ' ' . esc_attr($eventer_currency) . esc_attr($services['price']) : ''; $service_title = (is_numeric($services['service'])) ? get_the_title($services['service']) : $services['service']; $ticket_additional_services .= '<div class="eventer-ticket-type-row" data-pid="' . esc_attr($services['service']) . '"> <div class="eventer-row "> <div class="eventer-col4 eventer-col3-xs"> <label>' . esc_html__('Choose', 'eventer') . '</label> <div class="name-ticket">' . esc_attr($service_title) . $show_price . '</div> </div> <div class="eventer-col4 eventer-col5-xs">'; if ($service_type) { $ticket_additional_services .= '<div class="eventer-filter-col"> <a class="eventer-filter-trigger eventer-btn eventer-btn-basic eventer-services-options-trigger" href="#">' . esc_html__('Select Options', 'eventer') . ' <i class="eventer-icon-arrow-down"></i></a> <div class="remaining-ticket"> <ul class="eventer-filter-select services-section ' . esc_attr($services_mandatory) . '">'; $start = 1; foreach ($service_type as $type) { $set_price = (is_numeric(${"sprice" . $start})) ? ($currency_position == "postfix") ? ${"sprice" . $start} . $eventer_currency : $eventer_currency . ${"sprice" . $start} : ${"sprice" . $start}; $raw_price = (is_numeric(${"sprice" . $start})) ? ${"sprice" . $start} : 0; $service_price = $eventer_currency . ${"sprice" . $start}; $ticket_additional_services .= '<li class="price-ticket" data-mprice="" data-tprice="' . esc_attr($raw_price) . '"><label><input type="' . esc_attr($multiple) . '" value="' . esc_attr($type) . '" name="' . esc_attr($services['service']) . '" class="eventers-filter-check add_services ' . esc_attr($services_field_mandatory) . '"> ' . esc_attr($type) . ' ' . esc_attr($set_price) . '</label></li>'; $start++; } $ticket_additional_services .= '</ul> </div> </div>'; } elseif (isset($services['price']) && is_numeric($services['price'])) { $ticket_additional_services .= '<ul class="' . esc_attr($services_mandatory) . ' services-section"><li class="remaining-ticket price-ticket" data-mprice="" data-tprice="' . esc_attr($services['price']) . '"><label class="eventer_add_services_single_check"><input type="checkbox" class="add_services ' . esc_attr($services_field_mandatory) . '" value="' . esc_attr($services['service']) . '"> ' . esc_html__('Select', 'eventer') . '</label></li></ul>'; } $ticket_additional_services .= '</div> <div class="eventer-col2"> <label>' . esc_html__('Total', 'eventer') . '</label> <div class="total-price" data-mprice="">0</div> </div> </div> </div>'; } } return $ticket_additional_services; } add_filter('eventer_get_services', 'eventer_generate_services_row', 10, 2); function eventer_remove_directory_cron($directory) { if (strpos($directory, 'eventer') === false) { return "couldn't delete"; } elseif (is_file($directory)) { if (empty($wp_filesystem)) { require_once ABSPATH . '/wp-admin/includes/file.php'; WP_Filesystem(); } global $wp_filesystem; $upload = wp_upload_dir(); $upload_dir_base = $upload['basedir']; if ($wp_filesystem) { $wp_filesystem->delete($directory, true, 'f'); } } } add_action('eventer_initiate_cron_remove_directory', 'eventer_remove_directory_cron', 10, 1); add_action('generate_ticket_for_registrants', 'eventer_cron_once_for_ticket', 10, 7); function eventer_cron_once_for_ticket($email, $registrant_id, $registrants, $event_id, $qrcode_name, $organizer_email) { $sender = eventer_get_settings( 'email_from_address' ) ? eventer_get_settings( 'email_from_address' ) : get_option('admin_email'); $sender_name = eventer_get_settings( 'email_from_name' ) ? eventer_get_settings( 'email_from_name' ) : get_bloginfo('name'); $sender = ($organizer_email != '') ? $organizer_email : $sender; //If event do not have any event manager or event manager do not have email address then email will be forwarded to admin $headers[] = 'From: ' . $sender_name . ' <' . $sender . '>'; //$headers[] = 'From: '.get_bloginfo('name').' <'.$sender.'>'; //$headers[] = "MIME-Version: 1.0" . "\r\n"; $headers[] = "Content-type: text/html; charset=" . get_bloginfo('charset') . "" . "\r\n"; $subject = esc_html__('Your tickets', 'eventer'); // print_r( [ $email, $registrant_id, $registrants, $event_id, $qrcode_name, $organizer_email ] );exit(); if (empty($qrcode_name)) { return; } global $wp_filesystem; if (empty($wp_filesystem)) { require_once ABSPATH . '/wp-admin/includes/file.php'; WP_Filesystem(); } $woocommerce_ticketing = eventer_get_settings('eventer_enable_woocommerce_ticketing'); $message = ''; $upload = wp_upload_dir(); $upload_dir_base = $upload['basedir']; $has_attachment = 0; $mail_attachment = array(); $pdfAttachment = eventer_get_settings('eventer_pdf_ticket'); foreach ($qrcode_name as $ticket_print) { if ($pdfAttachment == 'on') { $ticket_print = str_replace('png', 'pdf', $ticket_print); } if (!file_exists($upload_dir_base . '/eventer/' . $ticket_print)) continue; $mail_attachment[] = $upload_dir_base . '/eventer/' . $ticket_print; $size = filesize($upload_dir_base . '/eventer/' . $ticket_print); if ($size > 120) { $has_attachment = 1; } } $attachment_content = apply_filters('the_content', eventer_get_settings('email_tickets_attachment')); $attachment_content_switch = eventer_get_settings('email_tickets_attachment_switch'); if ( metadata_exists( 'post', $event_id, 'eventer_event_ticket_email' ) ) { $ticket_email = get_post_meta( $event_id, 'eventer_event_ticket_email', true ); if ( $ticket_email == 'on' ) { $attachment_content_switch = '0'; } } if ( $has_attachment == 0 || $attachment_content_switch == '0' ) { return; } if (get_post_type($registrant_id) == 'shop_order' && $woocommerce_ticketing == 'on') { $order = wc_get_order($registrant_id); if ($order) { $message = apply_filters('eventer_filter_woo_email_content_body', '', $registrant_id, $attachment_content); } } elseif($attachment_content != '') { $message = apply_filters('eventer_filter_email_content_body', '', $registrants, $attachment_content); } else { $message = ($message != '') ? $message : esc_html__('Please find your tickets attached', 'eventer'); } $message = wpautop($message); $mail_status = wp_mail($email, $subject, $message, $headers, $mail_attachment); } function eventer_check_base64_image($base64) { $img = @imagecreatefrompng($base64); if (!$img) { return false; } imagepng($img, 'tmp.png'); $info = getimagesize('tmp.png'); $size = filesize('tmp.png'); unlink('tmp.png'); if ($info[0] > 0 && $info[1] > 0 && $info['mime']) { return $size; } return false; } // PDF Tickets Generator function generatePdfTicket($data, $event_id) { require_once EVENTER__PLUGIN_PATH . 'vendors/dompdf/vendor/autoload.php'; $options = new \Dompdf\Options(); $options->set('isRemoteEnabled', true); $options->set('chroot', WP_CONTENT_DIR); $dompdf = new \Dompdf\Dompdf($options); $event_notes = get_post_meta($event_id, 'eventer_event_ticket_image_notes', true); if (empty($event_notes)) { $event_notes = eventer_get_settings('event_ticket_image_notes'); } $company_name = eventer_get_settings('ticket_image_company_name'); $company_address = eventer_get_settings('ticket_image_company_address'); $company_logo = eventer_get_settings('ticket_image_company_logo'); $company_image = ""; if ($company_logo) { $company_image = get_attached_file($company_logo); } $data['notes'] = $event_notes; $data['company_image'] = trim($company_image); $data['company_name'] = $company_name; $data['company_address'] = $company_address; ob_start(); eventer_append_template_with_arguments('eventers/tickets/pdf', "ticket", $data); $html = ob_get_clean(); $dompdf->loadHtml($html); $dompdf->setPaper('A5', 'portrait'); $dompdf->render(); $output = $dompdf->output(); file_put_contents($data['filename'], $output); return; } function eventer_generate_ticket_qrcode() { $nonce = $_REQUEST['nonce']; if (!wp_verify_nonce($nonce, 'eventer-qrcode-nonce')) { wp_die(); } $qrdata = (isset($_REQUEST['qrdata'])) ? $_REQUEST['qrdata'] : ''; $event_id = (isset($_REQUEST['eid'])) ? $_REQUEST['eid'] : ''; $event_title = apply_filters('eventer_raw_event_title', '', $event_id); $folder_name = eventer_clean_string($event_title); $folder_name = ($folder_name != '') ? $folder_name : $event_id; $registrant_id = (isset($_REQUEST['reg'])) ? $_REQUEST['reg'] : ''; $ticket_front = (isset($_REQUEST['front'])) ? $_REQUEST['front'] : ''; $ticket_reverse = (isset($_REQUEST['reverse'])) ? $_REQUEST['reverse'] : ''; $main_reg = (isset($_REQUEST['mainreg'])) ? $_REQUEST['mainreg'] : ''; $source = (isset($_REQUEST['source'])) ? $_REQUEST['source'] : ''; $reg_pos = (isset($_REQUEST['regpos'])) ? $_REQUEST['regpos'] : ''; $organizer_email = (isset($_REQUEST['organizer'])) ? $_REQUEST['organizer'] : get_option('admin_email'); global $wp_filesystem; if (empty($wp_filesystem)) { require_once ABSPATH . '/wp-admin/includes/file.php'; WP_Filesystem(); } $upload = wp_upload_dir(); $upload_blog_url = $upload['baseurl']; $upload_dir_base = $upload['basedir']; $upload_dir = $upload_dir_base . '/eventer'; if (!$wp_filesystem->is_dir($upload_dir)) { /* directory didn't exist, so let's create it */ wp_mkdir_p($upload_dir); } $woocommerce_ticketing = eventer_get_settings('eventer_enable_woocommerce_ticketing'); $updated_registrants = $tickets_created = $user_system = array(); $registrants = eventer_get_registrant_details('id', $registrant_id); if ($wp_filesystem) { $key = $file_name_back = ''; $start_time = 30; $sub_tickets = $sub_reg_val = array(); if (!empty($qrdata)) { $start_key = 1; foreach ($qrdata as $data) { $random_name = date_i18n('Y-m-d-H-i-s'); if (!isset($data['src'])) { continue; } $image_validate = eventer_check_base64_image($data['src']); $ticket_name_clean = eventer_clean_string($data['ticket']); $qrcode_name = eventer_clean_string($data['email']); $eventer_venue = get_the_terms( $event_id, 'eventer-venue' ); $filename_first = $start_key . '-' . $qrcode_name . '-' . $ticket_name_clean . '-' . $event_id . '-' . $random_name . '.png'; $filename_pdf = $start_key . '-' . $qrcode_name . '-' . $ticket_name_clean . '-' . $event_id . '-' . $random_name . '.pdf'; $filename = $upload_dir . '/' . $filename_first; $filenamePdf = $upload_dir . '/' . $filename_pdf; if (!$image_validate || $image_validate < 10000) { continue; } $data['filename'] = $filenamePdf; generatePdfTicket($data, $event_id); if ( ! is_wp_error( $eventer_venue ) && ! empty( $eventer_venue ) ) { foreach( $eventer_venue as $venue ) { $location_address = get_term_meta($venue->term_id, 'venue_address', true); $data['location'] = ($location_address != '' ) ? $location_address : $venue->name; break; } } $sub_tickets[] = $filename_first; $wp_filesystem->put_contents( $filename, file_get_contents($data['src']), FS_CHMOD_FILE // predefined mode settings for WP files ); $email = (isset($data['email']) && $data['email'] != '') ? $data['email'] : wp_rand(10, 1000000000000000000); $tickets_created[$email][] = $filename_first; if ($reg_pos > 14 && isset($data['email']) && $data['email'] != '' && $data['email'] != $main_reg && $source == '') { wp_schedule_single_event(time() + ($start_time), 'generate_ticket_for_registrants', array($data['email'], $registrant_id, $registrants, $event_id, array($filename_first), $organizer_email)); $start_time = $start_time + 5; } $start_key++; } } if ($reg_pos > 14 && $source == '') { wp_schedule_single_event(time(), 'generate_ticket_for_registrants', array($main_reg, $registrant_id, $registrants, $event_id, $sub_tickets, $organizer_email)); } $qrcode_name_new_ticket = ''; $send_tickets = array(); if (!empty($sub_tickets)) { $start = 18600; foreach ($sub_tickets as $ticket) { $qrcode_name_new_ticket .= $ticket . ','; $send_tickets[] = $ticket; wp_schedule_single_event(time() + ($start + 5), 'eventer_initiate_cron_remove_directory', array($upload_dir . '/' . $ticket)); } } if (get_post_type($registrant_id) == 'shop_order' && $woocommerce_ticketing == 'on' && 1 == 2) { $registrants = eventer_get_registrant_details('eventer', $registrant_id); $back_order_tickets = (isset($_REQUEST['backorder'])) ? $_REQUEST['backorder'] : ''; $back_order_tickets = ($back_order_tickets != '') ? add_query_arg('allow', $registrants->id, $back_order_tickets) : ''; $order = wc_get_order($registrant_id); if ($order) { $order_email = get_post_meta($registrant_id, '_billing_email', true); $generate_dynamic_order_id = eventer_encode_security_registration($registrant_id, 8, 6); $generate_dynamic_order_id_completed = eventer_encode_security_registration($registrant_id, 9, 9); $woocommerce_thanks_redirect = eventer_get_settings('eventer_thanks_redirect'); $order = wc_get_order($registrant_id); $order_event_url = ''; foreach ($order->get_items() as $item_key => $item_values) : $new_already_booked = $update_new_val = array(); $item_data = $item_values->get_data(); $item_id = $item_values->get_id(); $product_id = $item_data['product_id']; if (!has_term('eventer', 'product_cat', $product_id) && !has_term('eventer_services', 'product_cat', $product_id)) { continue; } $order_event_url = wc_get_order_item_meta($item_id, 'Event URL', true); break; endforeach; $order_event_url = $order_event_url; $order_status = $order->get_status(); if (($order_status == 'completed' && $woocommerce_thanks_redirect == 'on' && $back_order_tickets == '')) { $order_event_url = esc_url(add_query_arg('reg', $generate_dynamic_order_id_completed, $order_event_url)); } elseif ($woocommerce_thanks_redirect == 'on' && $back_order_tickets == '') { $order_event_url = esc_url(add_query_arg('reg', $generate_dynamic_order_id, $order_event_url)); } else { $order_event_url = ''; } $order_event_url = ($back_order_tickets != '') ? $back_order_tickets : $order_event_url; //This was added before the below changes, condition removed to send tickets in any case of Woo payment $order_status == 'completed' && if ($order_status == 'completed' && $back_order_tickets == '' && $source == '') { wp_schedule_single_event(time() + 5, 'generate_ticket_for_registrants', array($order_email, $registrant_id, $order, $event_id, $send_tickets, $organizer_email)); } } } else { $order_event_url = (isset($_REQUEST['backorder'])) ? $_REQUEST['backorder'] : ''; $order_event_url = ($order_event_url != '') ? add_query_arg('allow', $registrants->id, $order_event_url) : ''; } if ( $registrants ) { $user_system = unserialize( $registrants->user_system ); if ( $user_system ) { $user_system['tickets_created'] = $tickets_created; eventer_update_registrant_details( array( 'user_system' => serialize( $user_system ) ), $registrants->id, array("%s", "%s") ); } } echo wp_json_encode(array('tickets' => $qrcode_name_new_ticket, 'event_url' => $order_event_url, 'ticket_arr' => $send_tickets, 'url' => $upload_blog_url . '/eventer', 'allow' => wp_create_nonce('eventer-tickets-download'))); } wp_die(); } add_action('wp_ajax_eventer_generate_ticket_qrcode', 'eventer_generate_ticket_qrcode'); add_action('wp_ajax_nopriv_eventer_generate_ticket_qrcode', 'eventer_generate_ticket_qrcode'); function eventer_status_completed( $registrant, $called = '' ) { $woocommerce_ticketing = eventer_get_settings('eventer_enable_woocommerce_ticketing'); if ($woocommerce_ticketing == 'on') { return; } $usersystem = unserialize($registrant->user_system); $user_registrants_list = (!empty($usersystem) && isset($usersystem['tickets_created'])) ? $usersystem['tickets_created'] : array(); //$tickets_generated = (!empty($usersystem) && isset($usersystem['tickets_generated']))?$usersystem['tickets_generated']:''; //global $wp_filesystem; $upload = wp_upload_dir(); $upload_dir_base = $upload['basedir']; $upload_dir = $upload_dir_base . '/eventer'; if (!empty($user_registrants_list)) { $registrant_id_set = ($woocommerce_ticketing == 'on') ? $registrant->eventer : $registrant; $all_tickets = array(); foreach ($user_registrants_list as $key => $value) { foreach ($value as $val) { $all_tickets[] = $val; if (is_numeric($key) || $key == $registrant->email) { continue; } wp_schedule_single_event(time() + 5, 'generate_ticket_for_registrants', array($key, $registrant->eventer, $registrant_id_set, $registrant->eventer, array($val), '')); } } wp_schedule_single_event(time() + 5, 'generate_ticket_for_registrants', array($registrant->email, $registrant->eventer, $registrant_id_set, $registrant->eventer, $all_tickets, '')); return 1; } } add_filter('eventer_status_changed_completed', 'eventer_status_completed', 10, 2); function eventer_woo_download_tickets() { $nonce = $_REQUEST['captcha']; if (!wp_verify_nonce($nonce, 'eventer-tickets-download')) { wp_die('Security check failed'); } else { $tickets = explode(',', $_REQUEST['tickets']); $folder = date_i18n('Y-m'); $archive_file_name = "eventer_tickets.zip"; $upload = wp_upload_dir(); $upload_dir_base = $upload['basedir']; $file_path = $upload_dir_base . '/eventer/'; $zip = new ZipArchive(); //create the file and throw the error if unsuccessful if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE) !== true) { exit("cannot open <$archive_file_name>\n"); } foreach ($tickets as $files) { if (empty($files)) { continue; } $zip->addFile($file_path . $files, $files); } $zip->close(); //then send the headers to foce download the zip file header("Content-type: application/zip"); header("Content-Disposition: attachment; filename=$archive_file_name"); header("Pragma: no-cache"); header("Expires: 0"); ob_end_clean(); readfile("$archive_file_name"); if (file_exists($archive_file_name)) { unlink($archive_file_name); } wp_die(); } } add_action('wp_ajax_eventer_woo_download_tickets', 'eventer_woo_download_tickets'); function eventer_switch_dashboard_tab() { $tab = (isset($_REQUEST['tab'])) ? $_REQUEST['tab'] : ''; $shortcode = (isset($_REQUEST['shortcode'])) ? $_REQUEST['shortcode'] : ''; $order = (isset($_REQUEST['order'])) ? $_REQUEST['order'] : ''; if ($tab != '' && $tab != 'undefined') { if ($tab == 'eventer_add_new') { $form_options = get_option('eventer_forms_data'); $form_options = (empty($form_options)) ? array() : $form_options; $current_form_details = (isset($form_options[$shortcode])) ? $form_options[$shortcode] : ''; $add_new = '[eventer_add_new'; if (!empty($current_form_details)) { $form_status = $current_form_details['status']; $form_sections = $current_form_details['number']; $add_new .= ' status="' . $form_status . '"'; $add_new .= ' sections="' . $form_sections . '"'; $add_new .= ' id="' . $shortcode . '"'; $add_new .= ' load="1"'; } $add_new .= ' ]'; echo do_shortcode($add_new); } else { if ($tab != 'eventer_submissions') { echo do_shortcode('[' . $tab . ']'); } else { echo '<div id="eventer-dashboard-content-area" class="eventer-fe-content-col eventer-fe-content-part eventer-dashboard-main">'; echo do_shortcode('[' . $tab . ']'); echo '</div>'; echo do_shortcode('[eventer_dash_terms]'); } } } elseif ($order != '') { $field = (get_post_type($order) == 'shop_order' && eventer_get_settings('eventer_enable_woocommerce_ticketing') == 'on') ? 'eventer' : 'id'; $event = (get_post_type($order) == 'shop_order') ? array() : array(); $default = array(); $new_tickets = apply_filters('eventer_preapare_data_for_tickets', $field, $order, $event); $new_tickets['data-regpos'] = 15; $default['data-eid'] = ''; $default['data-regpos'] = 15; $new_tickets['default'] = $default; do_action('eventer_ticket_raw_design', '', $new_tickets); } wp_die(); } add_action('wp_ajax_eventer_switch_dashboard_tab', 'eventer_switch_dashboard_tab'); add_action('wp_ajax_nopriv_eventer_switch_dashboard_tab', 'eventer_switch_dashboard_tab'); function eventer_dynamic_ticket_area() { $event = (isset($_REQUEST['event'])) ? $_REQUEST['event'] : ''; $date = (isset($_REQUEST['date'])) ? date_i18n('Y-m-d', strtotime($_REQUEST['date'])) : ''; $date_show = (isset($_REQUEST['date'])) ? date_i18n(get_option('date_format'), strtotime($_REQUEST['date'])) : ''; $time = (isset($_REQUEST['time'])) ? $_REQUEST['time'] : '00:00:00'; $time = date_i18n('H:i:s', strtotime($time)); $formatted = date_i18n(get_option('date_format'), strtotime($_REQUEST['date'])); $offline_payment_switch = eventer_get_settings('eventer_offline_payment_switch'); $offline_payment_msg = eventer_get_settings('eventer_offline_payment_desc'); $params['offline_switch'] = $offline_payment_switch; $params['offline_msg'] = $offline_payment_msg; // print_r( [ $date, $date_show, $formatted ] );exit(); echo json_encode(array("tickets_modal" => do_shortcode('[eventer_ajax_tickets id="' . $event . '" date="' . $date . '" time="' . $time . '" ajax="1"]'), "tickets" => do_shortcode('[eventer_ajax_tickets_meta id="' . $event . '" date="' . $date . '" time="' . $time . '" ajax="1"]'), "metas" => do_shortcode('[eventer_metas id="' . $event . '" date="' . $date . '" time="' . $time . '"]'), "date_show" => $date_show, "date" => $date, "time" => $time, "formatted" => $formatted, 'event_url' => eventer_generate_endpoint_url('edate', $date, get_permalink($event)))); wp_die(); } add_action('wp_ajax_eventer_dynamic_ticket_area', 'eventer_dynamic_ticket_area'); add_action('wp_ajax_nopriv_eventer_dynamic_ticket_area', 'eventer_dynamic_ticket_area'); if (!function_exists('eventer_query_to_array')) { function eventer_query_to_array($qry) { $result = array(); //string must contain at least one = and cannot be in first position if (strpos($qry, '=')) { if (strpos($qry, '?') !== false) { $q = parse_url($qry); $qry = $q['query']; } } else { return false; } foreach (explode('&', $qry) as $couple) { if (strpos($couple, "=")) { list($key, $val) = explode('=', $couple); $result[$key] = $val; } } return empty($result) ? false : $result; } } function eventer_get_filters_data($status, $get, $date) { switch ($status) { case 'monthly': $set_cal = 'month'; break; case 'yearly': $set_cal = 'year'; break; case 'weekly': $set_cal = 'week'; break; case 'daily': $set_cal = 'day'; break; } if ($get == 'current') { if ($status == 'monthly' && $get = "current") { return date_i18n('Y-m'); } elseif ($status == 'yearly' && $get = "current") { return date_i18n('Y'); } elseif ($status == 'daily' && $get = "current") { return date_i18n('Y-m-d'); } elseif ($status == 'weekly' && $get = "current") { return date_i18n('Y-m-d', strtotime('last Sunday', date_i18n('U'))); } } elseif ($get == 'prev') { if ($set_cal == 'week') { $set_cal = 'sunday'; } return date_i18n('Y-m-d', strtotime('last ' . $set_cal, strtotime($date))); } elseif ($get == 'next') { if ($set_cal == 'week') { $set_cal = 'saturday'; } return date_i18n('Y-m-d', strtotime('next ' . $set_cal, strtotime($date))); } elseif ($get == 'format') { if ($status == 'monthly') { return date_i18n('Y-m-01', strtotime($date)); } elseif ($status == 'yearly') { return date_i18n('Y-01-01', strtotime($date)); } elseif ($status == 'daily') { return date_i18n('Y-m-d', strtotime($date)); } elseif ($status == 'weekly') { return date_i18n('Y-m-d', strtotime($date)); } } } function pm_remove_all_scripts() { global $wp_scripts; //$wp_scripts->queue = array(); wp_enqueue_script('jquery-ui-datepicker'); wp_enqueue_script('eventer-plugins'); wp_enqueue_script('eventer-qrcode'); wp_enqueue_script('eventer-modal'); wp_enqueue_script('eventer-init'); wp_enqueue_script('eventer-single-scripts'); wp_dequeue_script('divi-custom-script'); } // Eventer default coupons validation function eventer_validate_coupon() { $coupon = (isset($_REQUEST['coupon'])) ? $_REQUEST['coupon'] : ''; $amount = (isset($_REQUEST['amount'])) ? $_REQUEST['amount'] : ''; $validate = $msg = $discounted = ''; if ($coupon || $amount > 0) { global $wpdb; $eventer_coupon_table = $wpdb->prefix . "eventer_coupons"; $coupon_row = $wpdb->get_row("SELECT * FROM $eventer_coupon_table where `coupon_code` = '$coupon'", ARRAY_A); if ($coupon_row) { $coupon_discount = (isset($coupon_row['discounted'])) ? $coupon_row['discounted'] : ''; $coupon_validity = (isset($coupon_row['valid_till'])) ? $coupon_row['valid_till'] : ''; $coupon_status = (isset($coupon_row['coupon_status'])) ? $coupon_row['coupon_status'] : ''; if (strtotime($coupon_validity) > date_i18n('U') && $coupon_status != '1') { $validate = '1'; $msg = esc_html__('Coupon validated successfully.', 'eventer'); $discounted = $coupon_discount; if (is_numeric($coupon_discount)) { $amount = intval($amount) - intval($coupon_discount); } elseif (strpos($coupon_discount, '%') !== false) { $discounted_amount = ($coupon_discount / 100) * $amount; $amount = $amount - $discounted_amount; } else { $amount = $amount; } } elseif (strtotime($coupon_validity) < date_i18n('U')) { $validate = '0'; $msg = esc_html__('Coupon validity period expired', 'eventer'); } elseif ($coupon_status == '1') { $validate = '0'; $msg = esc_html__('Coupon is disabled', 'eventer'); } } else { $validate = '0'; $msg = esc_html__('Coupon doesn\'t exist', 'eventer'); } } elseif ($coupon == '') { $validate = '0'; $msg = esc_html__('Coupon can not be empty', 'eventer'); } elseif ($amount <= 0) { $validate = '0'; $msg = esc_html('Total amount is not valid', 'eventer'); } echo json_encode(array('validate' => $validate, 'msg' => $msg, 'discount' => $discounted, 'amount' => $amount)); wp_die(); } add_action('wp_ajax_eventer_validate_coupon', 'eventer_validate_coupon'); add_action('wp_ajax_nopriv_eventer_validate_coupon', 'eventer_validate_coupon'); // /** // * Change Wordpress Default Mail Sender Email Address // */ // add_filter('wp_mail_from', 'eventer_mail_sender_from_email'); // function eventer_mail_sender_from_email($old) { // $email_address = eventer_get_settings( 'email_from_address' ) ? eventer_get_settings( 'email_from_address' ) : get_option('admin_email'); // return $email_address; // } /** * Change Wordpress Default Mail Sender Name */ add_filter('wp_mail_from_name', 'eventer_mail_sender_from_email_name'); function eventer_mail_sender_from_email_name($old) { $sender_name = eventer_get_settings( 'email_from_name' ) ? eventer_get_settings( 'email_from_name' ) : get_bloginfo('name'); return $sender_name; } function eventer_compare_dates($date1, $date2) { return strtotime($date1) - strtotime($date2); } function eventer_display_status_badge( $event_id ) { $status_value = get_post_meta( $event_id, 'eventer_event_custom_status', true ); if ( ! $status_value ) { return; } return sprintf( '<span class="eventer-status-badge eventer-status-%1$s">%2$s</span>', $status_value, eventer_nomalize_status_label( $status_value ) ); } function eventer_nomalize_status_label( $label ) { $labels = [ '' => esc_html__('None', 'eventer'), 'rescheduled' => esc_html__('Rescheduled', 'eventer'), 'cancelled' => esc_html__('Cancelled', 'eventer') ]; if ( ! isset( $labels[ $label ] ) ) { return $label; } return $labels[ $label ]; } function eventer_check_event_is_virtual( $event_id ) { $status_value = get_post_meta( $event_id, 'eventer_event_virtual', true ); if ( ! $status_value || $status_value !== 'on' ) { return; } return sprintf( '<span class="eventer-status-badge eventer-status-virtual">%1$s</span>', esc_html__( 'Virtual Event', 'eventer' ) ); } function eventer_get_event_venue( $location, $event_id ) { $status_value = get_post_meta( $event_id, 'eventer_event_virtual', true ); if ( ! $status_value || $status_value !== 'on' ) { return $location; } return esc_html__( 'Virtual Event', 'eventer' ); } /** * Allows to remove products in checkout page. * * @param string $product_name * @param array $cart_item * @param string $cart_item_key * @return string */ function eventer_woocommerce_checkout_remove_item( $product_name, $cart_item, $cart_item_key ) { if ( is_checkout() ) { $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); $remove_link = apply_filters( 'woocommerce_cart_item_remove_link', sprintf( '<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">×</a>', esc_url( WC()->cart->get_remove_url( $cart_item_key ) ), __( 'Remove this item', 'eventer' ), esc_attr( $product_id ), esc_attr( $_product->get_sku() ) ), $cart_item_key ); return '<span>' . $remove_link . '</span> <span>' . $product_name . '</span>'; } return $product_name; } add_filter( 'woocommerce_cart_item_name', 'eventer_woocommerce_checkout_remove_item', 10, 3 );