PluginProbe
Elementor Website Builder – more than just a page builder / 3.7.2
Elementor Website Builder – more than just a page builder v3.7.2
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
← All changes | includes/api.php +35 -108 4.1.43.7.2 View file →
@@ -28,8 +28,9 @@
28 28 const FEED_OPTION_KEY = 'elementor_remote_info_feed_data';
29 29
30 30 const TRANSIENT_KEY_PREFIX = 'elementor_remote_info_api_data_';
31 31
32 +
32 33 /**
33 34 * API info URL.
34 35 *
35 36 * Holds the URL of the info API.
@@ -36,11 +37,11 @@
36 37 *
37 38 * @access public
38 39 * @static
39 40 *
40 - * @var string API info URL. (v2 excludes the Library info)
41 + * @var string API info URL.
41 42 */
42 - public static $api_info_url = 'https://my.elementor.com/api/v2/info/';
43 + public static $api_info_url = 'https://my.elementor.com/api/v1/info/';
43 44
44 45 /**
45 46 * API feedback URL.
46 47 *
@@ -52,42 +53,42 @@
52 53 * @var string API feedback URL.
53 54 */
54 55 private static $api_feedback_url = 'https://my.elementor.com/api/v1/feedback/';
55 56
56 - private static $api_library_info_url = 'https://my.elementor.com/api/v1/templates/info/';
57 -
58 - private static function get_info_data( $force_update = false, $additional_status = false ) {
57 + /**
58 + * Get info data.
59 + *
60 + * This function notifies the user of upgrade notices, new templates and contributors.
61 + *
62 + * @since 2.0.0
63 + * @access private
64 + * @static
65 + *
66 + * @param bool $force_update Optional. Whether to force the data retrieval or
67 + * not. Default is false.
68 + *
69 + * @return array|false Info data, or false.
70 + */
71 + private static function get_info_data( $force_update = false ) {
59 72 $cache_key = self::TRANSIENT_KEY_PREFIX . ELEMENTOR_VERSION;
60 73
61 74 $info_data = get_transient( $cache_key );
62 75
63 - if ( $force_update || empty( $info_data ) ) {
76 + if ( $force_update || false === $info_data ) {
64 77 $timeout = ( $force_update ) ? 25 : 8;
65 78
66 - $body_request = [
67 - // Which API version is used.
68 - 'api_version' => ELEMENTOR_VERSION,
69 - // Which language to return.
70 - 'site_lang' => get_bloginfo( 'language' ),
71 - ];
72 -
73 - $site_key = self::get_site_key();
74 - if ( ! empty( $site_key ) ) {
75 - $body_request['site_key'] = $site_key;
76 - }
77 -
78 - if ( ! empty( $additional_status ) ) {
79 - $body_request['status'] = $additional_status;
80 - $timeout = 3;
81 - }
82 -
83 79 $response = wp_remote_get( self::$api_info_url, [
84 80 'timeout' => $timeout,
85 - 'body' => $body_request,
81 + 'body' => [
82 + // Which API version is used.
83 + 'api_version' => ELEMENTOR_VERSION,
84 + // Which language to return.
85 + 'site_lang' => get_bloginfo( 'language' ),
86 + ],
86 87 ] );
87 88
88 89 if ( is_wp_error( $response ) || 200 !== (int) wp_remote_retrieve_response_code( $response ) ) {
89 - set_transient( $cache_key, [ 'last_error' => gmdate( 'c' ) ], 2 * HOUR_IN_SECONDS );
90 + set_transient( $cache_key, [], 2 * HOUR_IN_SECONDS );
90 91
91 92 return false;
92 93 }
93 94
@@ -93,14 +94,16 @@
93 94
94 95 $info_data = json_decode( wp_remote_retrieve_body( $response ), true );
95 96
96 97 if ( empty( $info_data ) || ! is_array( $info_data ) ) {
97 - set_transient( $cache_key, [ 'last_error' => gmdate( 'c' ) ], 2 * HOUR_IN_SECONDS );
98 + set_transient( $cache_key, [], 2 * HOUR_IN_SECONDS );
98 99
99 100 return false;
100 101 }
101 102
102 103 if ( isset( $info_data['library'] ) ) {
104 + update_option( self::LIBRARY_OPTION_KEY, $info_data['library'], 'no' );
105 +
103 106 unset( $info_data['library'] );
104 107 }
105 108
106 109 if ( isset( $info_data['feed'] ) ) {
@@ -114,23 +117,8 @@
114 117
115 118 return $info_data;
116 119 }
117 120
118 - public static function get_site_key() {
119 - if ( null === Plugin::$instance->common ) {
120 - return get_option( Library::OPTION_CONNECT_SITE_KEY );
121 - }
122 -
123 - /** @var Library $library */
124 - $library = Plugin::$instance->common->get_component( 'connect' )->get_app( 'library' );
125 -
126 - if ( ! $library || ! method_exists( $library, 'get_site_key' ) ) {
127 - return false;
128 - }
129 -
130 - return $library->get_site_key();
131 - }
132 -
133 121 /**
134 122 * Get upgrade notice.
135 123 *
136 124 * Retrieve the upgrade notice if one exists, or false otherwise.
@@ -190,57 +178,20 @@
190 178 *
191 179 * @param bool $force_update Optional. Whether to force the data update or
192 180 * not. Default is false.
193 181 *
194 - * @return array The templates' data.
182 + * @return array The templates data.
195 183 */
196 - public static function get_library_data( bool $force_update = false ): array {
197 - /**
198 - * Filters the body of the request to get library templates data.
199 - *
200 - * @param-out array $body_request The body of the request.
201 - */
202 - $body_request = apply_filters( 'elementor/remote/library/templates/request/body', [] );
184 + public static function get_library_data( $force_update = false ) {
185 + self::get_info_data( $force_update );
203 186
204 - $site_key = self::get_site_key();
205 - if ( ! empty( $site_key ) ) {
206 - $body_request['site_key'] = $site_key;
207 - }
187 + $library_data = get_option( self::LIBRARY_OPTION_KEY );
208 188
209 - /**
210 - * Filters the URL to get library templates data.
211 - *
212 - * @param-out string $url The URL to get library templates data.
213 - */
214 - $url = apply_filters( 'elementor/remote/library/templates/request/url', self::$api_library_info_url );
215 -
216 - $response = wp_remote_get( $url, [
217 - 'timeout' => 25,
218 - 'body' => $body_request,
219 - ] );
220 -
221 - if ( is_wp_error( $response ) || 200 !== (int) wp_remote_retrieve_response_code( $response ) ) {
189 + if ( empty( $library_data ) ) {
222 190 return [];
223 191 }
224 192
225 - $library_data = json_decode( wp_remote_retrieve_body( $response ), true );
226 -
227 - /**
228 - * Filters the library data to allow 3rd party extending the response data.
229 - *
230 - * @since 3.32.2
231 - * @param-out array $library_data an array of templates data.
232 - */
233 - $library_data = apply_filters( 'elementor/remote/library/data', $library_data );
234 -
235 - if ( empty( $library_data ) || ! is_array( $library_data ) ) {
236 - return [];
237 - }
238 -
239 - // the following update & get are a temporary measure, to allow 3rd party plugins inject more templates:
240 - update_option( self::LIBRARY_OPTION_KEY, $library_data, 'no' );
241 -
242 - return get_option( self::LIBRARY_OPTION_KEY, $library_data );
193 + return $library_data;
243 194 }
244 195
245 196 /**
246 197 * Get feed data.
@@ -267,28 +218,8 @@
267 218
268 219 return $feed;
269 220 }
270 221
271 - public static function get_deactivation_data() {
272 - $data = self::get_info_data( true, 'deactivated' );
273 -
274 - if ( empty( $data['deactivate_data'] ) ) {
275 - return false;
276 - }
277 -
278 - return $data['deactivate_data'];
279 - }
280 -
281 - public static function get_uninstalled_data() {
282 - $data = self::get_info_data( true, 'uninstalled' );
283 -
284 - if ( empty( $data['uninstall_data'] ) ) {
285 - return false;
286 - }
287 -
288 - return $data['uninstall_data'];
289 - }
290 -
291 222 /**
292 223 * Get template content.
293 224 *
294 225 * Retrieve the templates content received from a remote server.
@@ -344,12 +275,8 @@
344 275 * @static
345 276 */
346 277 public static function ajax_reset_api_data() {
347 278 check_ajax_referer( 'elementor_reset_library', '_nonce' );
348 -
349 - if ( ! current_user_can( 'manage_options' ) ) {
350 - wp_send_json_error( 'Permission denied' );
351 - }
352 279
353 280 self::get_info_data( true );
354 281
355 282 wp_send_json_success();