Include only valid plugins. Props guillep2k, fixes #6871

git-svn-id: https://develop.svn.wordpress.org/trunk@8495 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Ozz 2008-07-29 23:10:12 +00:00
parent a9751a9ee9
commit 4ad2e3433e
3 changed files with 10 additions and 3 deletions

View File

@ -304,14 +304,19 @@ function validate_active_plugins() {
return;
}
//Invalid is any plugin that is deactivated due to error.
$invalid = array();
// If a plugin file does not exist, remove it from the list of active
// plugins.
foreach ( $check_plugins as $check_plugin ) {
$result = validate_plugin($check_plugin);
if ( is_wp_error( $result ) ) {
$invalid[$check_plugin] = $result;
deactivate_plugins( $check_plugin, true);
}
}
return $invalid;
}
function validate_plugin($plugin) {

View File

@ -165,8 +165,10 @@ wp_enqueue_script('admin-forms');
$title = __('Manage Plugins');
require_once('admin-header.php');
validate_active_plugins();
$invalid = validate_active_plugins();
if( !empty($invalid) )
foreach($invalid as $plugin_file => $error)
echo '<div id="message" class="error"><p>' . sprintf(__('The plugin <code>%s</code> has been <strong>deactivated</strong> due to <em>"%s"</em>.'), $plugin_file, $error->get_error_message()) . '</p></div>';
?>
<?php if ( isset($_GET['error']) ) : ?>

View File

@ -421,7 +421,7 @@ if ( get_option('active_plugins') ) {
$current_plugins = get_option('active_plugins');
if ( is_array($current_plugins) ) {
foreach ($current_plugins as $plugin) {
if ('' != $plugin && file_exists(WP_PLUGIN_DIR . '/' . $plugin))
if ( '' != $plugin && ! validate_file($plugin) && file_exists(WP_PLUGIN_DIR . '/' . $plugin) )
include_once(WP_PLUGIN_DIR . '/' . $plugin);
}
}