/var/www/html_uk/wp-content/plugins/automatewoo/admin/controllers/opt-ins.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
// phpcs:ignoreFile

namespace AutomateWoo\Admin\Controllers;

use 
AutomateWoo\Admin;
use 
AutomateWoo\Clean;
use 
AutomateWoo\Options;
use 
AutomateWoo\Customer_Factory;
use 
AutomateWoo\Report_Optins;

if ( ! 
defined'ABSPATH' ) ) exit;

/**
 * @class Unsubscribes
 */
class Optins extends Base {


    function 
handle() {

        
$action $this->get_current_action();

        switch ( 
$action ) {

            case 
'bulk_optout':
            case 
'bulk_optin':
                
$this->action_bulk_editstr_replace'bulk_'''$action ) );
                
$this->output_list_table();
                break;

            default:
                
$this->output_list_table();
                break;
        }
    }


    private function 
output_list_table() {
        
$table = new Report_Optins();
        
$table->prepare_items();
        
$table->nonce_action $this->get_nonce_action();

        
$this->heading_links = [
            
Admin::page_urlOptions::optin_enabled() ? 'tool-optin-importer' 'tool-optout-importer' ) => __'Import''automatewoo' )
        ];

        if ( 
Options::optin_enabled() ) {
            
$sidebar_content __'Your store is set to require customers to opt-in before non-transactional workflows will run for them.''automatewoo' );
        }
        else {
            
$sidebar_content __'Your store is set to automatically opt-in customers for workflows but they can opt-out with the unsubscribe link in emails and SMS.''automatewoo' );
        }

        
$sidebar_content .= ' ' sprintf(
            
/* translators: %1$s documentation link start, %2$s documentation link end. */
            
__'More information on opt-ins and opt-outs is available %1$sin the documentation%2$s.''automatewoo' ),
            
'<a href="' Admin::get_docs_link'unsubscribes''unsubscribes-list' ) . '" target="_blank">',
            
'</a>'
        
);

        
$this->output_view'page-table-with-sidebar', [
            
'table' => $table,
            
'sidebar_content' => '<p>' $sidebar_content '</p>'
        
]);
    }


    
/**
     * @param $action
     */
    
private function action_bulk_edit$action ) {

        
$this->verify_nonce_action();

        
$ids Clean::idsaw_request'customer_ids' ) );

        if ( empty( 
$ids ) ) {
            
$this->add_error__'Please select some items to bulk edit.''automatewoo') );
            return;
        }

        foreach ( 
$ids as $id ) {
            if ( ! 
$customer Customer_Factory::get$id ) ) {
                continue;
            }

            switch ( 
$action ) {
                case 
'optin':
                    
$customer->opt_in();
                    break;
                case 
'optout':
                    
$customer->opt_out();
                    break;
            }
        }

        
$this->add_message__'Bulk edit completed.''automatewoo' ) );
    }
}

return new 
Optins();