PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.0
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.0
6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 5.6.1 All 34 releases
automatorwp / integrations / woocommerce / includes / triggers / complete-purchase.php

complete-purchase.php in AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI 6.0.0, at integrations/woocommerce/includes/triggers/complete-purchase.php

122 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Complete Purchase
4 *
5 * @package AutomatorWP\Integrations\WooCommerce\Triggers\Complete_Purchase
6 * @author AutomatorWP <[email protected]>, Ruben Garcia <[email protected]>
7 * @since 1.0.0
8 */
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 class AutomatorWP_WooCommerce_Complete_Purchase extends AutomatorWP_Integration_Trigger {
13
14 public $integration = 'woocommerce';
15 public $trigger = 'woocommerce_complete_purchase';
16
17 /**
18 * Register the trigger
19 *
20 * @since 1.0.0
21 */
22 public function register() {
23
24 automatorwp_register_trigger( $this->trigger, array(
25 'integration' => $this->integration,
26 'label' => __( 'User completes a purchase', 'automatorwp' ),
27 'select_option' => __( 'User completes <strong>a purchase</strong>', 'automatorwp' ),
28 /* translators: %1$s: Number of times. */
29 'edit_label' => sprintf( __( 'User completes a purchase %1$s time(s)', 'automatorwp' ), '{times}' ),
30 'log_label' => __( 'User completes a purchase', 'automatorwp' ),
31 'action' => 'woocommerce_order_status_completed',
32 'function' => array( $this, 'listener' ),
33 'priority' => 10,
34 'accepted_args' => 1,
35 'options' => array(
36 'times' => automatorwp_utilities_times_option(),
37 ),
38 'tags' => array_merge(
39 automatorwp_woocommerce_order_tags(),
40 automatorwp_utilities_times_tag()
41 )
42 ) );
43
44 }
45
46 /**
47 * Trigger listener
48 *
49 * @since 1.0.0
50 *
51 * @param int $order_id The order ID
52 */
53 public function listener( $order_id ) {
54
55 $order = wc_get_order( $order_id );
56
57 // Bail if not a valid order
58 if( ! $order ) {
59 return;
60 }
61
62 // Bail if order is not marked as completed
63 if ( $order->get_status() !== 'completed' ) {
64 return;
65 }
66
67 $order_total = $order->get_total();
68 $user_id = $order->get_user_id();
69
70 // Trigger the complete purchase
71 automatorwp_trigger_event( array(
72 'trigger' => $this->trigger,
73 'user_id' => $user_id,
74 'order_id' => $order_id,
75 'order_total' => $order_total,
76 ) );
77
78 }
79
80 /**
81 * Register the required hooks
82 *
83 * @since 1.0.0
84 */
85 public function hooks() {
86
87 // Log meta data
88 add_filter( 'automatorwp_user_completed_trigger_log_meta', array( $this, 'log_meta' ), 10, 6 );
89
90 parent::hooks();
91 }
92
93 /**
94 * Trigger custom log meta
95 *
96 * @since 1.0.0
97 *
98 * @param array $log_meta Log meta data
99 * @param stdClass $trigger The trigger object
100 * @param int $user_id The user ID
101 * @param array $event Event information
102 * @param array $trigger_options The trigger's stored options
103 * @param stdClass $automation The trigger's automation object
104 *
105 * @return array
106 */
107 function log_meta( $log_meta, $trigger, $user_id, $event, $trigger_options, $automation ) {
108
109 // Bail if action type don't match this action
110 if( $trigger->type !== $this->trigger ) {
111 return $log_meta;
112 }
113
114 $log_meta['order_id'] = ( isset( $event['order_id'] ) ? $event['order_id'] : 0 );
115
116 return $log_meta;
117
118 }
119
120 }
121
122 new AutomatorWP_WooCommerce_Complete_Purchase();