Index: openacs-4/packages/dotlrn/dotlrn.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/dotlrn.info,v
diff -u -r1.147 -r1.148
--- openacs-4/packages/dotlrn/dotlrn.info 5 Aug 2018 21:59:31 -0000 1.147
+++ openacs-4/packages/dotlrn/dotlrn.info 18 Sep 2018 17:27:14 -0000 1.148
@@ -7,15 +7,15 @@
f
f
-
+
OpenACS
A Course Management System
2017-08-06
DotLRN Consortium
2
Course Management
-
+
Index: openacs-4/packages/dotlrn/tcl/applets-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/applets-procs.tcl,v
diff -u -r1.30 -r1.31
--- openacs-4/packages/dotlrn/tcl/applets-procs.tcl 10 Jul 2018 16:26:16 -0000 1.30
+++ openacs-4/packages/dotlrn/tcl/applets-procs.tcl 18 Sep 2018 17:27:14 -0000 1.31
@@ -123,7 +123,9 @@
ad_proc -public list_applets {} {
List the applet_keys for all dotlrn applets.
} {
- return [util_memoize {dotlrn_applet::list_applets_not_cached}]
+ ::dotlrn::dotlrn_cache eval applets_list {
+ dotlrn_applet::list_applets_not_cached
+ }
}
ad_proc -private list_applets_not_cached {} {
@@ -159,7 +161,9 @@
} {
Get the package key associated with the given applet.
} {
- return [util_memoize "dotlrn_applet::get_package_key_not_cached -applet_key $applet_key"]
+ ::dotlrn::dotlrn_cache eval applet-package_key-$applet_key {
+ dotlrn_applet::get_package_key_not_cached -applet_key $applet_key
+ }
}
ad_proc -private get_package_key_not_cached {
Index: openacs-4/packages/dotlrn/tcl/community-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/community-procs.tcl,v
diff -u -r1.233 -r1.234
--- openacs-4/packages/dotlrn/tcl/community-procs.tcl 26 Jul 2018 14:53:25 -0000 1.233
+++ openacs-4/packages/dotlrn/tcl/community-procs.tcl 18 Sep 2018 17:27:14 -0000 1.234
@@ -393,7 +393,9 @@
} {
db_dml update_package_id {}
db_dml update_application_group_package_id {}
- util_memoize_flush "dotlrn_community::get_package_id_not_cached $community_id"
+
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id \
+ $community_id-package_id
}
ad_proc -public get_url {
@@ -429,7 +431,10 @@
}
set community_type [get_community_type_from_community_id $community_id]
- return [util_memoize "dotlrn_community::get_default_roles_not_cached -community_type $community_type"]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-default_roles {
+ dotlrn_community::get_default_roles_not_cached -community_type $community_type
+ }
}
ad_proc -private get_default_roles_not_cached {
@@ -523,7 +528,10 @@
ad_proc -public get_all_roles {} {
Return the list of roles used in dotLRN.
} {
- return [util_memoize {dotlrn_community::get_all_roles_not_cached}]
+
+ ::dotlrn::dotlrn_cache eval get_all_roles {
+ dotlrn_community::get_all_roles_not_cached
+ }
}
ad_proc -private get_all_roles_not_cached {} {
@@ -771,7 +779,12 @@
} {
Check membership.
} {
- return [db_string select_count_membership {} -default 0]
+
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-member-$user_id {
+ db_string select_count_membership {} -default 0
+ }
+
}
ad_proc -public member_pending_p {
@@ -817,23 +830,9 @@
-member_state $member_state
}
- util_memoize_flush "dotlrn_community::list_users_not_cached -rel_type $rel_type -community_id $community_id"
-
- #
- # Flush all permission checks pertaining to this user.
- #
- permission::cache_flush -party_id $user_id
-
- #
- # It is not clear, what the original
- #
- # util_memoize_flush_regexp $user_id
- #
- # was intended just to flush, just permissions or more. To
- # improve latencies, the following flush command should be
- # more precise (or removed)
- #
- util_memoize_flush_pattern -log *$user_id*
+ # there is no such entry in the util_memoize cache
+ # we keep it as a reminder to add caching for it later
+ #util_memoize_flush "dotlrn_community::list_users_not_cached -rel_type $rel_type -community_id $community_id"
}
ad_proc -public add_user_to_community {
@@ -883,6 +882,14 @@
membership_approve -user_id $user_id -community_id $community_id
}
}
+ #
+ # Flush all permission checks pertaining to this user.
+ #
+ permission::cache_flush -party_id $user_id
+
+ # Remove record of this membership in the cache
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id \
+ $community_id-member-$user_id
}
@@ -951,24 +958,18 @@
# Remove it
relation_remove $rel_id
- # flush the list_users cache
- util_memoize_flush "dotlrn_community::list_users_not_cached -rel_type $rel_type -community_id $community_id"
+ # there is no such entry in the util_memoize cache
+ # we keep it as a reminder to add caching for it later
+ # util_memoize_flush "dotlrn_community::list_users_not_cached -rel_type $rel_type -community_id $community_id"
}
#
# Flush all permission checks pertaining to this user.
#
permission::cache_flush -party_id $user_id
- #
- # It is not clear, what the original
- #
- # util_memoize_flush_regexp $user_id
- #
- # was intended just to flush, just permissions or more. To
- # improve latencies, the following flush command should be
- # more precise (or removed)
- #
- util_memoize_flush_pattern -log *$user_id*
+ # Remove record of this membership in the cache
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id \
+ $community_id-member-$user_id
}
ad_proc -public remove_user_from_all {
@@ -1043,7 +1044,10 @@
} {
Returns the community type from community_id.
} {
- return [util_memoize "dotlrn_community::get_community_type_from_community_id_not_cached -community_id $community_id"]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-community_type {
+ dotlrn_community::get_community_type_from_community_id_not_cached -community_id $community_id
+ }
}
ad_proc -private get_community_type_from_community_id_not_cached {
@@ -1059,7 +1063,10 @@
Returns the community type key depending on the node we're at.
} {
set package_id [ad_conn package_id]
- return [util_memoize "dotlrn_community::get_community_type_not_cached -package_id $package_id"]
+
+ ::dotlrn::dotlrn_cache eval pkg_id-$package_id-community_type {
+ dotlrn_community::get_community_type_not_cached -package_id $package_id
+ }
}
ad_proc -private get_community_type_not_cached {
@@ -1138,7 +1145,9 @@
set package_id [ad_conn package_id]
}
- return [util_memoize "dotlrn_community::get_parent_community_id_not_cached -package_id $package_id"]
+ ::dotlrn::dotlrn_cache eval pkg_id-$package_id-parent_community_id {
+ dotlrn_community::get_parent_community_id_not_cached -package_id $package_id
+ }
}
ad_proc -private get_parent_community_id_not_cached {
@@ -1159,7 +1168,10 @@
} {
Returns the parent community's id or null.
} {
- return [util_memoize "dotlrn_community::get_parent_id_not_cached -community_id $community_id"]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-parent_id {
+ dotlrn_community::get_parent_id_not_cached -community_id $community_id
+ }
}
ad_proc -private get_parent_id_not_cached {
@@ -1235,7 +1247,10 @@
} {
Returns 1 if the community has a subcommunity, memoized for 1 min.
} {
- return [util_memoize "dotlrn_community::has_subcommunity_p_not_cached -community_id $community_id" 60]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-has_subcommunity_p {
+ dotlrn_community::has_subcommunity_p_not_cached -community_id $community_id
+ }
}
ad_proc -private has_subcommunity_p_not_cached {
@@ -1411,7 +1426,10 @@
Get the package ID for a particular community.
This is cached as the package ID is not going to change.
} {
- return [util_memoize [list dotlrn_community::get_package_id_not_cached $community_id]]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-package_id {
+ dotlrn_community::get_package_id_not_cached $community_id
+ }
}
ad_proc -public get_package_id_not_cached {
@@ -1455,7 +1473,7 @@
set package_id [dotlrn_community::get_package_id $community_id]
apm_package_rename -package_id $package_id -instance_name $pretty_name
- util_memoize_flush "dotlrn_community::get_community_name_not_cached $community_id"
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id $community_id-name
# generate "rename" event
raise_change_event \
@@ -1474,7 +1492,10 @@
} {
Get the name for a community.
} {
- return [util_memoize "dotlrn_community::get_community_name_not_cached $community_id"]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-name {
+ dotlrn_community::get_community_name_not_cached $community_id
+ }
}
ad_proc -private get_community_name_not_cached {
@@ -1581,8 +1602,10 @@
if {$community_id eq ""} {
set community_id [get_community_id]
}
-
- return [util_memoize "dotlrn_community::get_portal_id_not_cached -community_id $community_id"]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-portal_id {
+ dotlrn_community::get_portal_id_not_cached -community_id $community_id
+ }
}
ad_proc -private get_portal_id_not_cached {
@@ -1601,8 +1624,10 @@
if {$community_id eq ""} {
set community_id [get_community_id]
}
-
- return [util_memoize "dotlrn_community::get_non_member_portal_id_not_cached -community_id $community_id"]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-non_member_portal_id {
+ dotlrn_community::get_non_member_portal_id_not_cached -community_id $community_id
+ }
}
ad_proc -private get_non_member_portal_id_not_cached {
@@ -1621,8 +1646,10 @@
if {$community_id eq ""} {
set community_id [get_community_id]
}
-
- return [util_memoize "dotlrn_community::get_admin_portal_id_not_cached -community_id $community_id"]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-admin_portal_id {
+ dotlrn_community::get_admin_portal_id_not_cached -community_id $community_id
+ }
}
ad_proc -private get_admin_portal_id_not_cached {
@@ -2093,7 +2120,10 @@
Is this applet active in this community? Does it do voulunteer work?
Helps its neighbors? returns 1 or 0
} {
- return [db_0or1row select_active_applet_p {}]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-applet_active-$applet_key {
+ db_0or1row select_active_applet_p {}
+ }
}
ad_proc -public applets_dispatch {
@@ -2122,15 +2152,18 @@
ad_proc -public get_available_attributes {} {
Get a list of the attributes that we can get/set for dotLRN communities.
} {
- return [util_memoize {dotlrn_community::get_available_attributes_not_cached}]
+ # candidate general cache
+ ::dotlrn::dotlrn_cache eval available_attributes {
+ dotlrn_community::get_available_attributes_not_cached
+ }
}
ad_proc -private get_available_attributes_not_cached {} {
return [db_list_of_lists select_available_attributes {}]
}
ad_proc -private get_available_attributes_flush {} {
- util_memoize_flush {dotlrn_community::get_available_attributes_not_cached}
+ ::dotlrn::dotlrn_cache flush available_attributes
}
ad_proc -public get_attributes {
@@ -2141,8 +2174,10 @@
if {$community_id eq ""} {
set community_id [get_community_id]
}
-
- return [util_memoize "dotlrn_community::get_attributes_not_cached -community_id $community_id"]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-attributes {
+ dotlrn_community::get_attributes_not_cached -community_id $community_id
+ }
}
ad_proc -private get_attributes_not_cached {
@@ -2215,7 +2250,7 @@
db_dml update_attribute_value {}
}
- util_memoize_flush "dotlrn_community::get_attributes_not_cached -community_id $community_id"
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id $community_id-attributes
}
ad_proc -public unset_attribute {
@@ -2237,8 +2272,7 @@
# remove the row
db_dml delete_attribute_value {}
- util_memoize_flush \
- "dotlrn_community::get_attributes_not_cached -community_id $community_id"
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id $community_id-attributes
}
ad_proc -public unset_attributes {
@@ -2248,8 +2282,7 @@
} {
db_dml delete_attributes {}
- util_memoize_flush \
- "dotlrn_community::get_attributes_not_cached -community_id $community_id"
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id $community_id-attributes
}
ad_proc -public get_attribute_id {
@@ -2446,8 +2479,7 @@
db_dml update_portal_theme {}
set portal_id [get_admin_portal_id -community_id $community_id]
db_dml update_portal_theme {}
- util_memoize_flush [list dotlrn_community::get_site_template_id_not_cached -community_id $community_id]
- util_memoize_flush [list dotlrn_community::get_dotlrn_master_not_cached -community_id $community_id]
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id $community_id-site_template
}
ad_proc -public get_dotlrn_master {
@@ -2480,7 +2512,10 @@
@return The id of the Site Template assigned to the Community
} {
- return [util_memoize [list dotlrn_community::get_site_template_id_not_cached -community_id $community_id]]
+ ::dotlrn::dotlrn_community_cache eval -partition_key $community_id \
+ $community_id-site_template {
+ dotlrn_community::get_site_template_id_not_cached -community_id $community_id
+ }
}
ad_proc -private get_site_template_id_not_cached {
@@ -2518,8 +2553,10 @@
set new_theme_id [db_string select_portal_theme {}]
db_dml update_portal_themes {}
db_dml update_portal_admin_themes {}
-
- util_memoize_flush_regexp "dotlrn_community::get_site_template_id_not_cached *"
+
+ foreach community_id [db_list affected_portals {}] {
+ ::dotlrn::dotlrn_community_cache flush -partition_key $community_id $community_id-site_template
+ }
}
}
Index: openacs-4/packages/dotlrn/tcl/community-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/community-procs.xql,v
diff -u -r1.99 -r1.100
--- openacs-4/packages/dotlrn/tcl/community-procs.xql 27 Jan 2018 17:58:19 -0000 1.99
+++ openacs-4/packages/dotlrn/tcl/community-procs.xql 18 Sep 2018 17:27:14 -0000 1.100
@@ -254,7 +254,7 @@
select community_id as subcomm_id
from dotlrn_communities
where parent_community_id = :community_id
- order by pretty_name
+ order by pretty_name
@@ -586,7 +586,14 @@
-
+
+
+ select
+ portal_id
+ from dotlrn_communities_all
+
+
+
select site_template_id
Index: openacs-4/packages/dotlrn/tcl/dotlrn-init.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-init.tcl,v
diff -u -r1.44 -r1.45
--- openacs-4/packages/dotlrn/tcl/dotlrn-init.tcl 7 Apr 2018 08:59:39 -0000 1.44
+++ openacs-4/packages/dotlrn/tcl/dotlrn-init.tcl 18 Sep 2018 17:27:14 -0000 1.45
@@ -29,6 +29,36 @@
# if installed
if {[dotlrn::is_instantiated]} {
+ #
+ # Create the caches. The sizes can be
+ # tailored in the config file like the following:
+ #
+ # ns_section ns/server/${server}/acs/dotlrn
+ # ns_param DotlrnCache 2000000
+ # ns_param DotlrnCommunityCache 2000000
+ # ns_param DotlrnUserCache 2000000
+ #
+ # dotlrn-cache: general purpose cache
+ ::acs::Cache create ::dotlrn::dotlrn_cache \
+ -package_key dotlrn \
+ -parameter DotlrnCache \
+ -default_size 2000000
+
+ # dotlrn-user_cache: user specific stuff
+ ::acs::KeyPartitionedCache create ::dotlrn::dotlrn_user_cache \
+ -package_key dotlrn \
+ -parameter DotlrnUserCache \
+ -default_size 2000000
+
+ # dotlrn_community_cache: holds community specfic stuff like
+ # "package_id", "name", "portal_id" etc
+ ::acs::KeyPartitionedCache create ::dotlrn::dotlrn_community_cache \
+ -package_key dotlrn \
+ -parameter DotlrnCommunityCache \
+ -default_size 2000000
+
+
+
set package_id [dotlrn::get_package_id]
# make sure we aren't inheriting permissions from dotlrn's parent object
@@ -76,7 +106,7 @@
# init of each applet NOTE: this applet_add proc _must_ be able to be
# called repeatedly since this script is eval'd at every server startup
foreach applet [db_list select_not_installed_applets {}] {
- if {[catch {dotlrn_applet::applet_call $applet AddApplet [list]} errMsg]} {
+ if {[catch {dotlrn_applet::applet_call $applet AddApplet [list]} errMsg]} {
ns_log warning "dotlrn-init: AddApplet $applet failed\n$errMsg"
}
}
@@ -106,7 +136,6 @@
ns_log notice "dotlrn-init: done"
}
-
# Local variables:
# mode: tcl
# tcl-indent-level: 4
Index: openacs-4/packages/dotlrn/tcl/dotlrn-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-procs.tcl,v
diff -u -r1.85 -r1.86
--- openacs-4/packages/dotlrn/tcl/dotlrn-procs.tcl 26 Jul 2018 15:12:22 -0000 1.85
+++ openacs-4/packages/dotlrn/tcl/dotlrn-procs.tcl 18 Sep 2018 17:27:14 -0000 1.86
@@ -179,7 +179,11 @@
} {
Return the user default theme
} {
- return [util_memoize "dotlrn::get_user_theme_not_cached $user_id"]
+
+ ::dotlrn::dotlrn_user_cache eval -partition_key $user_id \
+ $user_id-theme_id {
+ dotlrn::get_user_theme_not_cached $user_id
+ }
}
ad_proc -private get_user_theme_not_cached {
@@ -204,7 +208,10 @@
} {
Get the portal_id for a particular user
} {
- return [util_memoize "dotlrn::get_portal_id_not_cached -user_id $user_id"]
+ ::dotlrn::dotlrn_user_cache eval -partition_key $user_id \
+ $user_id-portal_id {
+ dotlrn::get_portal_id_not_cached -user_id $user_id
+ }
}
ad_proc -private get_portal_id_not_cached {
@@ -417,8 +424,8 @@
set new_theme_id [db_string select_portal_theme {}]
db_dml update_portal_theme {}
db_dml update_user_site_template {}
- util_memoize_flush [list dotlrn::get_site_template_id_not_cached -user_id $user_id]
- util_memoize_flush [list dotlrn::get_dotlrn_master_not_cached -user_id $user_id]
+
+ ::dotlrn::dotlrn_user_cache flush -partition_key $user_id $user_id-site_template_id
}
ad_proc -public get_dotlrn_master {
@@ -451,7 +458,10 @@
@return The id of the Site Template assigned to the User
} {
- return [util_memoize [list dotlrn::get_site_template_id_not_cached -user_id $user_id] ]
+ ::dotlrn::dotlrn_user_cache eval -partition_key $user_id \
+ $user_id-site_template_id {
+ dotlrn::get_site_template_id_not_cached -user_id $user_id
+ }
}
ad_proc -private get_site_template_id_not_cached {
@@ -486,7 +496,9 @@
@return The path of the master template associated to the Site Template
} {
- return [util_memoize [list dotlrn::get_master_from_site_template_id_not_cached -site_template_id $site_template_id]]
+ ::dotlrn::dotlrn_cache eval master_from_site_template_id-${site_template_id} {
+ dotlrn::get_master_from_site_template_id_not_cached -site_template_id $site_template_id
+ }
}
ad_proc -private get_master_from_site_template_id_not_cached {
@@ -515,7 +527,10 @@
set new_theme_id [db_string select_portal_theme {}]
db_dml update_portal_themes {update }
- util_memoize_flush_regexp "dotlrn::get_site_template_id_not_cached *"
+
+ foreach user_id [db_list affected_users {}] {
+ ::dotlrn::dotlrn_user_cache flush -partition_key $user_id $user_id-site_template_id
+ }
}
}
Index: openacs-4/packages/dotlrn/tcl/dotlrn-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-procs.xql,v
diff -u -r1.18 -r1.19
--- openacs-4/packages/dotlrn/tcl/dotlrn-procs.xql 8 Aug 2006 21:26:23 -0000 1.18
+++ openacs-4/packages/dotlrn/tcl/dotlrn-procs.xql 18 Sep 2018 17:27:14 -0000 1.19
@@ -89,6 +89,14 @@
+
+
+ select
+ user_id
+ from dotlrn_users
+
+
+
update portals
Index: openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.tcl,v
diff -u -r1.63 -r1.64
--- openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.tcl 27 Mar 2018 14:32:16 -0000 1.63
+++ openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.tcl 18 Sep 2018 17:27:14 -0000 1.64
@@ -160,7 +160,7 @@
}
# always flush when creating a new user
- util_memoize_flush "dotlrn::get_portal_id_not_cached -user_id $user_id"
+ ::dotlrn::dotlrn_user_cache flush -partition_key $user_id $user_id-portal_id
#Site Template Customization
dotlrn::set_site_template_id -user_id $user_id \
Index: openacs-4/packages/dotlrn/tcl/user-type-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/user-type-procs.tcl,v
diff -u -r1.6 -r1.7
--- openacs-4/packages/dotlrn/tcl/user-type-procs.tcl 7 Aug 2017 23:48:09 -0000 1.6
+++ openacs-4/packages/dotlrn/tcl/user-type-procs.tcl 18 Sep 2018 17:27:14 -0000 1.7
@@ -31,7 +31,9 @@
} {
get the user type info for the given dotlrn_user_type (cached)
} {
- return [util_memoize "dotlrn::user::type::get_not_cached -type $type"]
+ ::dotlrn::dotlrn_cache eval usertype-$type {
+ dotlrn::user::type::get_not_cached -type $type
+ }
}
ad_proc -public get_not_cached {
Index: openacs-4/packages/dotlrn/www/member-add-3.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/member-add-3.tcl,v
diff -u -r1.17 -r1.18
--- openacs-4/packages/dotlrn/www/member-add-3.tcl 29 Jun 2018 17:27:19 -0000 1.17
+++ openacs-4/packages/dotlrn/www/member-add-3.tcl 18 Sep 2018 17:27:15 -0000 1.18
@@ -49,7 +49,6 @@
# so we do not want to call remove_user
# as that removes subgroup rels as well
relation_remove $rel_id
- util_memoize_flush "dotlrn_community::list_users_not_cached -rel_type $rel_type -community_id $community_id"
set change_rel_p 1
}
} else {
@@ -78,7 +77,6 @@
$rel_type \
$community_id \
$member_id
- util_memoize_flush "dotlrn_community::list_users_not_cached -rel_type $rel_type -community_id $community_id"
} else {
dotlrn_community::add_user -rel_type $rel_type $community_id $member_id
}
Index: openacs-4/packages/dotlrn/www/spam-policy-toggle.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/spam-policy-toggle.tcl,v
diff -u -r1.7 -r1.8
--- openacs-4/packages/dotlrn/www/spam-policy-toggle.tcl 29 Jun 2018 17:27:19 -0000 1.7
+++ openacs-4/packages/dotlrn/www/spam-policy-toggle.tcl 18 Sep 2018 17:27:15 -0000 1.8
@@ -44,9 +44,6 @@
permission::$action -party_id [dotlrn_community::get_members_rel_id -community_id $community_id] \
-object_id $community_id -privilege dotlrn_spam_community
-# Make sure we flush everything that references this community and the spam privilege
-util_memoize_flush_regexp "${community_id}(.*)dotlrn_spam_community"
-
ad_returnredirect $referer
ad_script_abort
Index: openacs-4/packages/dotlrn/www/admin/add-edit-site-template.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/add-edit-site-template.tcl,v
diff -u -r1.6 -r1.7
--- openacs-4/packages/dotlrn/www/admin/add-edit-site-template.tcl 15 Aug 2018 16:43:08 -0000 1.6
+++ openacs-4/packages/dotlrn/www/admin/add-edit-site-template.tcl 18 Sep 2018 17:27:15 -0000 1.7
@@ -50,7 +50,7 @@
db_dml insert_site_template {}
} -edit_data {
db_dml update_site_template {}
- util_memoize_flush [list dotlrn::get_master_from_site_template_id_not_cached -site_template_id $site_template_id]
+ ::dotlrn::dotlrn_cache flush master_from_site_template_id-${site_template_id}
} -new_request {
set pretty_name ""
set site_master ""