/** * Depending who and where you are, the plugin view is different * * @param string $hook What hook is fired * @param string $type Of what type * @param string $returnvalue The default return value * @param array $params Provided parameters * @return string */ function subsite_manager_plugin_view_hook($hook, $type, $returnvalue, $params) { $result = $returnvalue; // restrict the displayed plugin for subsite admins (on subsites) if (subsite_manager_on_subsite() && !subsite_manager_is_superadmin_logged_in()) { if (!empty($params) && is_array($params)) { $vars = elgg_extract("vars", $params); $entity = elgg_extract("entity", $vars); if (!empty($entity) && elgg_instanceof($entity, "object", "plugin")) { if (!subsite_manager_show_plugin($entity)) { $result = "<div class='hidden'></div>"; } } } } return $result; }
<?php /** * Change the plugin categories for Plugin Manager * because some plugin will not always be displayed * */ // restrict the displayed plugin for subsite admins (on subsites) if (subsite_manager_on_subsite() && !subsite_manager_is_superadmin_logged_in()) { $plugins = elgg_get_plugins("any"); $categories = array(); foreach ($plugins as $id => $plugin) { $show_plugin = subsite_manager_show_plugin($plugin); if ($show_plugin) { $plugin_categories = $plugin->getManifest()->getCategories(); if (isset($plugin_categories)) { foreach ($plugin_categories as $category) { if (!array_key_exists($category, $categories)) { $categories[$category] = ElggPluginManifest::getFriendlyCategory($category); } } } } } asort($categories); // we want bundled/nonbundled pulled to be at the top of the list unset($categories['bundled']); unset($categories['nonbundled']); $common_categories = array('all' => elgg_echo('admin:plugins:category:all'), 'active' => elgg_echo('admin:plugins:category:active'), 'inactive' => elgg_echo('admin:plugins:category:inactive'), 'bundled' => elgg_echo('admin:plugins:category:bundled'), 'nonbundled' => elgg_echo('admin:plugins:category:nonbundled')); $categories = array_merge($common_categories, $categories); $vars["category_options"] = $categories;
$installed_plugins = elgg_extract("installed_plugins", $vars); // 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 $plugin_list = array(); foreach ($installed_plugins as $id => $plugin) { if (!$plugin->isValid()) { if ($plugin->isActive()) { // force disable and warn elgg_add_admin_notice('invalid_and_deactivated_' . $plugin->getID(), elgg_echo('ElggPlugin:InvalidAndDeactivated', array($plugin->getId()))); $plugin->deactivate(); } continue; } // valid plugin, can it be managed if (subsite_manager_show_plugin($plugin)) { $plugin_list[] = $plugin; } } if (subsite_manager_is_superadmin_logged_in()) { $url = "<br />" . elgg_view("output/url", array("href" => "admin/plugins?advanced=yes", "text" => elgg_echo("subsite_manager:plugins:simple:switch"))); } echo elgg_view_module("info", "", elgg_echo("subsite_manager:plugins:description") . $url); ?> <div id="elgg-plugin-list"> <?php $options = array('limit' => 0, 'full_view' => true, 'list_type_toggle' => false, 'pagination' => false); echo elgg_view_entity_list($plugin_list, $options); ?> </div>