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
|
<?php // phpcs:ignoreFile
namespace AutomateWoo;
/** * @class Ajax * @since 2.7 */ class Ajax {
/** * Init */ static function init() { self::maybe_define_ajax(); add_action( 'template_redirect', [ __CLASS__, 'do_ajax' ], 0 ); }
/** * @param string $request Optional * @return string */ static function get_endpoint( $request ) { // SEMGREP WARNING EXPLANATION // $request seems to be always "%%endpoint%%" in the consumer side. return add_query_arg( 'aw-ajax', $request ); }
/** * Set WC AJAX constant and headers. */ static function maybe_define_ajax() {
if ( empty( $_GET['aw-ajax'] ) ) return;
if ( ! defined( 'DOING_AJAX' ) ) { define( 'DOING_AJAX', true ); }
// Turn off display_errors during AJAX events to prevent malformed JSON if ( ! WP_DEBUG || ( WP_DEBUG && ! WP_DEBUG_DISPLAY ) ) { @ini_set( 'display_errors', 0 ); }
$GLOBALS['wpdb']->hide_errors(); }
/** * Send headers */ private static function send_headers() { send_origin_headers(); @header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) ); @header( 'X-Robots-Tag: noindex' ); send_nosniff_header(); nocache_headers(); status_header( 200 ); }
/** * Check for AW Ajax request and fire action. */ static function do_ajax() { if ( empty( $_GET['aw-ajax'] ) ) return;
if ( ! $action = sanitize_text_field( $_GET['aw-ajax'] ) ) return;
self::send_headers(); do_action( 'automatewoo/ajax/' . sanitize_text_field( $action ) ); wp_die(); }
/** * @param mixed $data */ static function send_json_success( $data = null ) { do_action( 'automatewoo/ajax/before_send_json' ); wp_send_json_success( $data ); }
/** * @param mixed $data */ static function send_json_error( $data = null ) { do_action( 'automatewoo/ajax/before_send_json' ); wp_send_json_error( $data ); }
}
|