Make WordPress Core

Ticket #32198: 32198.diff

File 32198.diff, 2.7 KB (added by dd32, 9 years ago)
  • src/wp-admin/includes/ajax-actions.php

    function wp_ajax_update_plugin() { 
    29582958        $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
    29592959        if ( $plugin_data['Version'] ) {
    29602960                $status['oldVersion'] = sprintf( __( 'Version %s' ), $plugin_data['Version'] );
    29612961        }
    29622962
    29632963        if ( ! current_user_can( 'update_plugins' ) ) {
    29642964                $status['error'] = __( 'You do not have sufficient permissions to update plugins on this site.' );
    29652965                wp_send_json_error( $status );
    29662966        }
    29672967
    29682968        check_ajax_referer( 'updates' );
    29692969
    29702970        include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
    29712971
    29722972        $current = get_site_transient( 'update_plugins' );
    2973         if ( empty( $current ) ) {
     2973        if ( empty( $current ) || empty( $current->response ) ) {
    29742974                wp_update_plugins();
    29752975        }
    29762976
    29772977        $skin = new Automatic_Upgrader_Skin();
    29782978        $upgrader = new Plugin_Upgrader( $skin );
    29792979        $result = $upgrader->bulk_upgrade( array( $plugin ) );
    29802980
    29812981        if ( is_array( $result ) && empty( $result[$plugin] ) && is_wp_error( $skin->result ) ) {
    29822982                $result = $skin->result;
    29832983        }
    29842984
    29852985        if ( is_array( $result ) && !empty( $result[ $plugin ] ) ) {
    29862986                $plugin_update_data = current( $result );
    29872987
    29882988                /*
  • src/wp-includes/update.php

    function wp_update_plugins( $extra_stats 
    259259        // Update last_checked for current to prevent multiple blocking requests if request hangs
    260260        $current->last_checked = time();
    261261        set_site_transient( 'update_plugins', $current );
    262262
    263263        $to_send = compact( 'plugins', 'active' );
    264264
    265265        /**
    266266         * Filter the locales requested for plugin translations.
    267267         *
    268268         * @since 3.7.0
    269269         *
    270270         * @param array $locales Plugin locale. Default is current locale of the site.
    271271         */
    272272        $locales = apply_filters( 'plugins_update_check_locales', array( get_locale() ) );
    273273
    274         if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
     274        if ( ( defined( 'DOING_CRON' ) && DOING_CRON ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
    275275                $timeout = 30;
    276276        } else {
    277277                // Three seconds, plus one extra second for every 10 plugins
    278278                $timeout = 3 + (int) ( count( $plugins ) / 10 );
    279279        }
    280280
    281281        $options = array(
    282282                'timeout' => $timeout,
    283283                'body' => array(
    284284                        'plugins'      => wp_json_encode( $to_send ),
    285285                        'translations' => wp_json_encode( $translations ),
    286286                        'locale'       => wp_json_encode( $locales ),
    287287                        'all'          => wp_json_encode( true ),
    288288                ),
    289289                'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )