Active plugin filter, plugin deactivation array_splice() protection. props apeatling. fixes #10839

git-svn-id: http://svn.automattic.com/wordpress/trunk@11966 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
markjaquith 2009-09-24 04:15:37 +00:00
parent 48932f96fe
commit c664315b01
2 changed files with 9 additions and 4 deletions

View File

@ -272,7 +272,7 @@ function get_plugins($plugin_folder = '') {
* @return bool True, if in the active plugins list. False, not in the list.
*/
function is_plugin_active($plugin) {
return in_array($plugin, get_option('active_plugins'));
return in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) );
}
/**
@ -347,7 +347,12 @@ function deactivate_plugins($plugins, $silent= false) {
continue;
if ( ! $silent )
do_action( 'deactivate_plugin', trim( $plugin ) );
array_splice($current, array_search( $plugin, $current), 1 ); // Fixed Array-fu!
$key = array_search( $plugin, (array) $current );
if ( false !== $key )
array_splice( $current, $key, 1 );
//Used by Plugin updater to internally deactivate plugin, however, not to notify plugins of the fact to prevent plugin output.
if ( ! $silent ) {
do_action( 'deactivate_' . trim( $plugin ) );
@ -484,7 +489,7 @@ function delete_plugins($plugins, $redirect = '' ) {
}
function validate_active_plugins() {
$check_plugins = get_option('active_plugins');
$check_plugins = apply_filters( 'active_plugins', get_option('active_plugins') );
// Sanity check. If the active plugin list is not an array, make it an
// empty array.

View File

@ -552,7 +552,7 @@ if ( get_option('hack_file') ) {
require(ABSPATH . 'my-hacks.php');
}
$current_plugins = get_option('active_plugins');
$current_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
if ( is_array($current_plugins) && !defined('WP_INSTALLING') ) {
foreach ( $current_plugins as $plugin ) {
// check the $plugin filename