Advertisement
Beee

Bookingsform

Aug 31st, 2016
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.96 KB | None | 0 0
  1. <?php
  2. /*
  3.  * This is where the booking form is generated.
  4.  */
  5.  
  6. /* @var $EM_Event EM_Event */
  7. global $EM_Notices;
  8.  
  9. // count tickets and available tickets
  10. $tickets_count = count($EM_Event->get_bookings()->get_tickets()->tickets);
  11. $available_tickets_count = count($EM_Event->get_bookings()->get_available_tickets());
  12. // decide whether user can book, event is open for bookings etc.
  13. $can_book       = is_user_logged_in() || (get_option('dbem_bookings_anonymous') && !is_user_logged_in());
  14. $is_open        = $EM_Event->get_bookings()->is_open(); // whether there are any available tickets right now
  15. $show_tickets   = true;
  16.  
  17. // if user is logged out, check for member tickets that might be available, since we should ask them to log in instead of saying 'bookings closed'
  18. if ( !$is_open && !is_user_logged_in() && $EM_Event->get_bookings()->is_open(true) ){
  19.     $is_open = true;
  20.     $can_book = false;
  21.     $show_tickets = get_option('dbem_bookings_tickets_show_unavailable') && get_option('dbem_bookings_tickets_show_member_tickets');
  22. }
  23.  
  24. if ( $EM_Event->post_id == '6977' ) {
  25.     $is_open = true;
  26.     $can_book = 'true';
  27.     $show_tickets = 'true';
  28. } ?>
  29. <div id="em-booking" class="em-booking <?php if( get_option('dbem_css_rsvp') ) echo 'css-booking'; ?>">
  30.     <?php
  31.         // We are firstly checking if the user has already booked a ticket at this event, if so offer a link to view their bookings.
  32.         $EM_Booking = $EM_Event->get_bookings()->has_booking();
  33.  
  34.         if ( is_object($EM_Booking) && !get_option('dbem_bookings_double') ) : // Double bookings not allowed
  35.             echo '<p>';
  36.                 echo get_option('dbem_bookings_form_msg_attending');
  37.                 echo ' <a href="' . em_get_my_bookings_url() . '">' . get_option('dbem_bookings_form_msg_bookings_link') . '</a>';
  38.             echo '</p>';
  39.         elseif ( !$EM_Event->event_rsvp ) : // bookings not enabled
  40.             echo '<p>'.get_option('dbem_bookings_form_msg_disabled').'</p>';
  41.         elseif ( $EM_Event->get_bookings()->get_available_spaces() <= 0 ) : // if available spaces is less than 1
  42.             echo '<p>'.get_option('dbem_bookings_form_msg_full').'</p>';
  43.         elseif ( !$is_open ) : // event has started
  44.  
  45.             // remove bookings closed message from database
  46.             // echo "<p>" . get_option('dbem_bookings_form_msg_closed') , "</p>";
  47.  
  48.             // this part is probably not used anymore
  49.  
  50.             // add ticket table
  51.             do_action('em_booking_form_before_tickets', $EM_Event); // do not delete
  52.             em_locate_template('forms/bookingform/tickets-list.php', true, array('EM_Event' => $EM_Event));
  53.             do_action('em_booking_form_after_tickets', $EM_Event); // do not delete
  54.  
  55.             // custom bookings closed message
  56.             global $EM_Event;
  57.             $tz_offset          = get_option('gmt_offset');
  58.             $tz_diff            = '+'.get_option('gmt_offset').' hours';
  59.             $bookingsstart      = "";
  60.             $now                = date("Y-m-d H:i:s");
  61.             if ( $tz_offset == 1 ) { $dst = 'CET'; } else if ( $tz_offset == 2 ) { $dst = 'CEST'; }
  62.             foreach( $EM_Event->get_tickets()->tickets as $EM_Ticket ) {
  63.                 // $bookingsstart   = $EM_Ticket->ticket_start;
  64.                 if ( $EM_Ticket->is_available() || get_option('dbem_bookings_tickets_show_unavailable') ) {
  65.                     if ( in_array($user_role, $EM_Ticket->ticket_members_roles )) {
  66.                         if ( $EM_Ticket->ticket_start < $min || $min == 0 ) {
  67.                           $min = $EM_Ticket->ticket_start;
  68.                         }
  69.                     } else {
  70.                         if ( $EM_Ticket->ticket_start > $min ) {
  71.                             $min = $EM_Ticket->ticket_start;
  72.                         }
  73.                   }
  74.                 }
  75.             }
  76.             $rsvp               = '';
  77.             $rsvp               .= $EM_Event->event_rsvp_date;
  78.             $rsvp               .= ' ';
  79.             $rsvp               .= $EM_Event->event_rsvp_time;
  80.             $countdownformat    = date("d M Y H:i:s", strtotime($bookingsstart));
  81.             $nowstring          = strtotime($now);
  82.             $startstring        = strtotime($bookingsstart);
  83.             $endstring          = strtotime($rsvp);
  84.  
  85.             if ( !empty($startstring) ) { // if start date is set
  86.                 if ( $nowstring > $startstring ) { // if start date has passed
  87.                     if ( $nowstring > $endstring ) { // if end date has passed
  88.                         $regstatus = 'Sorry, you\'re too late. Registrations are closed.';
  89.                     } else { // if end date has not passed yet
  90.  
  91.                         // if ( is_user_logged_in() && !current_user_can('access_s2member_level1') ) {
  92.                         if ( !$EM_Event->get_bookings()->is_open() ) {
  93.                             $regstatus = 'Registration is now open for paying members, but it seems you are not a paying member anymore. You first need to renew your membership before you can register. You can do this from your <a href="' . $homeurl . '/my-idf/">profile page</a>';
  94.                         } else {
  95.                             $regstatus = 'Registration is now open for registered, paying members. If you\'re an IDF member already, login or become a paying member <a href="' . $homeurl . '/join-idf/">here</a>.';
  96.                             // add login form here
  97.                         }
  98.  
  99.                     }
  100.                 } else { // if start date hasn't passed
  101.                     $regstatus = 'Registration will start ' . do_shortcode('[fergcorp_cdt_single date="' . $countdownformat . ' ' . $dst . '"]');
  102.                     if ( is_user_logged_in() && !current_user_can('access_s2member_level1') ) {
  103.                         $regstatus .= ', but you first need to renew your IDF membership fee to register for this event [add renew link]';
  104.                     } else if ( current_user_can('access_s2member_level1') ) {
  105.                         $regstatus .= '';
  106.                     } else {
  107.                         $regstatus .= '.</p><p>Make sure you have paid your annual IDF membership fee to register for this event. You can check this on your personal profile page.</p><p>If you don\'t have an IDF number yet, you can register for one <a href="'.$homeurl.'/join-idf/">here</a>';
  108.                     }
  109.                     $regstatus .= '.';
  110.  
  111.                 }
  112.             }
  113.             echo "<p>" . $regstatus . "</p>";
  114.             // if registrations are open and user is not logged in
  115.             if ( !empty($startstring) && $nowstring > $startstring && $nowstring < $endstring && !is_user_logged_in() && get_option('dbem_bookings_login_form') ) {
  116.                 // echo '<p>Login to register for this event.</p>';
  117.                 em_locate_template('forms/bookingform/login.php', true, array('EM_Event' => $EM_Event));
  118.             }
  119. ?>
  120.     <?php else: // show bookingsform
  121.         echo $EM_Notices;
  122.         if ( $tickets_count > 0 ) : // Tickets exist, so we show a booking form. ?>
  123.             <form class="em-booking-form" name='booking-form' method='post' action='<?php echo apply_filters('em_booking_form_action_url',''); ?>#em-booking'>
  124.                 <input type='hidden' name='action' value='booking_add'/>
  125.                 <input type='hidden' name='event_id' value='<?php echo $EM_Event->get_bookings()->event_id; ?>'/>
  126.                 <input type='hidden' name='_wpnonce' value='<?php echo wp_create_nonce('booking_add'); ?>'/>
  127.                 <?php
  128.                     // add warning that dob is incorrect.
  129.                     $currentrider   = get_current_user_id();
  130.                     // variables for d.o.b.
  131.                     $benchmark      = '31-12-'.date("Y");
  132.                     $benchmark_ts   = strtotime( $benchmark );
  133.                     $tz_offset      = get_option('gmt_offset');
  134.                     $tz_diff        = '+'.get_option('gmt_offset').' hours';
  135.                     $now_date       = date('Y-m-d  H:i:s', strtotime($tz_diff));
  136.                     $now_ts         = strtotime( $now_date );
  137.                     $dob            = str_replace('/', '-', get_user_field('date_of_birth', get_current_user_id() ) );
  138.                     $dob_ts         = strtotime( $dob );
  139.  
  140.                     // calculate age
  141.                     $unixage        = $benchmark_ts - $dob_ts;
  142.                     $age            = floor($unixage / (365 * 24 * 60 * 60));
  143.  
  144.                     // Tickets Form
  145.                     if ( $show_tickets && ($can_book || get_option('dbem_bookings_tickets_show_loggedout')) && ($tickets_count > 1 || get_option('dbem_bookings_tickets_single_form')) ) { //show if more than 1 ticket, or if in forced ticket list view mode
  146.                         do_action('em_booking_form_before_tickets', $EM_Event); // do not delete
  147.                         // Show multiple tickets form to user, or single ticket list if settings enable this
  148.                         // If logged out, can be allowed to see this in settings witout the register form
  149.                         em_locate_template('forms/bookingform/tickets-list.php', true, array('EM_Event' => $EM_Event));
  150.                         do_action('em_booking_form_after_tickets', $EM_Event); //do not delete
  151.                         $show_tickets = false;
  152.                     }
  153.  
  154.                     if ( $can_book ) : ?>
  155.                     <div class='em-booking-form-details'>
  156.                         <?php
  157.                             if ( $show_tickets && $available_tickets_count == 1 && !get_option('dbem_bookings_tickets_single_form') ){
  158.                                 do_action('em_booking_form_before_tickets', $EM_Event); //do not delete
  159.                                 // show single ticket form, only necessary to show to users able to book (or guests if enabled)
  160.                                 $EM_Ticket = $EM_Event->get_bookings()->get_available_tickets()->get_first();
  161.                                 em_locate_template('forms/bookingform/ticket-single.php', true, array('EM_Event' => $EM_Event, 'EM_Ticket' => $EM_Ticket));
  162.                                 do_action('em_booking_form_after_tickets', $EM_Event); //do not delete
  163.                             }
  164.  
  165.                             do_action('em_booking_form_before_user_details', $EM_Event);
  166.  
  167.                             // add fields for non-logged in users
  168.                             if ( has_action('em_booking_form_custom') ){
  169.                                 // Pro Custom Booking Form. You can create your own custom form by hooking into this action and setting the option above to true
  170.                                 do_action('em_booking_form_custom', $EM_Event); // do not delete
  171.                             } else {
  172.                                 // If you just want to modify booking form fields, you could do so here
  173.                                 em_locate_template('forms/bookingform/booking-fields.php', true, array('EM_Event' => $EM_Event));
  174.                             }
  175.                             do_action('em_booking_form_after_user_details', $EM_Event);
  176.  
  177.                             do_action('em_booking_form_footer', $EM_Event); // do not delete
  178.                         ?>
  179.                         <div class="em-booking-buttons">
  180.                             <?php if ( preg_match('/https?:\/\//', get_option('dbem_bookings_submit_button')) ) : // Settings have an image url (we assume). Use it here as the button.?>
  181.                             <input type="image" src="<?php echo get_option('dbem_bookings_submit_button'); ?>" class="em-booking-submit" id="em-booking-submit" />
  182.                             <?php else : // Display normal submit button ?>
  183.                             <input type="submit" class="em-booking-submit" id="em-booking-submit" value="<?php echo esc_attr(get_option('dbem_bookings_submit_button')); ?>" />
  184.                             <?php endif; ?>
  185.                         </div>
  186.                         <?php do_action('em_booking_form_footer_after_buttons', $EM_Event); // do not delete
  187.                         ?>
  188.                     </div>
  189.                 <?php else : ?>
  190.                     <p class="em-booking-form-details"><?php echo get_option('dbem_booking_feedback_log_in'); ?></p>
  191.                 <?php endif; ?>
  192.             </form>
  193.             <?php
  194.             if ( !is_user_logged_in() && get_option('dbem_bookings_login_form') ) {
  195.                 // User is not logged in, show login form (enabled on settings page)
  196.                 if ( $EM_Event->post_id == '5436' && !is_user_logged_in() ) { // if event is insul, show gravityform to register unregistered riders
  197.                     // echo do_shortcode('[gravityform id="4" title="true" description="true" ajax="true"]');
  198.                 } else {
  199.                     em_locate_template('forms/bookingform/login.php', true, array('EM_Event' => $EM_Event));
  200.                 }
  201.             }
  202.             ?>
  203.             <br class="clear" style="clear:left;" />
  204.         <?php endif; ?>
  205.     <?php endif; ?>
  206. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement