function elgg_modifications_create_user_event_handler($event, $object_type, $object) { if (elgg_instanceof($object, "user")) { if (subsite_manager_on_subsite()) { $object->setPrivateSetting("digest_" . elgg_get_site_entity()->getOwnerGUID(), "none"); } } }
function subsite_manager_fix_piwik_settings() { global $SUBSITE_MANAGER_IGNORE_WRITE_ACCESS; if (subsite_manager_on_subsite()) { $site = elgg_get_site_entity(); if ($piwik_settings = $site->phloor_analytics_piwik_settings) { $SUBSITE_MANAGER_IGNORE_WRITE_ACCESS = true; if ($site->canEdit()) { // log to the error log that we did something error_log("PIWIK saving settings for " . $site->name . " (" . $site->getGUID() . ")"); error_log("PIWIK settings: " . $piwik_settings); if ($piwik_settings = json_decode($piwik_settings, true)) { if (!empty($piwik_settings) && is_array($piwik_settings)) { $enabled = elgg_extract("enable_tracking", $piwik_settings); $piwik_url = elgg_extract("path_to_piwik", $piwik_settings); $piwik_site_id = elgg_extract("site_guid", $piwik_settings); if ($enabled == "true") { if (!empty($piwik_url) && !empty($piwik_site_id)) { // check if analytics is enabled if (!elgg_is_active_plugin("analytics")) { // not active so enable if ($plugin = elgg_get_plugin_from_id("analytics")) { $plugin->activate(); elgg_invalidate_simplecache(); elgg_reset_system_cache(); } } // save settings, if not exists if (!elgg_get_plugin_setting("piwik_url", "analytics") && !elgg_get_plugin_setting("piwik_site_id", "analytics")) { elgg_set_plugin_setting("piwik_url", $piwik_url, "analytics"); elgg_set_plugin_setting("piwik_site_id", $piwik_site_id, "analytics"); } } } } } // remove the settings so we don't do this again unset($site->phloor_analytics_piwik_settings); } // unset write access $SUBSITE_MANAGER_IGNORE_WRITE_ACCESS = false; } } }
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); } }
function subsite_manager_pagesetup() { // validate the page_owner $page_owner = elgg_get_page_owner_entity(); if (!empty($page_owner) && elgg_instanceof($page_owner, "group")) { $site = elgg_get_site_entity(); if ($page_owner->site_guid != $site->getGUID()) { // you're viewing a group of a different (sub)site system_message(elgg_echo("changebookmark")); forward($page_owner->getURL()); } } // Display a message for non-subsite users subsite_manager_check_subsite_user(); $context = elgg_get_context(); // handle menu items if (elgg_is_admin_logged_in()) { // add to admin menu if (subsite_manager_is_superadmin_logged_in()) { //only for super admins elgg_register_admin_menu_item("administer", "import", "users", 150); elgg_register_admin_menu_item("administer", "bulk_remove", "users", 160); } // list subsite administrators elgg_register_admin_menu_item("administer", "admins", "users", 110); elgg_register_admin_menu_item("administer", "move_group", "administer_utilities"); if (!subsite_manager_on_subsite()) { elgg_register_admin_menu_item("administer", "new", "subsites", 20); elgg_register_admin_menu_item("administer", "plugins", "subsites", 30); elgg_register_admin_menu_item("administer", "admins", "subsites", 40); elgg_register_menu_item("page", array("name" => "subsites", "href" => "subsites", "text" => elgg_echo("subsite_manager:menu:admin:manage"), "context" => "admin", "section" => "administer", "parent_name" => "subsites", "priority" => 10, "target" => "_blank")); } else { // remove add user menu item if (!subsite_manager_is_superadmin_logged_in()) { elgg_unregister_menu_item("page", "users:add"); } // list membership requests elgg_register_admin_menu_item("administer", "membership", "users", 120); // invite members elgg_register_admin_menu_item("administer", "invite", "users", 130); // view invitations elgg_register_admin_menu_item("administer", "invitations", "users", 140); } } if (elgg_is_logged_in() && !subsite_manager_on_subsite()) { // site menu elgg_register_menu_item("site", array("name" => "subsites", "href" => "subsites", "text" => elgg_echo("subsite_manager:menu:subsites"))); } // disable search engine indexing elgg_extend_view("page/elements/head", "metatags/noindex"); elgg_extend_view("page/elements/head", "subsite_manager/remove_rss", 499); elgg_unextend_view("page/elements/head", "profile/metatags"); if (in_array($context, array("profile", "friends", "friendsof"))) { elgg_unregister_plugin_hook_handler("output:before", "layout", "elgg_views_add_rss_link"); } // do we need to disable htmlawed for admins if (elgg_get_config("disable_htmlawed")) { if (elgg_is_admin_logged_in() || elgg_in_context("static")) { elgg_unregister_plugin_hook_handler("validate", "input", "htmlawed_filter_tags"); } } }
function subsite_manager_simplesaml_check_auto_create_account($source, $auth_attributes) { $result = false; if (!empty($source) && !empty($auth_attributes) && is_array($auth_attributes)) { // is the source enabled if (!subsite_manager_on_subsite() || simplesaml_is_enabled_source($source)) { // check if auto create is enabled for this source if (!subsite_manager_on_subsite() || elgg_get_plugin_setting($source . "_auto_create_accounts", "simplesaml")) { // do we have all the require information $email = elgg_extract("elgg:email", $auth_attributes); $firstname = elgg_extract("elgg:firstname", $auth_attributes); $lastname = elgg_extract("elgg:lastname", $auth_attributes); $external_id = elgg_extract("elgg:external_id", $auth_attributes); if (!empty($email) && (!empty($firstname) || !empty($lastname)) && !empty($external_id)) { $result = true; } else { error_log("SAML: fail 5"); } } else { error_log("SAML: fail 4"); } } else { error_log("SAML: fail 3"); } } else { error_log("SAML: fail 2"); } return $result; }
* * Shows a list of plugins that can be sorted and filtered. * * @package Elgg.Core * @subpackage Admin.Plugins */ $plugin_list = 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 // 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; // } // } // construct page header $url = elgg_view("output/url", array("href" => "admin/plugins", "text" => elgg_echo("subsite_manager:plugins:advanced:switch"))); echo elgg_view_module("info", "", elgg_echo("subsite_manager:plugins:description") . "<br />" . $url); ?> <div id="elgg-plugin-list"> <?php $options = array('limit' => 0, 'full_view' => true, 'list_type_toggle' => false, 'pagination' => false, 'display_reordering' => !subsite_manager_on_subsite()); echo elgg_view_entity_list($plugin_list, $options); ?> </div>
$body = elgg_list_entities_from_relationship($options); break; } // search box if ($search_box) { $search = elgg_view("subsite_manager/subsites/forms/search", array("filter" => $filter, "text" => $text, "category" => $category)); } // tabbed nav elgg_register_menu_item("filter", $filter_all); elgg_register_menu_item("filter", $filter_featured); elgg_register_menu_item("filter", $filter_closed); elgg_register_menu_item("filter", $filter_open); elgg_register_menu_item("filter", $filter_mine); elgg_register_menu_item("filter", $filter_popular); if ($membership_count > 0) { elgg_register_menu_item("filter", $filter_membership); } $tabbed_nav = elgg_view_menu("filter", array("sort_by" => "priority")); if (empty($body)) { $body = elgg_echo("notfound"); } if (!subsite_manager_on_subsite() && elgg_is_admin_logged_in()) { // title menu elgg_register_menu_item("title", array("name" => "new", "href" => "admin/subsites/new", "text" => elgg_echo("admin:subsites:new"), "link_class" => "elgg-button elgg-button-action")); } // title menu elgg_register_menu_item("title", array("name" => "request", "href" => "deelsiteaanvragen", "text" => elgg_echo("subsite_manager:menu:subsites:request"), "link_class" => "elgg-button elgg-button-action")); $header = elgg_view('page/layouts/content/header', array("title" => $title_text)); // make layout $body = elgg_view_layout("one_column", array("content" => $header . $search . $tabbed_nav . $body, "filter" => "")); echo elgg_view_page($title_text, $body);
<?php $site = elgg_get_site_entity(); $user_guid = (int) get_input("user_guid"); if (!empty($user_guid) && elgg_is_admin_logged_in() && subsite_manager_on_subsite()) { if ($site->isAdmin($user_guid)) { $site->removeAdmin($user_guid); system_message(elgg_echo("admin:user:removeadmin:yes")); } else { $site->makeAdmin($user_guid); system_message(elgg_echo("admin:user:makeadmin:yes")); } } else { register_error(elgg_echo("InvalidParameterException:NoEntityFound")); } forward(REFERER);
<?php $user = elgg_get_page_owner_entity(); $plugin = elgg_extract("entity", $vars); $noyes_options = array("no" => elgg_echo("option:no"), "yes" => elgg_echo("option:yes")); if (($user->isAdmin() || subsite_manager_on_subsite() && elgg_get_site_entity()->isAdmin($user->getGUID())) && $user->canEdit()) { echo "<div>"; echo elgg_echo("elgg_modifications:usersettings:reportedcontent:notify:description"); echo " " . elgg_view("input/dropdown", array("name" => "params[notify]", "options_values" => $noyes_options, "value" => $plugin->getUserSetting("notify", $user->getGUID()))); echo "</div>"; }
<?php $indexingEnabled = elgg_get_config("enable_frontpage_indexing"); if (subsite_manager_on_subsite() && !$indexingEnabled) { http_response_code(404); exit; } header('Content-type: text/xml'); $base = elgg_get_site_url(); $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?>' . PHP_EOL . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" />'); // Start page $url = $xml->addChild('url'); $url->addChild('loc', $base); $url->addChild('lastmod', date("Y-m-d", time())); $url->addChild('priority', '0.5'); // Widget manager, extra pages $extra_contexts = elgg_get_plugin_setting("extra_contexts", "widget_manager"); if ($extra_contexts) { $contexts = string_to_tag_array($extra_contexts); foreach ($contexts as $context) { $url = $xml->addChild('url'); $url->addChild('loc', $base . $context); $url->addChild('lastmod', date("Y-m-d", time())); $url->addChild('priority', '0.5'); } } // Entity pages of blogs and static pages $batch = new ElggBatch('elgg_get_entities', array('type' => 'object', 'subtypes' => array('blog', 'static', 'page_top', 'page'), 'limit' => 2000)); foreach ($batch as $object) { $url = $xml->addChild('url'); $url->addChild('loc', $object->getURL());
echo elgg_echo('river:widget:type'); ?> : <?php echo $type_dropdown; ?> </div> <?php } // set default value for number to display if (!isset($vars['entity']->num_display)) { $vars['entity']->num_display = 8; } $params = array('name' => 'params[num_display]', 'value' => $vars['entity']->num_display, 'options' => array(5, 8, 10, 12, 15, 20)); $num_dropdown = elgg_view('input/dropdown', $params); if (elgg_in_context('dashboard') && !subsite_manager_on_subsite()) { $sites = subsite_manager_get_user_subsites(page_owner_entity()->guid); if ($sites) { $pulldown_options = array("0" => elgg_echo("widget:river_widget:edit:site_selection:current"), "all" => elgg_echo("widget:river_widget:edit:site_selection:all")); foreach ($sites as $site) { $pulldown_options[$site->guid] = $site->name; } echo "<div>"; echo elgg_echo("widget:river_widget:edit:site_selection") . ": "; echo elgg_view("input/dropdown", array("name" => "params[activity_site_guid]", "value" => $vars['entity']->activity_site_guid, "options_values" => $pulldown_options, "style" => "width: 100px")); echo "</div>"; } } ?> <div> <?php
/** * Do not allow non-subsite members to join an open group if the subsite is closed * * @return bool false if write is not allowed */ function subsite_manager_group_join_action_hook($hook, $type, $returnvalue, $params) { if (!subsite_manager_on_subsite()) { return; } $site = elgg_get_site_entity(); if ($site->getMembership() == Subsite::MEMBERSHIP_OPEN) { return; // site is open, so everyone can become member of the group } $group_guid = get_input('group_guid'); $group = get_entity($group_guid); if ($group->canEdit()) { return; // user is admin of the group of subsite, so let the default permission handler do its work } if (!$group->isPublicMembership()) { return; // group is closed, so let the default group permission handler do its work } if (!$site->isUser()) { register_error(elgg_echo('subsite_manager:group:could_not_join')); return false; } }
/** * Used to show plugin settings for both users and admins. * * @package Elgg.Core * @subpackage Plugins */ $plugin = $vars['entity']; $plugin_id = $plugin->getID(); $user_guid = elgg_extract('user_guid', $vars, elgg_get_logged_in_user_guid()); // Do we want to show admin settings or user settings $type = elgg_extract('type', $vars, ''); if ($type != 'user') { $type = ''; } if (elgg_view_exists("{$type}settings/{$plugin_id}/edit")) { elgg_deprecated_notice("{$type}settings/{$plugin_id}/edit was deprecated in favor of plugins/{$plugin_id}/{$type}settings", 1.8); $settings = elgg_view("{$type}settings/{$plugin_id}/edit", $vars); } else { $settings = elgg_view("plugins/{$plugin_id}/{$type}settings", $vars); } if (!empty($settings)) { echo $settings; echo '<div class="elgg-foot">'; echo elgg_view('input/hidden', array('name' => 'plugin_id', 'value' => $plugin_id)); echo elgg_view('input/hidden', array('name' => 'user_guid', 'value' => $user_guid)); echo elgg_view('input/submit', array('value' => elgg_echo('save'))); if (empty($type) && subsite_manager_on_subsite() && subsite_manager_check_global_plugin_setting($plugin_id, "fallback_to_main_settings")) { echo " " . elgg_view("output/confirmlink", array("text" => elgg_echo("subsite_manager:plugins:subsite:fallback"), "confirm" => elgg_echo("subsite_manager:plugins:subsite:fallback:confirm"), "href" => $vars["url"] . "action/plugins/fallback?guid=" . $plugin->getGUID())); } echo '</div>'; }
<?php $site = elgg_get_site_entity(); $annotation_id = (int) get_input("annotation_id"); if (subsite_manager_on_subsite() && !empty($annotation_id)) { if ($site->approveMembershipRequest($annotation_id)) { system_message(elgg_echo("subsite_manager:action:subsite:membership:approve:success")); } else { register_error(elgg_echo("subsite_manager:action:subsite:membership:approve:error")); } } else { register_error(elgg_echo("subsite_manager:action:error:subsite_only")); } forward(REFERER);
<?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;
<?php $base_url = elgg_get_site_url(); ?> <div class="rhs-dropdown"> <a data-dropdown-trigger href="#" title="Pleio" class="rhs-top-navigation__link rhs-top-navigation__link--left rhs-dropdown__trigger">Pleio</a> <div class="rhs-dropdown__wrapper"> <?php if (subsite_manager_on_subsite()) { // link back to parent site $parent = elgg_get_config("site")->getOwnerEntity(); $base_url = $parent->url; echo elgg_view("output/url", array("href" => $base_url, "text" => $parent->name, "is_trusted" => true, "class" => "rhs-dropdown__link")); } $sites = subsite_manager_get_user_subsites(); if ($sites) { // list subsites foreach ($sites as $site) { if ($site->url != elgg_get_site_url()) { echo elgg_view("output/url", array("href" => $site->url, "text" => $site->name, "is_trusted" => true, "class" => "rhs-dropdown__link")); } } } echo elgg_view("output/url", array("href" => $base_url . "subsites", "text" => elgg_echo("subsite_manager:menu:subsites:all"), "class" => "rhs-dropdown__link elgg-quiet", "is_trusted" => true)); if ($sites) { echo elgg_view("output/url", array("href" => $base_url . "subsites/mine", "text" => elgg_echo("subsite_manager:menu:subsites:mine"), "class" => "rhs-dropdown__link elgg-quiet", "is_trusted" => true)); } ?> </div> </div>
/** * actions related to the login of a user * * @param unknown_type $event * @param unknown_type $object_type * @param unknown_type $object */ function subsite_manager_login_event_handler($event, $object_type, $user) { if (!empty($user) && elgg_instanceof($user, "user", null, "ElggUser")) { // if memcache is available, invalidate the memcache content if (is_memcache_available()) { register_shutdown_function("subsite_manager_login_shutdown_hook", $user); } // check if this is the first login, if so check for invited subsites if (empty($user->last_login)) { if ($subsites = subsite_manager_get_invited_subsites($user)) { foreach ($subsites as $subsite) { if ($subsite->addUser($user->getGUID())) { system_message(elgg_echo("subsite_manager:login:subsite:join", array($subsite->name))); // notify user about add $subject = elgg_echo("subsite_manager:login:subsite:join", array($subsite->name)); $message = elgg_echo("subsite_manager:login:subsite:join:notify:message", array($user->name, $subsite->name, $subsite->url)); notify_user($user->getGUID(), $subsite->getGUID(), $subject, $message); } } } } // simplesaml work around if (!subsite_manager_on_subsite()) { // we need to rewrite this in order to work around a 'feature' if (isset($_SESSION["saml_attributes"]) && isset($_SESSION["saml_source"])) { $_SESSION["sm_saml_attributes"] = $_SESSION["saml_attributes"]; $_SESSION["sm_saml_source"] = $_SESSION["saml_source"]; } } } }