Index: openacs-4/packages/acs-tcl/acs-tcl.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/acs-tcl.info,v diff -u -r1.24 -r1.25 --- openacs-4/packages/acs-tcl/acs-tcl.info 16 Jan 2003 13:41:42 -0000 1.24 +++ openacs-4/packages/acs-tcl/acs-tcl.info 15 Feb 2003 23:55:28 -0000 1.25 @@ -6,7 +6,7 @@ ACS Tcl Libraries t t - + oracle @@ -25,7 +25,6 @@ - @@ -80,8 +79,6 @@ - - @@ -123,7 +120,6 @@ - @@ -136,6 +132,8 @@ + + Index: openacs-4/packages/acs-tcl/tcl/00-database-procs-postgresql.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/Attic/00-database-procs-postgresql.tcl,v diff -u -r1.39 -r1.40 --- openacs-4/packages/acs-tcl/tcl/00-database-procs-postgresql.tcl 12 Feb 2003 15:21:14 -0000 1.39 +++ openacs-4/packages/acs-tcl/tcl/00-database-procs-postgresql.tcl 15 Feb 2003 23:55:59 -0000 1.40 @@ -322,8 +322,8 @@ db_qd_log QDDebug "POST-QD: the SQL is $sql" + upvar bind bind set errno [catch { - upvar bind bind if { [info exists bind] && [llength $bind] != 0 } { if { [llength $bind] == 1 } { return [eval [list ns_pg_bind $type $db -bind $bind $sql]] @@ -333,6 +333,7 @@ ns_set put $bind_vars $name $value } return [eval [list ns_pg_bind $type $db -bind $bind_vars $sql]] + } } else { return [uplevel $ulevel [list ns_pg_bind $type $db $sql]] Index: openacs-4/packages/acs-tcl/tcl/acs-permissions-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/acs-permissions-procs.tcl,v diff -u -r1.12 -r1.13 --- openacs-4/packages/acs-tcl/tcl/acs-permissions-procs.tcl 29 Jan 2003 15:50:06 -0000 1.12 +++ openacs-4/packages/acs-tcl/tcl/acs-permissions-procs.tcl 15 Feb 2003 23:55:59 -0000 1.13 @@ -61,7 +61,8 @@ util_memoize_flush "permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege" return [permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege] } else { - return [util_memoize "permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege"] + return [util_memoize "permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege" \ + [parameter::get -package_id [ad_acs_kernel_id] -parameter PermissionCacheTimeout -default 300]] } } Index: openacs-4/packages/acs-tcl/tcl/apm-file-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-file-procs.tcl,v diff -u -r1.14 -r1.15 --- openacs-4/packages/acs-tcl/tcl/apm-file-procs.tcl 29 Jan 2003 15:33:13 -0000 1.14 +++ openacs-4/packages/acs-tcl/tcl/apm-file-procs.tcl 15 Feb 2003 23:55:59 -0000 1.15 @@ -283,9 +283,8 @@ if { [file exists "[acs_root_dir]/packages/$package_key/$path"] } { apm_callback_and_log $callback "Loading packages/$package_key/$path..." set apm_current_package_key $package_key - # Remember that we've loaded the file. + apm_source "[acs_root_dir]/packages/$package_key/$path" - nsv_set apm_library_mtime packages/$package_key/$path [file mtime "[acs_root_dir]/packages/$package_key/$path"] # Release outstanding database handles (in case this file # used the db_* database API and a subsequent one uses Index: openacs-4/packages/acs-tcl/tcl/apm-install-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-install-procs.tcl,v diff -u -r1.33 -r1.34 --- openacs-4/packages/acs-tcl/tcl/apm-install-procs.tcl 13 Feb 2003 14:14:22 -0000 1.33 +++ openacs-4/packages/acs-tcl/tcl/apm-install-procs.tcl 15 Feb 2003 23:55:59 -0000 1.34 @@ -408,9 +408,6 @@ array set version [apm_read_package_info_file $spec_file_path] set package_key $version(package.key) - # Flush the installed_p cache - util_memoize_flush [list apm_package_installed_p_not_cached $package_key] - if { $copy_files_p } { if { [empty_string_p $install_path] } { set install_path [apm_workspace_install_dir]/$package_key @@ -521,8 +518,8 @@ # Instantiating, mounting, and after-install callback only invoked on initial install if { ! $upgrade_p } { # Source Tcl procs and queries to be able - # to invoke any Tcl callbacks after mounting and instantiation. Note that this reloading is only in this interpreter. - # The proc apm_mark_packages_for_bootstrap is used later to reload libraries in all interpreters. + # to invoke any Tcl callbacks after mounting and instantiation. Note that this reloading + # is only done in the Tcl interpreter of this particular request. apm_load_libraries -procs -force_reload -packages $package_key apm_load_queries -packages $package_key @@ -554,6 +551,9 @@ apm_invoke_callback_proc -version_id $version_id -type after-install } + # Flush the installed_p cache + util_memoize_flush [list apm_package_installed_p_not_cached $package_key] + return $version_id } Index: openacs-4/packages/acs-tcl/tcl/apm-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-procs.tcl,v diff -u -r1.39 -r1.40 --- openacs-4/packages/acs-tcl/tcl/apm-procs.tcl 13 Feb 2003 14:14:22 -0000 1.39 +++ openacs-4/packages/acs-tcl/tcl/apm-procs.tcl 15 Feb 2003 23:55:59 -0000 1.40 @@ -57,7 +57,7 @@ # apm_reload_watch($path) # # Indicates that $path is a -procs.tcl file which should be examined -# every time apm_reload_any_changed_libraries is invoked, to see whether +# every time apm_load_any_changed_libraries is invoked, to see whether # it has changed since last loaded. The path starts at acs_root_dir. # # RELOADING VOODOO @@ -78,7 +78,7 @@ # Each interpreter maintains its private, interpreter-specific reload level # as a proc named apm_reload_level_in_this_interpreter. Every time the # request processor sees a request, it invokes -# apm_reload_any_changed_libraries, which compares the server-wide +# apm_load_any_changed_libraries, which compares the server-wide # reload level to the interpreter-private one. If it notes a difference, # it reloads the set of files necessary to bring itself up-to-date (i.e., # files noted in the applicable entries of apm_reload). @@ -93,7 +93,7 @@ # and sets apm_reload(1) to [list "packages/acs-tcl/utilities-procs.tcl"]. # - A request is handled in some other interpreter, whose reload # level (as returned by apm_reload_level_in_this_interpreter) -# is 0. apm_reload_any_changed_libraries notes that +# is 0. apm_load_any_changed_libraries notes that # [apm_reload_level_in_this_interpreter] != [nsv_get apm_properties reload_level], # so it sources the files listed in apm_reload(1) (i.e., utilities-procs.tcl) # and redefines apm_reload_level_in_this_interpreter to return 1. @@ -175,7 +175,6 @@ [nsv_get apm_library_mtime $relative_path] != $mtime) } { lappend changed_files $relative_path - nsv_set apm_library_mtime $relative_path $mtime } } } @@ -193,7 +192,7 @@ Examines all tcl_procs files in package version $version_id; if any have changed since they were loaded, marks (in the apm_reload array) that they must be reloaded by each Tcl interpreter (using the - apm_reload_any_changed_libraries procedure). + apm_load_any_changed_libraries procedure).

Saves a list of files that have changed (and thus marked to be reloaded) in the variable named $file_info_var, if provided. Each element @@ -230,38 +229,6 @@ } } -ad_proc -private apm_mark_packages_for_bootstrap { packages_list } { - Bootstraps given packages by marking files of type tcl_procs, query_file, and - tcl_init for reload in the proper order. This prevents os from having - to restart the server after installing a number of packages. - - @param packages_list A list of package_keys for the packages that need bootstrapping. - Assumes that package_key is at index 0 of each item in the list. - - @return The paths (relative to acs_root_dir) of the files marked for - reload by apm_mark_files_for_reload. - - @author Peter Marklund -} { - set tcl_proc_files [list] - set query_files [list] - set init_tcl_files [list] - - foreach package_item $packages_list { - set package_key [lindex $package_item 0] - set version_id [apm_version_id_from_package_key $package_key] - set path_prefix "packages/$package_key/" - - set tcl_proc_files [concat $tcl_proc_files [apm_version_file_list -type "tcl_procs" -db_type [db_type] -path_prefix $path_prefix $version_id]] - set query_files [concat $query_files [apm_version_file_list -type "query_file" -db_type [db_type] -path_prefix $path_prefix $version_id]] - set init_tcl_files [concat $init_tcl_files [apm_version_file_list -type "tcl_init" -db_type [db_type] -path_prefix $path_prefix $version_id]] - } - - set reload_file_list [concat $tcl_proc_files $query_files $init_tcl_files] - - return [apm_mark_files_for_reload -force_reload $reload_file_list] -} - ad_proc -private apm_version_load_status { version_id } { If a version needs to be reloaded (i.e., a -procs.tcl has changed @@ -393,7 +360,8 @@ {-load_queries_p 1} {-packages {}} } { - Load Tcl libraries and queries for the packages with given keys. Will + Load Tcl libraries and queries for the packages with given keys. Only + loads procs into the current interpreter. Will load Tcl tests if the acs-automated-testing package is enabled. @param force_reload Reload Tcl libraries even if they are already loaded. @@ -403,6 +371,8 @@ @param packages A list of package_keys for packages to be loaded. Defaults to all enabled packages + @see apm_mark_version_for_reload + @author Peter Marklund } { if { [empty_string_p $packages] } { @@ -605,7 +575,6 @@ query_file { db_qd_load_query_file [acs_root_dir]/$file } } - nsv_set apm_library_mtime $file [file mtime $file_path] set reloaded_files($file) 1 } } Index: openacs-4/packages/acs-tcl/tcl/site-nodes-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/site-nodes-procs.tcl,v diff -u -r1.21 -r1.22 --- openacs-4/packages/acs-tcl/tcl/site-nodes-procs.tcl 31 Jan 2003 17:01:24 -0000 1.21 +++ openacs-4/packages/acs-tcl/tcl/site-nodes-procs.tcl 15 Feb 2003 23:55:59 -0000 1.22 @@ -182,7 +182,7 @@ either url or node_id is required, if both are passed url is ignored The array elements are: package_id, package_key, object_type, directory_p, - instance_namem, pattern_p, parent_id, node_id, object_id, url. + instance_name, pattern_p, parent_id, node_id, object_id, url. } { if {[empty_string_p $url] && [empty_string_p $node_id]} { error "site_node::get \"must pass in either url or node_id\"" Index: openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl,v diff -u -r1.28 -r1.29 --- openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 3 Feb 2003 13:56:42 -0000 1.28 +++ openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 15 Feb 2003 23:55:59 -0000 1.29 @@ -1300,10 +1300,27 @@ } +ad_proc -public util_get_current_url {} { + Returns a URL for re-issuing the current request, with query variables. + If a form submission is present, that is converted into query vars as well. + @return URL for the current page + @author Lars Pind (lars@pinds.com) + @creation-date February 11, 2003 +} { + set url [ad_conn url] + set query [ns_getform] + if { $query != "" } { + append url "?[export_entire_form_as_url_vars]" + } + return $url +} + + + proc with_catch {error_var body on_error} { upvar 1 $error_var $error_var global errorInfo errorCode @@ -3648,3 +3665,5 @@ # don't want to barf if, per chance, a newer version is already available catch { package provide base64 2.2 } + +