{= # # session fields # include "templates.util.base_util"; include "templates.util.rbac.rbac_util"; include "templates.util.encoding"; include "templates.util.profile_validation"; string profile_name = internal.profile_name; string session_id = volatile.session_id; bool is_root_admin = get_is_root_admin(); string page_token = v.fp.page_token; # # Check RBAC permissions # if ((is_root_admin or get_config_feature_permission(session_id, profile_name, "session_fields", "view")) and get_is_valid_page_token(session_id, "session_fields", page_token)) then ( node profile = "profiles." . profile_name; node field_options = profile . ".log.field_options"; # KHP 16/Aug/2010 - Get validated database fields node db_fields = get_validated_database_fields(profile); sort(db_fields, "field:label,alphabetical,ascending"); # # # session fields dat # # # Note, the "none" value in one of the field_options is deprecated # "none" is still supported by the C++ but is ignored in the GUI, respectively # it becomes an empty string "". string session_fields_dat = "{"; session_fields_dat .= add_json("sessions_id_field", @field_options{"sessions_id_field"}, "string"); session_fields_dat .= add_json("sessions_visitor_id_field", @field_options{"sessions_visitor_id_field"}, "string"); session_fields_dat .= add_json("sessions_event_field", @field_options{"sessions_event_field"}, "string"); session_fields_dat .= add_json("sessions_page_field", @field_options{"sessions_page_field"}, "string"); session_fields_dat = close_json(session_fields_dat); # # # database fields dat # # # We exclude all "ss" (system session fields) from the list because we assume that session fields # are based on log fields. node item; string derivation_method; string label; string type; string db_fields_dat = "["; # The first field is used in the database fields list if no session field is defined label = "(" . lang_stats.btn.none . ")"; db_fields_dat .= "{"; db_fields_dat .= add_json("name", "", "string"); # We use an empty string for "(None)", the value "none" is deprecated! db_fields_dat .= add_json("label", label, "string"); db_fields_dat .= add_json("type", "string", "string"); # We use string so that (None) gets displayed in all db field lists db_fields_dat = close_json(db_fields_dat) . ","; foreach item db_fields ( derivation_method = @item{"derivation_method"}; if (derivation_method eq "log_field") then ( label = get_field_label(item); type = if (item?{"type"}) then (@item{"type"}) else ("string"); db_fields_dat .= "{"; db_fields_dat .= add_json("name", node_name(item), "string"); db_fields_dat .= add_json("label", label, "string"); db_fields_dat .= add_json("type", type, "string"); db_fields_dat = close_json(db_fields_dat) . ","; ); ); db_fields_dat = replace_last(db_fields_dat, ",", "]"); # # Response # string dat = '{'; dat .= '"sessionFields":' . session_fields_dat . ","; dat .= '"dbFields":' . db_fields_dat; dat .= '}'; debug_message("\n\ndat\n" . dat . "\n"); "getSessionFieldsDataResponse(" . dat . ")\n"; ) else ( # No permission to access this resource (URL) display_no_permission_html(); ); =}