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