Пример #1
0
 /**
  * Add the groups a user is admin of to the exportable values
  *
  * @param string $hook         the name of the hook
  * @param string $type         the type of the hook
  * @param array  $return_value current return value
  * @param array  $params       supplied params
  *
  * @return void|array
  */
 public static function addGroupAdminsToUsers($hook, $type, $return_value, $params)
 {
     $content_type = elgg_extract('type', $params);
     if ($content_type !== 'user') {
         return;
     }
     if (!group_tools_multiple_admin_enabled()) {
         // group admins not enabled
         return;
     }
     $readable = (bool) elgg_extract('readable', $params, false);
     $fields = [elgg_echo('group_tools:csv_exporter:user:group_admin:name') => 'group_tools_user_group_admin_name', elgg_echo('group_tools:csv_exporter:user:group_admin:url') => 'group_tools_user_group_admin_url'];
     if (!$readable) {
         $fields = array_values($fields);
     }
     return array_merge($return_value, $fields);
 }
Пример #2
0
/**
 * Check if the group allows multiple admins
 *
 * @param ElggGroup $group     the group to check
 * @param int       $user_guid the user to check with
 *
 * @return bool
 */
function group_tools_group_multiple_admin_enabled(ElggGroup $group, $user_guid = 0)
{
    $result = false;
    if (empty($group) || !elgg_instanceof($group, "group")) {
        return $result;
    }
    $user_guid = sanitise_int($user_guid, false);
    if (empty($user_guid)) {
        $user_guid = elgg_get_logged_in_user_guid();
    }
    if (empty($user_guid)) {
        return $result;
    }
    if (!group_tools_multiple_admin_enabled()) {
        return $result;
    }
    if ($group->getOwnerGUID() == $user_guid || elgg_is_admin_logged_in()) {
        $result = true;
    } elseif ($group->group_multiple_admin_allow_enable == "yes" && $group->canEdit($user_guid)) {
        $result = true;
    }
    return $result;
}
Пример #3
0
Файл: start.php Проект: n8b/VMN
/**
 * called when the Elgg system get initialized
 *
 * @return void
 */
