group::add_member (public)

 group::add_member [ -no_perm_check ] [ -no_automatic_membership_rel ] \
    -group_id group_id -user_id user_id [ -rel_type rel_type ] \
    [ -member_state member_state ]

Defined in packages/acs-subsite/tcl/group-procs.tcl

Adds a user to a group, checking that the rel_type is permissible given the user's privileges, Can default both the rel_type and the member_state to their relevant values.

Switches:
-no_perm_check
(boolean) (optional)
avoid permission check
-no_automatic_membership_rel
(boolean) (optional)
Use this flag, when we do not want to add automatically a membership_rel (e.g. in DotLRN)
-group_id
(required)
group, to which a member should be added
-user_id
(required)
user, which should be added to a group
-rel_type
(optional)
relationship type to be used (defaults to membership_rel)
-member_state
(optional)
state, in which member should be added (gets default via group::default_member_state)

Partial Call Graph (max 5 caller/called nodes):
%3 test_acs_subsite_check_composite_group acs_subsite_check_composite_group (test acs-subsite) group::add_member group::add_member test_acs_subsite_check_composite_group->group::add_member test_acs_subsite_expose_bug_1144 acs_subsite_expose_bug_1144 (test acs-subsite) test_acs_subsite_expose_bug_1144->group::add_member test_subsite_api subsite_api (test acs-subsite) test_subsite_api->group::add_member group::default_member_state group::default_member_state (public) group::add_member->group::default_member_state group::flush_members_cache group::flush_members_cache (private) group::add_member->group::flush_members_cache group::get group::get (public) group::add_member->group::get permission::cache_flush permission::cache_flush (public) group::add_member->permission::cache_flush permission::permission_p permission::permission_p (public) group::add_member->permission::permission_p install::xml::action::add-subsite-admin install::xml::action::add-subsite-admin (public) install::xml::action::add-subsite-admin->group::add_member install::xml::action::add-subsite-member install::xml::action::add-subsite-member (public) install::xml::action::add-subsite-member->group::add_member membership_rel::change_state membership_rel::change_state (public) membership_rel::change_state->group::add_member packages/acs-subsite/lib/user-new.tcl packages/acs-subsite/ lib/user-new.tcl packages/acs-subsite/lib/user-new.tcl->group::add_member packages/acs-subsite/www/admin/relations/add.tcl packages/acs-subsite/ www/admin/relations/add.tcl packages/acs-subsite/www/admin/relations/add.tcl->group::add_member

Testcases:
acs_subsite_expose_bug_1144, acs_subsite_check_composite_group, subsite_api
Source code:
    set admin_p [permission::permission_p -object_id $group_id -privilege "admin"]

    # Only admins can add non-membership_rel members
    if { $rel_type eq ""
         || (!$no_perm_check_p
             && $rel_type ne ""
             && $rel_type ne "membership_rel"
             && ![permission::permission_p -object_id $group_id -privilege "admin"])
     } {
        set rel_type "membership_rel"
    }

    group::get -group_id $group_id -array group

    if { !$no_perm_check_p } {
        set create_p [permission::permission_p -object_id $group_id -privilege "create"]
        if { $group(join_policy) eq "closed" && !$create_p } {
            error "You do not have permission to add members to the group '$group(group_name)'"
        }
    } else {
        set create_p 1
    }

    if { $member_state eq "" } {
        set member_state [group::default_member_state  -join_policy $group(join_policy)  -create_p $create_p]
    }

    if { !$no_automatic_membership_rel_p && $rel_type ne "membership_rel" } {
        # add them with a membership_rel first
        relation_add -member_state $member_state "membership_rel" $group_id $user_id
    }
    relation_add -member_state $member_state $rel_type $group_id $user_id

    #
    # Flush all permission checks pertaining to this user.
    #
    permission::cache_flush -party_id $user_id
    #
    # Flush members cache for the group
    #
    flush_members_cache -group_id $group_id
XQL Not present:
Generic
PostgreSQL XQL file:
packages/acs-subsite/tcl/group-procs-postgresql.xql

Oracle XQL file:
packages/acs-subsite/tcl/group-procs-oracle.xql

[ hide source ] | [ make this the default ]
Show another procedure: