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 / anonymous-complete-purchase.php

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

126 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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();