function group_tools_pagesetup() { $user = elgg_get_logged_in_user_entity(); $page_owner = elgg_get_page_owner_entity(); if (elgg_in_context("groups") && $page_owner instanceof ElggGroup) { if (!empty($user)) { // check for admin transfer $admin_transfer = elgg_get_plugin_setting("admin_transfer", "group_tools"); if ($admin_transfer == "admin" && $user->isAdmin()) { elgg_extend_view("groups/edit", "group_tools/forms/admin_transfer", 400); } elseif ($admin_transfer == "owner" && ($page_owner->getOwnerGUID() == $user->getGUID() || $user->isAdmin())) { elgg_extend_view("groups/edit", "group_tools/forms/admin_transfer", 400); } // check multiple admin if (elgg_get_plugin_setting("multiple_admin", "group_tools") == "yes") { // extend group members sidebar list elgg_extend_view("groups/sidebar/members", "group_tools/group_admins", 400); // remove group tool options for group admins if ($page_owner->getOwnerGUID() != $user->getGUID() && !$user->isAdmin()) { remove_group_tool_option("group_multiple_admin_allow"); } } // invitation management if ($page_owner->canEdit()) { $request_options = array("type" => "user", "relationship" => "membership_request", "relationship_guid" => $page_owner->getGUID(), "inverse_relationship" => true, "count" => true); $invite_options = array("type" => "user", "relationship" => "invited", "relationship_guid" => $page_owner->getGUID(), "count" => true); $postfix = ""; if ($requests = elgg_get_entities_from_relationship($request_options)) { $postfix = " [" . $requests . "]"; } elseif ($invited = elgg_get_entities_from_relationship($invite_options)) { $postfix = " [" . $invited . "]"; } if (!$page_owner->isPublicMembership() || !empty($requests)) { elgg_register_menu_item('page', array('name' => 'membership_requests', 'text' => elgg_echo('groups:membershiprequests') . $postfix, 'href' => "groups/requests/" . $page_owner->getGUID())); } elseif (!empty($invited)) { elgg_register_menu_item('page', array('name' => 'membership_requests', 'text' => elgg_echo('group_tools:menu:invitations') . $postfix, 'href' => "groups/requests/" . $page_owner->getGUID())); } } // group mail options if ($page_owner->canEdit() && elgg_get_plugin_setting("mail", "group_tools") == "yes") { elgg_register_menu_item('page', array('name' => 'mail', 'text' => elgg_echo('group_tools:menu:mail'), 'href' => "groups/mail/" . $page_owner->getGUID())); } } } if ($page_owner instanceof ElggGroup) { if (!$page_owner->isPublicMembership()) { if (elgg_get_plugin_setting("search_index", "group_tools") != "yes") { // closed groups should be indexed by search engines elgg_extend_view("page/elements/head", "metatags/noindex"); } } } }
/** * Init admin_blog plugin. */ function init() { elgg_register_plugin_hook_handler('register', 'menu:owner_block', __NAMESPACE__ . '\\owner_block_menu'); elgg_register_action('blog/save', elgg_get_config('pluginspath') . 'blog/actions/blog/save.php', 'admin'); elgg_register_action('blog/auto_save_revision', elgg_get_config('pluginspath') . 'blog/actions/blog/auto_save_revision.php', 'admin'); elgg_register_action('blog/delete', elgg_get_config('pluginspath') . 'blog/actions/blog/delete.php', 'admin'); $group_blogs = (int) elgg_get_plugin_setting('group_blog', PLUGIN_ID); $widget_contexts = array('profile', 'dashboard', 'index'); if (!$group_blogs) { elgg_unextend_view('groups/tool_latest', 'blog/group_module'); remove_group_tool_option('blog'); } else { $widget_contexts[] = 'group'; } elgg_unregister_widget_type('blog'); elgg_register_widget_type('blog', elgg_echo('blog'), elgg_echo('blog:widget:description'), $widget_contexts); }
/** * called just before a page starts with output * * @return void */ function group_tools_pagesetup() { $user = elgg_get_logged_in_user_entity(); $page_owner = elgg_get_page_owner_entity(); // admin menu item elgg_register_admin_menu_item("configure", "group_tool_presets", "appearance"); elgg_register_admin_menu_item("administer", "group_bulk_delete", "administer_utilities"); if (elgg_in_context("groups") && $page_owner instanceof ElggGroup) { if ($page_owner->forum_enable == "no") { // unset if not enabled for this plugin elgg_unregister_widget_type("group_forum_topics"); } if (!empty($user)) { // check multiple admin if (elgg_get_plugin_setting("multiple_admin", "group_tools") == "yes") { // extend group members sidebar list elgg_extend_view("groups/sidebar/members", "group_tools/group_admins", 400); // remove group tool options for group admins if ($page_owner->getOwnerGUID() != $user->getGUID() && !$user->isAdmin()) { remove_group_tool_option("group_multiple_admin_allow"); } } // invitation management if ($page_owner->canEdit()) { $request_options = array("type" => "user", "relationship" => "membership_request", "relationship_guid" => $page_owner->getGUID(), "inverse_relationship" => true, "count" => true); $requests = elgg_get_entities_from_relationship($request_options); $postfix = ""; if (!empty($requests)) { $postfix = " [" . $requests . "]"; } if (!$page_owner->isPublicMembership()) { elgg_register_menu_item("page", array("name" => "membership_requests", "text" => elgg_echo("groups:membershiprequests") . $postfix, "href" => "groups/requests/" . $page_owner->getGUID())); } else { elgg_register_menu_item("page", array("name" => "membership_requests", "text" => elgg_echo("group_tools:menu:invitations") . $postfix, "href" => "groups/requests/" . $page_owner->getGUID())); } } // group mail options if ($page_owner->canEdit() && elgg_get_plugin_setting("mail", "group_tools") == "yes") { elgg_register_menu_item("page", array("name" => "mail", "text" => elgg_echo("group_tools:menu:mail"), "href" => "groups/mail/" . $page_owner->getGUID())); } } } if ($page_owner instanceof ElggGroup) { if (!$page_owner->isPublicMembership()) { if (elgg_get_plugin_setting("search_index", "group_tools") != "yes") { // closed groups should be indexed by search engines elgg_extend_view("page/elements/head", "metatags/noindex"); } } // cleanup sidebar elgg_extend_view("page/elements/sidebar", "group_tools/sidebar/cleanup"); } }
<?php /** * Don't allow group admins (not owner) to set the group tool * option for assigning other group admins */ if (!group_tools_multiple_admin_enabled()) { return; } $page_owner = elgg_get_page_owner_entity(); $user = elgg_get_logged_in_user_entity(); if (!$page_owner instanceof ElggGroup || !$user instanceof ElggUser) { // how did you get here return; } if ($page_owner->getOwnerGUID() === $user->getGUID() || $user->isAdmin()) { // user is the group owner // or a site admin return; } remove_group_tool_option('group_multiple_admin_allow');