- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables
Class ::xo::parameter
::xo::parametercreate ...
Class Relations
::xotcl::Class create ::xo::parameter \ -superclass ::xotcl::ObjectMethods (to be applied on the object)
get (scripted)
if {![info exists package_id]} { # # Try to get the package id; if everything fails, use kernel_id # (to be compatible with traditional parameter::get) # set package_id [expr {[nsf::is object ::xo::cc] ? [::xo::cc package_id] : [ns_conn isconnected] ? [ad_conn package_id] : $::acs::kernel_id}] } ad_log_deprecated proc "xo::parameter get -parameter $parameter" parameter::get return [::parameter::get -parameter $parameter -package_id $package_id {*}[expr {[info exists default] ? [list -default $default] : ""}]] set parameter_obj [:get_parameter_object -parameter_name $parameter -package_id $package_id -retry $retry] if {$parameter_obj ne ""} { set value [$parameter_obj get -package_id $package_id] if {$value eq "" && [$parameter_obj set __success] == 0} { return $default } return $value } else { return $default }get_from_package_key (scripted)
set parameter_obj [:get_parameter_object -package_key $package_key -parameter_name $parameter] if {$parameter_obj eq ""} { if {[info exists default]} {return $default} error "No parameter '$parameter' for package_key '$package_key' defined" } set package_id [:get_package_id_from_package_key -package_key $package_key] set value [$parameter_obj get -package_id $package_id] if {$value eq "" && [$parameter_obj set __success] == 0 && [info exists default]} { return $default } else { return $value }get_package_id_from_package_key (scripted)
return [ns_cache eval xotcl_package_cache package_id-$package_key { ::xo::dc get_value get_package_id { select package_id from apm_packages where package_key = :package_key fetch first 1 rows only } }]get_package_key_from_id (scripted)
return [apm_package_key_from_id $package_id]get_parameter_object (scripted)
#::xo::PackageMgr instvar package_class if {![info exists package_key]} { set package_key [:get_package_key_from_id -package_id $package_id] } while {$package_key ne ""} { set key Parameter_id($package_key,$parameter_name) if {[info exists :$key]} { return [set :$key] } # # We did not find the parameter object for the current package # key. Loop up the parameter class (TODO: should be done from # object_type of package_id, but first, we have to store it # there). We simply iterate here of the classes of packages # (only a few exist). # #:log "--p looking for $parameter_name in superclass of package_key=$package_key" set success 0 set pkg_class [::xo::PackageMgr get_package_class_from_package_key $package_key] if {$pkg_class ne ""} { set sc [$pkg_class info superclass] if {[$sc exists package_key]} { set package_key [$sc package_key] set success 1 } } if {!$success} break } if {$retry} { # # The parameter object was not found. Maybe this is a new # parameter, not known in this thread. We try to load it # set r [::xo::db::apm_parameter instantiate_objects -sql [::xo::db::apm_parameter instance_select_query -where_clause { and parameter_name = :parameter_name and package_key = :package_key }] -object_class ::xo::db::apm_parameter -ignore_missing_package_ids true -as_ordered_composite false -named_objects true -destroy_on_cleanup false] # # Check for "retry" to avoid potential recursive loops # if {$r ne ""} { # # seems as if this parameter was newly defined # if {![info exists package_id]} { set package_id "" } return [:get_parameter_object -retry false -parameter_name $parameter_name -package_id $package_id -package_key $package_key] } } # # If everything fails, return empty. # return ""initialize_parameters (scripted)
# # Get those parameter values, which are different from the default # and remember these per package_id. For site-wide parameters - # which we do not handle here - the package_id is NULL, so we skip # it. # xo::dc foreach get_non_default_values { select p.parameter_id, p.package_key, v.package_id, p.parameter_name, p.default_value, v.attr_value from apm_parameters p, apm_parameter_values v where p.parameter_id = v.parameter_id and coalesce(attr_value,'') <> coalesce(p.default_value,'') and package_id is not null } { # ns_log notice "--p $parameter_id $package_key $package_id $parameter_name <$attr_value>" $parameter_id set_per_package_instance_value $package_id $attr_value }set_value (scripted)
if {![info exists package_id]} { # # Try to get the package id; if everything fails, use kernel_id # (to be compatible with traditional parameter::get) # set package_id [expr {[nsf::is object ::xo::cc] ? [::xo::cc package_id] : [ns_conn isconnected] ? [ad_conn package_id] : $::acs::kernel_id}] } ad_log_deprecated proc "xo::parameter set_value -parameter $parameter" parameter::set_value return [::parameter::set_value -package_id $package_id -parameter $parameter -value $value] set parameter_obj [:get_parameter_object -parameter_name $parameter -package_id $package_id] if {$parameter_obj ne ""} { $parameter_obj set_per_package_instance_value $package_id $value } else { error "could not create parameter object" }Methods (to be applied on instances)
clear_per_package_instance_value (scripted)
set array [:per_package_id_name $package_id] if {[nsv_dict exists $array $package_id ${:parameter_name}]} { nsv_dict unset $array $package_id ${:parameter_name} }get (scripted)
set array [:per_package_id_name $package_id] # # Try to get the variable from the nsv. On success, # if {[nsv_dict get -varname result $array $package_id ${:parameter_name}]} { #:log "--parameter get <${:parameter_name}> for $package_id -> '$result'" set :__success 1 return $result } # We could as well store per-package-key values, # but most probably, this is not needed if we use # the parameter default (which is per package-key). # With additional per-package-key values, we could implement # a very simple "reset to default" for package-key values. # # foreach cls $package_class_hierarchy { # set nsv_array_name [:per_package_class_name $cls] # if {[nsv_exists $nsv_array_name $key]} { # #:log "--parameter get <$key> from $nsv_array_name --> '[nsv_get $nsv_array_name $key]'" # return [nsv_get $nsv_array_name $key] # } # } # #:log "--parameter get <$key> from default of [:package_key] --> '[:default_value]'" set :__success 0 return ${:default_value}initialize_loaded_object (scripted)
[self class] set Parameter_id(${:package_key},${:parameter_name}) [self]per_package_id_name (scripted)
xo::show_stack return CFG-[expr {$package_id % 2}]set_per_package_instance_value (scripted)
set array [:per_package_id_name $package_id] ns_log notice "[list nsv_dict set $array $package_id ${:parameter_name} $value]" xo::show_stack nsv_dict set $array $package_id ${:parameter_name} $value
- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables