# # # # # email_report_setup_util.cfv # # # # add_return_address_in_user_info() # add_recipient_addresses_in_user_info() # handle_recipient_addresses_in_user_info_profile() # add_recipient_addresses_in_email_info() # # handle_email_parameters() # # # # # # # # add_return_address_in_user_info() # # # subroutine(add_return_address_in_user_info( node user_info_email, string return_address), ( # Adds the return_address to users_cache email defaults if it does not yet exist # Create return_addresses node if it does not yet exist if (!user_info_email?{"return_addresses"}) then ( user_info_email . ".return_addresses" = ""; ); node return_addresses = user_info_email{"return_addresses"}; node item; bool return_address_exists = false; foreach item return_addresses ( if (@item eq return_addresses) then ( return_address_exists = true; last; ); ); if (!return_address_exists) then ( # Add return address to defaults return_addresses . "." . num_subnodes(return_addresses) = return_address; ); )); # # # # add_recipient_addresses_in_user_info() # # # subroutine(add_recipient_addresses_in_user_info( node user_info_email, node source_addresses), ( # Adds the addresses to users_cache email defaults if an address does not yet exist # Create return_addresses node if it does not yet exist if (!user_info_email?{"addresses"}) then ( user_info_email . ".addresses" = ""; ); node target_adresses = user_info_email . ".addresses"; # Create an addresses lookup node delete_node("v.adresses_lookup"); v.adresses_lookup = ""; node item; foreach item target_adresses ( "v.adresses_lookup." . @item = true; ); # Add any new address string address; foreach item source_addresses ( address = @item{"address"}; if (!?("v.adresses_lookup." . address)) then ( target_adresses . "." . num_subnodes(target_adresses) = address; ); ); )); # # # # handle_recipient_addresses_in_user_info_profile() # # # subroutine(handle_recipient_addresses_in_user_info_profile( string session_id, string user_node_name, string profile_name, bool save_recipient_addresses_as_default, node addresses), ( string profile_preferences_path = "users_cache." . user_node_name . ".profiles." . profile_name . ".preferences"; if (save_recipient_addresses_as_default) then ( if (?(profile_preferences_path . ".default_email_addresses")) then ( delete_node(profile_preferences_path . ".default_email_addresses"); ); clone_node(addresses, profile_preferences_path . ".default_email_addresses"); node default_email_addresses = profile_preferences_path . ".default_email_addresses"; sort(default_email_addresses, "field:address,alphabetical,ascending"); save_node(profile_preferences_path); ) else ( # Delete any existsing default values if (?(profile_preferences_path . ".default_email_addresses")) then ( delete_node(profile_preferences_path . ".default_email_addresses"); save_node(profile_preferences_path); ); ); )); # # # # add_recipient_addresses_in_email_info() # # # subroutine(add_recipient_addresses_in_email_info( node addresses, node email_info), ( string recipient_address; string cc_address; string bcc_address; node item; string type; string address; foreach item addresses ( type = @item{"type"}; address = @item{"address"}; if (type eq "to") then ( recipient_address .= address . ","; ) else if (type eq "cc") then ( cc_address = address . ","; ) else ( bcc_address = address . ","; ); ); if (recipient_address ne "") then (recipient_address = replace_last(recipient_address, ",", "");); if (cc_address ne "") then (cc_address = replace_last(cc_address, ",", "");); if (bcc_address ne "") then (bcc_address = replace_last(bcc_address, ",", "");); set_subnode_value(email_info, "recipient_address", recipient_address); set_subnode_value(email_info, "cc_address", cc_address); set_subnode_value(email_info, "bcc_address", bcc_address); )); # # # # handle_email_parameters() # # # subroutine(handle_email_parameters( string session_id, string user_node_name, string profile_name, node sys, node email_info), ( if (!?("users_cache." . user_node_name . ".preferences.email")) then ( "users_cache." . user_node_name . ".preferences.email" = ""; ); node user_info_email = "users_cache." . user_node_name . ".preferences.email"; bool save_recipient_addresses_as_default = @sys{"save_recipient_addresses_as_default"}; string return_address = @sys{"return_address"}; node addresses = sys{"addresses"}; string report_email_subject = @sys{"report_email_subject"}; string comment = @sys{"comment"}; # # # Save email paramters in users_cache # # set_subnode_value(user_info_email, "save_recipient_addresses_as_default", save_recipient_addresses_as_default); set_subnode_value(user_info_email, "return_address_in_reports", return_address); add_return_address_in_user_info(user_info_email, return_address); # # # Handle recipient addresses # # add_recipient_addresses_in_user_info(user_info_email, addresses); handle_recipient_addresses_in_user_info_profile(session_id, user_node_name, profile_name, save_recipient_addresses_as_default, addresses); set_subnode_value(email_info, "return_address", return_address); add_recipient_addresses_in_email_info(addresses, email_info); set_subnode_value(email_info, "report_email_subject", report_email_subject); set_subnode_value(email_info, "comment", comment); save_node("users_cache." . user_node_name . ".preferences"); ));