PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.4
GiveWP – Donation Plugin and Fundraising Platform v3.0.4
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / WordPressLibraries / WPAsyncRequest.php
give / src / Framework / WordPressLibraries Last commit date
WPAsyncRequest.php 2 years ago WPBackgroundProcess.php 2 years ago
WPAsyncRequest.php
166 lines
1 <?php
2
3 namespace Give\Framework\WordPressLibraries;
4
5 /**
6 * This is a fork of WP_Async_Request that adds GiveWP namespaces to prevent conflicts with other plugins.
7 *
8 * @since 2.32.0
9 */
10 abstract class WPAsyncRequest
11 {
12
13 /**
14 * Prefix
15 *
16 * (default value: 'wp')
17 *
18 * @var string
19 * @access protected
20 */
21 protected $prefix = 'wp';
22
23 /**
24 * Action
25 *
26 * (default value: 'async_request')
27 *
28 * @var string
29 * @access protected
30 */
31 protected $action = 'async_request';
32
33 /**
34 * Identifier
35 *
36 * @var mixed
37 * @access protected
38 */
39 protected $identifier;
40
41 /**
42 * Data
43 *
44 * (default value: array())
45 *
46 * @var array
47 * @access protected
48 */
49 protected $data = [];
50
51 /**
52 * Initiate new async request
53 */
54 public function __construct()
55 {
56 $this->identifier = $this->prefix . '_' . $this->action;
57
58 add_action('wp_ajax_' . $this->identifier, [$this, 'maybe_handle']);
59 add_action('wp_ajax_nopriv_' . $this->identifier, [$this, 'maybe_handle']);
60 }
61
62 /**
63 * Set data used during the request
64 *
65 * @param array $data Data.
66 *
67 * @return $this
68 */
69 public function data($data)
70 {
71 $this->data = $data;
72
73 return $this;
74 }
75
76 /**
77 * Dispatch the async request
78 *
79 * @return array|WP_Error
80 */
81 public function dispatch()
82 {
83 $url = add_query_arg($this->get_query_args(), $this->get_query_url());
84 $args = $this->get_post_args();
85
86 return wp_remote_post(esc_url_raw($url), $args);
87 }
88
89 /**
90 * Get query args
91 *
92 * @return array
93 */
94 protected function get_query_args()
95 {
96 if (property_exists($this, 'query_args')) {
97 return $this->query_args;
98 }
99
100 return [
101 'action' => $this->identifier,
102 'nonce' => wp_create_nonce($this->identifier),
103 ];
104 }
105
106 /**
107 * Get query URL
108 *
109 * @return string
110 */
111 protected function get_query_url()
112 {
113 if (property_exists($this, 'query_url')) {
114 return $this->query_url;
115 }
116
117 return admin_url('admin-ajax.php');
118 }
119
120 /**
121 * Get post args
122 *
123 * @return array
124 */
125 protected function get_post_args()
126 {
127 if (property_exists($this, 'post_args')) {
128 return $this->post_args;
129 }
130
131 return [
132 'timeout' => 0.01,
133 'blocking' => false,
134 'body' => $this->data,
135 'cookies' => $_COOKIE,
136 'sslverify' => apply_filters('https_local_ssl_verify', false),
137 ];
138 }
139
140 /**
141 * Maybe handle
142 *
143 * Check for correct nonce and pass to handler.
144 */
145 public function maybe_handle()
146 {
147 // Don't lock up other requests while processing
148 session_write_close();
149
150 check_ajax_referer($this->identifier, 'nonce');
151
152 $this->handle();
153
154 wp_die();
155 }
156
157 /**
158 * Handle
159 *
160 * Override this method to perform any actions required
161 * during the async request.
162 */
163 abstract protected function handle();
164
165 }
166