Include only valid plugins. Props guillep2k, fixes #6871

git-svn-id: http://svn.automattic.com/wordpress/trunk@8495 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
azaozz 2008-07-29 23:10:12 +00:00
parent 7add050b10
commit 80c409458f
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);
}
}