PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.1.4
Independent Analytics – WordPress Analytics Plugin v2.1.4
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Utils / WP_Async_Request.php
independent-analytics / IAWP / Utils Last commit date
CSV.php 2 years ago Currency.php 3 years ago Device.php 2 years ago Dir.php 2 years ago Number_Formatter.php 3 years ago Request.php 2 years ago Salt.php 2 years ago Security.php 2 years ago Singleton.php 3 years ago String_Util.php 3 years ago URL.php 3 years ago WP_Async_Request.php 2 years ago WordPress_Site_Date_Format_Pattern.php 3 years ago
WP_Async_Request.php
152 lines
1 <?php
2
3 /**
4 * WP Async Request
5 */
6 namespace IAWP_SCOPED\IAWP\Utils;
7
8 /**
9 * Abstract WP_Async_Request class.
10 *
11 * @abstract
12 */
13 abstract class WP_Async_Request
14 {
15 /**
16 * Prefix
17 *
18 * (default value: 'wp')
19 *
20 * @var string
21 */
22 protected $prefix = 'wp';
23 /**
24 * Action
25 *
26 * (default value: 'async_request')
27 *
28 * @var string
29 */
30 protected $action = 'async_request';
31 /**
32 * Identifier
33 *
34 * @var mixed
35 */
36 protected $identifier;
37 /**
38 * Data
39 *
40 * (default value: array())
41 *
42 * @var array
43 */
44 protected $data = [];
45 /**
46 * Initiate new async request
47 */
48 public function __construct()
49 {
50 $this->identifier = $this->prefix . '_' . $this->action;
51 \add_action('wp_ajax_' . $this->identifier, [$this, 'maybe_handle']);
52 \add_action('wp_ajax_nopriv_' . $this->identifier, [$this, 'maybe_handle']);
53 }
54 /**
55 * Handle
56 *
57 * Override this method to perform any actions required
58 * during the async request.
59 */
60 protected abstract function handle();
61 /**
62 * Set data used during the request
63 *
64 * @param array $data Data.
65 *
66 * @return $this
67 */
68 public function data($data)
69 {
70 $this->data = $data;
71 return $this;
72 }
73 /**
74 * Dispatch the async request
75 *
76 * @return array|\WP_Error
77 */
78 public function dispatch()
79 {
80 $url = \add_query_arg($this->get_query_args(), $this->get_query_url());
81 $args = $this->get_post_args();
82 return \wp_remote_post(\esc_url_raw($url), $args);
83 }
84 /**
85 * Maybe handle
86 *
87 * Check for correct nonce and pass to handler.
88 */
89 public function maybe_handle()
90 {
91 // Don't lock up other requests while processing
92 \session_write_close();
93 \check_ajax_referer($this->identifier, 'nonce');
94 $this->handle();
95 \wp_die();
96 }
97 /**
98 * Get query args
99 *
100 * @return array
101 */
102 protected function get_query_args()
103 {
104 if (\property_exists($this, 'query_args')) {
105 return $this->query_args;
106 }
107 $args = ['action' => $this->identifier, 'nonce' => \wp_create_nonce($this->identifier)];
108 /*
109 * Filters the post arguments used during an async request.
110 *
111 * @param array $url
112 */
113 return \apply_filters($this->identifier . '_query_args', $args);
114 }
115 /**
116 * Get query URL
117 *
118 * @return string
119 */
120 protected function get_query_url()
121 {
122 if (\property_exists($this, 'query_url')) {
123 return $this->query_url;
124 }
125 $url = \admin_url('admin-ajax.php');
126 /*
127 * Filters the post arguments used during an async request.
128 *
129 * @param string $url
130 */
131 return \apply_filters($this->identifier . '_query_url', $url);
132 }
133 /**
134 * Get post args
135 *
136 * @return array
137 */
138 protected function get_post_args()
139 {
140 if (\property_exists($this, 'post_args')) {
141 return $this->post_args;
142 }
143 $args = ['timeout' => 0.01, 'blocking' => \false, 'body' => $this->data, 'cookies' => $_COOKIE, 'sslverify' => \apply_filters('https_local_ssl_verify', \false)];
144 /*
145 * Filters the post arguments used during an async request.
146 *
147 * @param array $args
148 */
149 return \apply_filters($this->identifier . '_post_args', $args);
150 }
151 }
152