Make WordPress Core


Ignore:
Timestamp:
02/05/2015 04:18:57 AM (11 years ago)
Author:
pento
Message:

Shiny Updates: Add ajax-y updates to the plugin list page, and ajax-y updates and installs to the plugin card page.

This also includes JS architecture that can be expanded to support theme, core and language pack updates.

Props pento, ericlewis, lgladdy, adamsilverstein, DrewAPicture

See #29820

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/ajax-actions.php

    r31313 r31333  
    28292829    wp_send_json_success( array( 'message' => $message ) );
    28302830}
     2831
     2832/**
     2833 * AJAX handler for installing a plugin.
     2834 *
     2835 * @since 4.2.0
     2836 */
     2837function wp_ajax_install_plugin() {
     2838    check_ajax_referer( 'updates' );
     2839
     2840    include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
     2841    include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
     2842
     2843    $status = array(
     2844        'install' => 'plugin',
     2845        'slug'    => sanitize_key( $_POST['slug'] ),
     2846    );
     2847
     2848    $api = plugins_api( 'plugin_information', array(
     2849        'slug'   => sanitize_key( $_POST['slug'] ),
     2850        'fields' => array( 'sections' => false )
     2851    ) );
     2852
     2853    if ( is_wp_error( $api ) ) {
     2854        $status['error'] = $api->get_error_message();
     2855        wp_send_json_error( $status );
     2856    }
     2857
     2858    $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
     2859    $result = $upgrader->install( $api->download_link );
     2860
     2861    if ( is_wp_error( $result ) ) {
     2862        $status['error'] = $result->get_error_message();
     2863        wp_send_json_error( $status );
     2864    }
     2865
     2866    $plugin_status = install_plugin_install_status( array( 'slug' => sanitize_key( $_POST['slug'] ) ) );
     2867    activate_plugin( $plugin_status['file'] );
     2868
     2869    wp_send_json_success( $status );
     2870}
     2871
     2872/**
     2873 * AJAX handler for updating a plugin.
     2874 *
     2875 * @since 4.2.0
     2876 */
     2877function wp_ajax_update_plugin() {
     2878    check_ajax_referer( 'updates' );
     2879
     2880    include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
     2881
     2882    $plugin = urldecode( $_POST['plugin'] );
     2883
     2884    $status = array(
     2885        'update' => 'plugin',
     2886        'plugin' => $plugin,
     2887        'slug'   => sanitize_key( $_POST['slug'] ),
     2888    );
     2889
     2890    $current = get_site_transient( 'update_plugins' );
     2891    if ( empty( $current ) ) {
     2892        wp_update_plugins();
     2893    }
     2894
     2895    $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() );
     2896    $result = $upgrader->bulk_upgrade( array( $plugin ) );
     2897
     2898    if ( is_array( $result ) ) {
     2899        $result = $result[ $plugin ];
     2900    }
     2901
     2902    if ( is_wp_error( $result ) ) {
     2903        $status['error'] = $result->get_error_message();
     2904        wp_send_json_error( $status );
     2905    }
     2906
     2907    wp_send_json_success( $status );
     2908}
Note: See TracChangeset for help on using the changeset viewer.