function group_tools_init()
{
    // extend css & js
    elgg_extend_view("css/elgg", "css/group_tools/site");
    elgg_extend_view("css/admin", "css/group_tools/admin");
    elgg_extend_view("js/elgg", "js/group_tools/site");
    elgg_extend_view("js/admin", "js/group_tools/admin");
    // extend page handlers
    elgg_register_plugin_hook_handler("route", "groups", "group_tools_route_groups_handler");
    elgg_register_plugin_hook_handler("route", "livesearch", "group_tools_route_livesearch_handler");
    elgg_register_page_handler("groupicon", "group_tools_groupicon_page_handler");
    elgg_register_plugin_hook_handler("entity:icon:url", "group", "groups_tools_group_icon_url_handler");
    // hook on title menu
    elgg_register_plugin_hook_handler("register", "menu:title", "group_tools_menu_title_handler");
    elgg_register_plugin_hook_handler("register", "menu:user_hover", "group_tools_menu_user_hover_handler");
    elgg_register_plugin_hook_handler("register", "menu:entity", "group_tools_menu_entity_handler");
    elgg_register_plugin_hook_handler("register", "menu:filter", "group_tools_menu_filter_handler");
    if (group_tools_multiple_admin_enabled()) {
        // add group tool option
        add_group_tool_option("group_multiple_admin_allow", elgg_echo("group_tools:multiple_admin:group_tool_option"), false);
        // register permissions check hook
        elgg_register_plugin_hook_handler("permissions_check", "group", "group_tools_multiple_admin_can_edit_hook");
        // register on group leave
        elgg_register_event_handler("leave", "group", "group_tools_multiple_admin_group_leave");
        //notify admin on membership request
        elgg_register_event_handler("create", "membership_request", "group_tools_membership_request");
    }
    // register group activity widget
    // 2012-05-03: restored limited functionality of group activity widget, will be fully restored if Elgg fixes widget settings
    elgg_register_widget_type("group_river_widget", elgg_echo("widgets:group_river_widget:title"), elgg_echo("widgets:group_river_widget:description"), array("dashboard", "profile", "index", "groups"), true);
    // register group members widget
    elgg_register_widget_type("group_members", elgg_echo("widgets:group_members:title"), elgg_echo("widgets:group_members:description"), array("groups"), false);
    // register groups invitations widget
    elgg_register_widget_type("group_invitations", elgg_echo("widgets:group_invitations:title"), elgg_echo("widgets:group_invitations:description"), array("index", "dashboard"), false);
    // register featured groups widget
    elgg_register_widget_type("featured_groups", elgg_echo("groups:featured"), elgg_echo("widgets:featured_groups:description"), array("index"));
    // register index groups widget
    elgg_register_widget_type("index_groups", elgg_echo("groups"), elgg_echo("widgets:index_groups:description"), array("index"), true);
    // quick start discussion
    elgg_register_widget_type("start_discussion", elgg_echo("group_tools:widgets:start_discussion:title"), elgg_echo("group_tools:widgets:start_discussion:description"), array("index", "dashboard", "groups"));
    // group invitation
    elgg_register_action("groups/invite", dirname(__FILE__) . "/actions/groups/invite.php");
    // manage auto join for groups
    elgg_extend_view("groups/edit", "group_tools/forms/special_states", 350);
    elgg_register_event_handler("create", "member_of_site", "group_tools_join_site_handler");
    // show group edit as tabbed
    elgg_extend_view("groups/edit", "group_tools/group_edit_tabbed", 1);
    elgg_extend_view("groups/edit", "group_tools/group_edit_tabbed_js", 999999999);
    // show group profile widgets - edit form
    elgg_extend_view("groups/edit", "group_tools/forms/profile_widgets", 400);
    // cleanup group side menu
    elgg_extend_view("groups/edit", "group_tools/forms/cleanup", 450);
    // group notifications
    elgg_extend_view("groups/edit", "group_tools/forms/notifications", 375);
    // allow group members to invite new members
    elgg_extend_view("groups/edit", "group_tools/forms/invite_members", 475);
    // configure a group welcome message
    elgg_extend_view("groups/edit", "group_tools/forms/welcome_message");
    // configure domain based group join
    elgg_extend_view("groups/edit", "group_tools/forms/domain_based");
    // show group status in owner block
    elgg_extend_view("page/elements/owner_block/extend", "group_tools/owner_block");
    // show group status in stats (on group profile)
    elgg_extend_view("groups/profile/summary", "group_tools/group_stats");
    if (elgg_is_active_plugin("blog")) {
        elgg_register_widget_type("group_news", elgg_echo("widgets:group_news:title"), elgg_echo("widgets:group_news:description"), array("profile", "index", "dashboard"), true);
        elgg_extend_view("css/elgg", "widgets/group_news/css");
    }
    // related groups
    add_group_tool_option("related_groups", elgg_echo("groups_tools:related_groups:tool_option"), false);
    elgg_extend_view("groups/tool_latest", "group_tools/modules/related_groups");
    elgg_register_widget_type("group_related", elgg_echo("groups_tools:related_groups:widget:title"), elgg_echo("groups_tools:related_groups:widget:description"), array("groups"));
    // registration
    elgg_extend_view("register/extend", "group_tools/register_extend");
    // theme sandbox
    elgg_extend_view("theme_sandbox/forms", "group_tools/theme_sandbox/grouppicker");
    // register index widget to show latest discussions
    elgg_register_widget_type("discussion", elgg_echo("discussion:latest"), elgg_echo("widgets:discussion:description"), array("index", "dashboard"), true);
    elgg_register_widget_type("group_forum_topics", elgg_echo("discussion:group"), elgg_echo("widgets:group_forum_topics:description"), array("groups"));
    // register events
    elgg_register_event_handler("join", "group", "group_tools_join_group_event");
    elgg_register_event_handler("delete", "relationship", array('ColdTrick\\GroupTools\\Membership', 'deleteRequest'));
    // register plugin hooks
    elgg_register_plugin_hook_handler("entity:url", "object", "group_tools_widget_url_handler");
    elgg_register_plugin_hook_handler("default", "access", "group_tools_access_default_handler");
    elgg_register_plugin_hook_handler("access:collections:write", "user", "group_tools_access_write_handler");
    elgg_register_plugin_hook_handler("action", "groups/join", "group_tools_join_group_action_handler");
    elgg_register_plugin_hook_handler("register", "menu:owner_block", "group_tools_register_owner_block_menu_handler");
    elgg_register_plugin_hook_handler("route", "register", "group_tools_route_register_handler");
    elgg_register_plugin_hook_handler("action", "register", "group_tools_action_register_handler");
    elgg_register_plugin_hook_handler("group_tool_widgets", "widget_manager", "group_tools_tool_widgets_handler");
    // actions
    elgg_register_action("group_tools/toggle_admin", dirname(__FILE__) . "/actions/toggle_admin.php");
    elgg_register_action("group_tools/mail", dirname(__FILE__) . "/actions/mail.php");
    elgg_register_action("group_tools/profile_widgets", dirname(__FILE__) . "/actions/profile_widgets.php");
    elgg_register_action("group_tools/cleanup", dirname(__FILE__) . "/actions/cleanup.php");
    elgg_register_action("group_tools/invite_members", dirname(__FILE__) . "/actions/invite_members.php");
    elgg_register_action("group_tools/welcome_message", dirname(__FILE__) . "/actions/welcome_message.php");
    elgg_register_action("group_tools/domain_based", dirname(__FILE__) . "/actions/domain_based.php");
    elgg_register_action("group_tools/related_groups", dirname(__FILE__) . "/actions/related_groups.php");
    elgg_register_action("group_tools/remove_related_groups", dirname(__FILE__) . "/actions/remove_related_groups.php");
    elgg_register_action("group_tools/member_export", dirname(__FILE__) . "/actions/member_export.php");
    elgg_register_action("group_tools/toggle_special_state", dirname(__FILE__) . "/actions/admin/toggle_special_state.php", "admin");
    elgg_register_action("group_tools/fix_auto_join", dirname(__FILE__) . "/actions/admin/fix_auto_join.php", "admin");
    elgg_register_action("group_tools/notifications", dirname(__FILE__) . "/actions/admin/notifications.php", "admin");
    elgg_register_action("group_tools/fix_acl", dirname(__FILE__) . "/actions/admin/fix_acl.php", "admin");
    elgg_register_action("group_tools/group_tool_presets", dirname(__FILE__) . "/actions/admin/group_tool_presets.php", "admin");
    elgg_register_action("group_tools/admin/bulk_delete", dirname(__FILE__) . "/actions/admin/bulk_delete.php", "admin");
    elgg_register_action("groups/email_invitation", dirname(__FILE__) . "/actions/groups/email_invitation.php");
    elgg_register_action("groups/decline_email_invitation", dirname(__FILE__) . "/actions/groups/decline_email_invitation.php");
    elgg_register_action("group_tools/revoke_email_invitation", dirname(__FILE__) . "/actions/groups/revoke_email_invitation.php");
    elgg_register_action("groups/edit", dirname(__FILE__) . "/actions/groups/edit.php");
    elgg_register_action("group_tools/order_groups", dirname(__FILE__) . "/actions/order_groups.php", "admin");
    elgg_register_action("discussion/toggle_status", dirname(__FILE__) . "/actions/discussion/toggle_status.php");
}
Пример #4
0
/**
 * called when the Elgg system get initialized
 *
 * @return void
 */
