PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.4
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.4
6.0.4 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 All 35 releases
← All changes | integrations/woocommerce/includes/triggers/anonymous-complete-purchase.php +126 -0 5.7.2 → 6.0.4 View file →
@@ -1,0 +1,126 @@
1 +<?php
2 +/**
3 + * Anonymous Complete Purchase
4 + *
5 + * @package AutomatorWP\Integrations\WooCommerce\Triggers\Anonymous_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_Anonymous_Complete_Purchase extends AutomatorWP_Integration_Trigger {
13 +
14 + public $integration = 'woocommerce';
15 + public $trigger = 'woocommerce_anonymous_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 + 'anonymous' => true,
27 + 'label' => __( 'Guest completes a purchase', 'automatorwp' ),
28 + 'select_option' => __( 'Guest completes <strong>a purchase</strong>', 'automatorwp' ),
29 + /* translators: %1$s: Number of times. */
30 + 'edit_label' => sprintf( __( 'Guest completes a purchase %1$s time(s)', 'automatorwp' ), '{times}' ),
31 + 'log_label' => __( 'Guest completes a purchase', 'automatorwp' ),
32 + 'action' => 'woocommerce_order_status_completed',
33 + 'function' => array( $this, 'listener' ),
34 + 'priority' => 10,
35 + 'accepted_args' => 1,
36 + 'options' => array(
37 + 'times' => automatorwp_utilities_times_option(),
38 + ),
39 + 'tags' => array_merge(
40 + automatorwp_woocommerce_order_tags(),
41 + automatorwp_utilities_times_tag()
42 + )
43 + ) );
44 +
45 + }
46 +
47 + /**
48 + * Trigger listener
49 + *
50 + * @since 1.0.0
51 + *
52 + * @param int $order_id The order ID
53 + */
54 + public function listener( $order_id ) {
55 +
56 + $order = wc_get_order( $order_id );
57 +
58 + // Bail if not a valid order
59 + if( ! $order ) {
60 + return;
61 + }
62 +
63 + // Bail if order is not marked as completed
64 + if ( $order->get_status() !== 'completed' ) {
65 + return;
66 + }
67 +
68 + $order_total = $order->get_total();
69 + $user_id = $order->get_user_id();
70 +
71 + // Bail if not is an anonymous purchase
72 + if( $user_id !== 0 ) {
73 + return;
74 + }
75 +
76 + // Trigger the complete purchase
77 + automatorwp_trigger_event( array(
78 + 'trigger' => $this->trigger,
79 + 'order_id' => $order_id,
80 + 'order_total' => $order_total,
81 + ) );
82 +
83 + }
84 +
85 + /**
86 + * Register the required hooks
87 + *
88 + * @since 1.0.0
89 + */
90 + public function hooks() {
91 +
92 + // Log meta data
93 + add_filter( 'automatorwp_anonymous_completed_trigger_log_meta', array( $this, 'log_meta' ), 10, 5 );
94 +
95 + parent::hooks();
96 + }
97 +
98 + /**
99 + * Trigger custom log meta
100 + *
101 + * @since 1.0.0
102 + *
103 + * @param array $log_meta Log meta data
104 + * @param stdClass $trigger The trigger object
105 + * @param array $event Event information
106 + * @param array $trigger_options The trigger's stored options
107 + * @param stdClass $automation The trigger's automation object
108 + *
109 + * @return array
110 + */
111 + function log_meta( $log_meta, $trigger, $event, $trigger_options, $automation ) {
112 +
113 + // Bail if action type don't match this action
114 + if( $trigger->type !== $this->trigger ) {
115 + return $log_meta;
116 + }
117 +
118 + $log_meta['order_id'] = ( isset( $event['order_id'] ) ? $event['order_id'] : 0 );
119 +
120 + return $log_meta;
121 +
122 + }
123 +
124 +}
125 +
126 +new AutomatorWP_WooCommerce_Anonymous_Complete_Purchase();