Forum Replies Created

Viewing 4 replies - 1 through 4 (of 4 total)
  • Thread Starter damsoi01

    (@damsoi01)

    The updated plugin version contains simplified CSS for related events and timeline display. However, it does NOT include any of the critical fixes for:

    – ✅ Recurring event ticket sales

    – ✅ WPML multilingual synchronization

    – ✅ Language filtering

    – ✅ Settings sync system

    Try and be active on the ticket because I essentially gave you the code to ensure proper inventory management and client experience and backend improvements.

    Thread Starter damsoi01

    (@damsoi01)

    I will check it out, I am also chatting on a ticket #5120 with your team. I fixed many issues with the plugin and sent you the notes and the code ready to use. Did you implement it in the new update? Because it is essential to be a usable plugin in a professional context.

    Thanks a lot!

    Similar issue with the elementor timeline horizontal widget: https://prnt.sc/p8bYF3nwqk3d
    It should be showing the events like it did in previous version as normal frames

    And related events at the bottom of an event detail page also displays wrong: https://prnt.sc/UKuD0dqUU6Cc

    These issues were not a problem before the last update. And I did clean cache, css files, js files, cloudflare, tried on new machines etc… same result everywhere.

    Thread Starter damsoi01

    (@damsoi01)

    Actually tested in my sandbox with two file changes:
    /templates/layout/ticket_type.php

    <?php

    /*

    * @Author [email protected]

    * Copyright: mage-people.com

    */

    if ( ! defined( 'ABSPATH' ) ) {

    die;

    } // Cannot access pages directly.

    $event_id = $event_id ?? 0;

    $all_dates = $all_dates ?? MPWEM_Functions::get_dates( $event_id );

    $all_times = $all_times ?? MPWEM_Functions::get_times( $event_id, $all_dates );

    $date = empty( $date ) ? MPWEM_Functions::get_upcoming_date_time( $event_id, $all_dates, $all_times ) : $date;

    $total_available = $total_available ?? MPWEM_Functions::get_total_available_seat( $event_id, $date );

    $total_available = max( $total_available, 0 );

    $mep_available_seat = MPWEM_Global_Function::get_post_info( $event_id, 'mep_available_seat', 'on' );

    $total_sold = mep_ticket_type_sold( $event_id, '', $date );

    $total_ticket = MPWEM_Functions::get_total_ticket( $event_id, $date );

    $total_reserve = MPWEM_Functions::get_reserve_ticket( $event_id, $date );

    $total_available = $total_ticket - ( $total_sold + $total_reserve );

    $total_available = max( $total_available, 0 );

    if ( $total_available > 0 ) {

    do_action( 'mepgq_max_qty_hook', $event_id, $total_available, $date );

    $ticket_types = MPWEM_Global_Function::get_post_info( $event_id, 'mep_event_ticket_type', [] );

    $count = 0;

    if ( sizeof( $ticket_types ) > 0 ) { ?>

    <div class="mpwem_ticket_type">

    <div class="card-body">

    <?php foreach ( $ticket_types as $ticket_type ) {

    $option_ticket_enable = array_key_exists( 'option_ticket_enable', $ticket_type ) ? $ticket_type['option_ticket_enable'] : 'yes';

    if ( $option_ticket_enable == 'yes' ) {

    $input_data = [];

    $ticket_permission = apply_filters( 'mpwem_ticket_permission', true, $ticket_type );

    do_action( 'mep_ticket_type_loop_list_row_start', $event_id, $date, $ticket_type );

    if ( $ticket_permission ) {

    //echo '<pre>';print_r($ticket_type);echo '</pre>';

    $ticket_name = array_key_exists( 'option_name_t', $ticket_type ) ? $ticket_type['option_name_t'] : '';

    $ticket_details = array_key_exists( 'option_details_t', $ticket_type ) ? $ticket_type['option_details_t'] : '';

    $ticket_price = array_key_exists( 'option_price_t', $ticket_type ) ? $ticket_type['option_price_t'] : 0;

    $ticket_price_ = apply_filters( 'mep_ticket_type_price', $ticket_price, $ticket_name, $event_id, $ticket_type );

    $ticket_price_ = apply_filters( 'mpwem_group_ticket_price', $ticket_price_, $event_id, $ticket_name );

    $ticket_price_wc = wc_price( $ticket_price_ );

    $ticket_price = MPWEM_Global_Function::price_convert_raw( $ticket_price_wc );

    $ticket_qty = array_key_exists( 'option_qty_t', $ticket_type ) ? $ticket_type['option_qty_t'] : 0;

    $ticket_qty = apply_filters( 'filter_mpwem_gq_ticket', $ticket_qty, $total_available, $event_id );

    $ticket_d_qty = array_key_exists( 'option_default_qty_t', $ticket_type ) ? $ticket_type['option_default_qty_t'] : 0;

    $ticket_min_qty = apply_filters( 'filter_mpwem_min_ticket', 0, $event_id, $ticket_type );

    $ticket_max_qty = apply_filters( 'filter_mpwem_max_ticket', '', $event_id, $ticket_type );

    $ticket_input_type = array_key_exists( 'option_qty_t_type', $ticket_type ) ? $ticket_type['option_qty_t_type'] : 'inputbox';

    $available = MPWEM_Functions::get_available_ticket( $event_id, $ticket_name, $date, $ticket_type );

    $available = apply_filters( 'filter_mpwem_gq_ticket', $available, $total_available, $event_id );

    $available = apply_filters( 'mpwem_group_ticket_qty', $available, $event_id, $ticket_name );

    $available = max( 0, floor( $available ) );

    if ( $ticket_name ) {

    $input_data['name'] = 'option_qty[]';

    $input_data['price'] = $ticket_price;

    $input_data['available'] = $available;

    $input_data['d_qty'] = $ticket_d_qty;

    $input_data['min_qty'] = $ticket_min_qty;

    $input_data['max_qty'] = $ticket_max_qty;

    $input_data['type'] = $ticket_input_type;

    $input_data = apply_filters( 'filter_mpwem_min_qty_must', $input_data, $event_id );

    //echo '<pre>';print_r($input_data);echo '</pre>';

    $count ++;

    ?>

    <div class="mep_ticket_item">

    <div class="ticket-data">

    <div class="ticket-info">

    <div class="ticket-name"><?php echo esc_html( $ticket_name ); ?></div>

    <?php if ( $ticket_details ) { ?>

    <div class="ticket-description"><?php echo esc_html( $ticket_details ); ?></div>

    <?php } ?>

    <?php

    // Check if low stock warning should be shown

    $show_low_stock_warning = false;

    if ( function_exists( 'mep_is_low_stock' ) ) {

    $show_low_stock_warning = mep_is_low_stock( $event_id, $ticket_name, $available );

    }

    // Only show "Tickets remaining" if low stock warning is not shown

    if ( $mep_available_seat == 'on' && ! $show_low_stock_warning ) { ?>

    <div class="ticket-remaining xtra-item-left <?php echo $available <= 10 ? 'remaining-low' : 'remaining-high'; ?>">

    <?php echo esc_html( max( $available, 0 ) ) . __( ' Tickets remaining', 'mage-eventpress' ); ?>

    </div>

    <?php } ?>

    <?php

    // Display low stock warning

    if ( function_exists( 'mep_display_low_stock_warning' ) ) {

    mep_display_low_stock_warning( $event_id, $ticket_name, $available );

    }

    ?>

    </div>

    <div class="quantity-control">

    <input type="hidden" name='option_name[]' value='<?php echo esc_attr( $ticket_name ); ?>'/>

    <input type="hidden" name='ticket_type[]' value='<?php echo esc_attr( $ticket_name ); ?>'/>

    <?php do_action( 'mpwem_hidden_item_ticket', $ticket_name, $event_id ); ?>

    <?php

    $early_date = apply_filters( 'mpwem_early_date', true, $ticket_type, $event_id );

    if ( $early_date ) {

    $sale_end_datetime = array_key_exists( 'option_sale_end_date_t', $ticket_type ) && ! empty( $ticket_type['option_sale_end_date_t'] ) ? date( 'Y-m-d H:i', strtotime( $ticket_type['option_sale_end_date_t'] ) ) : '';

    if ( $sale_end_datetime ) {

    $current_time = current_time( 'Y-m-d H:i' );

    // Check if event is recurring

    $is_recurring = MPWEM_Global_Function::get_post_info( $event_id, 'mep_enable_recurring', 'no' ) === 'yes';

    // For recurring events, handle sale end date differently

    if ( $is_recurring && ! empty( $date ) ) {

    $event_start_datetime = date( 'Y-m-d H:i', strtotime( $date ) );

    $sale_end_timestamp = strtotime( $sale_end_datetime );

    $current_timestamp = strtotime( $current_time );

    $event_start_timestamp = strtotime( $event_start_datetime );

    // Get buffer time setting (in minutes, convert to seconds)

    $buffer_time = MPWEM_Global_Function::get_post_info( $event_id, 'mep_buffer_time', 0 ) * 60;

    $event_start_timestamp_minus_buffer = $event_start_timestamp - $buffer_time;

    // If sale end date has passed, allow sales until event start date (minus buffer time)

    // If sale end date hasn't passed, use it as the cutoff

    if ( $sale_end_timestamp < $current_timestamp ) {

    // Sale end date passed - allow sales until event start date minus buffer time

    $tickets_available = $current_timestamp < $event_start_timestamp_minus_buffer;

    $effective_end_date = date( 'Y-m-d H:i', $event_start_timestamp_minus_buffer );

    } else {

    // Sale end date hasn't passed - use it as cutoff

    $tickets_available = $current_timestamp < $sale_end_timestamp;

    $effective_end_date = $sale_end_datetime;

    }

    if ( $tickets_available ) {

    MPWEM_Custom_Layout::qty_input( $input_data );

    } else {

    // Show sale closed message

    ?>

    <span class='early-bird-future-date-txt' style="font-size: 12px;"><?php _e( 'Sale close On: ', 'mage-eventpress' );

    echo get_mep_datetime( $effective_end_date, 'date-time-text' ); ?></span>

    <input type="hidden" name="option_qty[]" value="0" data-price="<?php echo esc_attr( $ticket_price ); ?>"/>

    <?php

    }

    } else {

    // Non-recurring events: use existing logic

    if ( strtotime( $current_time ) < strtotime( $sale_end_datetime ) ) {

    MPWEM_Custom_Layout::qty_input( $input_data );

    } else {

    ?>

    <span class='early-bird-future-date-txt' style="font-size: 12px;"><?php _e( 'Sale close On: ', 'mage-eventpress' );

    echo get_mep_datetime( $sale_end_datetime, 'date-time-text' ); ?></span>

    <input type="hidden" name="option_qty[]" value="0" data-price="<?php echo esc_attr( $ticket_price ); ?>"/>

    <?php

    }

    }

    } else {

    MPWEM_Custom_Layout::qty_input( $input_data );

    }

    } else {

    $sale_start_datetime = array_key_exists( 'option_sale_start_date_t', $ticket_type ) && ! empty( $ticket_type['option_sale_start_date_t'] ) ? date( 'Y-m-d H:i', strtotime( $ticket_type['option_sale_start_date_t'] ) ) : '';

    ?>

    <span class='early-bird-future-date-txt' style="font-size: 12px;"><?php _e( 'Available On: ', 'mage-eventpress' );

    echo get_mep_datetime( $sale_start_datetime, 'date-time-text' ); ?></span>

    <input type="hidden" name="option_qty[]" value="0" data-price="<?php echo esc_attr( $ticket_price ); ?>"/>

    <?php

    }

    ?>

    </div>

    <div class="ticket-price">

    <?php

    // Display limited availability ribbon above price

    if ( function_exists( 'mep_display_limited_availability_ribbon' ) ) {

    mep_display_limited_availability_ribbon( $event_id, $ticket_name, $available );

    }

    ?>

    <?php echo wc_price( $ticket_price_ ); ?>

    <?php //echo wc_price( $ticket_price ); ?>

    </div>

    </div>

    <?php do_action( 'mpwem_multi_attendee', $event_id ); ?>

    </div>

    <?php

    }

    }

    }

    }

    ?>

    </div>

    </div>

    <?php

    }

    } else {

    MPWEM_Layout::msg( __( 'Sorry, no ticket available', 'mage-eventpress' ), '_layout_default_bg_warning' );

    do_action( 'mep_after_no_seat_notice', $event_id );

    }

    // Show waitlist form after ticket types if waitlist is enabled (even when tickets are available)

    do_action( 'mep_after_ticket_types', $event_id );

    // echo '<pre>';print_r($all_dates);echo '</pre>';


    And then edit /templates/layout/ticket_type_kera.php:

    <?php

    /*

    * @Author [email protected]

    * Copyright: mage-people.com

    */

    if ( ! defined( 'ABSPATH' ) ) {

    die;

    } // Cannot access pages directly.

    $event_id = $event_id ?? 0;

    $all_dates = $all_dates ?? MPWEM_Functions::get_dates( $event_id );

    $all_times = $all_times ?? MPWEM_Functions::get_times( $event_id, $all_dates );

    $date = $date ?? MPWEM_Functions::get_upcoming_date_time( $event_id, $all_dates, $all_times );

    $total_available = MPWEM_Functions::get_total_available_seat( $event_id, $date );

    $mep_available_seat = MPWEM_Global_Function::get_post_info( $event_id, 'mep_available_seat', 'on' );

    if ( $total_available > 0 ) {

    do_action( 'mepgq_max_qty_hook', $event_id, max( $total_available, 0 ), $date );

    $ticket_types = MPWEM_Global_Function::get_post_info( $event_id, 'mep_event_ticket_type', [] );

    if ( sizeof( $ticket_types ) > 0 ) {

    $categories = MPWEM_Global_Function::get_all_term_data( 'mep_tic_cat' );

    $new_tickets = [];

    $group_name = '';

    foreach ( $ticket_types as $ticket_type ) {

    $option_ticket_enable = array_key_exists( 'option_ticket_enable', $ticket_type ) ? $ticket_type['option_ticket_enable'] : 'yes';

    if ( $option_ticket_enable == 'yes' ) {

    $ticket_name = array_key_exists( 'option_name_t', $ticket_type ) ? $ticket_type['option_name_t'] : '';

    $ticket_group = array_key_exists( 'group_category', $ticket_type ) ? $ticket_type['group_category'] : '';

    $available = MPWEM_Functions::get_available_ticket( $event_id, $ticket_name, $date, $ticket_type );

    if ( $ticket_group && in_array( $ticket_group, $categories ) ) {

    $meta_id = MPWEM_Global_Function::get_meta_id_by_name( 'mep_tic_cat', 'name', $ticket_group );

    $ticket_group_order = '';

    if ( sizeof( $new_tickets ) > 0 ) {

    $exit = 0;

    foreach ( $new_tickets as $key => $new_ticket ) {

    if ( $new_ticket['group'] == $ticket_group ) {

    $ticket_group_order = $key;

    $exit = 1;

    }

    }

    if ( $exit == 0 ) {

    $ticket_group_order = intval( MPWEM_Global_Function::get_term_meta( $meta_id, 'category_order' ) );

    if ( empty( $ticket_group_order ) || $ticket_group_order == 0 ) {

    $ticket_group_order = $meta_id;

    }

    }

    } else {

    $ticket_group_order = intval( MPWEM_Global_Function::get_term_meta( $meta_id, 'category_order' ) );

    }

    //echo '<pre>';print_r();echo '</pre>';

    $new_tickets[ $ticket_group_order ]['group'] = $ticket_group;

    $new_tickets[ $ticket_group_order ]['term_id'] = $meta_id;

    $new_tickets[ $ticket_group_order ]['info'][] = $ticket_type;

    if ( array_key_exists( $ticket_group_order, $new_tickets ) && array_key_exists( 'available', $new_tickets[ $ticket_group_order ] ) ) {

    $new_tickets[ $ticket_group_order ]['available'] = $new_tickets[ $ticket_group_order ]['available'] + $available;

    } else {

    $new_tickets[ $ticket_group_order ]['available'] = $available;

    }

    }

    }

    }

    ksort( $new_tickets );

    //echo '<pre>';print_r($new_tickets);echo '</pre>';

    if ( sizeof( $new_tickets ) > 0 ) {

    ?>

    <div class="mpTabs kera_ticket_area">

    <div class="tabLists">

    <?php $tab_count = 0;

    foreach ( $new_tickets as $tickets ) {

    $meta_id = array_key_exists( 'term_id', $tickets ) ? $tickets['term_id'] : '';

    $des = get_term_meta( $meta_id, 'custom_description', true );

    ?>

    <div data-tabs-target="#category_name_<?php echo esc_attr( $tab_count ); ?>">

    <?php

    if ( $des ) {

    echo wp_kses_post( $des );

    } else {

    echo esc_html( $tickets['group'] );

    }

    $tab_count ++;

    ?>

    </div>

    <?php } ?>

    </div>

    <div class="tabsContent _layout_default">

    <?php $tab_count = 0;

    foreach ( $new_tickets as $tickets ) { ?>

    <div class="tabsItem" data-tabs="#category_name_<?php echo esc_attr( $tab_count ); ?>">

    <?php

    $tab_count ++;

    $exit_avail = 0;

    $ticket_types = $tickets['info'];

    $count = 0;

    if ( sizeof( $ticket_types ) > 0 ) { ?>

    <div class="data-label">

    <p><?php echo esc_html( $tickets['group'] ); ?></p>

    <p><?php echo esc_html__( 'Price', 'mage-eventpress' ); ?></p>

    </div>

    <div class="mpwem_ticket_type">

    <?php foreach ( $ticket_types as $ticket_type ) {

    $input_data = [];

    $ticket_permission = apply_filters( 'mpwem_ticket_permission', true, $ticket_type );

    if ( $ticket_permission ) {

    $ticket_name = array_key_exists( 'option_name_t', $ticket_type ) ? $ticket_type['option_name_t'] : '';

    $ticket_details = array_key_exists( 'option_details_t', $ticket_type ) ? $ticket_type['option_details_t'] : '';

    $ticket_price = array_key_exists( 'option_price_t', $ticket_type ) ? $ticket_type['option_price_t'] : 0;

    $ticket_price_ = apply_filters( 'mep_ticket_type_price', $ticket_price, $ticket_name, $event_id, $ticket_type );

    $ticket_price_ = apply_filters( 'mpwem_group_ticket_price', $ticket_price_, $event_id, $ticket_name );

    $ticket_price_wc = wc_price( $ticket_price_ );

    $ticket_price = MPWEM_Global_Function::price_convert_raw( $ticket_price_wc );

    $ticket_qty = array_key_exists( 'option_qty_t', $ticket_type ) ? $ticket_type['option_qty_t'] : 0;

    $ticket_d_qty = array_key_exists( 'option_default_qty_t', $ticket_type ) ? $ticket_type['option_default_qty_t'] : 0;

    $ticket_min_qty = apply_filters( 'filter_mpwem_min_ticket', 0, $event_id, $ticket_type );

    $ticket_max_qty = apply_filters( 'filter_mpwem_max_ticket', '', $event_id, $ticket_type );

    $ticket_input_type = array_key_exists( 'option_qty_t_type', $ticket_type ) ? $ticket_type['option_qty_t_type'] : 'inputbox';

    $available = MPWEM_Functions::get_available_ticket( $event_id, $ticket_name, $date, $ticket_type );

    $available = apply_filters( 'mpwem_group_ticket_qty', $available, $event_id, $ticket_name );

    $available = max( 0, floor( $available ) );

    if ( $ticket_name && $ticket_qty > 0 ) {

    $input_data = [];

    $input_data['name'] = 'option_qty[]';

    $input_data['price'] = $ticket_price;

    $input_data['available'] = $available;

    $input_data['d_qty'] = $ticket_d_qty;

    $input_data['min_qty'] = $ticket_min_qty;

    $input_data['max_qty'] = $ticket_max_qty;

    $input_data['type'] = $ticket_input_type;

    $input_data = apply_filters( 'filter_mpwem_min_qty_must', $input_data, $event_id );

    $count ++;

    if ( $count > 1 ) { ?>

    <div class="_divider"></div>

    <?php } ?>

    <div class="mep_ticket_item">

    <div class="justify_between">

    <div class="">

    <h6><?php echo esc_html( $ticket_name ); ?></h6>

    <?php if ( $ticket_details ) { ?>

    <p><?php echo esc_html( $ticket_details ); ?></p>

    <?php } ?>

    <?php if ( $mep_available_seat == 'on' ) { ?>

    <div class="ticket-remaining xtra-item-left <?php echo $available <= 10 ? 'remaining-low' : 'remaining-high'; ?>">

    <?php echo esc_html( max( $available, 0 ) ) . __( ' Tickets remaining', 'mage-eventpress' ); ?>

    </div>

    <?php } ?>

    </div>

    <div class="">

    <h6 class="_text_center"><?php echo wc_price( $ticket_price_ ); ?></h6>

    <input type="hidden" name='option_name[]' value='<?php echo esc_attr( $ticket_name ); ?>'/>

    <input type="hidden" name='ticket_type[]' value='<?php echo esc_attr( $ticket_name ); ?>'/>

    <input type="hidden" name='ticket_category[]' value='<?php echo esc_attr( $tickets['group'] ); ?>'/>

    <?php do_action( 'mpwem_hidden_item_ticket', $ticket_name, $event_id ); ?>

    <?php

    if ( $exit_avail < 1 ) {

    $early_date = apply_filters( 'mpwem_early_date', true, $ticket_type, $event_id );

    if ( $early_date ) {

    $sale_end_datetime = array_key_exists( 'option_sale_end_date_t', $ticket_type ) && ! empty( $ticket_type['option_sale_end_date_t'] ) ? date( 'Y-m-d H:i', strtotime( $ticket_type['option_sale_end_date_t'] ) ) : '';

    if ( $sale_end_datetime ) {

    $current_time = current_time( 'Y-m-d H:i' );

    // Check if event is recurring

    $is_recurring = MPWEM_Global_Function::get_post_info( $event_id, 'mep_enable_recurring', 'no' ) === 'yes';

    // For recurring events, handle sale end date differently

    if ( $is_recurring && ! empty( $date ) ) {

    $event_start_datetime = date( 'Y-m-d H:i', strtotime( $date ) );

    $sale_end_timestamp = strtotime( $sale_end_datetime );

    $current_timestamp = strtotime( $current_time );

    $event_start_timestamp = strtotime( $event_start_datetime );

    // Get buffer time setting (in minutes, convert to seconds)

    $buffer_time = MPWEM_Global_Function::get_post_info( $event_id, 'mep_buffer_time', 0 ) * 60;

    $event_start_timestamp_minus_buffer = $event_start_timestamp - $buffer_time;

    // If sale end date has passed, allow sales until event start date (minus buffer time)

    // If sale end date hasn't passed, use it as the cutoff

    if ( $sale_end_timestamp < $current_timestamp ) {

    // Sale end date passed - allow sales until event start date minus buffer time

    $tickets_available = $current_timestamp < $event_start_timestamp_minus_buffer;

    $effective_end_date = date( 'Y-m-d H:i', $event_start_timestamp_minus_buffer );

    } else {

    // Sale end date hasn't passed - use it as cutoff

    $tickets_available = $current_timestamp < $sale_end_timestamp;

    $effective_end_date = $sale_end_datetime;

    }

    if ( $tickets_available ) {

    MPWEM_Custom_Layout::qty_input( $input_data );

    } else {

    // Show sale closed message

    ?>

    <span class='early-bird-future-date-txt' style="font-size: 12px;"><?php _e( 'Sale close On: ', 'mage-eventpress' );

    echo get_mep_datetime( $effective_end_date, 'date-time-text' ); ?></span>

    <input type="hidden" name="option_qty[]" value="0" data-price="<?php echo esc_attr( $ticket_price ); ?>"/>

    <?php

    }

    } else {

    // Non-recurring events: use existing logic

    if ( strtotime( $current_time ) < strtotime( $sale_end_datetime ) ) {

    MPWEM_Custom_Layout::qty_input( $input_data );

    } else {

    ?>

    <span class='early-bird-future-date-txt' style="font-size: 12px;"><?php _e( 'Sale close On: ', 'mage-eventpress' );

    echo get_mep_datetime( $sale_end_datetime, 'date-time-text' ); ?></span>

    <input type="hidden" name="option_qty[]" value="0" data-price="<?php echo esc_attr( $ticket_price ); ?>"/>

    <?php

    }

    }

    } else {

    MPWEM_Custom_Layout::qty_input( $input_data );

    }

    } else {

    $sale_start_datetime = array_key_exists( 'option_sale_start_date_t', $ticket_type ) && ! empty( $ticket_type['option_sale_start_date_t'] ) ? date( 'Y-m-d H:i', strtotime( $ticket_type['option_sale_start_date_t'] ) ) : '';

    ?>

    <span class='early-bird-future-date-txt' style="font-size: 12px;"><?php _e( 'Available On: ', 'mage-eventpress' );

    echo get_mep_datetime( $sale_start_datetime, 'date-time-text' ); ?></span>

    <input type="hidden" name="option_qty[]" value="0" data-price="<?php echo esc_attr( $ticket_price ); ?>"/>

    <?php

    }

    } else {

    ?> <input type="hidden" name="option_qty[]" value="0" data-price="<?php echo esc_attr( $ticket_price ); ?>"/><?php

    esc_html_e( 'Upcoming', 'mage-eventpress' );

    }

    $exit_avail = $available;

    ?>

    </div>

    </div>

    <?php do_action( 'mpwem_multi_attendee', $event_id ); ?>

    </div>

    <?php

    }

    }

    }

    ?>

    </div>

    <?php } ?>

    </div>

    <?php } ?>

    </div>

    </div>

    <?php

    }

    }

    } else {

    MPWEM_Layout::msg( esc_html__( 'Sorry, no ticket available', 'mage-eventpress' ) );

    }

    // echo '<pre>';print_r($total_ticket);echo '</pre>';

    // echo '<pre>';print_r($total_reserve);echo '</pre>';

    // echo '<pre>';print_r($total_sold);echo '</pre>';

    // echo '<pre>';print_r($all_dates);echo '</pre>';

    With this, you fix the issue and it is backward compatible for all events. It fixed the issue on my end.

Viewing 4 replies - 1 through 4 (of 4 total)