• last updated 19 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Notification request cleanup refactoring

One of the most expensive operations in large site is the cleanup for

notification_requests in situations, where the user has lost

permissions on an object, on which the user wanted to receive

notifications. This check was performed previously in

notification::sweep::cleanup_notifications via a permission check over

all notification requests, which can be very costly on large

sites. This change moves this cleanup into the actual notification

sending, where the permissions have to be sent anyhow.

Fix typo in comment

When sending a notification on behalf of a person, if the system is not configured to process replies to notification, do not set the reply-to address to anything different than the sender

reduce public footprint

mark private functions as private

  1. … 9 more files in changeset.
Remove colon that gets confused as a bind variable

Solve a potential issue when one would cleanup "dynamic" notification requests: this was done directly on the table and could therefore leave dangling acs_objects around

- cleanup all acs_objects of type 'notification_request' that do not have a corresponding entry in the table (~35000 downstream)

- embed logic of delete_dynamic_requests query inside select_invalid_request_ids query, as there the deletion is done properly

  1. … 2 more files in changeset.
Rewrite idiom to be portable (limit is psql only)

prefer "ns_conn isconnected" over "ad_conn isconnected", since the latter might not notice changes in the connect state

  1. … 18 more files in changeset.
improve spelling: move closer to the linux documentation recommendations

  1. … 9 more files in changeset.
fix an at lease 11 year old bug... not sure, why this was not discovered earlier

Whitespace cleanup

use dot instead of colon as separator between package name and cache key to ease readability

  1. … 10 more files in changeset.
acs::per_thread_cache: standardize per-thread caching

- added per-thread cache based on namespaced Tcl variables.

- use per-thread-cache on several occasions

- bump version number of acs-tcl to 5.10.0d34

  1. … 14 more files in changeset.
Rename string_truncate and string_truncate_middle to comply with OpenACS naming convention, create deprecated wrappers, replace occurrences

As string_truncate_middle was defined in xotcl-request-monitor, bring it to acs-tcl instead

  1. … 11 more files in changeset.
Replace parse_incoming_email with ad_parse_incoming_email, replace occurrences

  1. … 1 more file in changeset.
improve spelling

  1. … 14 more files in changeset.
Reduce divergency between oracle and postgres codebase

improve comment

whitespace changes

Undeprecate and reimplement: require_admin_request, can_admin_request_p, require_notify_object and can_notify_object_p. Fixes in two templates (request-delete, request-change-frequency). (Many thanks to Felix Mödritscher for the patch!)

    • -16
    • +26
  1. … 1 more file in changeset.
Fix parameter name in proc doc

Deprecate 'notification::email::get_parameter', just a wrapper for 'parameter::get', used almost nowhere.

Fix variable name

Deprecate wrappers for 'permission::permission_p' and permission::require_permission.

Implement the Notifications Security Library procs... 16 years after their creation.

    • -18
    • +31
Reuse person API instead of querying by hand

Revert massive replacement of empty list creation sentences. The use of '[list]' instead of '{}' adds semantics that could be used for performance improvements in the future, such as using a different internal representation. There is already work in this direction, avoiding the generation of the string representation during comparison of empty strings (huge thanks to Stefan Sobernig for the pointer: https://core.tcl.tk/tcl/info/44527c632ed609c2).

  1. … 473 more files in changeset.
Replace 'linsert' with 'lappend'

Fix linsert command argument expansion + Whitespace