Make WordPress Core

Ticket #29022: 29022.6.diff

File 29022.6.diff, 6.0 KB (added by pento, 9 years ago)
  • src/wp-admin/includes/class-wp-upgrader-skins.php

     
    111111                        return;
    112112                }
    113113
     114                switch ( $type ) {
     115                        case 'plugin':
     116                        case 'theme':
     117                                $transient = get_site_transient( "update_{$type}s" );
     118                                if ( empty( $transient->updated ) ) {
     119                                        $transient->updated = 1;
     120                                } else {
     121                                        $transient->updated++;
     122                                }
     123                                set_site_transient( "update_{$type}s", $transient );
     124
     125                                break;
     126                        case 'wordpress':
     127                                delete_site_transient( 'update_core' );
     128
     129                                break;
     130                        case 'translation':
     131                                if ( false === wp_cache_get( 'translations_updated', 'updates' ) ) {
     132                                        wp_cache_set( 'translations_updated', 1, 'updates' );
     133                                } else {
     134                                        wp_cache_incr( 'translations_updated', 1, 'updates' );
     135                                }
     136
     137                                break;
     138                }
     139
     140                $update_data = wp_get_update_data();
     141
    114142                if ( defined( 'IFRAME_REQUEST' ) ) {
    115143                        echo '<script type="text/javascript">
    116144                                        if ( window.postMessage && JSON ) {
    117                                                 window.parent.postMessage( JSON.stringify( { action: "decrementUpdateCount", upgradeType: "' . $type . '" } ), window.location.protocol + "//" + window.location.hostname );
     145                                                window.parent.postMessage( JSON.stringify( { action: "decrementUpdateCount", upgradeType: "' . $type . '", upgradeTitle: "' . $update_data['title'] . '" } ), window.location.protocol + "//" + window.location.hostname );
    118146                                        }
    119147                                </script>';
    120148                } else {
    121149                        echo '<script type="text/javascript">
    122150                                        (function( wp ) {
    123151                                                if ( wp && wp.updates.decrementCount ) {
    124                                                         wp.updates.decrementCount( "' . $type . '" );
     152                                                        wp.updates.decrementCount( "' . $type . '", "' . $update_data['title'] . '" );
    125153                                                }
    126154                                        })( window.wp );
    127155                                </script>';
  • src/wp-admin/js/updates.js

     
    88         * Decrement update counts throughout the various menus
    99         *
    1010         * @param {string} updateType
     11         * @param {string} title
    1112         */
    12         wp.updates.decrementCount = function( upgradeType ) {
     13        wp.updates.decrementCount = function( upgradeType, title ) {
    1314                var count, pluginCount, $elem;
    1415
    1516                $elem = $( '#wp-admin-bar-updates .ab-label' );
     
    1819                if ( count < 0 ) {
    1920                        return;
    2021                }
    21                 $( '#wp-admin-bar-updates .ab-item' ).removeAttr( 'title' );
    2222                $elem.text( count );
    2323
     24                $( '#wp-admin-bar-updates .ab-item' ).attr( 'title', title );
     25                $( '#wp-admin-bar-updates .screen-reader-text' ).text( title );
     26
    2427                $elem = $( 'a[href="update-core.php"] .update-plugins' );
    2528                $elem.each( function( index, elem ) {
    2629                        elem.className = elem.className.replace( /count-\d+/, 'count-' + count );
     
    5861                        return;
    5962                }
    6063
    61                 wp.updates.decrementCount( message.upgradeType );
     64                wp.updates.decrementCount( message.upgradeType, message.upgradeTitle );
    6265
    6366        } );
    6467
  • src/wp-includes/load.php

     
    452452
    453453        if ( function_exists( 'wp_cache_add_global_groups' ) ) {
    454454                wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache' ) );
    455                 wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins' ) );
     455                wp_cache_add_non_persistent_groups( array( 'comment', 'counts', 'plugins', 'updates' ) );
    456456        }
    457457}
    458458
  • src/wp-includes/update.php

     
    522522
    523523        if ( $plugins = current_user_can( 'update_plugins' ) ) {
    524524                $update_plugins = get_site_transient( 'update_plugins' );
    525                 if ( ! empty( $update_plugins->response ) )
     525                if ( ! empty( $update_plugins->response ) ) {
    526526                        $counts['plugins'] = count( $update_plugins->response );
     527                        if ( ! empty( $update_plugins->updated ) ) {
     528                                $counts['plugins'] -= $update_plugins->updated;
     529                        }
     530                }
    527531        }
    528532
    529533        if ( $themes = current_user_can( 'update_themes' ) ) {
    530534                $update_themes = get_site_transient( 'update_themes' );
    531                 if ( ! empty( $update_themes->response ) )
     535                if ( ! empty( $update_themes->response ) ) {
    532536                        $counts['themes'] = count( $update_themes->response );
     537                        if ( ! empty( $update_themes->updated ) ) {
     538                                $counts['themes'] -= $update_themes->updated;
     539                        }
     540                }
    533541        }
    534542
    535543        if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) {
     
    538546                        $counts['wordpress'] = 1;
    539547        }
    540548
    541         if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() )
    542                 $counts['translations'] = 1;
     549        if ( ( $core || $plugins || $themes ) && $translations = wp_get_translation_updates() ) {
     550                $counts['translations'] = count( $translations );
     551                $translations_updated = wp_cache_get( 'translations_updated', 'updates' );
     552                if ( $translations_updated > 0 ) {
     553                        $counts['translations'] -= $translations_updated;
     554                }
     555        }
    543556
    544557        $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations'];
    545558        $titles = array();
    546         if ( $counts['wordpress'] )
     559        if ( $counts['wordpress'] > 0 )
    547560                $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] );
    548         if ( $counts['plugins'] )
     561        if ( $counts['plugins'] > 0 )
    549562                $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] );
    550         if ( $counts['themes'] )
     563        if ( $counts['themes'] > 0 )
    551564                $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] );
    552         if ( $counts['translations'] )
     565        if ( $counts['translations'] > 0 )
    553566                $titles['translations'] = __( 'Translation Updates' );
    554567
    555568        $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : '';