membership-rel-procs.tcl
Does not contain a contract.
- Location:
- /packages/acs-tcl/tcl/membership-rel-procs.tcl
Related Files
[ hide source ] | [ make this the default ]
File Contents
ad_library { Manage Membership Relations @author yon (yon@openforce.net) @creation-date 2002-03-15 @cvs-id $Id: membership-rel-procs.tcl,v 1.15 2024/09/11 06:15:48 gustafn Exp $ } namespace eval membership_rel { d_proc -public change_state { {-rel_id:required} {-state:required} } { Change the state of a membership relation } { db_transaction { # We need the id of the user that we are changing state for set rel_user_id [get_user_id -rel_id $rel_id] # If user is being undeleted - remove him from the public group acs_user::get -user_id $rel_user_id -array user if { $user(member_state) eq "deleted" && $state eq "approved" } { group::remove_member \ -group_id [acs_magic_object the_public] \ -user_id $rel_user_id } set valid_states { "approved" "banned" "rejected" "deleted" "needs approval" "merged" "expired" } if {$state in $valid_states} { db_dml update_state { update membership_rels set member_state = :state where rel_id = :rel_id } if {$state eq "deleted"} { # Add user to public group - see bug 1468 group::add_member \ -no_perm_check \ -group_id [acs_magic_object the_public] \ -user_id $rel_user_id } } # Record who changed the state # This will trigger an update of the acs_objects.modified_date column. # We use this in the ApprovalExpiration feature to make sure that a user isn't # bumped back to needs_approval right after an administrator has approved them, # even if the user doesn't log in the meantime. if { [ns_conn isconnected] } { set user_id [ad_conn user_id] } else { set user_id "" } db_dml update_modifying_user {} } if { $rel_user_id ne "" } { acs_user::flush_cache -user_id $rel_user_id } } d_proc -public approve { {-rel_id:required} } { Approve a membership relation } { change_state -rel_id $rel_id -state "approved" } d_proc -public ban { {-rel_id:required} } { Ban a membership relation } { change_state -rel_id $rel_id -state "banned" } d_proc -public reject { {-rel_id:required} } { Reject a membership relation } { change_state -rel_id $rel_id -state "rejected" } d_proc -public delete { {-rel_id:required} } { Delete a membership relation } { change_state -rel_id $rel_id -state "deleted" } d_proc -public unapprove { {-rel_id:required} } { Unapprove a membership relation } { change_state -rel_id $rel_id -state "needs approval" } d_proc -public expire { {-rel_id:required} } { Expire a membership relation } { change_state -rel_id $rel_id -state "expired" } d_proc -public get { {-rel_id:required} } { Return the user_id of a rel_id } { db_1row select_rel_id { select u.user_id, r.object_id_one as group_id from acs_rels r, users u where r.rel_id = :rel_id and u.user_id = r.object_id_two } return [list user_id $user_id group_id $group_id] } d_proc -public get_user_id { {-rel_id:required} } { Return the user_id of a rel_id } { return [dict get [get -rel_id $rel_id] user_id] } d_proc -public get_group_id { {-rel_id:required} } { Return the group_id of a rel_id } { return [dict get [get -rel_id $rel_id] group_id] } } # Local variables: # mode: tcl # tcl-indent-level: 4 # indent-tabs-mode: nil # End: