Exemple #1
0
function subsite_manager_runonce_elgg18()
{
    $options = array("type" => "site", "subtype" => Subsite::SUBTYPE, "limit" => false);
    if ($subsites = elgg_get_entities($options)) {
        $global_plugins = subsite_manager_get_global_enabled_plugins();
        foreach ($subsites as $subsite) {
            $subsite->setPrivateSetting('subsite_manager_plugins_activate', serialize($global_plugins));
        }
    }
}
Exemple #2
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);
}
Exemple #3
0
/**
 *	Change the display of the plugin action button (activate/deactivate)
 *
 * @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_action_button_hook($hook, $type, $returnvalue, $params)
{
    $result = $returnvalue;
    if (!empty($params) && is_array($params)) {
        $entity = elgg_extract("entity", $params);
        if (!empty($entity) && elgg_instanceof($entity, "object", "plugin")) {
            $global_enabled_plugins = subsite_manager_get_global_enabled_plugins();
            if (!empty($global_enabled_plugins) && is_array($global_enabled_plugins) && in_array($entity->getID(), $global_enabled_plugins)) {
                $result = "<div style='width:20px;height:16px'></div>";
            }
        }
    }
    return $result;
}