MAJOR:Attendee Information not being saved

Home Forums Ticket Products Event Tickets Plus MAJOR:Attendee Information not being saved

Viewing 15 posts - 1 through 15 (of 22 total)
  • Author
    Posts
  • #1178693
    Kim
    Participant

    Hi,

    I have big problem, i cant see that attendee information being saved? I have set up a lot of events with two o three tickets types to each event, and every ticket type have attendee information that is requeried to filled in. But i cant se this infromation on attendee list or in csv export or when the user in frontend show his ticket on the event and toggle the attendee information.

    So is this a bug or do i something wrong?

    I have already go live and havent notice that before and have now 100 ticket sold and on one day i will open for 500 new tickets and this must work…

    /Kimpa

    #1178914
    Kim
    Participant

    I have find that the information is saved in the DB i wp_postmeta, but i cant se it in frontend or backend. There is it empty. Show details link in backend is not showing up.

    /Kimpa

    #1179203
    George
    Participant

    Hey Kim,

    I am sorry for the trouble here.

    I cannot reproduce this behavior, and we have no reports of this from other customers, so this seems to be unique to your site.

    1. Can you please share links to event pages on your site where there are tickets with “Additional Information” fields? I will look at them up front.

    2. Can you please share a screenshot of where you expect to see attendee information, but do not see it? You can do so by uploading the screenshots to this thread. If you have issues with that, you can upload to Imgur.com, Flickr.com, CloudUp.com, or any similar image-hosting site; then just share the links to those images here and I’ll take a look.

    3. Can you please confirm when this issue started happening? Did it all work fine before, and then you updated to 4.3 this week, and suddenly it breaks?

    Thank you!
    George

    #1179336
    Kim
    Participant

    Hi,

    Ok. Here comes my answer:

    1. You got it here: http://frolundacamps.se/camp/lovcamp-fodda-02-04-11-12april/

    2. I have upload tree screenshots, one that i want the attendee info should be possible to view in attendeent list with the button “Show details” but the link dosent exist as you can se. I one screenshot when i export the csv file and den addtional information not comes with the export. Its just empty. and the last one frpm phpmyadmin that i have search in postsmeta data and can find the information.

    3. I dont sure, but its was problem before i upgrade to 4.3. I think it comes when i added more events and tickets, when i test the plugin i just test with one event with one tickettype and then it was ok. But after that it will just stop working.

    Here can you see my custom code in functions.php, if that could be a problem?

    /* Disable tickets emails for Woo */
    add_filter( 'wootickets-tickets-email-enabled', '__return_false' );
     
    /* Remove the message 'You'll receive your tickets in another email' from the Woo Order email */
    add_filter( 'wootickets_email_message', '__return_empty_string' );
    
    /* Fliter startpage posts to only set categories */
    add_action('pre_get_posts', 'ad_filter_categories');
    function ad_filter_categories($query) {
        if ($query->is_main_query() && is_home()) {
            $query->set('category_name','uncategorized, nyheter, info');
        }
    }
    
    /* Tar bort Tickets Form i botten på Singel Event sidan */
    if ( class_exists( 'Tribe__Tickets_Plus__Commerce__WooCommerce__Main' ) ) {
    	
    	// Remove the form from its default location (after the meta).
    	remove_action('tribe_events_single_event_after_the_meta', array(Tribe__Tickets_Plus__Commerce__WooCommerce__Main::get_instance(), 'front_end_tickets_form' ), 5 );
    }
    
    /* Lägger Ticket i toppen på singel event sidan */
    if ( class_exists( 'Tribe__Tickets_Plus__Commerce__WooCommerce__Main' ) ) {
    
    	// Place the form in the new location (before the content).
    	add_action('tribe_events_single_event_before_the_content', array(Tribe__Tickets_Plus__Commerce__WooCommerce__Main::get_instance(), 'front_end_tickets_form' ), 5 );

    And this file tickets.php:

    <?php
    /**
     * Renders the WooCommerce tickets table/form
     *
     * @version 4.2.7
     *
     * @var bool $global_stock_enabled
     * @var bool $must_login
     */
    global $woocommerce;
    
    $is_there_any_product         = false;
    $is_there_any_product_to_sell = false;
    $unavailability_messaging     = is_callable( array( $this, 'do_not_show_tickets_unavailable_message' ) );
    
    ob_start();
    ?>
    <form action="<?php echo esc_url( $woocommerce->cart->get_cart_url() ) ?>" class="cart" method="post" enctype='multipart/form-data'>
    	<h2 class="tribe-events-tickets-title"><?php esc_html_e( 'Tickets', 'event-tickets-plus' ) ?></h2>
    
    	<table width="100%" class="tribe-events-tickets">
    		<?php
    		foreach ( $tickets as $ticket ) {
    			/**
    			 * @var Tribe__Tickets__Ticket_Object $ticket
    			 * @var WC_Product $product
    			 */
    			global $product;
    
    			if ( class_exists( 'WC_Product_Simple' ) ) {
    				$product = new WC_Product_Simple( $ticket->ID );
    			} else {
    				$product = new WC_Product( $ticket->ID );
    			}
    
    			if ( $ticket->date_in_range( current_time( 'timestamp' ) ) ) {
    
    				$is_there_any_product = true;
    				$data_product_id = 'data-product-id="' . esc_attr( $ticket->ID ) . '"';
    
    				echo sprintf( '<input type="hidden" name="product_id[]" value="%d">', esc_attr( $ticket->ID ) );
    
    				echo '<tr>';
    				echo '<td class="woocommerce" ' . $data_product_id . '>';
    
    				if ( $product->is_in_stock() ) {
    					// Max quantity will be left open if backorders allowed, restricted to 1 if the product is
    					// constrained to be sold individually or else set to the available stock quantity
    					$max_quantity = $product->backorders_allowed() ? '' : $product->get_stock_quantity();
    					$max_quantity = $product->is_sold_individually() ? 1 : $max_quantity;
    					$original_stock = $ticket->original_stock();
    
    					// For global stock enabled tickets with a cap, use the cap as the max quantity
    					if ( $global_stock_enabled && Tribe__Tickets__Global_Stock::CAPPED_STOCK_MODE === $ticket->global_stock_mode()) {
    						$max_quantity = $ticket->global_stock_cap();
    						$original_stock = $ticket->global_stock_cap();
    					}
    
    					woocommerce_quantity_input( array(
    						'input_name'  => 'quantity_' . $ticket->ID,
    						'input_value' => 0,
    						'min_value'   => 0,
    						'max_value'   => $must_login ? 0 : $max_quantity, // Currently WC does not support a 'disable' attribute
    					) );
    
    					$is_there_any_product_to_sell = true;
    
    					$remaining = $ticket->remaining();
    
    					if ( $remaining ) {
    						?>
    						<span class="tribe-tickets-remaining">
    							<?php
    							echo sprintf( esc_html__( '%1$s available', 'event-tickets-plus' ),
    								'<span class="available-stock" ' . $data_product_id . '>' . esc_html( $remaining ) . '</span>'
    							);
    							?>
    						</span>
    						<?php
    					}
    
    					do_action( 'wootickets_tickets_after_quantity_input', $ticket, $product );
    				} else {
    					echo '<span class="tickets_nostock">' . esc_html__( 'Out of stock!', 'event-tickets-plus' ) . '</span>';
    				}
    				echo '</td>';
    
    				echo '<td class="tickets_name">';
    				echo $ticket->name;
    				echo '</td>';
    
    				echo '<td class="tickets_price">';
    				echo $this->get_price_html( $product );
    				echo '</td>';
    
    				echo '<td class="tickets_description">';
    				echo $ticket->description;
    				echo '</td>';
    
    				echo '</tr>';
    
    				if ( class_exists( 'Tribe__Tickets_Plus__Attendees_List' ) && ! Tribe__Tickets_Plus__Attendees_List::is_hidden_on( get_the_ID() ) ) {
    					echo '<tr class="tribe-tickets-attendees-list-optout">' . '<td colspan="4">' .
    						 '<input type="checkbox" name="optout_' . $ticket->ID . '" id="tribe-tickets-attendees-list-optout-woo">' .
    						 '<label for="tribe-tickets-attendees-list-optout-woo">' . esc_html__( 'Don\'t list me on the public attendee list', 'event-tickets' ) . '</label>' . '</td>' .
    						 '</tr>';
    				}
    
    				include Tribe__Tickets_Plus__Main::instance()->get_template_hierarchy( 'meta.php' );
    			}
    		}
    
    		if ( $is_there_any_product_to_sell ) {
    			?>
    			<tr>
    				<td colspan="4" class="woocommerce add-to-cart">
    					<?php if ( $must_login ): ?>
    						<?php include Tribe__Tickets_Plus__Main::instance()->get_template_hierarchy( 'login-to-purchase' ); ?>
    					<?php else: ?>
    						<button type="submit" name="wootickets_process" value="1"
    							class="button alt"><?php esc_html_e( 'Add to cart', 'event-tickets-plus' );?></button>
    					<?php endif; ?>
    				</td>
    			</tr>
    			<?php
    		} ?>
    	</table>
    </form>
    
    <?php
    $content = ob_get_clean();
    if ( $is_there_any_product ) {
    	echo $content;
    
    	// @todo remove safeguard in 4.3 or later
    	if ( $unavailability_messaging ) {
    		// If we have rendered tickets there is generally no need to display a 'tickets unavailable' message
    		// for this post
    		$this->do_not_show_tickets_unavailable_message();
    	}
    } else {
    	// @todo remove safeguard in 4.3 or later
    	if ( $unavailability_messaging ) {
    		$unavailability_message = $this->get_tickets_unavailable_message( $tickets );
    
    		// if there isn't an unavailability message, bail
    		if ( ! $unavailability_message ) {
    			return;
    		}
    	}
    	echo '<h2><i>Anmälningen till denna camp är inte öppen! När anmälningen är öppen kommer beställnings formulär att synas här!</i></h2>';
    }
    

    And text.php in meta:

    <?php
    /**
     * Renders text field
     *
     * @version 4.2.5
     *
     */
    $multiline = isset( $field['extra'] ) && isset( $field['extra']['multiline'] ) ? $field['extra']['multiline'] : '';
    $option_id = "tribe-tickets-meta_{$this->slug}" . ( $attendee_id ? '_' . $attendee_id : '' );
    ?>
    <div class="tribe-tickets-meta tribe-tickets-meta-text <?php echo $required ? 'tribe-tickets-meta-required' : ''; ?>">
    	<label for="<?php echo esc_attr( $option_id ); ?>"><?php echo wp_kses_post( $field['label'] ); ?></label>
    	<?php
    	if ( $multiline ) {
    		?>
    		<textarea
    			id="<?php echo esc_attr( $option_id ); ?>"
    			class="ticket-meta"
    			name="tribe-tickets-meta[<?php echo $attendee_id ?>][<?php echo esc_attr( $this->slug ); ?>]"
    			<?php echo $required ? 'required' : ''; ?>
    			<?php disabled( $this->is_restricted( $attendee_id ) ); ?>
    		><?php echo esc_textarea( $value ); ?></textarea>
    		<?php
    	} else {
    		?>
    		<input
    			id="<?php echo esc_attr( $option_id ); ?>"
    			class="ticket-meta"
    			name="tribe-tickets-meta[<?php echo $attendee_id ?>][<?php echo esc_attr( $this->slug ); ?>]"
    			value="<?php echo esc_attr( $value ); ?>"
    			<?php if(esc_attr( $option_id ) == "tribe-tickets-meta_personnummer") { ?> 
    			pattern="^[12]{1}[90]{1}[0-9]{6}-[0-9]{4}$"
    			placeholder="20010101-9898"<?php } ?>
    			<?php if(esc_attr( $option_id ) == "tribe-tickets-meta_langd") { ?>
    			type="number" <?php } else { ?> type="text" <?php } ?>
    			<?php echo $required ? 'required' : ''; ?>
    			<?php disabled( $this->is_restricted( $attendee_id ) ); ?>
    		>
    		<?php
    	}
    	?>
    </div>
    

    And singel-events.php:

    <?php
    /**
     * Single Event Template
     * A single event. This displays the event title, description, meta, and
     * optionally, the Google map for the event.
     *
     * Override this template in your own theme by creating a file at [your-theme]/tribe-events/single-event.php
     *
     * @package TribeEventsCalendar
     * @version 4.2.4
     *
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
    	die( '-1' );
    }
    
    $events_label_singular = tribe_get_event_label_singular();
    $events_label_plural = tribe_get_event_label_plural();
    
    $event_id = get_the_ID();
    
    ?>
    
    <div id="tribe-events-content" class="tribe-events-single">
    
    	<p class="tribe-events-back">
    		<a href="<?php echo esc_url( tribe_get_events_link() ); ?>"> <?php printf( '&laquo; ' . esc_html__( 'All %s', 'the-events-calendar' ), $events_label_plural ); ?></a>
    	</p>
    
    	<!-- Notices -->
    	<?php tribe_the_notices() ?>
    
    	<?php the_title( '<h1 class="tribe-events-single-event-title">', '</h1>' ); ?>
    
    	<div class="tribe-events-schedule tribe-clearfix">
    		<?php echo tribe_events_event_schedule_details( $event_id, '<h2>', '</h2>' ); ?>
    		<!-- <?php if ( tribe_get_cost() ) : ?>
    			<span class="tribe-events-cost"><?php echo tribe_get_cost( null, true ) ?></span>
    		<?php endif; ?> -->
    	</div>
    
    	<!-- Event header -->
    	<div id="tribe-events-header" <?php tribe_events_the_header_attributes() ?>>
    		<!-- Navigation -->
    		<h3 class="tribe-events-visuallyhidden"><?php printf( esc_html__( '%s Navigation', 'the-events-calendar' ), $events_label_singular ); ?></h3>
    		<ul class="tribe-events-sub-nav">
    			<li class="tribe-events-nav-previous"><?php tribe_the_prev_event_link( '<span>&laquo;</span> %title%' ) ?></li>
    			<li class="tribe-events-nav-next"><?php tribe_the_next_event_link( '%title% <span>&raquo;</span>' ) ?></li>
    		</ul>
    		<!-- .tribe-events-sub-nav -->
    	</div>
    	<!-- #tribe-events-header -->
    
    	<?php while ( have_posts() ) :  the_post(); ?>
    		<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    			<!-- Event featured image, but exclude link -->
    			<?php echo tribe_event_featured_image( $event_id, 'full', false ); ?>
    
    			<!-- Event content -->
    			<?php do_action( 'tribe_events_single_event_before_the_content' ) ?>
    			<div class="tribe-events-single-event-description tribe-events-content">
    				<?php the_content(); ?>
    			</div>
    			<!-- .tribe-events-single-event-description -->
    			<?php do_action( 'tribe_events_single_event_after_the_content' ) ?>
    
    			<!-- Event meta -->
    			<?php do_action( 'tribe_events_single_event_before_the_meta' ) ?>
    			<?php tribe_get_template_part( 'modules/meta' ); ?>
    			<?php do_action( 'tribe_events_single_event_after_the_meta' ) ?>
    		</div> <!-- #post-x -->
    		<?php if ( get_post_type() == Tribe__Events__Main::POSTTYPE && tribe_get_option( 'showComments', false ) ) comments_template() ?>
    	<?php endwhile; ?>
    
    	<!-- Event footer -->
    	<div id="tribe-events-footer">
    		<!-- Navigation -->
    		<h3 class="tribe-events-visuallyhidden"><?php printf( esc_html__( '%s Navigation', 'the-events-calendar' ), $events_label_singular ); ?></h3>
    		<ul class="tribe-events-sub-nav">
    			<li class="tribe-events-nav-previous"><?php tribe_the_prev_event_link( '<span>&laquo;</span> %title%' ) ?></li>
    			<li class="tribe-events-nav-next"><?php tribe_the_next_event_link( '%title% <span>&raquo;</span>' ) ?></li>
    		</ul>
    		<!-- .tribe-events-sub-nav -->
    	</div>
    	<!-- #tribe-events-footer -->
    
    </div><!-- #tribe-events-content -->
    
    #1179550
    George
    Participant

    Hi Kim,

    Thanks for this information.

    Since I cannot recreate your problems, here is what I recommend doing:

    1. First, make a backup of ALL custom code on your site: the functions.php file, your other template customizations, anything else, etc. Make a backup of it all.

    2. Then, remove ALL custom coding from your site.

    3. With your site in the state where NO CUSTOM CODING AT ALL is active on your site, how do things behave? Test for the attendee info being displayed — make test events and test tickets to test things, if need be. How do things behave?

    4. If issues persist even in this state, then leave all custom code off of your site, and then proceed with the complete troubleshooting steps outlined here → https://theeventscalendar.com/knowledgebase/testing-for-conflicts/

    5. After EACH STEP in that testing process shared in #4, test for the attendee info being displayed — make test events and test tickets to test things, if need be. How do things behave?

    ☝️ This testing process is thorough and should reveal for good if there is a code conflict happening here.

    Let us know what you find!
    George

    #1179744
    Kim
    Participant

    Hi,

    Now i have inactivate all-plugins and then activate the again (Follow-Ips Email and WooCommerce Deposit).
    And after that test and that work, after that i activate and again and after that everything works again.
    Its work for only new tickets not old.

    For Old tickets i can find the information in db thru phpmyadmin, but its seems to not show up on attendeen list for old tickets that have been order before i reactivate plugins. But new order on same tickets work?

    Så i think it was some problem with the relationship between the metadata and the Event? So who can i see if the relation is correct in the db?

    #1179961
    George
    Participant

    Hi Kim,

    So, to be clear, for any new tickets you make, there are no issues at all?

    Just want to see if this is the case.

    — George

    #1179964
    Kim
    Participant

    Thats correct!

    #1179992
    George
    Participant

    This reply is private.

    #1180077
    Kim
    Participant

    This reply is private.

    #1180440
    Kim
    Participant

    Could you see my private messages?

    #1181107
    George
    Participant

    This reply is private.

    #1182347
    Kim
    Participant

    This reply is private.

    #1182496
    George
    Participant

    This reply is private.

    #1182656
    Kim
    Participant

    This reply is private.

Viewing 15 posts - 1 through 15 (of 22 total)
  • The topic ‘MAJOR:Attendee Information not being saved’ is closed to new replies.