function subsite_manager_boot_system_plugins_event_handler($event, $type, $object) { global $CONFIG; global $SUBSITE_MANAGER_PLUGINS_BOOT; // needs to be set for links in html head $viewtype = get_input('view', 'default'); $site_guid = elgg_get_site_entity()->getGUID(); $lastcached = datalist_get("sc_lastcached_" . $viewtype . "_" . $site_guid); $CONFIG->lastcache = $lastcached; // skip non-subsites if (!subsite_manager_on_subsite()) { return true; } $site = elgg_get_site_entity(); $to_activate = $site->getPrivateSetting('subsite_manager_plugins_activate'); if ($to_activate) { $SUBSITE_MANAGER_PLUGINS_BOOT = true; $site->removePrivateSetting('subsite_manager_plugins_activate'); $to_activate = unserialize($to_activate); set_time_limit(0); elgg_generate_plugin_entities(); $old_ia = elgg_set_ignore_access(true); $plugins = elgg_get_plugins('any'); foreach ($plugins as $plugin) { if (in_array($plugin->getID(), $to_activate)) { try { $plugin->activate(); } catch (Exception $e) { } } } elgg_set_ignore_access($old_ia); $SUBSITE_MANAGER_PLUGINS_BOOT = false; elgg_register_event_handler("ready", "system", "subsite_manager_ready_system_handler", 100); } }
/** * Regenerates the list of known plugins and saves it to the current site * * Important: You should regenerate simplecache and the viewpath cache after executing this function * otherwise you may experience view display artifacts. Do this with the following code: * * elgg_regenerate_simplecache(); * elgg_reset_system_cache(); * * @deprecated 1.8 Use elgg_generate_plugin_entities() and elgg_set_plugin_priorities() * * @param array $pluginorder Optionally, a list of existing plugins and their orders * * @return array The new list of plugins and their orders */ function regenerate_plugin_list($pluginorder = FALSE) { $msg = 'regenerate_plugin_list() is (sorta) deprecated by elgg_generate_plugin_entities() and' . ' elgg_set_plugin_priorities().'; elgg_deprecated_notice($msg, 1.8); // they're probably trying to set it? if ($pluginorder) { if (elgg_generate_plugin_entities()) { // sort the plugins by the index numerically since we used // weird indexes in the old system. ksort($pluginorder, SORT_NUMERIC); return elgg_set_plugin_priorities($pluginorder); } return false; } else { // they're probably trying to regenerate from disk? return elgg_generate_plugin_entities(); } }
/** * Enable a set of default plugins * * @return void */ protected function enablePlugins() { elgg_generate_plugin_entities(); $plugins = elgg_get_plugins('any'); foreach ($plugins as $plugin) { if ($plugin->getManifest()) { if ($plugin->getManifest()->getActivateOnInstall()) { $plugin->activate(); } } } }
<?php /** * Elgg administration plugin screen * * Shows a list of plugins that can be sorted and filtered. * * @package Elgg.Core * @subpackage Admin.Plugins */ elgg_generate_plugin_entities(); $installed_plugins = elgg_get_plugins('any'); $show_category = get_input('category', 'all'); $sort = get_input('sort', 'priority'); // 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(); foreach ($installed_plugins as $id => $plugin) { if (!$plugin->isValid()) { if ($plugin->isActive()) { // force disable and warn register_error(elgg_echo('ElggPlugin:InvalidAndDeactivated', array($plugin->getId()))); $plugin->deactivate(); } continue; } $plugin_categories = $plugin->getManifest()->getCategories(); // handle plugins that don't declare categories // unset them here because this is the list we foreach switch ($show_category) {
/** * Sync the plugins for a specific subsite * * @param ElggSite $subsite * * @return array ($sorted, $activated) number of sorted and activated plugins. */ function subsite_manager_sync_plugins(Subsite $subsite) { $main_site = elgg_get_config('site'); $plugins_by_id_map = elgg_get_config('plugins_by_id_map'); $global_order = subsite_manager_get_main_plugin_order(); $global_plugins_active = subsite_manager_get_global_enabled_plugins(); // pretend to be on the subsite elgg_set_config('site', $subsite); elgg_set_config('site_guid', $subsite->guid); elgg_set_config('plugins_by_id_map', array()); // make sure all plugins exist in the database elgg_generate_plugin_entities(); // mark plugins to activate $private_setting = $subsite->getPrivateSetting('subsite_manager_plugins_activate'); if (isset($private_setting)) { $to_activate = unserialize($private_setting); } else { $to_activate = array(); } $sorted = 0; $activated = 0; // reorder plugins according to global order and activate global plugins $plugins = subsite_manager_get_plugins(); foreach ($plugins as $plugin) { $priority = array_search($plugin->getID(), $global_order) + 1; if ($priority === false) { $priority = 'last'; } $priority_name = elgg_namespace_plugin_private_setting('internal', 'priority'); if ($plugin->get($priority_name) != $priority) { $plugin->set($priority_name, $priority); $sorted++; } if (!$plugin->isActive() && in_array($plugin->getID(), $global_plugins_active)) { if (!in_array($plugin->getID(), $to_activate)) { $to_activate[] = $plugin->getID(); $activated++; } } } $subsite->setPrivateSetting('subsite_manager_plugins_activate', serialize($to_activate)); // clean the caches elgg_invalidate_simplecache(); elgg_reset_system_cache(); // restore original "main" site elgg_set_config('site', $main_site); elgg_set_config('site_guid', $main_site->guid); elgg_set_config('plugins_by_id_map', $plugins_by_id_map); return array($sorted, $activated); }