rp_resources_filter (private)
rp_resources_filter why
Defined in packages/acs-tcl/tcl/request-processor-procs.tcl
This filter runs on all URLs of the form /resources/*. We just ns_returnfile the file, no permissions are checked, the ad_conn structure is not initialized, etc in order to maximize throughput for resource files. There are three mapping possibilities: /resources/package-key/* maps to root/packages/package-key/www/resources/*. If that fails, we map to root/packages/acs-subsite/www/resources/* If that fails, we map to root/www/resources/* If the file doesn't exist we'll log an error and return filter_ok, which will allow packages mounted at "/resources" in a legacy site to work correctly. This is a horrible kludge which may disappear after discussion with the gang.
- Parameters:
- why (required)
- Author:
- Don Baccus <dhogaza@pacifier.com>
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Source code: if {[namespace which ::valgrind] ne ""} { ::valgrind start } ad_conn -set untrusted_user_id 0 set urlv [ns_conn urlv] set package_key [lindex $urlv 1] set resource [join [lrange $urlv 2 end] /] # This would map resources to their alternative in the theme # package. Works, but needs some extra thought regarding # performance etc. and is therefore commented out. # set path "packages/$package_key/www/resources/$resource" # set themed_path [template::resource_path -type templates -style $path] # if { [ad_file isfile $themed_path] } { # return [rp_serve_resource_file $themed_path] # } set path "[acs_package_root_dir $package_key]/www/resources/$resource" if { [ad_file isfile $path] } { return [rp_serve_resource_file $path] } set path $::acs::rootdir/www/[ns_conn url] if { [ad_file isfile $path] } { return [rp_serve_resource_file $path] } set path [acs_package_root_dir acs-subsite]/www/[ns_conn url] if { [ad_file isfile $path] } { return [rp_serve_resource_file $path] } ns_log Warning "rp_sources_filter: file \"$path\" does not exists trying to serve as a normal request" return filter_okXQL Not present: Generic, PostgreSQL, Oracle