From 2c23064e291fe525e1d9e1e3ecd1963dbcc4af60 Mon Sep 17 00:00:00 2001 From: marcus Date: Wed, 7 Jan 2009 16:26:50 +0000 Subject: Closes #286: Group access restrictions issue fixed, modified from patch supplied with #315 git-svn-id: https://code.elgg.org/elgg/trunk@2538 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/access.php | 48 +++++++++++++++++++++++++-------------------- mod/groups/groupprofile.php | 40 +++++++++++++++++++++++-------------- mod/groups/languages/en.php | 5 ++++- 3 files changed, 56 insertions(+), 37 deletions(-) diff --git a/engine/lib/access.php b/engine/lib/access.php index a47cefd22..e8940b75c 100644 --- a/engine/lib/access.php +++ b/engine/lib/access.php @@ -71,31 +71,37 @@ $query .= " WHERE am.user_guid = {$user_id} AND (ag.site_guid = {$site_id} OR ag.site_guid = 0)"; $tmp_access_array = array(2); - if (isloggedin()) - $tmp_access_array[] = 1; - - if ($collections = get_data($query)) { - foreach($collections as $collection) - if (!empty($collection->access_collection_id)) $tmp_access_array[] = $collection->access_collection_id; + if (isloggedin()) { + $tmp_access_array[] = 1; + + // The following can only return sensible data if the user is logged in. + + if ($collections = get_data($query)) { + foreach($collections as $collection) + if (!empty($collection->access_collection_id)) $tmp_access_array[] = $collection->access_collection_id; + + } - } + $query = "SELECT ag.id FROM {$CONFIG->dbprefix}access_collections ag "; + $query .= " WHERE ag.owner_guid = {$user_id} AND (ag.site_guid = {$site_id} OR ag.site_guid = 0)"; + + if ($collections = get_data($query)) { + foreach($collections as $collection) + if (!empty($collection->id)) $tmp_access_array[] = $collection->id; + } + - $query = "SELECT ag.id FROM {$CONFIG->dbprefix}access_collections ag "; - $query .= " WHERE ag.owner_guid = {$user_id} AND (ag.site_guid = {$site_id} OR ag.site_guid = 0)"; - - if ($collections = get_data($query)) { - foreach($collections as $collection) - if (!empty($collection->id)) $tmp_access_array[] = $collection->id; - } - - - global $is_admin; - - if (isset($is_admin) && $is_admin == true) { - $tmp_access_array[] = 0; + global $is_admin; + + if (isset($is_admin) && $is_admin == true) { + $tmp_access_array[] = 0; + } + + $access_array[$user_id] = $tmp_access_array; } + else + return $tmp_access_array; // No user id logged in so we can only access public info - $access_array[$user_id] = $tmp_access_array; } else { $tmp_access_array = $access_array[$user_id]; diff --git a/mod/groups/groupprofile.php b/mod/groups/groupprofile.php index 7bdcf8718..f8b0b6bba 100644 --- a/mod/groups/groupprofile.php +++ b/mod/groups/groupprofile.php @@ -14,20 +14,30 @@ $group = get_entity($group_guid); - - set_page_owner($group_guid); - - $area2 = elgg_view_title($group->name); - $area2 .= elgg_view('group/group', array('entity' => $group, 'user' => $_SESSION['user'], 'full' => true)); - - //group profile 'items' - these are not real widgets, just contents to display - $area2 .= elgg_view('groups/profileitems',array('entity' => $group)); - - //group members - $area3 = elgg_view('groups/members',array('entity' => $group)); - - $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2, $area3); - + if ($group) { + set_page_owner($group_guid); + + $title = $group->name; + + $area2 = elgg_view_title($title); + $area2 .= elgg_view('group/group', array('entity' => $group, 'user' => $_SESSION['user'], 'full' => true)); + + //group profile 'items' - these are not real widgets, just contents to display + $area2 .= elgg_view('groups/profileitems',array('entity' => $group)); + + //group members + $area3 = elgg_view('groups/members',array('entity' => $group)); + + $body = elgg_view_layout('two_column_left_sidebar', $area1, $area2, $area3); + } else { + $title = elgg_echo('groups:notfound'); + + $area2 = elgg_view_title($title); + $area2 .= elgg_echo('groups:notfound:details'); + + $body = elgg_view_layout('two_column_left_sidebar', "", $area2,""); + } + // Finally draw the page - page_draw($group->name, $body); + page_draw($title, $body); ?> \ No newline at end of file diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index c9cbde959..04b644cc2 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -48,7 +48,10 @@ 'groups:inviteto' => "Invite friends to '%s'", 'groups:nofriends' => "You have no friends left who have not been invited to this group.", - 'groups:group' => "Group", + 'groups:group' => "Group", + + 'groups:notfound' => "Group not found", + 'groups:notfound:details' => "The requested group either does not exist or you do not have access to it", 'item:object:groupforumtopic' => "Forum topics", -- cgit v1.2.3