From 359ba4770061004b40c2577389b3c45ef7b266df Mon Sep 17 00:00:00 2001 From: Aaron Jorbin Date: Thu, 26 Mar 2015 02:29:52 +0000 Subject: [PATCH] Remove Shiny Plugin Installs See #31773, #29820 git-svn-id: https://develop.svn.wordpress.org/trunk@31897 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/ajax-actions.php | 51 ------------ src/wp-admin/js/updates.js | 111 ++----------------------- 2 files changed, 7 insertions(+), 155 deletions(-) diff --git a/src/wp-admin/includes/ajax-actions.php b/src/wp-admin/includes/ajax-actions.php index 9c97317a92..b272d570d6 100644 --- a/src/wp-admin/includes/ajax-actions.php +++ b/src/wp-admin/includes/ajax-actions.php @@ -2876,57 +2876,6 @@ function wp_ajax_destroy_sessions() { wp_send_json_success( array( 'message' => $message ) ); } -/** - * AJAX handler for installing a plugin. - * - * @since 4.2.0 - */ -function wp_ajax_install_plugin() { - $status = array( - 'install' => 'plugin', - 'slug' => sanitize_key( $_POST['slug'] ), - ); - - if ( ! current_user_can( 'install_plugins' ) ) { - $status['error'] = __( 'You do not have sufficient permissions to install plugins on this site.' ); - wp_send_json_error( $status ); - } - - check_ajax_referer( 'updates' ); - - include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); - include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); - - $api = plugins_api( 'plugin_information', array( - 'slug' => sanitize_key( $_POST['slug'] ), - 'fields' => array( 'sections' => false ) - ) ); - - if ( is_wp_error( $api ) ) { - $status['error'] = $api->get_error_message(); - wp_send_json_error( $status ); - } - - $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); - $result = $upgrader->install( $api->download_link ); - - if ( is_wp_error( $result ) ) { - $status['error'] = $result->get_error_message(); - wp_send_json_error( $status ); - } else if ( is_null( $result ) ) { - $status['errorCode'] = 'unable_to_connect_to_filesystem'; - $status['error'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.' ); - wp_send_json_error( $status ); - } - - $plugin_status = install_plugin_install_status( $api ); - - if ( ! is_multisite() ) { - activate_plugin( $plugin_status['file'] ); - } - - wp_send_json_success( $status ); -} /** * AJAX handler for updating a plugin. diff --git a/src/wp-admin/js/updates.js b/src/wp-admin/js/updates.js index 77f0399486..85e044f643 100644 --- a/src/wp-admin/js/updates.js +++ b/src/wp-admin/js/updates.js @@ -51,7 +51,7 @@ window.wp = window.wp || {}; }; /** - * Flag if we're waiting for an install/update to complete. + * Flag if we're waiting for an update to complete. * * @since 4.2.0 * @@ -60,7 +60,7 @@ window.wp = window.wp || {}; wp.updates.updateLock = false; /** - * * Flag if we've done an install or update successfully. + * * Flag if we've done an update successfully. * * @since 4.2.0 * @@ -69,7 +69,7 @@ window.wp = window.wp || {}; wp.updates.updateDoneSuccessfully = false; /** - * If the user tries to install/update a plugin while an install/update is + * If the user tries to update a plugin while an update is * already happening, it can be placed in this queue to perform later. * * @since 4.2.0 @@ -255,92 +255,6 @@ window.wp = window.wp || {}; $notificationDialog.find( 'h3' ).after( '
' + message + '
' ); }; - /** - * Send an Ajax request to the server to install a plugin. - * - * @since 4.2.0 - * - * @param {string} slug - */ - wp.updates.installPlugin = function( slug ) { - var $message = $( '.plugin-card-' + slug ).find( '.install-now' ); - - $message.addClass( 'updating-message' ); - $message.text( wp.updates.l10n.installing ); - wp.a11y.speak( wp.updates.l10n.installingMsg ); - - if ( wp.updates.updateLock ) { - wp.updates.updateQueue.push( { - type: 'install-plugin', - data: { - slug: slug - } - } ); - return; - } - - wp.updates.updateLock = true; - - var data = { - _ajax_nonce: wp.updates.ajaxNonce, - slug: slug, - username: wp.updates.filesystemCredentials.ftp.username, - password: wp.updates.filesystemCredentials.ftp.password, - hostname: wp.updates.filesystemCredentials.ftp.hostname, - connection_type: wp.updates.filesystemCredentials.ftp.connectionType, - public_key: wp.updates.filesystemCredentials.ssh.publicKey, - private_key: wp.updates.filesystemCredentials.ssh.privateKey - }; - - wp.ajax.post( 'install-plugin', data ) - .done( wp.updates.installSuccess ) - .fail( wp.updates.installError ); - }; - - /** - * On plugin install success, update the UI with the result. - * - * @since 4.2.0 - * - * @param {object} response - */ - wp.updates.installSuccess = function( response ) { - var $message = $( '.plugin-card-' + response.slug ).find( '.install-now' ); - - $message.removeClass( 'updating-message' ).addClass( 'updated-message button-disabled' ); - $message.text( wp.updates.l10n.installed ); - wp.a11y.speak( wp.updates.l10n.installedMsg ); - wp.updates.updateDoneSuccessfully = true; - - /* - * The lock can be released since the update was successful, - * and any other updates can commence. - */ - wp.updates.updateLock = false; - wp.updates.queueChecker(); - }; - - /** - * On plugin install failure, update the UI appropriately. - * - * @since 4.2.0 - * - * @param {object} response - */ - wp.updates.installError = function( response ) { - var $message = $( '.plugin-card-' + response.slug ).find( '.install-now' ); - wp.updates.updateDoneSuccessfully = false; - if ( response.errorCode && response.errorCode == 'unable_to_connect_to_filesystem' ) { - wp.updates.credentialError( response, 'install-plugin' ); - return; - } - - $message.removeClass( 'updating-message' ); - $message.text( wp.updates.l10n.installNow ); - - wp.updates.updateLock = false; - }; - /** * Events that need to happen when there is a credential error * @@ -361,7 +275,7 @@ window.wp = window.wp || {}; }; /** - * If an install/update job has been placed in the queue, queueChecker pulls it out and runs it. + * If an update job has been placed in the queue, queueChecker pulls it out and runs it. * * @since 4.2.0 */ @@ -372,13 +286,13 @@ window.wp = window.wp || {}; var job = wp.updates.updateQueue.shift(); + /* This normally wouldn't be a switch, but is there since updates and installs + originally were developed together. Kept as a switch to help with bringing + installs back in and to preserve commit history. */ switch ( job.type ) { case 'update-plugin': wp.updates.updatePlugin( job.data.plugin, job.data.slug ); break; - case 'install-plugin': - wp.updates.installPlugin( job.data.slug ); - break; default: window.console.log( 'Failed to exect queued update job.' ); window.console.log( job ); @@ -463,17 +377,6 @@ window.wp = window.wp || {}; wp.updates.updatePlugin( $button.data( 'plugin' ), $button.data( 'slug' ) ); } ); - $( '.plugin-card .install-now' ).on( 'click', function( e ) { - e.preventDefault(); - if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.updateLock ) { - wp.updates.requestFilesystemCredentials(); - } - var $button = $( e.target ); - if ( $button.hasClass( 'button-disabled' ) ) { - return; - } - wp.updates.installPlugin( $button.data( 'slug' ) ); - } ); } ); $( window ).on( 'message', function( e ) {