function group_tools_init()
{
    // extend css & js
    elgg_extend_view('css/elgg', 'css/group_tools/site.css');
    elgg_extend_view('js/elgg', 'js/group_tools/site.js');
    // extend page handlers
    elgg_register_plugin_hook_handler('route', 'groups', '\\ColdTrick\\GroupTools\\Router::groups');
    elgg_register_plugin_hook_handler('route', 'livesearch', '\\ColdTrick\\GroupTools\\Router::livesearch');
    // admin menu item
    elgg_register_admin_menu_item('configure', 'group_tool_presets', 'appearance');
    elgg_register_admin_menu_item('administer', 'group_bulk_delete', 'administer_utilities');
    // hook on title menu
    elgg_register_plugin_hook_handler('register', 'menu:title', '\\ColdTrick\\GroupTools\\TitleMenu::groupMembership');
    elgg_register_plugin_hook_handler('register', 'menu:title', '\\ColdTrick\\GroupTools\\TitleMenu::groupInvite');
    elgg_register_plugin_hook_handler('register', 'menu:title', '\\ColdTrick\\GroupTools\\TitleMenu::exportGroupMembers');
    elgg_register_plugin_hook_handler('register', 'menu:title', '\\ColdTrick\\GroupTools\\TitleMenu::pendingApproval', 9999);
    elgg_register_plugin_hook_handler('register', 'menu:user_hover', '\\ColdTrick\\GroupTools\\GroupAdmins::assignGroupAdmin');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '\\ColdTrick\\GroupTools\\GroupAdmins::assignGroupAdmin', 501);
    elgg_register_plugin_hook_handler('register', 'menu:entity', '\\ColdTrick\\GroupTools\\EntityMenu::relatedGroup');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '\\ColdTrick\\GroupTools\\EntityMenu::showMemberCount');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '\\ColdTrick\\GroupTools\\EntityMenu::showGroupHiddenIndicator');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '\\ColdTrick\\GroupTools\\EntityMenu::removeUserFromGroup', 501);
    elgg_register_plugin_hook_handler('register', 'menu:membershiprequest', '\\ColdTrick\\GroupTools\\Membership::membershiprequestMenu');
    elgg_register_plugin_hook_handler('register', 'menu:emailinvitation', '\\ColdTrick\\GroupTools\\Membership::emailinvitationMenu');
    elgg_register_plugin_hook_handler('register', 'menu:group:membershiprequests', '\\ColdTrick\\GroupTools\\Membership::groupMembershiprequests');
    elgg_register_plugin_hook_handler('register', 'menu:group:membershiprequest', '\\ColdTrick\\GroupTools\\Membership::groupMembershiprequest');
    elgg_register_plugin_hook_handler('register', 'menu:group:invitation', '\\ColdTrick\\GroupTools\\Membership::groupInvitation');
    elgg_register_plugin_hook_handler('register', 'menu:group:email_invitation', '\\ColdTrick\\GroupTools\\Membership::groupEmailInvitation');
    elgg_register_plugin_hook_handler('register', 'menu:page', '\\ColdTrick\\GroupTools\\Membership::groupProfileSidebar');
    elgg_register_plugin_hook_handler('register', 'menu:filter', '\\ColdTrick\\GroupTools\\GroupSortMenu::addTabs');
    elgg_register_plugin_hook_handler('register', 'menu:filter', '\\ColdTrick\\GroupTools\\GroupSortMenu::addSorting');
    elgg_register_plugin_hook_handler('register', 'menu:filter', '\\ColdTrick\\GroupTools\\GroupSortMenu::cleanupTabs', 900);
    elgg_register_plugin_hook_handler('register', 'menu:groups:my_status', '\\ColdTrick\\GroupTools\\MyStatus::registerJoinStatus');
    elgg_register_plugin_hook_handler('prepare', 'menu:filter', '\\ColdTrick\\GroupTools\\GroupSortMenu::setSelected');
    // group admins
    if (group_tools_multiple_admin_enabled()) {
        // add group tool option
        add_group_tool_option('group_multiple_admin_allow', elgg_echo('group_tools:multiple_admin:group_tool_option'), false);
        // extend group members sidebar list
        elgg_extend_view('groups/sidebar/members', 'group_tools/group_admins', 400);
        // cleanup for group admins
        elgg_extend_view('groups/edit/tools', 'group_tools/extends/groups/edit/tools/group_admins', 400);
    }
    // notify admin on membership request
    elgg_register_event_handler('create', 'relationship', '\\ColdTrick\\GroupTools\\GroupAdmins::membershipRequest');
    // register on group leave
    elgg_register_event_handler('leave', 'group', '\\ColdTrick\\GroupTools\\GroupAdmins::groupLeave');
    // register permissions check hook
    elgg_register_plugin_hook_handler('permissions_check', 'group', '\\ColdTrick\\GroupTools\\GroupAdmins::permissionsCheck');
    // register group activity widget
    // 2012-05-03: restored limited functionality of group activity widget, will be fully restored if Elgg fixes widget settings
    elgg_register_widget_type('group_river_widget', elgg_echo('widgets:group_river_widget:title'), elgg_echo('widgets:group_river_widget:description'), ['dashboard', 'profile', 'index', 'groups'], true);
    // unregister dashboard widget group_activity, because our version is better ;)
    elgg_unregister_widget_type('group_activity');
    // register group members widget
    elgg_register_widget_type('group_members', elgg_echo('widgets:group_members:title'), elgg_echo('widgets:group_members:description'), ['groups'], false);
    // register groups invitations widget
    elgg_register_widget_type('group_invitations', elgg_echo('widgets:group_invitations:title'), elgg_echo('widgets:group_invitations:description'), ['index', 'dashboard'], false);
    // register featured groups widget
    elgg_register_widget_type('featured_groups', elgg_echo('groups:featured'), elgg_echo('widgets:featured_groups:description'), ['index']);
    // register index groups widget
    elgg_register_widget_type('index_groups', elgg_echo('groups'), elgg_echo('widgets:index_groups:description'), ['index'], true);
    // group invitation
    elgg_register_action('groups/invite', dirname(__FILE__) . '/actions/groups/invite.php');
    // manage auto join for groups
    elgg_extend_view('groups/edit', 'group_tools/forms/special_states', 350);
    elgg_register_event_handler('create', 'relationship', '\\ColdTrick\\GroupTools\\Membership::siteJoinAutoJoinGroups');
    elgg_register_event_handler('create', 'relationship', '\\ColdTrick\\GroupTools\\Membership::siteJoinEmailInvitedGroups');
    elgg_register_event_handler('create', 'relationship', '\\ColdTrick\\GroupTools\\Membership::siteJoinGroupInviteCode');
    elgg_register_event_handler('create', 'relationship', '\\ColdTrick\\GroupTools\\Membership::siteJoinDomainBasedGroups');
    // group admin approve
    elgg_extend_view('groups/edit', 'group_tools/extends/groups/edit/admin_approve', 1);
    elgg_extend_view('groups/profile/layout', 'group_tools/extends/groups/edit/admin_approve', 1);
    elgg_register_admin_menu_item('administer', 'admin_approval', 'groups');
    elgg_register_notification_event('group', null, ['admin_approval']);
    elgg_register_plugin_hook_handler('get', 'subscriptions', '\\ColdTrick\\GroupTools\\Notifications::adminApprovalSubs');
    elgg_register_plugin_hook_handler('prepare', 'notification:admin_approval:group:', '\\ColdTrick\\GroupTools\\Notifications::prepareAdminApprovalMessage');
    // show group edit as tabbed
    elgg_extend_view('groups/edit', 'group_tools/group_edit_tabbed', 10);
    // cleanup group side menu
    elgg_extend_view('page/elements/sidebar', 'group_tools/sidebar/featured');
    elgg_extend_view('groups/edit', 'group_tools/forms/cleanup', 450);
    elgg_register_plugin_hook_handler('view_vars', 'groups/sidebar/members', '\\ColdTrick\\GroupTools\\Cleanup::hideSidebarMembers');
    elgg_register_plugin_hook_handler('view_vars', 'groups/sidebar/my_status', '\\ColdTrick\\GroupTools\\Cleanup::hideMyStatus');
    elgg_register_plugin_hook_handler('view_vars', 'groups/sidebar/search', '\\ColdTrick\\GroupTools\\Cleanup::hideSearchbox');
    elgg_register_plugin_hook_handler('prepare', 'menu:extras', '\\ColdTrick\\GroupTools\\Cleanup::hideExtrasMenu');
    elgg_register_plugin_hook_handler('prepare', 'menu:title', '\\ColdTrick\\GroupTools\\Cleanup::hideMembershipActions');
    elgg_register_plugin_hook_handler('prepare', 'menu:groups:my_status', '\\ColdTrick\\GroupTools\\Cleanup::hideMembershipActions');
    elgg_register_plugin_hook_handler('prepare', 'menu:owner_block', '\\ColdTrick\\GroupTools\\Cleanup::hideOwnerBlockMenu');
    // group notifications
    elgg_extend_view('groups/edit', 'group_tools/forms/notifications', 375);
    // allow group members to invite new members
    elgg_extend_view('groups/edit', 'group_tools/forms/invite_members', 475);
    // configure a group welcome message
    elgg_extend_view('groups/edit', 'group_tools/forms/welcome_message');
    // configure domain based group join
    elgg_extend_view('groups/edit', 'group_tools/forms/domain_based');
    // show group status in owner block
    elgg_extend_view('page/elements/owner_block/extend', 'group_tools/owner_block');
    // show group status in stats (on group profile)
    elgg_extend_view('groups/profile/summary', 'group_tools/group_stats');
    if (elgg_is_active_plugin('blog')) {
        elgg_register_widget_type('group_news', elgg_echo('widgets:group_news:title'), elgg_echo('widgets:group_news:description'), ['profile', 'index', 'dashboard'], true);
        elgg_extend_view('css/elgg', 'css/group_tools/group_news.css');
    }
    // related groups
    add_group_tool_option('related_groups', elgg_echo('groups_tools:related_groups:tool_option'), false);
    elgg_extend_view('groups/tool_latest', 'group_tools/modules/related_groups');
    elgg_register_widget_type('group_related', elgg_echo('groups_tools:related_groups:widget:title'), elgg_echo('groups_tools:related_groups:widget:description'), ['groups']);
    // registration
    elgg_extend_view('register/extend', 'group_tools/register_extend');
    // theme sandbox
    elgg_extend_view('theme_sandbox/forms', 'group_tools/theme_sandbox/grouppicker');
    // closed groups shouldn't be indexed by search engines
    elgg_register_plugin_hook_handler('head', 'page', '\\ColdTrick\\GroupTools\\PageLayout::noIndexClosedGroups');
    // group invitations
    elgg_extend_view('groups/invitationrequests', 'group_tools/invitationrequests/emailinvitations');
    elgg_extend_view('groups/invitationrequests', 'group_tools/invitationrequests/membershiprequests');
    elgg_extend_view('groups/invitationrequests', 'group_tools/invitationrequests/emailinviteform');
    // group join motivation
    elgg_register_ajax_view('group_tools/forms/motivation');
    // register events
    elgg_register_event_handler('join', 'group', '\\ColdTrick\\GroupTools\\Membership::groupJoin');
    elgg_register_event_handler('delete', 'relationship', 'ColdTrick\\GroupTools\\Membership::deleteRequest');
    elgg_register_event_handler('upgrade', 'system', '\\ColdTrick\\GroupTools\\Upgrade::setGroupMailClassHandler');
    elgg_register_event_handler('upgrade', 'system', '\\ColdTrick\\GroupTools\\Upgrade::migrateListingSettings');
    // group mail option
    elgg_register_plugin_hook_handler('register', 'menu:page', '\\ColdTrick\\GroupTools\\GroupMail::pageMenu');
    elgg_register_notification_event('object', GroupMail::SUBTYPE, ['enqueue']);
    elgg_register_plugin_hook_handler('prepare', 'notification:enqueue:object:' . GroupMail::SUBTYPE, '\\ColdTrick\\GroupTools\\GroupMail::prepareNotification');
    elgg_register_plugin_hook_handler('get', 'subscriptions', '\\ColdTrick\\GroupTools\\GroupMail::getSubscribers');
    elgg_register_plugin_hook_handler('send:after', 'notifications', '\\ColdTrick\\GroupTools\\GroupMail::cleanup');
    if (group_tools_group_mail_members_enabled()) {
        add_group_tool_option('mail_members', elgg_echo('group_tools:tools:mail_members'), false);
    }
    // register plugin hooks
    elgg_register_plugin_hook_handler('entity:url', 'object', '\\ColdTrick\\GroupTools\\WidgetManager::widgetURL');
    elgg_register_plugin_hook_handler('default', 'access', '\\ColdTrick\\GroupTools\\Access::setGroupDefaultAccess');
    elgg_register_plugin_hook_handler('default', 'access', '\\ColdTrick\\GroupTools\\Access::validateGroupDefaultAccess', 999999);
    elgg_register_plugin_hook_handler('access:collections:write', 'user', '\\ColdTrick\\GroupTools\\Access::defaultAccessOptions');
    elgg_register_plugin_hook_handler('action', 'groups/join', '\\ColdTrick\\GroupTools\\Membership::groupJoinAction');
    elgg_register_plugin_hook_handler('register', 'menu:owner_block', '\\ColdTrick\\GroupTools\\OwnerBlockMenu::relatedGroups');
    elgg_register_plugin_hook_handler('route', 'register', '\\ColdTrick\\GroupTools\\Router::allowRegistration');
    elgg_register_plugin_hook_handler('action', 'register', '\\ColdTrick\\GroupTools\\Router::allowRegistration');
    elgg_register_plugin_hook_handler('group_tool_widgets', 'widget_manager', '\\ColdTrick\\GroupTools\\WidgetManager::groupToolWidgets');
    elgg_register_plugin_hook_handler('get_exportable_values', 'csv_exporter', '\\ColdTrick\\GroupTools\\CSVExporter::addGroupAdminsToGroups');
    elgg_register_plugin_hook_handler('get_exportable_values', 'csv_exporter', '\\ColdTrick\\GroupTools\\CSVExporter::addGroupAdminsToUsers');
    elgg_register_plugin_hook_handler('export_value', 'csv_exporter', '\\ColdTrick\\GroupTools\\CSVExporter::exportGroupAdminsForGroups');
    elgg_register_plugin_hook_handler('export_value', 'csv_exporter', '\\ColdTrick\\GroupTools\\CSVExporter::exportGroupAdminsForUsers');
    // actions
    elgg_register_action('group_tools/toggle_admin', dirname(__FILE__) . '/actions/toggle_admin.php');
    elgg_register_action('group_tools/mail', dirname(__FILE__) . '/actions/mail.php');
    elgg_register_action('group_tools/cleanup', dirname(__FILE__) . '/actions/cleanup.php');
    elgg_register_action('group_tools/invite_members', dirname(__FILE__) . '/actions/invite_members.php');
    elgg_register_action('group_tools/welcome_message', dirname(__FILE__) . '/actions/welcome_message.php');
    elgg_register_action('group_tools/domain_based', dirname(__FILE__) . '/actions/domain_based.php');
    elgg_register_action('group_tools/related_groups', dirname(__FILE__) . '/actions/related_groups.php');
    elgg_register_action('group_tools/remove_related_groups', dirname(__FILE__) . '/actions/remove_related_groups.php');
    elgg_register_action('group_tools/member_export', dirname(__FILE__) . '/actions/member_export.php');
    elgg_register_action('group_tools/toggle_notifications', dirname(__FILE__) . '/actions/toggle_notifications.php');
    elgg_register_action('group_tools/join_motivation', dirname(__FILE__) . '/actions/membership/join_motivation.php');
    elgg_register_action('group_tools/toggle_special_state', dirname(__FILE__) . '/actions/admin/toggle_special_state.php', 'admin');
    elgg_register_action('group_tools/fix_auto_join', dirname(__FILE__) . '/actions/admin/fix_auto_join.php', 'admin');
    elgg_register_action('group_tools/notifications', dirname(__FILE__) . '/actions/admin/notifications.php', 'admin');
    elgg_register_action('group_tools/fix_acl', dirname(__FILE__) . '/actions/admin/fix_acl.php', 'admin');
    elgg_register_action('group_tools/group_tool_presets', dirname(__FILE__) . '/actions/admin/group_tool_presets.php', 'admin');
    elgg_register_action('group_tools/admin/bulk_delete', dirname(__FILE__) . '/actions/admin/bulk_delete.php', 'admin');
    elgg_register_action('group_tools/admin/approve', dirname(__FILE__) . '/actions/admin/approve.php', 'admin');
    elgg_register_action('group_tools/admin/decline', dirname(__FILE__) . '/actions/admin/decline.php', 'admin');
    elgg_register_action('group_tools/email_invitation', dirname(__FILE__) . '/actions/membership/email_invitation.php');
    elgg_register_action('groups/decline_email_invitation', dirname(__FILE__) . '/actions/groups/decline_email_invitation.php');
    elgg_register_action('group_tools/revoke_email_invitation', dirname(__FILE__) . '/actions/groups/revoke_email_invitation.php');
    elgg_register_action('groups/edit', dirname(__FILE__) . '/actions/groups/edit.php');
    elgg_register_action('group_tools/order_groups', dirname(__FILE__) . '/actions/order_groups.php', 'admin');
}
Пример #5
0
<?php

