Index: openacs-4/packages/acs-subsite/lib/subsites.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/lib/subsites.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/acs-subsite/lib/subsites.tcl 22 Sep 2003 08:40:04 -0000 1.1 +++ openacs-4/packages/acs-subsite/lib/subsites.tcl 2 Oct 2003 21:18:11 -0000 1.2 @@ -14,37 +14,78 @@ } +list::create \ + -name subsites \ + -multirow subsites \ + -key node_id \ + -elements { + instance_name { + label "Name" + link_url_eval {$name/} + } + num_members { + label "\# Members" + html { align right } + } + } + + + # Get the subsite node ID set subsite_url [site_node_closest_ancestor_package_url] array set subsite_sitenode [site_node::get -url $subsite_url] set subsite_node_id $subsite_sitenode(node_id) -multirow create subsites node_id name package_id instance_name read_p +set subsites [list] +set package_ids [list] foreach url [site_node::get_children -package_type apm_service -node_id $subsite_node_id] { array unset node array set node [site_node::get_from_url -url $url -exact] if { [string equal $node(package_key) "acs-subsite"] } { - multirow append subsites \ - $node(node_id) \ - $node(name) \ - $node(object_id) \ - $node(instance_name) \ - [permission::permission_p -object_id $node(object_id) -privilege read] + lappend subsites [list \ + $node(instance_name) \ + $node(node_id) \ + $node(name) \ + $node(object_id) \ + [permission::permission_p -object_id $node(object_id) -privilege read]] + lappend package_ids $node(object_id) } } -list::create \ - -name subsites \ - -multirow subsites \ - -key node_id \ - -elements { - instance_name { - label "Name" - link_url_eval {$name/} - } +array set num_members [list] +if { [llength $package_ids] > 0 } { + db_foreach num_members " + select ag.package_id, + count(member_id) as n_members + from application_groups ag, + group_approved_member_map m + where ag.package_id in ('[join $package_ids "','"]') + and m.group_id = ag.group_id + group by ag.package_id + " { + set num_members($package_id) [lc_numeric $n_members] } +} +# Sort them by instance_name +set subsites [lsort -index 0 $subsites] +multirow create subsites instance_name node_id name package_id read_p num_members +foreach elm $subsites { + set package_id [lindex $elm 3] + if { ![info exists num_members($package_id)] } { + set num_members($package_id) {} + } + + multirow append subsites \ + [lindex $elm 0] \ + [lindex $elm 1] \ + [lindex $elm 2] \ + [lindex $elm 3] \ + [lindex $elm 4] \ + $num_members($package_id) +} +