2016-05-10 13:11:30 +02:00
< ? php
/**
2016-05-10 13:31:28 +02:00
* Upgrader API : Plugin_Installer_Skin class
2016-05-10 13:11:30 +02:00
*
* @ package WordPress
* @ subpackage Upgrader
2016-05-10 13:31:28 +02:00
* @ since 4.6 . 0
2016-05-10 13:11:30 +02:00
*/
/**
* Plugin Installer Skin for WordPress Plugin Installer .
*
* @ since 2.8 . 0
2016-05-13 22:59:27 +02:00
* @ since 4.6 . 0 Moved to its own file from wp - admin / includes / class - wp - upgrader - skins . php .
2016-07-09 15:45:33 +02:00
*
* @ see WP_Upgrader_Skin
2016-05-10 13:11:30 +02:00
*/
class Plugin_Installer_Skin extends WP_Upgrader_Skin {
public $api ;
public $type ;
/**
* @ param array $args
*/
2017-12-01 00:11:00 +01:00
public function __construct ( $args = array () ) {
$defaults = array (
'type' => 'web' ,
'url' => '' ,
'plugin' => '' ,
'nonce' => '' ,
'title' => '' ,
);
$args = wp_parse_args ( $args , $defaults );
2016-05-10 13:11:30 +02:00
$this -> type = $args [ 'type' ];
2017-12-01 00:11:00 +01:00
$this -> api = isset ( $args [ 'api' ] ) ? $args [ 'api' ] : array ();
2016-05-10 13:11:30 +02:00
2017-12-01 00:11:00 +01:00
parent :: __construct ( $args );
2016-05-10 13:11:30 +02:00
}
/**
*/
public function before () {
2017-12-01 00:11:00 +01:00
if ( ! empty ( $this -> api ) ) {
$this -> upgrader -> strings [ 'process_success' ] = sprintf ( __ ( 'Successfully installed the plugin <strong>%1$s %2$s</strong>.' ), $this -> api -> name , $this -> api -> version );
}
2016-05-10 13:11:30 +02:00
}
/**
*/
public function after () {
$plugin_file = $this -> upgrader -> plugin_info ();
$install_actions = array ();
2017-12-01 00:11:00 +01:00
$from = isset ( $_GET [ 'from' ] ) ? wp_unslash ( $_GET [ 'from' ] ) : 'plugins' ;
2016-05-10 13:11:30 +02:00
2017-09-24 16:22:54 +02:00
if ( 'import' == $from ) {
2016-09-17 18:23:27 +02:00
$install_actions [ 'activate_plugin' ] = '<a class="button button-primary" href="' . wp_nonce_url ( 'plugins.php?action=activate&from=import&plugin=' . urlencode ( $plugin_file ), 'activate-plugin_' . $plugin_file ) . '" target="_parent">' . __ ( 'Activate Plugin & Run Importer' ) . '</a>' ;
2017-12-01 00:11:00 +01:00
} elseif ( 'press-this' == $from ) {
2017-09-24 16:22:54 +02:00
$install_actions [ 'activate_plugin' ] = '<a class="button button-primary" href="' . wp_nonce_url ( 'plugins.php?action=activate&from=press-this&plugin=' . urlencode ( $plugin_file ), 'activate-plugin_' . $plugin_file ) . '" target="_parent">' . __ ( 'Activate Plugin & Return to Press This' ) . '</a>' ;
} else {
2016-09-17 18:23:27 +02:00
$install_actions [ 'activate_plugin' ] = '<a class="button button-primary" href="' . wp_nonce_url ( 'plugins.php?action=activate&plugin=' . urlencode ( $plugin_file ), 'activate-plugin_' . $plugin_file ) . '" target="_parent">' . __ ( 'Activate Plugin' ) . '</a>' ;
2017-09-24 16:22:54 +02:00
}
2016-05-10 13:11:30 +02:00
if ( is_multisite () && current_user_can ( 'manage_network_plugins' ) ) {
2016-09-17 18:23:27 +02:00
$install_actions [ 'network_activate' ] = '<a class="button button-primary" href="' . wp_nonce_url ( 'plugins.php?action=activate&networkwide=1&plugin=' . urlencode ( $plugin_file ), 'activate-plugin_' . $plugin_file ) . '" target="_parent">' . __ ( 'Network Activate' ) . '</a>' ;
2016-05-10 13:11:30 +02:00
unset ( $install_actions [ 'activate_plugin' ] );
}
if ( 'import' == $from ) {
$install_actions [ 'importers_page' ] = '<a href="' . admin_url ( 'import.php' ) . '" target="_parent">' . __ ( 'Return to Importers' ) . '</a>' ;
} elseif ( $this -> type == 'web' ) {
$install_actions [ 'plugins_page' ] = '<a href="' . self_admin_url ( 'plugin-install.php' ) . '" target="_parent">' . __ ( 'Return to Plugin Installer' ) . '</a>' ;
} elseif ( 'upload' == $this -> type && 'plugins' == $from ) {
$install_actions [ 'plugins_page' ] = '<a href="' . self_admin_url ( 'plugin-install.php' ) . '">' . __ ( 'Return to Plugin Installer' ) . '</a>' ;
} else {
$install_actions [ 'plugins_page' ] = '<a href="' . self_admin_url ( 'plugins.php' ) . '" target="_parent">' . __ ( 'Return to Plugins page' ) . '</a>' ;
}
2017-12-01 00:11:00 +01:00
if ( ! $this -> result || is_wp_error ( $this -> result ) ) {
2016-05-10 13:11:30 +02:00
unset ( $install_actions [ 'activate_plugin' ], $install_actions [ 'network_activate' ] );
2017-08-22 16:02:44 +02:00
} elseif ( ! current_user_can ( 'activate_plugin' , $plugin_file ) ) {
2016-05-10 13:11:30 +02:00
unset ( $install_actions [ 'activate_plugin' ] );
}
/**
2016-05-22 20:01:30 +02:00
* Filters the list of action links available following a single plugin installation .
2016-05-10 13:11:30 +02:00
*
* @ since 2.7 . 0
*
2018-03-22 21:27:32 +01:00
* @ param string [] $install_actions Array of plugin action links .
* @ param object $api Object containing WordPress . org API plugin data . Empty
* for non - API installs , such as when a plugin is installed
* via upload .
* @ param string $plugin_file Path to the plugin file relative to the plugins directory .
2016-05-10 13:11:30 +02:00
*/
$install_actions = apply_filters ( 'install_plugin_complete_actions' , $install_actions , $this -> api , $plugin_file );
2016-09-17 18:23:27 +02:00
if ( ! empty ( $install_actions ) ) {
$this -> feedback ( implode ( ' ' , ( array ) $install_actions ) );
}
2016-05-10 13:11:30 +02:00
}
}