From c42e0a6f66c013ba971be6ff8eed2efe1749d225 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Thu, 21 Feb 2013 07:55:27 -0500 Subject: Fixes #4953 updates group access list when name changed --- mod/groups/actions/groups/edit.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'mod/groups/actions') diff --git a/mod/groups/actions/groups/edit.php b/mod/groups/actions/groups/edit.php index d0689be2e..632a6412b 100644 --- a/mod/groups/actions/groups/edit.php +++ b/mod/groups/actions/groups/edit.php @@ -54,6 +54,18 @@ if ($group_guid && !$group->canEdit()) { // Assume we can edit or this is a new group if (sizeof($input) > 0) { foreach($input as $shortname => $value) { + // update access collection name ig group name changes + if (!$is_new_group && $shortname == 'name' && $value != $group->name) { + $ac_name = elgg_echo('groups:group') . ": " . $group->name; + $acl = get_access_collection($group->group_acl); + if ($acl) { + // @todo Elgg api does not support updating access collection name + $db_prefix = elgg_get_config('dbprefix'); + $query = "UPDATE {$db_prefix}access_collections SET name = '$ac_name'"; + update_data($query); + } + } + $group->$shortname = $value; } } -- cgit v1.2.3 From fafcbec36266a0542efd4d606d96489cf6fd8270 Mon Sep 17 00:00:00 2001 From: cash Date: Tue, 12 Mar 2013 11:31:17 -0400 Subject: Fixes #4953 added where clause to only change the correct acl --- mod/groups/actions/groups/edit.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'mod/groups/actions') diff --git a/mod/groups/actions/groups/edit.php b/mod/groups/actions/groups/edit.php index 632a6412b..c924ef198 100644 --- a/mod/groups/actions/groups/edit.php +++ b/mod/groups/actions/groups/edit.php @@ -54,14 +54,15 @@ if ($group_guid && !$group->canEdit()) { // Assume we can edit or this is a new group if (sizeof($input) > 0) { foreach($input as $shortname => $value) { - // update access collection name ig group name changes + // update access collection name if group name changes if (!$is_new_group && $shortname == 'name' && $value != $group->name) { - $ac_name = elgg_echo('groups:group') . ": " . $group->name; + $ac_name = elgg_echo('groups:group') . ": " . $value; $acl = get_access_collection($group->group_acl); if ($acl) { // @todo Elgg api does not support updating access collection name $db_prefix = elgg_get_config('dbprefix'); - $query = "UPDATE {$db_prefix}access_collections SET name = '$ac_name'"; + $query = "UPDATE {$db_prefix}access_collections SET name = '$ac_name' + WHERE id = $group->group_acl"; update_data($query); } } -- cgit v1.2.3 From 648cc5da8f89be53408ce28970da78cb29888276 Mon Sep 17 00:00:00 2001 From: cash Date: Tue, 12 Mar 2013 11:54:42 -0400 Subject: Fixes #5224 transfering container and metadata ownership --- mod/groups/actions/groups/edit.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'mod/groups/actions') diff --git a/mod/groups/actions/groups/edit.php b/mod/groups/actions/groups/edit.php index c924ef198..f04ef60db 100644 --- a/mod/groups/actions/groups/edit.php +++ b/mod/groups/actions/groups/edit.php @@ -105,7 +105,21 @@ if (!$is_new_group && $new_owner_guid && $new_owner_guid != $old_owner_guid) { // verify new owner is member and old owner/admin is logged in if (is_group_member($group_guid, $new_owner_guid) && ($old_owner_guid == $user->guid || $user->isAdmin())) { $group->owner_guid = $new_owner_guid; - + $group->container_guid = $new_owner_guid; + + $metadata = elgg_get_metadata(array( + 'guid' => $group_guid, + 'limit' => false, + )); + if ($metadata) { + foreach ($metadata as $md) { + if ($md->owner_guid == $old_owner_guid) { + $md->owner_guid = $new_owner_guid; + $md->save(); + } + } + } + // @todo Remove this when #4683 fixed $owner_has_changed = true; $old_icontime = $group->icontime; -- cgit v1.2.3 From a313f38890eec3b870c94476a79afce7d606c222 Mon Sep 17 00:00:00 2001 From: cash Date: Tue, 12 Mar 2013 13:09:51 -0400 Subject: Refs #4953 sanitize group name when updating collection name --- mod/groups/actions/groups/edit.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'mod/groups/actions') diff --git a/mod/groups/actions/groups/edit.php b/mod/groups/actions/groups/edit.php index f04ef60db..f19b90566 100644 --- a/mod/groups/actions/groups/edit.php +++ b/mod/groups/actions/groups/edit.php @@ -56,7 +56,8 @@ if (sizeof($input) > 0) { foreach($input as $shortname => $value) { // update access collection name if group name changes if (!$is_new_group && $shortname == 'name' && $value != $group->name) { - $ac_name = elgg_echo('groups:group') . ": " . $value; + $group_name = html_entity_decode($value, ENT_QUOTES, 'UTF-8'); + $ac_name = sanitize_string(elgg_echo('groups:group') . ": " . $group_name); $acl = get_access_collection($group->group_acl); if ($acl) { // @todo Elgg api does not support updating access collection name -- cgit v1.2.3 From d84add30c2846a91636f8e58dff5f29f018791a8 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 20 Apr 2013 12:43:26 -0400 Subject: Refs #5332 cleans up group invite action --- mod/groups/actions/groups/membership/invite.php | 73 +++++++++++++------------ 1 file changed, 39 insertions(+), 34 deletions(-) (limited to 'mod/groups/actions') diff --git a/mod/groups/actions/groups/membership/invite.php b/mod/groups/actions/groups/membership/invite.php index db90ecf3a..a96165b0e 100644 --- a/mod/groups/actions/groups/membership/invite.php +++ b/mod/groups/actions/groups/membership/invite.php @@ -7,43 +7,48 @@ $logged_in_user = elgg_get_logged_in_user_entity(); -$user_guid = get_input('user_guid'); -if (!is_array($user_guid)) { - $user_guid = array($user_guid); +$user_guids = get_input('user_guid'); +if (!is_array($user_guids)) { + $user_guids = array($user_guids); } $group_guid = get_input('group_guid'); +$group = get_entity($group_guid); -if (sizeof($user_guid)) { - foreach ($user_guid as $u_id) { - $user = get_entity($u_id); - $group = get_entity($group_guid); - - if ($user && $group && ($group instanceof ElggGroup) && $group->canEdit()) { - - if (!check_entity_relationship($group->guid, 'invited', $user->guid)) { - - // Create relationship - add_entity_relationship($group->guid, 'invited', $user->guid); - - // Send email - $url = elgg_normalize_url("groups/invitations/$user->username"); - $result = notify_user($user->getGUID(), $group->owner_guid, - elgg_echo('groups:invite:subject', array($user->name, $group->name)), - elgg_echo('groups:invite:body', array( - $user->name, - $logged_in_user->name, - $group->name, - $url, - )), - NULL); - if ($result) { - system_message(elgg_echo("groups:userinvited")); - } else { - register_error(elgg_echo("groups:usernotinvited")); - } - } else { - register_error(elgg_echo("groups:useralreadyinvited")); - } +if (count($user_guids) > 0 && elgg_instanceof($group, 'group') && $group->canEdit()) { + foreach ($user_guids as $guid) { + $user = get_user($guid); + if (!$user) { + continue; + } + + if (check_entity_relationship($group->guid, 'invited', $user->guid)) { + register_error(elgg_echo("groups:useralreadyinvited")); + continue; + } + + if (check_entity_relationship($user->guid, 'member', $group->guid)) { + // @todo add error message + continue; + } + + // Create relationship + add_entity_relationship($group->guid, 'invited', $user->guid); + + // Send notification + $url = elgg_normalize_url("groups/invitations/$user->username"); + $result = notify_user($user->getGUID(), $group->owner_guid, + elgg_echo('groups:invite:subject', array($user->name, $group->name)), + elgg_echo('groups:invite:body', array( + $user->name, + $logged_in_user->name, + $group->name, + $url, + )), + NULL); + if ($result) { + system_message(elgg_echo("groups:userinvited")); + } else { + register_error(elgg_echo("groups:usernotinvited")); } } } -- cgit v1.2.3