balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

beta-testers.php (3059B)


      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 }