Index: openacs-4/packages/contacts/www/group-parties-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/group-parties-add.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/contacts/www/group-parties-add.tcl 7 Jun 2005 07:45:40 -0000 1.2 +++ openacs-4/packages/contacts/www/group-parties-add.tcl 17 Jun 2005 08:18:55 -0000 1.3 @@ -26,6 +26,7 @@ set title "[_ contacts.Add_to_Group]" set user_id [ad_conn user_id] +set peeraddr [ad_conn peeraddr] set context [list $title] set package_id [ad_conn package_id] set recipients [list] @@ -64,7 +65,7 @@ db_transaction { foreach group_id $group_ids { foreach party_id $party_ids { - # relation_add verifies that they aren't already in the group + switch [contact::type -party_id $party_id] { person { set rel_type "membership_rel" @@ -73,7 +74,24 @@ set rel_type "organization_rel" } } - relation_add -member_state "approved" $rel_type $group_id $party_id + + # relation-add does not work as there is no + # special procedure for organizations at + # the moment. + set existing_rel_id [db_string rel_exists { + select rel_id + from acs_rels + where rel_type = :rel_type + and object_id_one = :group_id + and object_id_two = :party_id + } -default {}] + + if { [empty_string_p $existing_rel_id] } { + + set rel_id [db_string insert_rels { select acs_rel__new (NULL::integer,:rel_type,:group_id,:party_id,NULL,:user_id,:peeraddr) as org_rel_id }] + db_dml insert_state { insert into membership_rels (rel_id,member_state) values (:rel_id,'approved') } + } + } } }