Index: openacs-4/packages/directory/www/index.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/directory/www/index.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/directory/www/index.tcl 21 Oct 2001 18:16:34 -0000 1.2
+++ openacs-4/packages/directory/www/index.tcl 21 Oct 2001 21:44:46 -0000 1.3
@@ -55,27 +55,14 @@
set page_title "Browse members"
}
+set order_clause [db_map order_by_$order_by]
-set order_clause ""
-if {$order_by == "name"} {
- set order_clause " order by lower(last_name)"
-} elseif {$order_by == "email"} {
- set order_clause " order by lower(email)"
-} elseif {$order_by == "name-"} {
- set order_clause " order by lower(last_name) desc"
-} elseif {$order_by == "email-"} {
- set order_clause " order by lower(email) desc"
-}
-
if {![empty_string_p $search]} {
- set where_clause "and (lower(first_names) like '%' || lower(:search) || '%'
- or lower(last_name) like '%' || lower(:search) || '%'
- or lower(email) like '%' || lower(:search) || '%')"
+ set where_clause [db_map where_1]
set where_text " with something matching "$search""
set alpha_nav_bar ""
} elseif {![empty_string_p $letter] && $letter != "all"} {
- set where_clause "and upper(last_name) like :letter || '%'"
- set where_text " with a last name starting with $letter"
+ set where_clause [db_map where_2]
set alpha_nav_bar [dir_alpha_nav_bar -group_id $group_id -all_users $all_users $letter start_row]
} else {
set where_clause ""
@@ -90,7 +77,7 @@
if {[empty_string_p $where_clause]} {
set queried_users $total_users
} else {
- set queried_users [db_string total_users_1 "
+ set queried_users [db_string total_users_2 "
select count(1)
from $table_and_group
$where_clause"]
@@ -102,27 +89,12 @@
set name_header [ad_decode $order_by "name" "Name: ^" "name-" "Name: v" "Name:"]
set email_header [ad_decode $order_by "email" "E-mail Address: ^" "email-" "E-mail Address: v" "E-mail Address:"]
-
-# this query is really ugly (3 nested selects!) but it's the only way to get a
-# "between" to work correctly on the rownum of an ordered set
-# if anyone knows a better way, I'd love to hear it - mikeb
-set sql_query "select m.*
- from $table_and_group
- $where_clause
- $order_clause"
-
-if {$num_rows != "0"} {
- set end_row [expr $start_row + $num_rows - 1]
- set sql_query "
- select * from (
- select first_names, last_name, email, user_id, rownum as my_rownum from (
- $sql_query
- )
- ) where my_rownum between :start_row and :end_row"
+if { $num_rows == 0 } {
+ db_multirow all_user_data get_all_users ""
+} else {
+ db_multirow all_user_data get_all_n_users ""
}
-db_multirow all_user_data get_all_users $sql_query
-
set rowcount [template::multirow size all_user_data]
set last_row [expr $start_row + $rowcount - 1]