/home/arranoyd/pi-konzalting/wp-content/plugins/siteorigin-panels/inc/admin-widgets-bundle.php
<?php
class SiteOrigin_Panels_Admin_Widgets_Bundle {
function __construct() {
if ( isset( $_GET['siteorigin-pa-install'] ) ) {
add_action( 'admin_menu', array( $this, 'activation_page' ) );
}
}
public static function single() {
static $single;
return empty( $single ) ? $single = new self() : $single;
}
function activation_page() {
add_plugins_page(
__( 'Install Page Builder Plugin', 'siteorigin-panels' ),
__( 'Install Page Builder Plugin', 'siteorigin-panels' ),
'install_plugins',
'siteorigin_panels_plugin_activation',
array( $this, 'render_page' )
);
}
function render_page() {
?>
<div class="wrap">
<?php
/** All plugin information will be stored in an array for processing */
$plugin = array();
/** Checks for actions from hover links to process the installation */
if ( isset( $_GET[ sanitize_key( 'plugin' ) ] ) && ( isset( $_GET[ sanitize_key( 'siteorigin-pa-install' ) ] ) && 'install-plugin' == $_GET[ sanitize_key( 'siteorigin-pa-install' ) ] ) && current_user_can( 'install_plugins' ) ) {
check_admin_referer( 'siteorigin-pa-install' );
$plugin['name'] = $_GET['plugin_name']; // Plugin name
$plugin['slug'] = $_GET['plugin']; // Plugin slug
if ( ! empty( $_GET['plugin_source'] ) ) {
$plugin['source'] = $_GET['plugin_source'];
} else {
$plugin['source'] = false;
}
/** Pass all necessary information via URL if WP_Filesystem is needed */
$url = wp_nonce_url(
add_query_arg(
array(
'page' => 'siteorigin_panels_plugin_activation',
'plugin' => urlencode( $plugin['slug'] ),
'plugin_name' => urlencode( $plugin['name'] ),
'plugin_source' => urlencode( $plugin['source'] ),
'siteorigin-pa-install' => 'install-plugin',
),
admin_url( 'themes.php' )
),
'siteorigin-pa-install'
);
$method = ''; // Leave blank so WP_Filesystem can populate it as necessary
$fields = array( sanitize_key( 'siteorigin-pa-install' ) ); // Extra fields to pass to WP_Filesystem
if ( false === ( $creds = request_filesystem_credentials( $url, $method, false, false, $fields ) ) ) {
return true;
}
if ( ! WP_Filesystem( $creds ) ) {
request_filesystem_credentials( $url, $method, true, false, $fields ); // Setup WP_Filesystem
return true;
}
require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; // Need for plugins_api
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; // Need for upgrade classes
/** Prep variables for Plugin_Installer_Skin class */
$title = sprintf( __( 'Installing %s', 'siteorigin-panels' ), $plugin['name'] );
$url = add_query_arg( array(
'action' => 'install-plugin',
'plugin' => urlencode( $plugin['slug'] )
), 'update.php' );
if ( isset( $_GET['from'] ) ) {
$url .= add_query_arg( 'from', urlencode( stripslashes( $_GET['from'] ) ), $url );
}
$nonce = 'install-plugin_' . $plugin['slug'];
// Find the source of the plugin
$source = ! empty( $plugin['source'] ) ? $plugin['source'] : 'http://downloads.wordpress.org/plugin/' . urlencode( $plugin['slug'] ) . '.zip';
/** Create a new instance of Plugin_Upgrader */
$upgrader = new Plugin_Upgrader( $skin = new Plugin_Installer_Skin( compact( 'type', 'title', 'url', 'nonce', 'plugin', 'api' ) ) );
/** Perform the action and install the plugin from the $source urldecode() */
$upgrader->install( $source );
/** Flush plugins cache so we can make sure that the installed plugins list is always up to date */
wp_cache_flush();
}
?>
</div>
<?php
}
static function install_url( $plugin, $plugin_name, $source = false ) {
// This is to prevent the issue where this URL is called from outside the admin
if ( ! is_admin() || ! function_exists( 'get_plugins' ) ) {
return false;
}
$plugins = get_plugins();
$plugins = array_keys( $plugins );
$installed = false;
foreach ( $plugins as $plugin_path ) {
if ( strpos( $plugin_path, $plugin . '/' ) === 0 ) {
$installed = true;
break;
}
}
if ( $installed && ! is_plugin_active( $plugin ) ) {
return wp_nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=' . $plugin_path ), 'activate-plugin_' . $plugin_path );
} elseif ( $installed && is_plugin_active( $plugin ) ) {
return '#';
} else {
return wp_nonce_url(
add_query_arg(
array(
'page' => 'siteorigin_panels_plugin_activation',
'plugin' => $plugin,
'plugin_name' => $plugin_name,
'plugin_source' => ! empty( $source ) ? urlencode( $source ) : false,
'siteorigin-pa-install' => 'install-plugin',
),
admin_url( 'plugins.php' )
),
'siteorigin-pa-install'
);
}
}
}