aboutsummaryrefslogtreecommitdiff
path: root/admin
diff options
context:
space:
mode:
Diffstat (limited to 'admin')
-rw-r--r--admin/plugins.php35
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);