PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / event-calendar / actions / send-rsvp.php
suretriggers / src / Integrations / event-calendar / actions Last commit date
create-event.php 3 months ago send-rsvp.php 10 months ago
send-rsvp.php
146 lines
1 <?php
2 /**
3 * EventCalendarSendRsvp.
4 * php version 5.6
5 *
6 * @category EventCalendarSendRsvp
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 use SureTriggers\Integrations\AutomateAction;
15 use SureTriggers\Traits\SingletonLoader;
16
17 /**
18 * EventCalendarSendRsvp
19 *
20 * @category EventCalendarSendRsvp
21 * @package SureTriggers
22 * @author BSF <username@example.com>
23 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
24 * @link https://www.brainstormforce.com/
25 * @since 1.0.0
26 */
27 class EventCalendarSendRsvp extends AutomateAction {
28
29 /**
30 * Integration type.
31 *
32 * @var string
33 */
34 public $integration = 'TheEventCalendar';
35
36 /**
37 * Action name.
38 *
39 * @var string
40 */
41 public $action = 'event_calendar_send_rsvp';
42
43 use SingletonLoader;
44
45 /**
46 * Register a action.
47 *
48 * @param array $actions actions.
49 * @return array
50 */
51 public function register( $actions ) {
52 $actions[ $this->integration ][ $this->action ] = [
53 'label' => __( 'RSVP on behalf of the user for an event', 'suretriggers' ),
54 'action' => $this->action,
55 'function' => [ $this, 'action_listener' ],
56 ];
57 return $actions;
58 }
59
60 /**
61 * Action listener.
62 *
63 * @param int $user_id user_id.
64 * @param int $automation_id automation_id.
65 * @param array $fields fields.
66 * @param array $selected_options selectedOptions.
67 * @psalm-suppress UndefinedMethod
68 * @throws Exception Exception.
69 *
70 * @return array|bool|void
71 */
72 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
73
74 if ( ! class_exists( 'Tribe__Tickets__Main' ) || ! class_exists( 'Tribe__Events__Main' ) || ! class_exists( 'Tribe__Tickets__Tickets_Handler' ) || ! class_exists( 'Tribe__Tickets__RSVP' ) ) {
75 return [
76 'status' => 'error',
77 'message' => 'The Events Calendar or Event Tickets plugin not installed.',
78 ];
79 }
80
81 $attendee_name = $selected_options['attendee_name'];
82 $attendee_email = $selected_options['attendee_email'];
83 $number_of_guests = $selected_options['number_of_guests'];
84
85 if ( ! is_numeric( $number_of_guests ) ) {
86 return [
87 'status' => 'error',
88 'message' => 'Number of Guests should be a numeric value.',
89 ];
90 }
91
92 $ticket_handler = new Tribe__Tickets__Tickets_Handler();
93 $get_rsvp_tickets = $ticket_handler->get_event_rsvp_tickets( get_post( $selected_options['event_calendar_rsvp_event'] ) );
94
95 if ( empty( $get_rsvp_tickets ) ) {
96 return false;
97 }
98
99 $ticket_id = 0;
100 foreach ( $get_rsvp_tickets as $rsvp_ticket ) {
101 if ( $rsvp_ticket->capacity < 0 ) {
102 $ticket_id = $rsvp_ticket->ID;
103 } elseif ( $rsvp_ticket->capacity > 0 && $rsvp_ticket->capacity > $rsvp_ticket->qty_sold ) {
104 $ticket_id = $rsvp_ticket->ID;
105 }
106 if ( $ticket_id > 0 ) {
107 break;
108 }
109 }
110
111 $attendee_details = [
112 'full_name' => $attendee_name,
113 'email' => $attendee_email,
114 'order_status' => 'yes',
115 'optout' => false,
116 'order_id' => '-1',
117 ];
118
119 $order = new Tribe__Tickets__RSVP();
120 $status = $order->generate_tickets_for( $ticket_id, $number_of_guests, $attendee_details );
121
122 if ( ! $status ) {
123 return false;
124 }
125
126 $context = [];
127 $context['event_id'] = $selected_options['event_calendar_rsvp_event'];
128 $context['attendee_name'] = $attendee_name;
129 $context['attendee_email'] = $attendee_email;
130 $context['number_of_guests'] = $number_of_guests;
131
132 $event = tribe_get_event( $context['event_id'] );
133
134 if ( $event ) {
135 $context['event_name'] = $event->post_title;
136 $context['event_url'] = get_permalink( $event->ID );
137 $context['event_featured_image_id'] = get_post_meta( $event->ID, '_thumbnail_id', true );
138 $context['event_featured_image_url'] = get_the_post_thumbnail_url( $event->ID );
139 }
140
141 return $context;
142 }
143 }
144
145 EventCalendarSendRsvp::get_instance();
146