Index: openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl,v diff -u -r1.48 -r1.49 --- openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl 28 Oct 2006 16:51:50 -0000 1.48 +++ openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl 1 Nov 2006 18:53:44 -0000 1.49 @@ -382,7 +382,6 @@ @error } { - set community_id [dotlrn_community::get_community_id] # Try to retrieve the project_id from the folder set project_id [db_string get_project_id_from_folder { @@ -406,10 +405,14 @@ if {[empty_string_p $project_id]} { # no project -> mail to all organization contacts - set contact_organizations [application_data_link::get_linked -from_object_id $community_id -to_object_type "organization"] - set contact_list "" - foreach party_id $contact_organizations { - set contact_list [concat $contact_list [contact::util::get_employees -organization_id $party_id]] + # This only works if we have the whole setup with .LRN + if {[apm_package_installed_p "dotlrn"]} { + set community_id [dotlrn_community::get_community_id] + set contact_organizations [application_data_link::get_linked -from_object_id $community_id -to_object_type "organization"] + set contact_list "" + foreach party_id $contact_organizations { + set contact_list [concat $contact_list [contact::util::get_employees -organization_id $party_id]] + } } } else { # project -> mail to project contact Index: openacs-4/packages/contacts/tcl/contacts-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/tcl/contacts-procs.tcl,v diff -u -r1.96 -r1.97 --- openacs-4/packages/contacts/tcl/contacts-procs.tcl 28 Oct 2006 16:51:14 -0000 1.96 +++ openacs-4/packages/contacts/tcl/contacts-procs.tcl 1 Nov 2006 18:53:44 -0000 1.97 @@ -35,7 +35,7 @@ if { [string is true [parameter::get -package_id $package_id -parameter "UseSubsiteAsDefaultGroup" -default "0"]] } { # we cannot trust ad_conn subsite_id because instances may be asking for subsites of numerous other packages. set node_id [site_node::get_node_id_from_object_id -object_id $package_id] - set package_id [db_string get_parent_subsite_id {}] + set package_id [site_node::closest_ancestor_package -node_id $node_id -package_key "acs-subsite"] } set group_id [application_group::group_id_from_package_id -no_complain -package_id $package_id] @@ -93,15 +93,34 @@ associated item_id and live_revisions. } { - set package_id [lindex [apm_package_id_from_key "contacts"] 0] + set contact_package_ids [apm_package_ids_from_key -package_key "contacts" -mounted] + foreach contact_package_id $contact_package_ids { + set default_group_id [contacts::default_group -package_id $contact_package_id] + set contact_package($default_group_id) $contact_package_id + lappend default_groups $default_group_id + } + db_foreach get_persons_without_items {} { - ns_log notice "contacts::sweeper creating content_item and content_revision for party_id: $person_id" - contact::revision::new -party_id $person_id -package_id $package_id + foreach group_id $default_groups { + if {[group::party_member_p -party_id $person_id -group_id $group_id]} { + ns_log notice "contacts::sweeper creating content_item and content_revision for party_id: $person_id" + contact::revision::new -party_id $person_id -package_id $contact_package($group_id) + break + } + } } db_foreach get_organizations_without_items {} { + foreach group_id $default_groups { + if {[group::party_member_p -party_id $organization_id -group_id $group_id]} { + ns_log notice "contacts::sweeper creating content_item and content_revision for party_id: $organization_id" + contact::revision::new -party_id $organization_id -package_id $contact_package($group_id) + break + } + } ns_log notice "contacts::sweeper creating content_item and content_revision for organization_id: $organization_id" contact::revision::new -party_id $organization_id -package_id $package_id } + if { ![info exists person_id] && ![info exists organization_id] } { ns_log Debug "contacts::create_revisions_sweeper no person or organization objects exist that do not have associated content_items" } @@ -637,7 +656,7 @@ } set extra_vars [ns_set create] - oacs_util::vars_to_ns_set -ns_set $extra_vars -var_list {party_id party_revision_id} + oacs_util::vars_to_ns_set -ns_set $extra_vars -var_list {party_id party_revision_id package_id} set party_revision_id [package_instantiate_object \ -extra_vars $extra_vars contact_party_revision] db_dml update_package_id "update acs_objects set package_id = :package_id where object_id = :party_revision_id"