{= # # # get_sess_paths_lookup_pages.cfv # # # Called from client to load pages for session page paths page lookup # # include "templates.util.base_util"; include "templates.util.encoding"; debug_message("\n\n\n#### get_sess_paths_lookup_pages.cfv START \n"); string profile_name = internal.profile_name; string session_id = volatile.session_id; bool is_root_admin = get_is_root_admin(); bool is_access_reports = is_root_admin or get_access_reports_permission(session_id, profile_name); string page_token = v.sys.page_token; if (is_access_reports and get_is_valid_page_token(session_id, "statistics", page_token)) then ( debug_message("\n" . node_as_string("v.sys") . "\n\n"); string pages_lookup_node_name = v.sys.pages_lookup_node_name; # Name of the pages lookup node in profiles_cache string sre_id = v.sys.sre_id; int starting_row = v.sys.starting_row; int ending_row = v.sys.ending_row; # # # # Get the pages_lookup node # # # node pages_lookup; node pages_items; int total_rows; int i; if (pages_lookup_node_name eq "") then ( # Pages lookup is loaded for the first time. # # # Get pages_lookup_node_name # # delete_node("v.database_state_info"); get_database_info(profile_name, "v.database_state_info", false); string database_last_modification_time = @("v.database_state_info.last_modification_time"); pages_lookup_node_name = "pages_lookup_" . md5_digest(database_last_modification_time); # # # Create pages_lookup node if it doesn't yet exist # # if (!(?("profiles_cache." . profile_name . ".queries." . pages_lookup_node_name))) then ( # # # Query sql database # # node extended_profile_dat = get_extended_profile_dat_node_reference(session_id, profile_name); string db_page_field = @extended_profile_dat{"sessions_page_db_field_name"}; int sessions_page_db_field_number = @extended_profile_dat{"sessions_page_db_field_number"}; string qs = "SELECT bottomlevelitem FROM " . db_page_field . "bottomlevelitem GROUP BY bottomlevelitem"; # TEMP TEST without GROUP BY # string qs = "SELECT bottomlevelitem FROM " . db_page_field . "bottomlevelitem"; table pages_tbl = database_sql_query(qs, false, true); total_rows = table_get_num_rows(pages_tbl); # # # Create the pages lookup node # # string pages_lookup_path = "profiles_cache." . profile_name . ".queries." . pages_lookup_node_name; pages_lookup_path . ".total_rows" = total_rows; pages_lookup_path . ".pages" = ""; pages_items = pages_lookup_path . ".pages"; int table_item_number; string resolved_page_name; for (i = 0; i < total_rows; i++) ( # debug_message("#### i: " . i ."\n"); table_item_number = table_get_cell_value(pages_tbl, i, 0); resolved_page_name = database_itemnum_to_item(sessions_page_db_field_number, table_item_number); # debug_message("#### resolved_page_name: " . resolved_page_name . "\n"); set_subnode_value(pages_items, i, resolved_page_name); ); sort(pages_items, "field:value,alphabetical,ascending", false); save_node(pages_lookup_path); unload_table(pages_tbl); ); ); pages_lookup = "profiles_cache." . profile_name . ".queries." . pages_lookup_node_name; # # # Assemble javascript array from pages_lookup node # # total_rows = @pages_lookup{"total_rows"}; debug_message("#### total_rows: " . total_rows . "\n"); # Update ending row in case that ending row is greater than total rows if (starting_row > total_rows) then ( starting_row = total_rows; ); if (ending_row > total_rows) then ( ending_row = total_rows; ); pages_items = pages_lookup{"pages"}; string pages_dat = "["; for (i = (starting_row - 1); i < ending_row; i++) ( pages_dat .= '"' . encode_json(node_value(subnode_by_number(pages_items, i))) . '",'; ); if (pages_dat ne "[") then ( pages_dat = replace_last(pages_dat, ",", "]"); ) else ( # No pages, send empty array pages_dat .= "]"; ); # # # Send response # # string dat = "{"; dat .= add_json("pagesLookupNodeName", pages_lookup_node_name, "string"); dat .= add_json("sreId", sre_id, "string"); dat .= add_json("startingRow", starting_row, "int"); dat .= add_json("endingRow", ending_row, "int"); dat .= add_json("totalRows", total_rows, "int"); dat .= add_json("pages", pages_dat, "obj"); dat = close_json(dat); debug_message("\n\n#### get_sess_paths_lookup_pages dat:\n". dat . "\n\n"); "sessionPagePathsLookup.loadPagesResponse(" . dat . ")\n"; ) else ( # No permission to view this resource (URL) display_no_permission_html(); ); =}