Index: openacs-4/packages/acs-admin/www/users/one.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/users/one.adp,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-admin/www/users/one.adp 13 Mar 2001 22:59:26 -0000 1.1
+++ openacs-4/packages/acs-admin/www/users/one.adp 21 Feb 2002 17:13:17 -0000 1.2
@@ -26,6 +26,30 @@
Member state: @member_state@ @user_finite_state_links@
+This user is a member of the following groups:
+Note: These are the groups to which the user has been granted
+direct membership.
+
+
+
+ - @direct_group_membership.group_name@
+ (Remove)
+
+
+
+And the user is a member of these groups by virtue of being directly
+added (see above) or because these groups are components of the groups
+above.
+
+
+-
+
+ @all_group_membership.group_name@,
+
+
+
+
+
@user_contributions.pretty_plural@
Index: openacs-4/packages/acs-admin/www/users/one.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/users/one.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/acs-admin/www/users/one.tcl 13 Mar 2001 22:59:26 -0000 1.1
+++ openacs-4/packages/acs-admin/www/users/one.tcl 21 Feb 2002 17:13:17 -0000 1.2
@@ -23,7 +23,7 @@
user_finite_state_links:onevalue
}
-if ![db_0or1row user_info "select first_names, last_name, email, nvl(screen_name,'< none set up >') as screen_name, creation_date, creation_ip, last_visit, member_state, email_verified_p
+if ![db_0or1row user_info "select first_names, last_name, email, coalesce(screen_name,'< none set up >') as screen_name, creation_date, creation_ip, last_visit, member_state, email_verified_p
from cc_users
where user_id = :user_id"] {
ad_return_complaint 1 "We couldn't find user #$user_id; perhaps this person was deleted?"
@@ -57,8 +57,34 @@
and a.creation_user = :user_id
order by object_name, creation_date"
+# cro@ncacasi.org 2002-02-20
+# Boy is this query wacked, but I think I am starting to understand
+# how this groups thing works.
+# Find out which groups this user belongs to where he was added to the group
+# directly (e.g. his membership is not by virtue of the group being
+# a component of another group).
+db_multirow direct_group_membership direct_group_membership "
+ select group_id, rel_id, party_names.party_name as group_name
+ from (select /*+ ORDERED */ DISTINCT rels.rel_id, object_id_one as group_id,
+ object_id_two
+ from acs_rels rels, all_object_party_privilege_map perm
+ where perm.object_id = rels.rel_id
+ and perm.privilege = 'read'
+ and rels.rel_type = 'membership_rel'
+ and rels.object_id_two = :user_id) r,
+ party_names
+ where r.group_id = party_names.party_id
+order by lower(party_names.party_name)"
+# And also get the list of all groups he is a member of, direct or
+# inherited.
+db_multirow all_group_membership all_group_membership "
+ select groups.group_id, groups.group_name
+ from groups, group_member_map gm
+ where groups.group_id = gm.group_id and gm.member_id=:user_id
+ order by lower(groups.group_name)"
+
ad_return_template
Index: openacs-4/packages/acs-admin/www/users/one.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/users/one.xql,v
diff -u -r1.5 -r1.6
--- openacs-4/packages/acs-admin/www/users/one.xql 29 Apr 2001 01:28:46 -0000 1.5
+++ openacs-4/packages/acs-admin/www/users/one.xql 21 Feb 2002 17:13:17 -0000 1.6
@@ -24,5 +24,28 @@
-
+
+
+ select groups.group_id, groups.group_name
+ from groups, group_member_map gm
+ where groups.group_id = gm.group_id and gm.member_id=:user_id
+ order by lower(groups.group_name)
+
+
+
+
+
+ select group_id, rel_id, party_names.party_name as group_name
+ from (select /*+ ORDERED */ DISTINCT rels.rel_id, object_id_one as group_id,
+ object_id_two
+ from acs_rels rels, all_object_party_privilege_map perm
+ where perm.object_id = rels.rel_id
+ and perm.privilege = 'read'
+ and rels.rel_type = 'membership_rel'
+ and rels.object_id_two = :user_id) r,
+ party_names
+ where r.group_id = party_names.party_id
+order by lower(party_names.party_name)
+
+