subsite::get_theme_subsites (public)
subsite::get_theme_subsites -theme theme [ -subsite_id subsite_id ] \ [ -unmodified ]
Defined in packages/acs-subsite/tcl/subsite-procs.tcl
Returns a list of all packages implementing subsite that are currently using specified theme. Optionally, returns a list of just those that were not locally modified.
- Switches:
- -theme (required)
- theme key to lookup for.
- -subsite_id (optional)
- narrow search to this subsite only. Useful to check whether a single subsite is using a theme with or without local modifications.
- -unmodified (optional, boolean)
- decides whether we include subsites which theme was locally modified.
- Returns:
- list of subsite_id
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- subsite_api
Source code: # Retrieve subsites using this theme set subsites [db_list get_theme_subsites [subst { select package_id from apm_parameter_values where parameter_id = (select parameter_id from apm_parameters where package_key in ([ns_dbquotelist [subsite::package_keys]]) and parameter_name = 'ThemeKey') and attr_value = :theme and (:subsite_id is null or package_id = :subsite_id) }]] if {!$unmodified_p} { # User wants to get all of them. The end. return $subsites } # User wants also to filter by those using vanilla theme # parameters... # ...retrieve theme parameters if {![db_0or1row get_theme { select * from subsite_themes where key = :theme }]} { error "Theme '$theme' not found" } # ...map table columns with subsite parameters... set settings { template DefaultMaster css ThemeCSS js ThemeJS form_template DefaultFormStyle list_template DefaultListStyle list_filter_template DefaultListFilterStyle dimensional_template DefaultDimensionalStyle resource_dir ResourceDir streaming_head StreamingHead } # ...foreach subsite... set theme_subsites [list] foreach subsite_id $subsites { set collect_p true # ...compare parameter value with vanilla theme value. foreach {var param} $settings { set default [string trim [set $var]] set value [string trim [parameter::get -parameter $param -package_id $subsite_id]] # # Normalize whitespace to one single space. # regsub -all -- {\s+} $value { } value regsub -all -- {\s+} $default { } default set collect_p [expr {$default eq $value}] if {!$collect_p} { ns_log notice "theme '$theme' parameter $var differs on subsite '$subsite_id': default '$default' actual value '$value'" break } } if {$collect_p} { lappend theme_subsites $subsite_id } } return $theme_subsitesXQL Not present: Generic PostgreSQL XQL file: packages/acs-subsite/tcl/subsite-procs-postgresql.xql
Oracle XQL file: packages/acs-subsite/tcl/subsite-procs-oracle.xql