1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
<?php // phpcs:ignoreFile
namespace AutomateWoo;
if ( ! defined( 'ABSPATH' ) ) exit;
/** * @class Trigger_MC4WP_Form_Submission * @since 3.0.0 */ class Trigger_MC4WP_Form_Submission extends Trigger {
public $supplied_data_items = [ 'customer' ];
/** * Async events required by the trigger. * * @since 4.8.0 * @var array|string */ protected $required_async_events = 'mc4wp_form_success';
function load_admin_details() { $this->title = __( 'MailChimp for WordPress - Form Submission', 'automatewoo' ); $this->description = __( 'This trigger fires after a MailChimp for WordPress form is successfully submitted.', 'automatewoo' ); $this->group = __( 'MailChimp for WordPress', 'automatewoo' ); } function load_fields() { $forms = mc4wp_get_forms(); $options = [];
foreach( $forms as $form ) { $options[ $form->ID ] = $form->name; } $form = ( new Fields\Select() ) ->set_title( __( 'Form', 'automatewoo' ) ) ->set_name('form_id') ->set_options( $options ) ->set_description( __( 'Choose which MailChimp for WordPress form this workflow should trigger for.', 'automatewoo' ) ) ->set_required();
$this->add_field( $form ); }
function register_hooks() { add_action( 'automatewoo/mc4wp_form_success_async', [ $this, 'handle_async_event' ], 10, 2 ); }
/** * @param int $current_form_id * @param int $customer_id */ function handle_async_event( $current_form_id, $customer_id ) { $current_form_id = Clean::id( $current_form_id ); $customer_id = Clean::id( $customer_id );
$customer = Customer_Factory::get( $customer_id );
foreach ( $this->get_workflows() as $workflow ) { $workflow_form_id = Clean::id( $workflow->get_trigger_option( 'form_id' ) );
if ( ! $workflow_form_id || $workflow_form_id != $current_form_id ) { continue; } $workflow->maybe_run([ 'customer' => $customer, ]); } }
}
|