/** * Update the RSVP values for this user. * * Note that, within this method, $order_id refers to the attendee or ticket ID * (it does not refer to an "order" in the sense of a transaction that may include * multiple tickets, as is the case in some other methods for instance). * * @param array $data * @param int $order_id * @param int $event_id */ public function update_attendee_data($data, $order_id, $event_id) { $user_id = get_current_user_id(); $rsvp_orders = $this->tickets_view->get_event_rsvp_attendees($event_id, $user_id); $rsvp_order_ids = wp_list_pluck($rsvp_orders, 'order_id'); // This makes sure we don't save attendees for orders that are not from this current user and event if (!in_array($order_id, $rsvp_order_ids)) { return; } $attendee = array(); // Get the Attendee Data, it's important for testing foreach ($rsvp_orders as $test_attendee) { if ($order_id !== $test_attendee['order_id']) { continue; } $attendee = $test_attendee; } // Dont try to Save if it's restricted if (!isset($attendee['product_id']) || $this->tickets_view->is_rsvp_restricted($event_id, $attendee['product_id'])) { return; } $attendee_email = empty($data['email']) ? null : sanitize_email($data['email']); $attendee_email = is_email($attendee_email) ? $attendee_email : null; $attendee_full_name = empty($data['full_name']) ? null : sanitize_text_field($data['full_name']); $attendee_optout = empty($data['optout']) ? false : (bool) $data['optout']; if (empty($data['order_status']) || !$this->tickets_view->is_valid_rsvp_option($data['order_status'])) { $attendee_order_status = null; } else { $attendee_order_status = $data['order_status']; } $product_id = $attendee['product_id']; $this->update_sales_by_order_status($order_id, $attendee_order_status, $product_id); if (!is_null($attendee_order_status)) { update_post_meta($order_id, self::ATTENDEE_RSVP_KEY, $attendee_order_status); } update_post_meta($order_id, self::ATTENDEE_OPTOUT_KEY, (bool) $attendee_optout); if (!is_null($attendee_full_name)) { update_post_meta($order_id, $this->full_name, $attendee_full_name); } if (!is_null($attendee_email)) { update_post_meta($order_id, $this->email, $attendee_email); } }