PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
1.1.37 1.1.36 1.1.35 1.1.34 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 / woocommerce-bookings / triggers / booking-status-changed.php
suretriggers / src / Integrations / woocommerce-bookings / triggers Last commit date
booking-created.php 2 years ago booking-status-changed.php 2 years ago
booking-status-changed.php
141 lines
1 <?php
2 /**
3 * BookingStatusChanged.
4 * php version 5.6
5 *
6 * @category BookingStatusChanged
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 namespace SureTriggers\Integrations\WoocommerceBookings\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use WC_Booking;
20
21 if ( ! class_exists( 'BookingStatusChanged' ) ) :
22
23 /**
24 * BookingStatusChanged
25 *
26 * @category BookingStatusChanged
27 * @package SureTriggers
28 * @author BSF <username@example.com>
29 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
30 * @link https://www.brainstormforce.com/
31 * @since 1.0.0
32 *
33 * @psalm-suppress UndefinedTrait
34 */
35 class BookingStatusChanged {
36
37 /**
38 * Integration type.
39 *
40 * @var string
41 */
42 public $integration = 'WoocommerceBookings';
43
44 /**
45 * Trigger name.
46 *
47 * @var string
48 */
49 public $trigger = 'wc_booking_status_changed';
50
51 use SingletonLoader;
52
53 /**
54 * Constructor
55 *
56 * @since 1.0.0
57 */
58 public function __construct() {
59 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
60 }
61
62 /**
63 * Register action.
64 *
65 * @param array $triggers trigger data.
66 * @return array
67 */
68 public function register( $triggers ) {
69 $triggers[ $this->integration ][ $this->trigger ] = [
70 'label' => __( 'Booking Created', 'suretriggers' ),
71 'action' => $this->trigger,
72 'common_action' => 'woocommerce_booking_status_changed',
73 'function' => [ $this, 'trigger_listener' ],
74 'priority' => 10,
75 'accepted_args' => 4,
76 ];
77
78 return $triggers;
79 }
80
81 /**
82 * Trigger listener
83 *
84 * @param string $from Previous status.
85 * @param string $to New (current) status.
86 * @param int $booking_id Booking id.
87 * @param object $booking Booking object.
88 *
89 * @return void
90 */
91 public function trigger_listener( $from, $to, $booking_id, $booking ) {
92
93 if ( '' == $booking_id ) {
94 return;
95 }
96
97 $was_in_cart = 'was-in-cart';
98 if ( $to === $was_in_cart || $from === $was_in_cart ) {
99 return;
100 }
101
102 if ( class_exists( 'WC_Booking' ) ) {
103 $booking = new WC_Booking( $booking_id );
104 $person_counts = $booking->get_person_counts();
105 $bookable_product_id = $booking->get_product_id();
106 if ( method_exists( $booking, 'get_data' ) ) {
107 $booking = $booking->get_data();
108 $booking['start'] = gmdate( 'Y-m-d H:i:s', $booking['start'] );
109 $booking['end'] = gmdate( 'Y-m-d H:i:s', $booking['end'] );
110 if ( ! empty( $person_counts ) ) {
111 $total_count = 0;
112 foreach ( $person_counts as $key => $value ) {
113 $total_count += $value;
114 }
115 $booking['total_person_counts'] = $total_count;
116 }
117 $booking['bookable_product'] = $bookable_product_id;
118 $context = array_merge( $booking, WordPress::get_user_context( $booking['customer_id'] ) );
119 $context['from_status'] = $from;
120 $context['to_status'] = $to;
121
122 AutomationController::sure_trigger_handle_trigger(
123 [
124 'trigger' => $this->trigger,
125 'context' => $context,
126 ]
127 );
128 }
129 }
130 }
131 }
132
133 /**
134 * Ignore false positive
135 *
136 * @psalm-suppress UndefinedMethod
137 */
138 BookingStatusChanged::get_instance();
139
140 endif;
141