eventsmanager

[Updated] My Bookings page with Attendee Form List

Mar 25th, 2025 (edited)
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.01 KB | None | 0 0
  1. <?php
  2. /*This is a custom template for templates/my-bookings.php showing only future events*/
  3. ?>
  4. <?php do_action('em_template_my_bookings_header'); ?>
  5. <?php
  6. global $wpdb, $current_user, $EM_Notices, $EM_Person;
  7. if( is_user_logged_in() ):
  8. $EM_Person = new EM_Person( get_current_user_id() );
  9. $EM_Bookings = $EM_Person->get_bookings();
  10. $bookings_count = count($EM_Bookings->bookings);
  11.  
  12. /*update count since we are showing future events only*/
  13. $bookings_count=0;
  14. foreach ($EM_Bookings as $EM_Booking) {
  15. $EM_Event = $EM_Booking->get_event();
  16. $todays_date = date("Y-m-d");
  17. $today = strtotime($todays_date);
  18. if( $EM_Event->start >= $today ) {
  19. $bookings_count++;
  20. }
  21. }
  22. /*update count since we are showing future events only*/
  23.  
  24. if($bookings_count > 0){
  25. //Get events here in one query to speed things up
  26. $event_ids = array();
  27. foreach($EM_Bookings as $EM_Booking){
  28. $event_ids[] = $EM_Booking->event_id;
  29. }
  30. }
  31. $limit = ( !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit
  32. $page = ( !empty($_GET['pno']) ) ? $_GET['pno']:1;
  33. $offset = ( $page > 1 ) ? ($page-1)*$limit : 0;
  34. echo $EM_Notices;
  35. ?>
  36. <div class='<?php em_template_classes('my-bookings'); ?>'>
  37. <?php if ( $bookings_count >= $limit ) : ?>
  38. <div class='tablenav'>
  39. <?php
  40. if ( $bookings_count >= $limit ) {
  41. $link = em_add_get_params($_SERVER['REQUEST_URI'], array('pno'=>'%PAGE%'), false); //don't html encode, so em_paginate does its thing
  42. $bookings_nav = em_paginate( $link, $bookings_count, $limit, $page);
  43. echo $bookings_nav;
  44. }
  45. ?>
  46. <div class="clear"></div>
  47. </div>
  48. <?php endif; ?>
  49. <div class="clear"></div>
  50. <?php if( $bookings_count > 0 ): ?>
  51. <div class='table-wrap'>
  52. <table id='dbem-bookings-table' class='widefat post fixed'>
  53. <thead>
  54. <tr>
  55. <th class='manage-column' scope='col'><?php _e('Event', 'events-manager'); ?></th>
  56. <th class='manage-column' scope='col'><?php _e('Date', 'events-manager'); ?></th>
  57. <th class='manage-column' scope='col'><?php _e('Spaces', 'events-manager'); ?></th>
  58. <th class='manage-column' scope='col'><?php _e('Attendees', 'events-manager'); ?></th>
  59. <th class='manage-column' scope='col'><?php _e('Status', 'events-manager'); ?></th>
  60. <th class='manage-column' scope='col'>&nbsp;</th>
  61. </tr>
  62. </thead>
  63. <tbody>
  64. <?php
  65. $rowno = 0;
  66. $event_count = 0;
  67. $nonce = wp_create_nonce('booking_cancel');
  68. foreach ($EM_Bookings as $EM_Booking) {
  69. /* @var $EM_Booking EM_Booking */
  70. $EM_Event = $EM_Booking->get_event();
  71. $todays_date = date("Y-m-d");
  72. $today = strtotime($todays_date);
  73. if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) && ( $EM_Event->start >= $today ) ) {
  74. $rowno++;
  75. ?>
  76. <tr>
  77. <td><?php echo $EM_Event->output("#_EVENTLINK"); ?></td>
  78. <td><?php echo $EM_Event->start()->i18n( get_option('dbem_date_format') ); ?></td>
  79. <td><?php echo $EM_Booking->get_spaces() ?></td>
  80. <td>
  81. <?php
  82.  
  83. $attendees_list = "<ul style='padding-left:20px'>";
  84.  
  85. foreach( $EM_Booking->get_tickets_bookings()->get_ticket_bookings() as $EM_Ticket_Bookings ){
  86.  
  87. foreach( $EM_Ticket_Bookings as $EM_Ticket_Booking ){
  88.  
  89. $sql = "SELECT * FROM ". EM_TICKETS_BOOKINGS_META_TABLE ." WHERE ticket_booking_id = %d";
  90. $sql = $wpdb->prepare( $sql, $EM_Ticket_Booking->ticket_booking_id );
  91. $EM_ATTENDEES = $wpdb->get_results($sql, ARRAY_A);
  92.  
  93. //$EM_Ticket_Booking->ticket->ticket_name
  94.  
  95. $sql = "SELECT * FROM ". EM_TICKETS_BOOKINGS_META_TABLE ." WHERE ticket_booking_id = %d";
  96. $sql = $wpdb->prepare( $sql, $EM_Ticket_Booking->ticket_booking_id );
  97. $EM_ATTENDEES = $wpdb->get_results($sql, ARRAY_A);
  98. foreach( $EM_ATTENDEES as $EM_ATTENDEE ){
  99. if ( !empty($EM_ATTENDEE['meta_value']) ){
  100. $attendees_list .= "<li>" . $EM_ATTENDEE['meta_value'] . "<li>";
  101. }
  102. }
  103.  
  104. }
  105. }
  106.  
  107.  
  108. $attendees_list .= "</ul>";
  109.  
  110. echo $attendees_list;
  111.  
  112. ?>
  113. </td>
  114. <td>
  115. <?php echo $EM_Booking->get_status(); ?>
  116. </td>
  117. <td>
  118. <?php
  119. $cancel_link = '';
  120. if( !in_array($EM_Booking->booking_status, array(2,3)) && $EM_Booking->can_cancel() ){
  121. $cancel_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'booking_cancel', 'booking_id'=>$EM_Booking->booking_id, '_wpnonce'=>$nonce));
  122. $cancel_link = '<a class="em-bookings-cancel" href="'.$cancel_url.'" onclick="if( !confirm(EM.booking_warning_cancel) ){ return false; }">'.__('Cancel','events-manager').'</a>';
  123. }
  124. echo apply_filters('em_my_bookings_booking_actions', $cancel_link, $EM_Booking);
  125. ?>
  126. </td>
  127. </tr>
  128. <?php
  129. }
  130. do_action('em_my_bookings_booking_loop',$EM_Booking);
  131. $event_count++;
  132. }
  133. ?>
  134. </tbody>
  135. </table>
  136. </div>
  137. <?php else: ?>
  138. <?php _e('You do not have any bookings.', 'events-manager'); ?>
  139. <?php endif; ?>
  140. <?php if( !empty($bookings_nav) && $bookings_count >= $limit ) : ?>
  141. <div class='tablenav'>
  142. <?php echo $bookings_nav; ?>
  143. <div class="clear"></div>
  144. </div>
  145. <?php endif; ?>
  146. </div>
  147. <?php do_action('em_template_my_bookings_footer', $EM_Bookings); ?>
  148. <?php else: ?>
  149. <p><?php echo sprintf(__('Please <a href="%s">Log In</a> to view your bookings.','events-manager'),site_url('wp-login.php?redirect_to=' . urlencode(get_permalink()), 'login'))?></p>
  150. <?php endif; ?>
  151. <style>
  152. li:empty{ display:none; }
  153. </style>
Advertisement
Add Comment
Please, Sign In to add comment