]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Added 'remove from group' link to the user hover menu (only appears when the page...
authorJeff Tilson <jrtilson@gmail.com>
Mon, 13 Jun 2011 18:38:46 +0000 (14:38 -0400)
committerJeff Tilson <jrtilson@gmail.com>
Mon, 13 Jun 2011 18:38:46 +0000 (14:38 -0400)
mod/groups/actions/groups/membership/remove.php [new file with mode: 0644]
mod/groups/languages/en.php
mod/groups/start.php

diff --git a/mod/groups/actions/groups/membership/remove.php b/mod/groups/actions/groups/membership/remove.php
new file mode 100644 (file)
index 0000000..6f06983
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Remove a user from a group
+ *
+ * @package ElggGroups
+ */
+
+$user_guid = get_input('user_guid');
+$group_guid = get_input('group_guid');
+
+$user = get_entity($user_guid);
+$group = get_entity($group_guid);
+
+elgg_set_page_owner_guid($group->guid);
+
+if (($user instanceof ElggUser) && ($group instanceof ElggGroup) && $group->canEdit()) {
+       // Don't allow removeing group owner
+       if ($group->getOwnerGUID() != $user->getGUID()) {
+               if ($group->leave($user)) {
+                       system_message(elgg_echo("groups:removed"));
+               } else {
+                       register_error(elgg_echo("groups:cantremove"));
+               }
+       } else {
+               register_error(elgg_echo("groups:cantremove"));
+       }
+} else {
+       register_error(elgg_echo("groups:cantremove"));
+}
+
+forward(REFERER);
index 63a6df3a99fd4578e2af80ccf5aea7e5e4424bd8..a4d9863ca7e5994524ef757da4fc3de187f1b154 100644 (file)
@@ -166,6 +166,9 @@ $english = array(
        'groups:notitle' => 'Groups must have a title',
        'groups:cantjoin' => 'Can not join group',
        'groups:cantleave' => 'Could not leave group',
+       'groups:removeuser' => 'Remove from group',
+       'groups:cantremove' => 'Cannot remove user from group',
+       'groups:removed' => 'User successfully removed from group',
        'groups:addedtogroup' => 'Successfully added the user to the group',
        'groups:joinrequestnotmade' => 'Could not request to join group',
        'groups:joinrequestmade' => 'Requested to join group',
index 73bdd08a9880b95feee089b0e9588d8f40269d4b..9a375e89dca0f8952c70d963408bd2e4c5cf8ebd 100644 (file)
@@ -44,6 +44,7 @@ function groups_init() {
        elgg_register_action("groups/invite", "$action_base/invite.php");
        elgg_register_action("groups/join", "$action_base/join.php");
        elgg_register_action("groups/leave", "$action_base/leave.php");
+       elgg_register_action("groups/remove", "$action_base/remove.php");
        elgg_register_action("groups/killrequest", "$action_base/delete_request.php");
        elgg_register_action("groups/killinvitation", "$action_base/delete_invite.php");
        elgg_register_action("groups/addtogroup", "$action_base/add.php");
@@ -60,6 +61,9 @@ function groups_init() {
 
        // group entity menu
        elgg_register_plugin_hook_handler('register', 'menu:entity', 'groups_entity_menu_setup');
+       
+       // group user hover menu        
+       elgg_register_plugin_hook_handler('register', 'menu:user_hover', 'groups_user_entity_menu_setup');
 
        //extend some views
        elgg_extend_view('css/elgg', 'groups/css');
@@ -366,6 +370,44 @@ function groups_entity_menu_setup($hook, $type, $return, $params) {
        return $return;
 }
 
+/**
+ * Add a remove user link to user hover menu when the page owner is a group
+ */
+function groups_user_entity_menu_setup($hook, $type, $return, $params) {
+       if (elgg_is_logged_in()) {
+               $group = elgg_get_page_owner_entity();
+               
+               // Check for valid group
+               if (!elgg_instanceof($group, 'group')) {
+                       return $return;
+               }
+       
+               $entity = $params['entity'];
+               
+               // Make sure we have a user and that user is a member of the group
+               if (!elgg_instanceof($entity, 'user') || !$group->isMember($entity)) {
+                       return $return;
+               }
+
+               // Add remove link if we can edit the group, and if we're not trying to remove the group owner
+               if ($group->canEdit() && $group->getOwnerGUID() != $entity->guid) {
+                       $remove = elgg_view('output/confirmlink', array(
+                               'href' => "action/groups/remove?user_guid={$entity->guid}&group_guid={$group->guid}",
+                               'text' => elgg_echo('groups:removeuser'),
+                       ));
+
+                       $options = array(
+                               'name' => 'removeuser',
+                               'text' => $remove,
+                               'priority' => 999,
+                       );
+                       $return[] = ElggMenuItem::factory($options);
+               } 
+       }
+
+       return $return;
+}
+
 /**
  * Groups created so create an access list for it
  */