PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.17.3
GiveWP – Donation Plugin and Fundraising Platform v2.17.3
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 / includes / libraries / wp-async-request.php
give / includes / libraries Last commit date
googlechartlib 8 years ago array2xml.php 8 years ago browser.php 8 years ago give-pdf.php 6 years ago wp-async-request.php 8 years ago wp-background-process.php 8 years ago
wp-async-request.php
164 lines
1 <?php
2 /**
3 * WP Async Request
4 *
5 * @package WP-Background-Processing
6 */
7
8 if ( ! class_exists( 'WP_Async_Request' ) ) {
9
10 /**
11 * Abstract WP_Async_Request class.
12 *
13 * @abstract
14 */
15 abstract class WP_Async_Request {
16
17 /**
18 * Prefix
19 *
20 * (default value: 'wp')
21 *
22 * @var string
23 * @access protected
24 */
25 protected $prefix = 'wp';
26
27 /**
28 * Action
29 *
30 * (default value: 'async_request')
31 *
32 * @var string
33 * @access protected
34 */
35 protected $action = 'async_request';
36
37 /**
38 * Identifier
39 *
40 * @var mixed
41 * @access protected
42 */
43 protected $identifier;
44
45 /**
46 * Data
47 *
48 * (default value: array())
49 *
50 * @var array
51 * @access protected
52 */
53 protected $data = array();
54
55 /**
56 * Initiate new async request
57 */
58 public function __construct() {
59 $this->identifier = $this->prefix . '_' . $this->action;
60
61 add_action( 'wp_ajax_' . $this->identifier, array( $this, 'maybe_handle' ) );
62 add_action( 'wp_ajax_nopriv_' . $this->identifier, array( $this, 'maybe_handle' ) );
63 }
64
65 /**
66 * Set data used during the request
67 *
68 * @param array $data Data.
69 *
70 * @return $this
71 */
72 public function data( $data ) {
73 $this->data = $data;
74
75 return $this;
76 }
77
78 /**
79 * Dispatch the async request
80 *
81 * @return array|WP_Error
82 */
83 public function dispatch() {
84 $url = add_query_arg( $this->get_query_args(), $this->get_query_url() );
85 $args = $this->get_post_args();
86
87 return wp_remote_post( esc_url_raw( $url ), $args );
88 }
89
90 /**
91 * Get query args
92 *
93 * @return array
94 */
95 protected function get_query_args() {
96 if ( property_exists( $this, 'query_args' ) ) {
97 return $this->query_args;
98 }
99
100 return array(
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 if ( property_exists( $this, 'query_url' ) ) {
113 return $this->query_url;
114 }
115
116 return admin_url( 'admin-ajax.php' );
117 }
118
119 /**
120 * Get post args
121 *
122 * @return array
123 */
124 protected function get_post_args() {
125 if ( property_exists( $this, 'post_args' ) ) {
126 return $this->post_args;
127 }
128
129 return array(
130 'timeout' => 0.01,
131 'blocking' => false,
132 'body' => $this->data,
133 'cookies' => $_COOKIE,
134 'sslverify' => apply_filters( 'https_local_ssl_verify', false ),
135 );
136 }
137
138 /**
139 * Maybe handle
140 *
141 * Check for correct nonce and pass to handler.
142 */
143 public function maybe_handle() {
144 // Don't lock up other requests while processing
145 session_write_close();
146
147 check_ajax_referer( $this->identifier, 'nonce' );
148
149 $this->handle();
150
151 wp_die();
152 }
153
154 /**
155 * Handle
156 *
157 * Override this method to perform any actions required
158 * during the async request.
159 */
160 abstract protected function handle();
161
162 }
163 }
164