Exemplo n.º 1
0
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);
    }
}
Exemplo n.º 2
0
/**
 * 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();
    }
}
Exemplo n.º 3
0
 /**
  * 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();
             }
         }
     }
 }
Exemplo n.º 4
0
<?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) {
Exemplo n.º 5
0
/**
 * 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);
}