Skip to content

Commit

Permalink
Autoloader: move the upgrader_post_install hook callback to Plugins_H…
Browse files Browse the repository at this point in the history
…andler
  • Loading branch information
kbrown9 authored and kraftbj committed Jun 22, 2020
1 parent 9a60804 commit baa0bb6
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 41 deletions.
40 changes: 40 additions & 0 deletions packages/autoloader/src/class-plugins-handler.php
Original file line number Diff line number Diff line change
Expand Up @@ -156,4 +156,44 @@ private function get_plugins_activating_via_request() {
public function get_current_plugin_dir() {
return explode( '/', plugin_basename( __FILE__ ) )[0];
}

/**
* Resets the autoloader after a plugin update.
*
* @param bool $response Installation response.
* @param array $hook_extra Extra arguments passed to hooked filters.
* @param array $result Installation result data.
*
* @return bool The passed in $response param.
*/
public function reset_maps_after_update( $response, $hook_extra, $result ) {
global $jetpack_autoloader_latest_version;
global $jetpack_packages_classmap;

if ( isset( $hook_extra['plugin'] ) ) {
$plugin = $hook_extra['plugin'];

if ( ! is_directory_plugin( $plugin ) ) {
// Single-file plugins don't use packages, so bail.
return $response;
}

if ( ! is_plugin_active( $plugin ) ) {
// The updated plugin isn't active, so bail.
return $response;
}

$plugin_path = trailingslashit( WP_PLUGIN_DIR ) . trailingslashit( explode( '/', $plugin )[0] );

if ( is_readable( $plugin_path . 'vendor/autoload_functions.php' ) ) {
// The plugin has a v2.x autoloader, so reset it.
$jetpack_autoloader_latest_version = null;
$jetpack_packages_classmap = array();

require $plugin_path . 'vendor/autoload_packages.php';
}
}

return $response;
}
}
42 changes: 1 addition & 41 deletions packages/autoloader/src/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,47 +90,7 @@ function set_up_autoloader() {
if ( empty( $jetpack_packages_classmap ) && $current_autoloader_version === $jetpack_autoloader_latest_version ) {
enqueue_files( $plugins_handler, $version_selector );
$autoloader_handler->update_autoloader_chain();
add_filter( 'upgrader_post_install', __NAMESPACE__ . '\reset_maps_after_update', 0, 3 );
add_filter( 'upgrader_post_install', array( $plugins_handler, 'reset_maps_after_update' ), 0, 3 );
}
}

/**
* Resets the autoloader after a plugin update.
*
* @param bool $response Installation response.
* @param array $hook_extra Extra arguments passed to hooked filters.
* @param array $result Installation result data.
*
* @return bool The passed in $response param.
*/
function reset_maps_after_update( $response, $hook_extra, $result ) {
global $jetpack_autoloader_latest_version;
global $jetpack_packages_classmap;

if ( isset( $hook_extra['plugin'] ) ) {
$plugin = $hook_extra['plugin'];

if ( false === strpos( $plugin, '/', 1 ) ) {
// Single-file plugins don't use packages, so bail.
return $response;
}

if ( ! is_plugin_active( $plugin ) ) {
// The updated plugin isn't active, so bail.
return $response;
}

$plugin_path = trailingslashit( WP_PLUGIN_DIR ) . trailingslashit( explode( '/', $plugin )[0] );

if ( is_readable( $plugin_path . 'vendor/autoload_functions.php' ) ) {
// The plugin has a v2.x autoloader, so reset it.
$jetpack_autoloader_latest_version = null;
$jetpack_packages_classmap = array();

require $plugin_path . 'vendor/autoload_packages.php';
}
}

return $response;
}

0 comments on commit baa0bb6

Please sign in to comment.