]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #2888: Plugins are checked for validity in elgg_get_plugins(). It won't return...
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 11 Feb 2011 22:09:04 +0000 (22:09 +0000)
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 11 Feb 2011 22:09:04 +0000 (22:09 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@8121 36083f99-b078-4883-b0ff-0f9b5a30f544

engine/lib/plugins.php

index b33b8d0ac8ee527b934c3004b51ee08100e22684..2ac49e8dff7d2f0bf60a2a10b7b531e629f9a76b 100644 (file)
@@ -350,12 +350,12 @@ function elgg_load_plugins() {
 /**
  * Returns an ordered list of plugins
  *
- * @param string $status          The status of the plugins. active, inactive, or all.
- * @param bool   $include_deleted Include physically deleted (and so inactive and disabled) plugins?
- * @param mixed  $site_guid       Optional site guid
+ * @param string $status      The status of the plugins. active, inactive, or all.
+ * @param bool   $include_bad Include physically deleted and invalid plugins?
+ * @param mixed  $site_guid   Optional site guid
  * @return array
  */
-function elgg_get_plugins($status = 'active', $include_deleted = false, $site_guid = NULL) {
+function elgg_get_plugins($status = 'active', $include_bad = false, $site_guid = NULL) {
        $db_prefix = get_config('dbprefix');
        $priority = elgg_namespace_plugin_private_setting('internal', 'priority');
 
@@ -394,14 +394,21 @@ function elgg_get_plugins($status = 'active', $include_deleted = false, $site_gu
                        break;
        }
 
-       if ($include_deleted) {
+       if ($include_bad) {
                $old_id = elgg_set_ignore_access(true);
        }
 
        $plugins = elgg_get_entities_from_relationship($options);
 
-       if ($include_deleted) {
+       if ($include_bad) {
                elgg_set_ignore_access($old_ia);
+       } else {
+               // remove bad plugins
+               foreach ($plugins as $i => $plugin) {
+                       if (!$plugin->isValid()) {
+                               unset ($plugins[$i]);
+                       }
+               }
        }
 
        return $plugins;