Index: openacs-4/packages/contacts/tcl/contact-search-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/tcl/contact-search-procs.tcl,v
diff -u -r1.9 -r1.10
--- openacs-4/packages/contacts/tcl/contact-search-procs.tcl 16 Jun 2005 20:51:58 -0000 1.9
+++ openacs-4/packages/contacts/tcl/contact-search-procs.tcl 19 Jun 2005 05:02:29 -0000 1.10
@@ -339,244 +339,8 @@
} {
returns the group_id for which this group is a component, if none then it return null
} {
- set output_code ""
- set output_pretty ""
- switch $type {
- attribute {
- set attribute_id [lindex $var_list 0]
- if { $to == "pretty" } {
- set attribute_pretty [attribute::pretty_name -attribute_id $attribute_id]
- } else {
- set attribute_pretty "[_ contacts.irrelevant]"
- }
-
- set operand [lindex $var_list 1]
- set value [string tolower [lindex $var_list 2]]
-
- switch $operand {
- set {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_s]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' )"
- }
- not_set {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_n]"
- set output_code "$revision_id not in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' )"
- }
- default {
- ams::attribute::get -attribute_id $attribute_id -array "attr_info"
- set value_method [ams::widget -widget $attr_info(widget) -request "value_method"]
-
- switch $value_method {
- ams_value__options {
- if { $to == "pretty" } {
- set option_pretty [ams::option::name -option_id $value]
- } else {
- set option_pretty ""
- }
-
- switch $operand {
- selected {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_s_1]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_options ao${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav${attribute_id}.value_id = ao${attribute_id}.value_id and ao${attribute_id}.option_id = '$value' )"
- }
- not_selected {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_n_1]"
- set output_code "$revision_id not in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_options ao${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav${attribute_id}.value_id = ao${attribute_id}.value_id and ao${attribute_id}.option_id = '$value' )"
- }
- }
- }
- ams_value__telecom_number {
- switch $operand {
- area_code_equals {
- set output_pretty "[_ contacts.lt_attribute_pretty_area]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, telecom_numbers tn${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav.${attribute_id}.value_id = tn${attribute_id}.number_id and tn${attribute_id}.area_city_code = '$value' )"
- }
- not_area_code_equals {
- set output_pretty "[_ contacts.lt_attribute_pretty_area_1]"
- set output_code "$revision_id not in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, telecom_numbers tn${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav.${attribute_id}.value_id = tn${attribute_id}.number_id and tn${attribute_id}.area_city_code = '$value' )"
- }
- country_code_equals {
- set output_pretty "[_ contacts.lt_attribute_pretty_coun]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, telecom_numbers tn${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav.${attribute_id}.value_id = tn${attribute_id}.number_id and tn${attribute_id}.country_code = '$value' )"
- }
- not_country_code_equals {
- set output_pretty "[_ contacts.lt_attribute_pretty_coun_1]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, telecom_numbers tn${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav.${attribute_id}.value_id = tn${attribute_id}.number_id and tn${attribute_id}.area_city_code = '$value' )"
- }
- }
- }
- ams_value__text {
- switch $operand {
- contains {
- set output_pretty "[_ contacts.lt_attribute_pretty_cont]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_texts at${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = at${attribute_id}.value_id\n and lower(at${attribute_id}.text) like ('\%$value\%')\n)"
- }
- not_contains {
- set output_pretty "[_ contacts.lt_attribute_pretty_does]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_texts at${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = at${attribute_id}.value_id\n and lower(at${attribute_id}.text) not like ('\%$value\%')\n)"
- }
- }
- }
- ams_value__postal_address {
- set value [string toupper $value]
- switch $operand {
- country_is {
- set output_pretty "[_ contacts.lt_attribute_pretty_coun_2]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, postal_addresses pa${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav${attribute_id}.value_id = pa${attribute_id}.address_id and pa${attribute_id}.country_code = '$value' )"
- }
- country_is_not {
- set output_pretty "[_ contacts.lt_attribute_pretty_coun_3]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, postal_addresses pa${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav${attribute_id}.value_id = pa${attribute_id}.address_id and pa${attribute_id}.country_code = '$value' )"
- }
- state_is {
- set output_pretty "[_ contacts.lt_attribute_pretty_stat]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, postal_addresses pa${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav${attribute_id}.value_id = pa${attribute_id}.address_id and pa${attribute_id}.region = '$value' )"
- }
- state_is_not {
- set output_pretty "[_ contacts.lt_attribute_pretty_stat_1]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, postal_addresses pa${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav${attribute_id}.value_id = pa${attribute_id}.address_id and pa${attribute_id}.region = '$value' )"
- }
- zip_is {
- set output_pretty "[_ contacts.lt_attribute_pretty_zipp]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, postal_addresses pa${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav${attribute_id}.value_id = pa${attribute_id}.address_id and pa${attribute_id}.postal_code like ('$value\%') )"
- }
- zip_is_not {
- set output_pretty "[_ contacts.lt_attribute_pretty_zipp_1]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, postal_addresses pa${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}' and aav${attribute_id}.value_id = pa${attribute_id}.address_id and pa${attribute_id}.postal_code like ('$value\%') )"
- }
- }
- }
- ams_value__number {
- switch $operand {
- is {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_s_2]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_numbers an${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = an${attribute_id}.value_id\n and an${attribute_id}.number = '$value' )"
- }
- greater_than {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_g]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_numbers an${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = an${attribute_id}.value_id\n and an${attribute_id}.number > '$value' )"
- }
- less_than {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_l]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_numbers an${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = an${attribute_id}.value_id\n and an${attribute_id}.number < '$value' )"
- }
- }
- }
- ams_value__time {
- set interval "$value [string tolower [lindex $var_list 3]]"
- switch $operand {
- less_than {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_l_1]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_times at${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = at${attribute_id}.value_id\n and at${attribute_id}.time > ( now() - '$interval'::interval ) )"
- }
- more_than {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_l_1]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_times at${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = at${attribute_id}.value_id\n and at${attribute_id}.time < ( now() - '$interval'::interval ) )"
- }
- after {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_a]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_times at${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = at${attribute_id}.value_id\n and at${attribute_id}.time > '$value'::timestamptz )"
- }
- before {
- set output_pretty "[_ contacts.lt_attribute_pretty_is_b]"
- set output_code "$revision_id in (\n\select aav${attribute_id}.object_id\n from ams_attribute_values aav${attribute_id}, ams_times at${attribute_id}\n where aav${attribute_id}.attribute_id = '${attribute_id}'\n and aav${attribute_id}.value_id = at${attribute_id}.value_id\n and at${attribute_id}.time < '$value'::timestamptz )"
- }
- }
- }
- }
- }
- }
- }
- contact {
- set operand [lindex $var_list 0]
- set interval "[lindex $var_list 1] [lindex $var_list 2]"
- switch $operand {
- in_search {
- set search_id [lindex $var_list 2]
- set search_link "[contact::search::title -search_id $search_id]"
- set output_pretty "[_ contacts.lt_Contact_in_the_search_search_link]"
- ns_log notice "contact::party_id_in_sub_search_clause -search_id $search_id"
- set output_code [contact::party_id_in_sub_search_clause -search_id $search_id]
- }
- not_in_search {
- set search_id [lindex $var_list 2]
- set search_link "[contact::search::title -search_id $search_id]"
- set output_pretty "[_ contacts.lt_Contact_not_in_the_search_search_link]"
- ns_log notice "contact::party_id_in_sub_search_clause -search_id $search_id"
- set output_code [contact::party_id_in_sub_search_clause -search_id $search_id -not]
- }
- update {
- set output_pretty "[_ contacts.lt_Contact_updated_in_th]"
- set output_code "CASE WHEN ( select creation_date from acs_objects where object_id = $revision_id ) > ( now() - '$interval'::interval ) THEN 't'::boolean ELSE 'f'::boolean END"
- }
- not_update {
- set output_pretty "[_ contacts.lt_Contact_not_updated_i]"
- set output_code "CASE WHEN ( select creation_date from acs_objects where object_id = $revision_id ) > ( now() - '$interval'::interval ) THEN 'f'::boolean ELSE 't'::boolean END"
- }
- comment {
- set output_pretty "[_ contacts.lt_Contact_commented_on_]"
- set output_code "CASE WHEN (select creation_date from acs_objects where object_id in ( select comment_id from general_comments where object_id = $party_id ) order by creation_date desc limit 1 ) > ( now() - '$interval'::interval ) THEN 't'::boolean ELSE 'f'::boolean END"
- }
- not_comment {
- set output_pretty "[_ contacts.lt_Contact_not_commented]"
- set output_code "CASE WHEN (select creation_date from acs_objects where object_id in ( select comment_id from general_comments where object_id = $party_id ) order by creation_date desc limit 1 ) > ( now() - '$interval'::interval ) THEN 'f'::boolean ELSE 't'::boolean END"
- }
- created {
- set output_pretty "[_ contacts.lt_Contact_created_in_th]"
- set output_code "CASE WHEN ( select acs_objects.creation_date from acs_objects where acs_objects.object_id = $party_id ) > ( now() - '$interval'::interval ) THEN 't'::boolean ELSE 'f'::boolean END"
- }
- not_created {
- set output_pretty "[_ contacts.lt_Contact_not_created_i]"
- set output_code "CASE WHEN ( select acs_objects.creation_date from acs_objects where acs_objects.object_id = $party_id ) > ( now() - '$interval'::interval ) THEN 'f'::boolean ELSE 't'::boolean END"
- }
- login {
- set output_pretty "[_ contacts.lt_Contact_has_logged_in]"
- set output_code "CASE WHEN ( select n_sessions from users where user_id = $party_id ) > 1 or ( select last_visit from users where user_id = $party_id ) is not null THEN 't'::boolean ELSE 'f'::boolean END"
- }
- not_login {
- set output_pretty "[_ contacts.lt_Contact_has_never_log]"
- set output_code "CASE WHEN ( select n_sessions from users where user_id = $party_id ) > 1 or ( select last_visit from users where user_id = $party_id ) is not null THEN 'f'::boolean ELSE 't'::boolean END"
- }
- login_time {
- set output_pretty "[_ contacts.lt_Contact_has_logged_in_1]"
- set output_code "CASE WHEN ( select last_visit from users where user_id = $party_id ) > ( now() - '$interval'::interval ) THEN 't'::boolean ELSE 'f'::boolean END"
- }
- not_login_time {
- set output_pretty "[_ contacts.lt_Contact_has_not_logge]"
- set output_code "CASE WHEN ( select last_visit from users where user_id = $party_id ) > ( now() - '$interval'::interval ) THEN 'f'::boolean ELSE 't'::boolean END"
- }
- }
- }
- group {
- set operand [lindex $var_list 0]
- set group_id [lindex $var_list 1]
- if { $to == "pretty" } {
- set group_pretty [lang::util::localize [db_string select_group_name { select group_name from groups where group_id = :group_id }]]
- } else {
- set group_pretty ""
- }
- switch $operand {
- in {
- set output_pretty "[_ contacts.lt_The_contact_is_in_the]"
- set output_code "$party_id in ( select member_id from group_distinct_member_map where group_id = '$group_id')"
- }
- not_in {
- set output_pretty "[_ contacts.lt_The_contact_is_NOT_in]"
- set output_code "$party_id not in ( select member_id from group_distinct_member_map where group_id = '$group_id')"
- }
- }
- }
- tasks {
- switch $to {
- pretty {
- set output $var_list
- }
- code {
- set output $var_list
- }
- }
- }
- }
+ set output_pretty [contacts::search::condition_type -type $type -request pretty -var_list $var_list -party_id $party_id -revision_id $revision_id]
+ set output_code [contacts::search::condition_type -type $type -request sql -var_list $var_list -party_id $party_id -revision_id $revision_id]
if { ![exists_and_not_null output_pretty] || ![exists_and_not_null output_code] } {
if { [exists_and_not_null error_message] } {
error "[_ contacts.lt_The_query_type_var_li]"