'envira-gallery-settings', ), admin_url( 'admin.php' ) ); $url = esc_url( $url ); // Start output bufferring to catch the filesystem form if credentials are needed. ob_start(); $creds = request_filesystem_credentials( $url, $method, false, false, null ); if ( false === $creds ) { $form = ob_get_clean(); echo wp_json_encode( array( 'form' => $form ) ); die; } // If we are not authenticated, make it happen now. if ( ! WP_Filesystem( $creds ) ) { ob_start(); request_filesystem_credentials( $url, $method, true, false, null ); $form = ob_get_clean(); echo wp_json_encode( array( 'form' => $form ) ); die; } // We do not need any extra credentials if we have gotten this far, so let's install the plugin. require_once (ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'); require_once (plugin_dir_path( EMR_ROOT_FILE ) . 'classes/external/upgrader_skin.php'); // Create the plugin upgrader with our custom skin. $skin = new EMR_Envira_Gallery_Skin(); $installer = new Plugin_Upgrader( $skin ); $installer->install( $download_url ); // Flush the cache and return the newly installed plugin basename. wp_cache_flush(); if ( $installer->plugin_info() ) { $plugin_basename = $installer->plugin_info(); ob_clean(); wp_send_json_success( array( 'plugin' => $plugin_basename ) ); die(); } } // Send back a response. wp_send_json(array('result'=> false)); die; } add_action( 'wp_ajax_emr_plugin_activate', 'emr_activate' ); /** * Activates an Envira addon. * * @since 1.0.0 */ function emr_activate() { // Run a security check first. check_admin_referer( 'emr-plugin-activate', 'nonce' ); $plugin = isset($_POST['plugin']) ? sanitize_text_field($_POST['plugin']) : null; switch($plugin) { case "envira": $plugin = 'envira-gallery-lite/envira-gallery-lite.php'; break; case 'spio': $plugin = 'shortpixel-image-optimiser/wp-shortpixel.php'; break; case 'spai': $plugin = 'shortpixel-adaptive-images/short-pixel-ai.php'; break; } // Activate the addon. if ( ! is_null($plugin) ) { $activate = activate_plugin( $plugin ); if ( is_wp_error( $activate ) ) { echo json_encode( array( 'error' => $activate->get_error_message() ) ); die; } } echo json_encode( true ); die; }