diff options
Diffstat (limited to 'admin/plugins.php')
-rw-r--r-- | admin/plugins.php | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/admin/plugins.php b/admin/plugins.php index 55035830a..39478f153 100644 --- a/admin/plugins.php +++ b/admin/plugins.php @@ -9,17 +9,40 @@ * @link http://elgg.org/ */ -// Get the Elgg framework require_once(dirname(dirname(__FILE__)) . "/engine/start.php"); - -// Make sure only valid admin users can see this admin_gatekeeper(); - -// Regenerate plugin list regenerate_plugin_list(); +$show_category = get_input('category', NULL); + +// Get a list of the all categories +// and trim down the plugin list if we're not viewing all categories. +// @todo this could be cached somewhere after have the manifest loaded +$categories = array(); +$installed_plugins = get_installed_plugins(); + +foreach ($installed_plugins as $i => $plugin) { + $plugin_categories = $plugin['manifest']['category']; + + // handle plugins that don't declare categories + if ((!$plugin_categories && $show_category) || ($show_category && !in_array($show_category, $plugin_categories))) { + unset($installed_plugins[$i]); + } + + foreach ($plugin_categories as $category) { + if (!array_key_exists($category, $categories)) { + $categories[$category] = elgg_echo("admin:plugins:label:moreinfo:categories:$category"); + } + } +} + // Display main admin menu -$vars = array('installed_plugins' => get_installed_plugins()); +$vars = array( + 'installed_plugins' => $installed_plugins, + 'categories' => $categories, + 'show_category' => $show_category +); + $main_box = elgg_view("admin/plugins", $vars); $content = elgg_view_layout("one_column_with_sidebar", $main_box); |