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]