PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.2
Elementor Website Builder – more than just a page builder v4.2.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
elementor / includes / beta-testers.php

beta-testers.php in Elementor Website Builder – more than just a page builder 4.2.2, at includes/beta-testers.php

125 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit; // Exit if accessed directly.
6 }
7
8 /**
9 * Elementor beta testers.
10 *
11 * Elementor beta testers handler class is responsible for the Beta Testers
12 * feature that allows developers to test Elementor beta versions.
13 *
14 * @since 1.5.0
15 */
16 class Beta_Testers {
17
18 const NEWSLETTER_TERMS_URL = 'https://go.elementor.com/beta-testers-newsletter-terms';
19
20 const NEWSLETTER_PRIVACY_URL = 'https://go.elementor.com/beta-testers-newsletter-privacy';
21
22 const BETA_TESTER_SIGNUP = 'beta_tester_signup';
23
24 /**
25 * Transient key.
26 *
27 * Holds the Elementor beta testers transient key.
28 *
29 * @since 1.5.0
30 * @access private
31 * @static
32 *
33 * @var string Transient key.
34 */
35 private $transient_key;
36
37 /**
38 * Get beta version.
39 *
40 * Retrieve Elementor beta version from wp.org plugin repository.
41 *
42 * @since 1.5.0
43 * @access private
44 *
45 * @return string|false Beta version or false.
46 */
47 private function get_beta_version() {
48 $beta_version = get_site_transient( $this->transient_key );
49
50 if ( false === $beta_version ) {
51 $beta_version = 'false';
52
53 $response = wp_remote_get( 'https://plugins.svn.wordpress.org/elementor/trunk/readme.txt' );
54
55 if ( ! is_wp_error( $response ) && ! empty( $response['body'] ) ) {
56 preg_match( '/Beta tag: (.*)/i', $response['body'], $matches );
57 if ( isset( $matches[1] ) ) {
58 $beta_version = $matches[1];
59 }
60 }
61
62 set_site_transient( $this->transient_key, $beta_version, 6 * HOUR_IN_SECONDS );
63 }
64
65 return $beta_version;
66 }
67
68 /**
69 * Check version.
70 *
71 * Checks whether a beta version exist, and retrieve the version data.
72 *
73 * Fired by `pre_set_site_transient_update_plugins` filter, before WordPress
74 * runs the plugin update checker.
75 *
76 * @since 1.5.0
77 * @access public
78 *
79 * @param array $transient Plugin version data.
80 *
81 * @return array Plugin version data.
82 */
83 public function check_version( $transient ) {
84 if ( empty( $transient->checked ) ) {
85 return $transient;
86 }
87
88 delete_site_transient( $this->transient_key );
89
90 $plugin_slug = basename( ELEMENTOR__FILE__, '.php' );
91
92 $beta_version = $this->get_beta_version();
93 if ( 'false' !== $beta_version && version_compare( $beta_version, ELEMENTOR_VERSION, '>' ) ) {
94 $response = new \stdClass();
95 $response->plugin = $plugin_slug;
96 $response->slug = $plugin_slug;
97 $response->new_version = $beta_version;
98 $response->url = 'https://elementor.com/';
99 $response->package = sprintf( 'https://downloads.wordpress.org/plugin/elementor.%s.zip', $beta_version );
100
101 $transient->response[ ELEMENTOR_PLUGIN_BASE ] = $response;
102 }
103
104 return $transient;
105 }
106
107 /**
108 * Beta testers constructor.
109 *
110 * Initializing Elementor beta testers.
111 *
112 * @since 1.5.0
113 * @access public
114 */
115 public function __construct() {
116 if ( 'yes' !== get_option( 'elementor_beta', 'no' ) ) {
117 return;
118 }
119
120 $this->transient_key = md5( 'elementor_beta_testers_response_key' );
121
122 add_filter( 'pre_set_site_transient_update_plugins', [ $this, 'check_version' ] );
123 }
124 }
125