PluginProbe
Tracking Script Manager / trunk
Tracking Script Manager vtrunk
trunk 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 All 33 releases
← All changes | classes/wp-async-request.php +162 -162 2.0.0trunk View file →
@@ -1,163 +1,163 @@
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 - }
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 163 }