/**
 * show all group admins
 */
$group = elgg_extract('entity', $vars);
if (!$group instanceof ElggGroup) {
    return;
}
if (!group_tools_multiple_admin_enabled()) {
    return;
}
$options = ['relationship' => 'group_admin', 'relationship_guid' => $group->getGUID(), 'inverse_relationship' => true, 'type' => 'user', 'limit' => false, 'list_type' => 'gallery', 'gallery_class' => 'elgg-gallery-users', 'wheres' => ["e.guid <> {$group->getOwnerGUID()}"]];
$users = elgg_get_entities_from_relationship($options);
if (empty($users)) {
    return;
}
// add owner to the beginning of the list
array_unshift($users, $group->getOwnerEntity());
$body = elgg_view_entity_list($users, $options);
echo elgg_view_module('aside', elgg_echo('group_tools:multiple_admin:group_admins'), $body);
Пример #6
0
/**
 * Check if the group allows admins (not owner) to assign other admins
 *
 * @param ElggGroup $group the group to check
 *
 * @return bool
 */
function group_tools_can_assign_group_admin(ElggGroup $group)
{
    if (!$group instanceof ElggGroup) {
        return false;
    }
    $user_guid = elgg_get_logged_in_user_guid();
    if (empty($user_guid)) {
        return false;
    }
    if (!group_tools_multiple_admin_enabled()) {
        return false;
    }
    if ($group->getOwnerGUID() === $user_guid || elgg_is_admin_logged_in()) {
        return true;
    } elseif ($group->group_multiple_admin_allow_enable === 'yes' && $group->canEdit($user_guid)) {
        return true;
    }
    return false;
}
Пример #7
0
Файл: events.php Проект: n8b/VMN
/**
 * Notify the group admins about a membership request
 *
 * @param string           $event        create
 * @param string           $type         membership_request
 * @param ElggRelationship $relationship the created membership request relation
 *
 * @return void
 */
