aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mod/groups/actions/groups/edit.php43
-rw-r--r--mod/groups/languages/en.php1
-rw-r--r--mod/groups/views/default/forms/groups/edit.php24
3 files changed, 37 insertions, 31 deletions
diff --git a/mod/groups/actions/groups/edit.php b/mod/groups/actions/groups/edit.php
index b3c39c461..331c80be0 100644
--- a/mod/groups/actions/groups/edit.php
+++ b/mod/groups/actions/groups/edit.php
@@ -60,23 +60,6 @@ if (!$group->name) {
forward(REFERER);
}
-// Group membership - should these be treated with same constants as access permissions?
-switch (get_input('membership')) {
- case ACCESS_PUBLIC:
- $group->membership = ACCESS_PUBLIC;
- break;
- default:
- $group->membership = ACCESS_PRIVATE;
-}
-
-// Set access - all groups are public from elgg's point of view, unless the override is in place
-if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') {
- $visibility = (int)get_input('vis', '', false);
-
- $group->access_id = $visibility;
-} else {
- $group->access_id = ACCESS_PUBLIC;
-}
// Set group tool options
if (isset($CONFIG->group_tool_options)) {
@@ -89,7 +72,20 @@ if (isset($CONFIG->group_tool_options)) {
}
$group->$group_option_toggle_name = get_input($group_option_toggle_name, $group_option_default_value);
}
-}
+}
+
+// Group membership - should these be treated with same constants as access permissions?
+switch (get_input('membership')) {
+ case ACCESS_PUBLIC:
+ $group->membership = ACCESS_PUBLIC;
+ break;
+ default:
+ $group->membership = ACCESS_PRIVATE;
+}
+
+if ($new_group_flag) {
+ $group->access_id = ACCESS_PUBLIC;
+}
$group->save();
@@ -100,7 +96,18 @@ if ($new_group_flag) {
add_to_river('river/group/create', 'create', $user->guid, $group->guid);
}
+// Invisible group support
+if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') {
+ $visibility = (int)get_input('vis', '', false);
+ if ($visibility != ACCESS_PUBLIC || $visibility != ACCESS_LOGGED_IN) {
+ $visibility = $group->group_acl;
+ }
+ if ($group->access_id != $visibility) {
+ $group->access_id = $visibility;
+ $group->save();
+ }
+}
// Now see if we have a file icon
if ((isset($_FILES['icon'])) && (substr_count($_FILES['icon']['type'],'image/'))) {
diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php
index 91f9f0cb6..b798dbf2d 100644
--- a/mod/groups/languages/en.php
+++ b/mod/groups/languages/en.php
@@ -87,6 +87,7 @@ $english = array(
*/
'groups:access:private' => 'Closed - Users must be invited',
'groups:access:public' => 'Open - Any user may join',
+ 'groups:access:group' => 'Group members only',
'groups:closedgroup' => 'This group has a closed membership.',
'groups:closedgroup:request' => 'To ask to be added, click the "request membership" menu link.',
'groups:visibility' => 'Who can see this group?',
diff --git a/mod/groups/views/default/forms/groups/edit.php b/mod/groups/views/default/forms/groups/edit.php
index 3993e750d..8b5a3c33e 100644
--- a/mod/groups/views/default/forms/groups/edit.php
+++ b/mod/groups/views/default/forms/groups/edit.php
@@ -8,8 +8,14 @@
// new groups default to open membership
if (isset($vars['entity'])) {
$membership = $vars['entity']->membership;
+ $access = $vars['entity']->access_id;
+ if ($access != ACCESS_PUBLIC || ACCESS_LOGGED_IN) {
+ // group only - this is done to handle access not created when group is created
+ $access = ACCESS_PRIVATE;
+ }
} else {
$membership = ACCESS_PUBLIC;
+ $access = ACCESS_PUBLIC;
}
?>
@@ -52,7 +58,7 @@ if ($group_profile_fields > 0) {
<?php echo elgg_view('input/access', array(
'name' => 'membership',
'value' => $membership,
- 'options' => array(
+ 'options_values' => array(
ACCESS_PRIVATE => elgg_echo('groups:access:private'),
ACCESS_PUBLIC => elgg_echo('groups:access:public')
)
@@ -68,19 +74,11 @@ if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') {
if (!$this_owner) {
$this_owner = elgg_get_logged_in_user_guid();
}
- $access = array(
- ACCESS_FRIENDS => elgg_echo("access:friends:label"),
+ $access_options = array(
+ ACCESS_PRIVATE => elgg_echo('groups:access:group'),
ACCESS_LOGGED_IN => elgg_echo("LOGGED_IN"),
ACCESS_PUBLIC => elgg_echo("PUBLIC")
);
- $collections = get_user_access_collections($vars['entity']->guid);
- if (is_array($collections)) {
- foreach ($collections as $c) {
- $access[$c->id] = $c->name;
- }
- }
-
- $current_access = $vars['entity']->access_id ? $vars['entity']->access_id : ACCESS_PUBLIC;
?>
<div>
@@ -88,8 +86,8 @@ if (elgg_get_plugin_setting('hidden_groups', 'groups') == 'yes') {
<?php echo elgg_echo('groups:visibility'); ?><br />
<?php echo elgg_view('input/access', array(
'name' => 'vis',
- 'value' => $current_access,
- 'options' => $access,
+ 'value' => $access,
+ 'options_values' => $access_options,
));
?>
</label>