ru-se.com

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

class-plugin-upgrader-skin.php (3277B)


      1 <?php
      2 /**
      3  * Upgrader API: Plugin_Upgrader_Skin class
      4  *
      5  * @package WordPress
      6  * @subpackage Upgrader
      7  * @since 4.6.0
      8  */
      9 
     10 /**
     11  * Plugin Upgrader Skin for WordPress Plugin Upgrades.
     12  *
     13  * @since 2.8.0
     14  * @since 4.6.0 Moved to its own file from wp-admin/includes/class-wp-upgrader-skins.php.
     15  *
     16  * @see WP_Upgrader_Skin
     17  */
     18 class Plugin_Upgrader_Skin extends WP_Upgrader_Skin {
     19 
     20 	/**
     21 	 * Holds the plugin slug in the Plugin Directory.
     22 	 *
     23 	 * @since 2.8.0
     24 	 *
     25 	 * @var string
     26 	 */
     27 	public $plugin = '';
     28 
     29 	/**
     30 	 * Whether the plugin is active.
     31 	 *
     32 	 * @since 2.8.0
     33 	 *
     34 	 * @var bool
     35 	 */
     36 	public $plugin_active = false;
     37 
     38 	/**
     39 	 * Whether the plugin is active for the entire network.
     40 	 *
     41 	 * @since 2.8.0
     42 	 *
     43 	 * @var bool
     44 	 */
     45 	public $plugin_network_active = false;
     46 
     47 	/**
     48 	 * Constructor.
     49 	 *
     50 	 * Sets up the plugin upgrader skin.
     51 	 *
     52 	 * @since 2.8.0
     53 	 *
     54 	 * @param array $args Optional. The plugin upgrader skin arguments to
     55 	 *                    override default options. Default empty array.
     56 	 */
     57 	public function __construct( $args = array() ) {
     58 		$defaults = array(
     59 			'url'    => '',
     60 			'plugin' => '',
     61 			'nonce'  => '',
     62 			'title'  => __( 'Update Plugin' ),
     63 		);
     64 		$args     = wp_parse_args( $args, $defaults );
     65 
     66 		$this->plugin = $args['plugin'];
     67 
     68 		$this->plugin_active         = is_plugin_active( $this->plugin );
     69 		$this->plugin_network_active = is_plugin_active_for_network( $this->plugin );
     70 
     71 		parent::__construct( $args );
     72 	}
     73 
     74 	/**
     75 	 * Action to perform following a single plugin update.
     76 	 *
     77 	 * @since 2.8.0
     78 	 */
     79 	public function after() {
     80 		$this->plugin = $this->upgrader->plugin_info();
     81 		if ( ! empty( $this->plugin ) && ! is_wp_error( $this->result ) && $this->plugin_active ) {
     82 			// Currently used only when JS is off for a single plugin update?
     83 			printf(
     84 				'<iframe title="%s" style="border:0;overflow:hidden" width="100%%" height="170" src="%s"></iframe>',
     85 				esc_attr__( 'Update progress' ),
     86 				wp_nonce_url( 'update.php?action=activate-plugin&networkwide=' . $this->plugin_network_active . '&plugin=' . urlencode( $this->plugin ), 'activate-plugin_' . $this->plugin )
     87 			);
     88 		}
     89 
     90 		$this->decrement_update_count( 'plugin' );
     91 
     92 		$update_actions = array(
     93 			'activate_plugin' => sprintf(
     94 				'<a href="%s" target="_parent">%s</a>',
     95 				wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . urlencode( $this->plugin ), 'activate-plugin_' . $this->plugin ),
     96 				__( 'Activate Plugin' )
     97 			),
     98 			'plugins_page'    => sprintf(
     99 				'<a href="%s" target="_parent">%s</a>',
    100 				self_admin_url( 'plugins.php' ),
    101 				__( 'Go to Plugins page' )
    102 			),
    103 		);
    104 
    105 		if ( $this->plugin_active || ! $this->result || is_wp_error( $this->result ) || ! current_user_can( 'activate_plugin', $this->plugin ) ) {
    106 			unset( $update_actions['activate_plugin'] );
    107 		}
    108 
    109 		/**
    110 		 * Filters the list of action links available following a single plugin update.
    111 		 *
    112 		 * @since 2.7.0
    113 		 *
    114 		 * @param string[] $update_actions Array of plugin action links.
    115 		 * @param string   $plugin         Path to the plugin file relative to the plugins directory.
    116 		 */
    117 		$update_actions = apply_filters( 'update_plugin_complete_actions', $update_actions, $this->plugin );
    118 
    119 		if ( ! empty( $update_actions ) ) {
    120 			$this->feedback( implode( ' | ', (array) $update_actions ) );
    121 		}
    122 	}
    123 }