WordPress.org

Make WordPress Core

Changeset 25272


Ignore:
Timestamp:
09/06/13 01:32:09 (4 years ago)
Author:
dd32
Message:

Upgrader: Make clearing the Plugin and Theme update caches optional during install and upgrade proceedures. See #22704

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/class-wp-upgrader.php

    r25254 r25272  
    164164    } 
    165165 
    166     function install_package($args = array()) { 
     166    function install_package( $args = array() ) { 
    167167        global $wp_filesystem, $wp_theme_directories; 
    168168 
    169         $defaults = array( 'source' => '', 'destination' => '', //Please always pass these 
    170                         'clear_destination' => false, 'clear_working' => false, 
    171                         'abort_if_destination_exists' => true, 
    172                         'hook_extra' => array()); 
     169        $defaults = array( 
     170            'source' => '', // Please always pass this 
     171            'destination' => '', // and this 
     172            'clear_destination' => false, 
     173            'clear_working' => false, 
     174            'abort_if_destination_exists' => true, 
     175            'hook_extra' => array() 
     176        ); 
    173177 
    174178        $args = wp_parse_args($args, $defaults); 
     
    278282    function run($options) { 
    279283 
    280         $defaults = array(  'package' => '', //Please always pass this. 
    281                             'destination' => '', //And this 
    282                             'clear_destination' => false, 
    283                             'abort_if_destination_exists' => true, // Abort if the Destination directory exists, Pass clear_destination as false please 
    284                             'clear_working' => true, 
    285                             'is_multi' => false, 
    286                             'hook_extra' => array() //Pass any extra $hook_extra args here, this will be passed to any hooked filters. 
    287                         ); 
     284        $defaults = array( 
     285            'package' => '', // Please always pass this. 
     286            'destination' => '', // And this 
     287            'clear_destination' => false, 
     288            'abort_if_destination_exists' => true, // Abort if the Destination directory exists, Pass clear_destination as false please 
     289            'clear_working' => true, 
     290            'is_multi' => false, 
     291            'hook_extra' => array() // Pass any extra $hook_extra args here, this will be passed to any hooked filters. 
     292        ); 
    288293 
    289294        $options = wp_parse_args($options, $defaults); 
     
    325330        //With the given options, this installs it to the destination directory. 
    326331        $result = $this->install_package( array( 
    327                                             'source' => $working_dir, 
    328                                             'destination' => $destination, 
    329                                             'clear_destination' => $clear_destination, 
    330                                             'abort_if_destination_exists' => $abort_if_destination_exists, 
    331                                             'clear_working' => $clear_working, 
    332                                             'hook_extra' => $hook_extra 
    333                                         ) ); 
     332            'source' => $working_dir, 
     333            'destination' => $destination, 
     334            'clear_destination' => $clear_destination, 
     335            'abort_if_destination_exists' => $abort_if_destination_exists, 
     336            'clear_working' => $clear_working, 
     337            'hook_extra' => $hook_extra 
     338        ) ); 
     339 
    334340        $this->skin->set_result($result); 
    335341        if ( is_wp_error($result) ) { 
     
    399405    } 
    400406 
    401     function install($package) { 
     407    function install( $package, $args = array() ) { 
     408 
     409        $defaults = array( 
     410            'clear_update_cache' => true, 
     411        ); 
     412        $parsed_args = wp_parse_args( $defaults, $args ); 
    402413 
    403414        $this->init(); 
     
    406417        add_filter('upgrader_source_selection', array($this, 'check_package') ); 
    407418 
    408         $this->run(array( 
    409                     'package' => $package, 
    410                     'destination' => WP_PLUGIN_DIR, 
    411                     'clear_destination' => false, //Do not overwrite files. 
    412                     'clear_working' => true, 
    413                     'hook_extra' => array() 
    414                     )); 
     419        $this->run( array( 
     420            'package' => $package, 
     421            'destination' => WP_PLUGIN_DIR, 
     422            'clear_destination' => false, // Do not overwrite files. 
     423            'clear_working' => true, 
     424            'hook_extra' => array() 
     425        ) ); 
    415426 
    416427        remove_filter('upgrader_source_selection', array($this, 'check_package') ); 
     
    420431 
    421432        // Force refresh of plugin update information 
    422         delete_site_transient('update_plugins'); 
    423         wp_cache_delete( 'plugins', 'plugins' ); 
     433        wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); 
     434 
    424435        do_action( 'upgrader_process_complete', $this, array( 'action' => 'install', 'type' => 'plugin' ), $package ); 
    425436 
     
    427438    } 
    428439 
    429     function upgrade($plugin) { 
     440    function upgrade( $plugin, $args = array() ) { 
     441 
     442        $defaults = array( 
     443            'clear_update_cache' => true, 
     444        ); 
     445        $parsed_args = wp_parse_args( $defaults, $args ); 
    430446 
    431447        $this->init(); 
     
    448464        //'source_selection' => array($this, 'source_selection'), //there's a trac ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins. 
    449465 
    450         $this->run(array( 
    451                     'package' => $r->package, 
    452                     'destination' => WP_PLUGIN_DIR, 
    453                     'clear_destination' => true, 
    454                     'clear_working' => true, 
    455                     'hook_extra' => array( 
    456                                 'plugin' => $plugin 
    457                     ) 
    458                 )); 
     466        $this->run( array( 
     467            'package' => $r->package, 
     468            'destination' => WP_PLUGIN_DIR, 
     469            'clear_destination' => true, 
     470            'clear_working' => true, 
     471            'hook_extra' => array( 
     472                'plugin' => $plugin 
     473            ), 
     474        ) ); 
    459475 
    460476        // Cleanup our hooks, in case something else does a upgrade on this connection. 
     
    466482 
    467483        // Force refresh of plugin update information 
    468         delete_site_transient('update_plugins'); 
    469         wp_cache_delete( 'plugins', 'plugins' ); 
     484        wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); 
     485 
    470486        do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'plugin' ), $plugin ); 
    471487 
     
    473489    } 
    474490 
    475     function bulk_upgrade($plugins) { 
     491    function bulk_upgrade( $plugins, $args = array() ) { 
     492 
     493        $defaults = array( 
     494            'clear_update_cache' => true, 
     495        ); 
     496        $parsed_args = wp_parse_args( $defaults, $args ); 
    476497 
    477498        $this->init(); 
     
    526547            $this->skin->plugin_active = is_plugin_active($plugin); 
    527548 
    528             $result = $this->run(array( 
    529                         'package' => $r->package, 
    530                         'destination' => WP_PLUGIN_DIR, 
    531                         'clear_destination' => true, 
    532                         'clear_working' => true, 
    533                         'is_multi' => true, 
    534                         'hook_extra' => array( 
    535                                     'plugin' => $plugin 
    536                         ) 
    537                     )); 
     549            $result = $this->run( array( 
     550                'package' => $r->package, 
     551                'destination' => WP_PLUGIN_DIR, 
     552                'clear_destination' => true, 
     553                'clear_working' => true, 
     554                'is_multi' => true, 
     555                'hook_extra' => array( 
     556                    'plugin' => $plugin 
     557                ) 
     558            ) ); 
    538559 
    539560            $results[$plugin] = $this->result; 
     
    554575 
    555576        // Force refresh of plugin update information 
    556         delete_site_transient('update_plugins'); 
    557         wp_cache_delete( 'plugins', 'plugins' ); 
     577        wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); 
     578 
    558579        do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'plugin', 'bulk' => true ), $plugins ); 
    559580 
     
    756777    } 
    757778 
    758     function install($package) { 
     779    function install( $package, $args = array() ) { 
     780 
     781        $defaults = array( 
     782            'clear_update_cache' => true, 
     783        ); 
     784        $parsed_args = wp_parse_args( $defaults, $args ); 
    759785 
    760786        $this->init(); 
     
    764790        add_filter('upgrader_post_install', array($this, 'check_parent_theme_filter'), 10, 3); 
    765791 
    766         $options = array( 
     792        $this->run( array( 
    767793            'package' => $package, 
    768794            'destination' => get_theme_root(), 
    769795            'clear_destination' => false, //Do not overwrite files. 
    770796            'clear_working' => true 
    771         ); 
    772  
    773         $this->run($options); 
     797        ) ); 
    774798 
    775799        remove_filter('upgrader_source_selection', array($this, 'check_package') ); 
     
    779803            return $this->result; 
    780804 
    781         // Force refresh of theme update information 
    782         wp_clean_themes_cache(); 
     805        // Refresh the Theme Update information 
     806        wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); 
     807 
    783808        do_action( 'upgrader_process_complete', $this, array( 'action' => 'install', 'type' => 'theme' ), $package ); 
    784809 
     
    786811    } 
    787812 
    788     function upgrade($theme) { 
     813    function upgrade( $theme, $args = array() ) { 
     814 
     815        $defaults = array( 
     816            'clear_update_cache' => true, 
     817        ); 
     818        $parsed_args = wp_parse_args( $defaults, $args ); 
    789819 
    790820        $this->init(); 
     
    807837        add_filter('upgrader_clear_destination', array($this, 'delete_old_theme'), 10, 4); 
    808838 
    809         $options = array( 
     839        $this->run( array( 
    810840            'package' => $r['package'], 
    811841            'destination' => get_theme_root( $theme ), 
     
    815845                'theme' => $theme 
    816846            ), 
    817         ); 
    818  
    819         $this->run($options); 
     847        ) ); 
    820848 
    821849        remove_filter('upgrader_pre_install', array($this, 'current_before')); 
     
    826854            return $this->result; 
    827855 
    828         // Force refresh of theme update information 
    829         wp_clean_themes_cache(); 
     856        wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); 
     857 
    830858        do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'theme' ), $theme ); 
    831859 
     
    833861    } 
    834862 
    835     function bulk_upgrade($themes) { 
     863    function bulk_upgrade( $themes, $args = array() ) { 
     864 
     865        $defaults = array( 
     866            'clear_update_cache' => true, 
     867        ); 
     868        $parsed_args = wp_parse_args( $defaults, $args ); 
    836869 
    837870        $this->init(); 
     
    887920            $r = $current->response[ $theme ]; 
    888921 
    889             $options = array( 
     922            $result = $this->run( array( 
    890923                'package' => $r['package'], 
    891924                'destination' => get_theme_root( $theme ), 
     
    895928                    'theme' => $theme 
    896929                ), 
    897             ); 
    898  
    899             $result = $this->run($options); 
     930            ) ); 
    900931 
    901932            $results[$theme] = $this->result; 
     
    917948        remove_filter('upgrader_clear_destination', array($this, 'delete_old_theme')); 
    918949 
    919         // Force refresh of theme update information 
    920         wp_clean_themes_cache(); 
     950        // Refresh the Theme Update information 
     951        wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); 
     952 
    921953        do_action( 'upgrader_process_complete', $this, array( 'action' => 'update', 'type' => 'theme', 'bulk' => true ), $themes ); 
    922954 
     
    10391071    } 
    10401072 
    1041     function upgrade($current) { 
     1073    function upgrade( $current, $args = array() ) { 
    10421074        global $wp_filesystem, $wp_version; 
     1075 
     1076        $defaults = array( 
     1077        ); 
     1078        $parsed_args = wp_parse_args( $defaults, $args ); 
    10431079 
    10441080        $this->init(); 
  • trunk/src/wp-admin/includes/plugin.php

    r25081 r25272  
    17651765    wp_nonce_field("$option_group-options"); 
    17661766} 
     1767 
     1768/** 
     1769 * Clears the Plugins cache used by get_plugins() and by default, the Plugin Update cache. 
     1770 * 
     1771 * @since 3.7.0 
     1772 * 
     1773 * @param bool $clear_update_cache Whether to clear the Plugin updates cache 
     1774 */ 
     1775function wp_clean_plugins_cache( $clear_update_cache = true ) { 
     1776    if ( $clear_update_cache ) 
     1777        delete_site_transient( 'update_plugins' ); 
     1778    wp_cache_delete( 'plugins', 'plugins' ); 
     1779} 
  • trunk/src/wp-includes/theme.php

    r25235 r25272  
    111111 * 
    112112 * @since 3.5.0 
    113  */ 
    114 function wp_clean_themes_cache() { 
    115     delete_site_transient('update_themes'); 
     113 * @param bool $clear_update_cache Whether to clear the Theme updates cache 
     114 */ 
     115function wp_clean_themes_cache( $clear_update_cache = true ) { 
     116    if ( $clear_update_cache ) 
     117        delete_site_transient( 'update_themes' ); 
    116118    search_theme_directories( true ); 
    117119    foreach ( wp_get_themes( array( 'errors' => null ) ) as $theme ) 
Note: See TracChangeset for help on using the changeset viewer.