diff options
-rw-r--r-- | CHANGES.txt | 1 | ||||
-rw-r--r-- | engine/lib/plugins.php | 9 | ||||
-rw-r--r-- | languages/en.php | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 8b3abe80f..5590e0bec 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -7,6 +7,7 @@ http://code.elgg.org/elgg/..... * Unit tests added to System diagnostics. * Debug values output to screen when enabled in admin settings. * Users can now log in from multiple computers or browsers concurrently. + * Misconfigured plugins no longer break the site. #1454 * New search system. Bugfixes: diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index 0c8af5497..76692b447 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -228,7 +228,14 @@ function load_plugins() { if (is_plugin_enabled($mod)) { if (file_exists($CONFIG->pluginspath . $mod)) { if (!include($CONFIG->pluginspath . $mod . "/start.php")) { - throw new PluginException(sprintf(elgg_echo('PluginException:MisconfiguredPlugin'), $mod)); + // automatically disable the bad plugin + disable_plugin($mod); + + // register error rather than rendering the site unusable with exception + register_error(sprintf(elgg_echo('PluginException:MisconfiguredPlugin'), $mod)); + + // continue loading remaining plugins + continue; } if (!$cached_view_paths) { diff --git a/languages/en.php b/languages/en.php index 144d9579a..7da28a206 100644 --- a/languages/en.php +++ b/languages/en.php @@ -54,7 +54,7 @@ $english = array( 'InvalidClassException:NotValidElggStar' => "GUID:%d is not a valid %s", - 'PluginException:MisconfiguredPlugin' => "%s is a misconfigured plugin.", + 'PluginException:MisconfiguredPlugin' => "%s is a misconfigured plugin. It has been disabled. Please see the Elgg wiki for possible causes.", 'InvalidParameterException:NonElggUser' => "Passing a non-ElggUser to an ElggUser constructor!", |