function group_tools_membership_request($event, $type, $relationship)
{
    if (!$relationship instanceof ElggRelationship) {
        return;
    }
    $group = get_entity($relationship->guid_two);
    $user = get_user($relationship->guid_one);
    if (!elgg_instanceof($group, 'group') || !elgg_instanceof($user, 'user')) {
        return;
    }
    // only send a message if group admins are allowed
    if (!group_tools_multiple_admin_enabled()) {
        return;
    }
    // Notify group admins
    $options = array("relationship" => "group_admin", "relationship_guid" => $group->getGUID(), "inverse_relationship" => true, "type" => "user", "limit" => false, "wheres" => array("e.guid <> " . $group->owner_guid));
    $admins = elgg_get_entities_from_relationship($options);
    if (!empty($admins)) {
        $url = elgg_get_site_url() . "groups/requests/" . $group->getGUID();
        $subject = elgg_echo("groups:request:subject", array($user->name, $group->name));
        foreach ($admins as $a) {
            $body = elgg_echo("groups:request:body", array($a->name, $user->name, $group->name, $user->getURL(), $url));
            notify_user($a->getGUID(), $user->getGUID(), $subject, $body);
        }
    }
}
Пример #8
0
 /**
  * Add menu items to the user hover/entity menu
  *
  * @param string          $hook         the name of the hook
  * @param string          $type         the type of the hook
  * @param \ElggMenuItem[] $return_value current return vaue
  * @param array           $params       supplied params
  *
  * @return void|\ElggMenuItem[]
  */
 public static function assignGroupAdmin($hook, $type, $return_value, $params)
 {
     if (!group_tools_multiple_admin_enabled()) {
         return;
     }
     if ($type === 'menu:entity' && elgg_in_context('widgets')) {
         return;
     }
     $page_owner = elgg_get_page_owner_entity();
     $loggedin_user = elgg_get_logged_in_user_entity();
     if (!$page_owner instanceof \ElggGroup || empty($loggedin_user)) {
         // not a group or logged in
         return;
     }
     if (!$page_owner->canEdit()) {
         // can't edit the group
         return;
     }
     $user = elgg_extract('entity', $params);
     if (!$user instanceof \ElggUser) {
         // not a user menu
         return;
     }
     if ($page_owner->getOwnerGUID() === $user->getGUID() || $loggedin_user->getGUID() === $user->getGUID()) {
         // group owner or current user
         return;
     }
     if (!$page_owner->isMember($user)) {
         // user is not a member of the group
         return;
     }
     if (!group_tools_can_assign_group_admin($page_owner)) {
         return;
     }
     $is_admin = check_entity_relationship($user->getGUID(), 'group_admin', $page_owner->getGUID());
     $return_value[] = \ElggMenuItem::factory(['name' => 'group_admin', 'text' => elgg_echo('group_tools:multiple_admin:profile_actions:add'), 'href' => "action/group_tools/toggle_admin?group_guid={$page_owner->getGUID()}&user_guid={$user->getGUID()}", 'is_action' => true, 'item_class' => $is_admin ? 'hidden' : '', 'priority' => 600]);
     $return_value[] = \ElggMenuItem::factory(['name' => 'group_admin_remove', 'text' => elgg_echo('group_tools:multiple_admin:profile_actions:remove'), 'href' => "action/group_tools/toggle_admin?group_guid={$page_owner->getGUID()}&user_guid={$user->getGUID()}", 'is_action' => true, 'item_class' => $is_admin ? '' : 'hidden', 'priority' => 601]);
     return $return_value;
 }