Index: openacs-4/packages/acs-subsite/www/members/user-new.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/members/user-new.tcl,v diff -u -r1.4 -r1.5 --- openacs-4/packages/acs-subsite/www/members/user-new.tcl 8 Nov 2003 15:37:40 -0000 1.4 +++ openacs-4/packages/acs-subsite/www/members/user-new.tcl 10 Nov 2003 12:36:20 -0000 1.5 @@ -8,29 +8,72 @@ email } +auth::require_login + +set group_id [application_group::group_id_from_package_id] + +set admin_p [permission::permission_p -object_id $group_id -privilege "admin"] + +if { !$admin_p } { + # If not admin, user must be member of group, and members must be allowed to invite other members + if { ![parameter::get -parameter "MembersCanInviteMembersP" -default 0] || \ + ![group::member_p -group_id $group_id] } { + + ad_return_forbidden "Cannot invite members" "I'm sorry, but you're not allowed to invite members to this group" + ad_script_abort + } +} + set page_title "Inivite Member to [ad_conn instance_name]" set context [list [list "." "Members"] "Invite"] -set group_id [application_group::group_id_from_package_id] -# -# Check if email already belongs to a user -# +# Check if email is already known on the system +set party_id [db_string select_party { select party_id from parties where lower(email) = lower(:email) } -default {}] -set found_p [db_0or1row select_user { select user_id from cc_users where lower(email) = lower(:email) }] +if { ![empty_string_p $party_id] } { + # Yes, is it a user? + set user_id [db_string select_user { select user_id from users where user_id = :party_id } -default {}] -if { $found_p } { - # A user with this email already exists. Make them members. - set member_state approved + if { [empty_string_p $user_id] } { + # This is a party, but it's not a user - db_transaction { - set rel_id [relation_add -member_state $member_state "membership_rel" $group_id $user_id] - } on_error { - ad_return_error "Error creating the relation" "We got the following error message while trying to create this relation:
$errmsg" - ad_script_abort - } + acs_object_type::get -object_type [acs_object_type $party_id] -array object_type + # TODO: Move this to the form, by moving the form to an include template + ad_return_complaint 1 "