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
*/
public function __construct ( $args = array ()) {
$defaults = array ( 'type' => 'web' , 'url' => '' , 'plugin' => '' , 'nonce' => '' , 'title' => '' );
$args = wp_parse_args ( $args , $defaults );
$this -> type = $args [ 'type' ];
$this -> api = isset ( $args [ 'api' ]) ? $args [ 'api' ] : array ();
parent :: __construct ( $args );
}
/**
*/
public function before () {
if ( ! empty ( $this -> api ) )
$this -> upgrader -> strings [ 'process_success' ] = sprintf ( __ ( 'Successfully installed the plugin <strong>%s %s</strong>.' ), $this -> api -> name , $this -> api -> version );
}
/**
*/
public function after () {
$plugin_file = $this -> upgrader -> plugin_info ();
$install_actions = array ();
$from = isset ( $_GET [ 'from' ]) ? wp_unslash ( $_GET [ 'from' ] ) : 'plugins' ;
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>' ;
2016-05-10 13:11:30 +02:00
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>' ;
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>' ;
}
if ( ! $this -> result || is_wp_error ( $this -> result ) ) {
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
*
* @ param array $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 .
*/
$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
}
}