eventsmanager

Custom em_booking_validate for dependent_events

Sep 25th, 2026
21,299
-2
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 2
  1. <?php
  2.  
  3. add_filter( 'em_booking_validate', 'custom_em_booking_validate', 10, 2 );
  4.  
  5. function custom_em_booking_validate( $result, $EM_Booking ) {
  6.  
  7. $EM_Event = $EM_Booking->get_event();
  8.  
  9. if ( empty( $EM_Event->event_attributes['dependent_event'] ) ) {
  10. return $result;
  11. }
  12.  
  13. // Example:
  14. // 1,2,3
  15. $dependent_events = preg_split(
  16. '/\s*,\s*/',
  17. $EM_Event->event_attributes['dependent_event']
  18. );
  19.  
  20. $has_booked_parent_event = false;
  21. $error_event = null;
  22.  
  23. foreach ( $dependent_events as $event_id ) {
  24.  
  25. $event_id = absint( trim( $event_id ) );
  26.  
  27. if ( ! $event_id ) {
  28. continue;
  29. }
  30.  
  31. $parent_event = em_get_event( $event_id );
  32.  
  33. if ( empty( $parent_event->event_id ) ) {
  34. continue;
  35. }
  36.  
  37. if ( ! $error_event ) {
  38. $error_event = $parent_event;
  39. }
  40.  
  41. // OR logic.
  42. if ( static::has_booked( $parent_event ) ) {
  43. $has_booked_parent_event = true;
  44. break;
  45. }
  46. }
  47.  
  48. // None of the dependent events were booked.
  49. if ( ! $has_booked_parent_event ) {
  50.  
  51. if ( $error_event ) {
  52. $error = static::get_error_message( $error_event );
  53. $EM_Booking->add_error( $error );
  54. }
  55.  
  56. $result = false;
  57. }
  58.  
  59. return $result;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment