Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/elementor/includes/beta-testers.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
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 +