balmet.com

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

rollback.php (3722B)


      1 <?php
      2 namespace Elementor;
      3 
      4 if ( ! defined( 'ABSPATH' ) ) {
      5 	exit; // Exit if accessed directly.
      6 }
      7 
      8 /**
      9  * Elementor rollback.
     10  *
     11  * Elementor rollback handler class is responsible for rolling back Elementor to
     12  * previous version.
     13  *
     14  * @since 1.5.0
     15  */
     16 class Rollback {
     17 
     18 	/**
     19 	 * Package URL.
     20 	 *
     21 	 * Holds the package URL.
     22 	 *
     23 	 * @since 1.5.0
     24 	 * @access protected
     25 	 *
     26 	 * @var string Package URL.
     27 	 */
     28 	protected $package_url;
     29 
     30 	/**
     31 	 * Version.
     32 	 *
     33 	 * Holds the version.
     34 	 *
     35 	 * @since 1.5.0
     36 	 * @access protected
     37 	 *
     38 	 * @var string Package URL.
     39 	 */
     40 	protected $version;
     41 
     42 	/**
     43 	 * Plugin name.
     44 	 *
     45 	 * Holds the plugin name.
     46 	 *
     47 	 * @since 1.5.0
     48 	 * @access protected
     49 	 *
     50 	 * @var string Plugin name.
     51 	 */
     52 	protected $plugin_name;
     53 
     54 	/**
     55 	 * Plugin slug.
     56 	 *
     57 	 * Holds the plugin slug.
     58 	 *
     59 	 * @since 1.5.0
     60 	 * @access protected
     61 	 *
     62 	 * @var string Plugin slug.
     63 	 */
     64 	protected $plugin_slug;
     65 
     66 	/**
     67 	 * Rollback constructor.
     68 	 *
     69 	 * Initializing Elementor rollback.
     70 	 *
     71 	 * @since 1.5.0
     72 	 * @access public
     73 	 *
     74 	 * @param array $args Optional. Rollback arguments. Default is an empty array.
     75 	 */
     76 	public function __construct( $args = [] ) {
     77 		foreach ( $args as $key => $value ) {
     78 			$this->{$key} = $value;
     79 		}
     80 	}
     81 
     82 	/**
     83 	 * Print inline style.
     84 	 *
     85 	 * Add an inline CSS to the rollback page.
     86 	 *
     87 	 * @since 1.5.0
     88 	 * @access private
     89 	 */
     90 	private function print_inline_style() {
     91 		?>
     92 		<style>
     93 			.wrap {
     94 				overflow: hidden;
     95 				max-width: 850px;
     96 				margin: auto;
     97 				font-family: Courier, monospace;
     98 			}
     99 
    100 			h1 {
    101 				background: #D30C5C;
    102 				text-align: center;
    103 				color: #fff !important;
    104 				padding: 70px !important;
    105 				text-transform: uppercase;
    106 				letter-spacing: 1px;
    107 			}
    108 
    109 			h1 img {
    110 				max-width: 300px;
    111 				display: block;
    112 				margin: auto auto 50px;
    113 			}
    114 		</style>
    115 		<?php
    116 	}
    117 
    118 	/**
    119 	 * Apply package.
    120 	 *
    121 	 * Change the plugin data when WordPress checks for updates. This method
    122 	 * modifies package data to update the plugin from a specific URL containing
    123 	 * the version package.
    124 	 *
    125 	 * @since 1.5.0
    126 	 * @access protected
    127 	 */
    128 	protected function apply_package() {
    129 		$update_plugins = get_site_transient( 'update_plugins' );
    130 		if ( ! is_object( $update_plugins ) ) {
    131 			$update_plugins = new \stdClass();
    132 		}
    133 
    134 		$plugin_info = new \stdClass();
    135 		$plugin_info->new_version = $this->version;
    136 		$plugin_info->slug = $this->plugin_slug;
    137 		$plugin_info->package = $this->package_url;
    138 		$plugin_info->url = 'https://elementor.com/';
    139 
    140 		$update_plugins->response[ $this->plugin_name ] = $plugin_info;
    141 
    142 		// Remove handle beta testers.
    143 		remove_filter( 'pre_set_site_transient_update_plugins', [ Plugin::instance()->beta_testers, 'check_version' ] );
    144 
    145 		set_site_transient( 'update_plugins', $update_plugins );
    146 	}
    147 
    148 	/**
    149 	 * Upgrade.
    150 	 *
    151 	 * Run WordPress upgrade to rollback Elementor to previous version.
    152 	 *
    153 	 * @since 1.5.0
    154 	 * @access protected
    155 	 */
    156 	protected function upgrade() {
    157 		require_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
    158 
    159 		$logo_url = ELEMENTOR_ASSETS_URL . 'images/logo-panel.svg';
    160 
    161 		$upgrader_args = [
    162 			'url' => 'update.php?action=upgrade-plugin&plugin=' . rawurlencode( $this->plugin_name ),
    163 			'plugin' => $this->plugin_name,
    164 			'nonce' => 'upgrade-plugin_' . $this->plugin_name,
    165 			'title' => '<img src="' . $logo_url . '" alt="Elementor">' . esc_html__( 'Rollback to Previous Version', 'elementor' ),
    166 		];
    167 
    168 		$this->print_inline_style();
    169 
    170 		$upgrader = new \Plugin_Upgrader( new \Plugin_Upgrader_Skin( $upgrader_args ) );
    171 		$upgrader->upgrade( $this->plugin_name );
    172 	}
    173 
    174 	/**
    175 	 * Run.
    176 	 *
    177 	 * Rollback Elementor to previous versions.
    178 	 *
    179 	 * @since 1.5.0
    180 	 * @access public
    181 	 */
    182 	public function run() {
    183 		$this->apply_package();
    184 		$this->upgrade();
    185 	}
    186 }