/var/www/html_uk/wp-content/plugins/automatewoo/includes/Triggers/MC4WP_Form_Submission.php


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);
    }


    
/**
     * @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,
            ]);
            
        }
    }

}