• Publicity: Public Only All

notification-procs.tcl

Notifications Core procs for managing notifications. Important concepts:

  • notification: a single message that needs to be sent to users.
  • intervals: the duration of time between notifications. Ranges from "instantaneous" to "weekly".
  • delivery method: the means by which a notification is delivered. "email" is the obvious one, but "sms" might be another.
  • notification type: a category of notifications, like forum_notification for forum postings, or forum_statistics for regular updates on forum statistics (this latest one is for illustration purposes only and doesn't currently exist in the forums package).
Location:
packages/notifications/tcl/notification-procs.tcl
Created:
2002-05-24
Author:
Ben Adida
CVS Identification:
$Id: notification-procs.tcl,v 1.23.2.8 2022/07/08 15:16:24 antoniop Exp $

Procedures in this file

Detailed information

notification::delete (public)

 notification::delete -notification_id notification_id

delete a notification

Switches:
-notification_id
(required)

Partial Call Graph (max 5 caller/called nodes):
%3 notification::sweep::cleanup_notifications notification::sweep::cleanup_notifications (private) notification::delete notification::delete notification::sweep::cleanup_notifications->notification::delete db_dml db_dml (public) notification::delete->db_dml db_exec_plsql db_exec_plsql (public) notification::delete->db_exec_plsql db_transaction db_transaction (public) notification::delete->db_transaction

Testcases:
No testcase defined.

notification::get_all_intervals (public)

 notification::get_all_intervals

return a list of all available intervals in a list of lists format, with the following fields: name, interval_id, n_seconds.

Partial Call Graph (max 5 caller/called nodes):
%3 packages/notifications/tcl/sweep-init.tcl packages/notifications/ tcl/sweep-init.tcl notification::get_all_intervals notification::get_all_intervals packages/notifications/tcl/sweep-init.tcl->notification::get_all_intervals db_list_of_lists db_list_of_lists (public) notification::get_all_intervals->db_list_of_lists

Testcases:
No testcase defined.

notification::get_delivery_method_id (public, deprecated)

 notification::get_delivery_method_id -name name
Deprecated. Invoking this procedure generates a warning.

obtain the delivery method ID with the given name. Delivery method names are unique, but are not the primary key. DEPRECATED: an API doing the exact same thing was moved into an own namespace

Switches:
-name
(required)
See Also:

Partial Call Graph (max 5 caller/called nodes):
%3 ad_log_deprecated ad_log_deprecated (public) db_string db_string (public) notification::get_delivery_method_id notification::get_delivery_method_id notification::get_delivery_method_id->ad_log_deprecated notification::get_delivery_method_id->db_string

Testcases:
No testcase defined.

notification::get_delivery_methods (public)

 notification::get_delivery_methods -type_id type_id

return a list of delivery methods associated with a given notification type (not all delivery methods are available to all notification types). The fields are: pretty_name, delivery_method_id

Switches:
-type_id
(required)

Partial Call Graph (max 5 caller/called nodes):
%3 packages/forums/www/admin/subscribe-others.tcl packages/forums/ www/admin/subscribe-others.tcl notification::get_delivery_methods notification::get_delivery_methods packages/forums/www/admin/subscribe-others.tcl->notification::get_delivery_methods packages/notifications/www/request-new.tcl packages/notifications/ www/request-new.tcl packages/notifications/www/request-new.tcl->notification::get_delivery_methods packages/notifications/www/request-notification.tcl packages/notifications/ www/request-notification.tcl packages/notifications/www/request-notification.tcl->notification::get_delivery_methods db_list_of_lists db_list_of_lists (public) notification::get_delivery_methods->db_list_of_lists

Testcases:
No testcase defined.

notification::get_interval_id (public, deprecated)

 notification::get_interval_id -name name
Deprecated. Invoking this procedure generates a warning.

obtain the interval ID for an interval with the given name. Interval names are unique, but are not the primary key. DEPRECATED: an API doing the exact same thing was moved into an own namespace

Switches:
-name
(required)
See Also:

Partial Call Graph (max 5 caller/called nodes):
%3 ad_log_deprecated ad_log_deprecated (public) db_string db_string (public) notification::get_interval_id notification::get_interval_id notification::get_interval_id->ad_log_deprecated notification::get_interval_id->db_string

Testcases:
No testcase defined.

notification::get_intervals (public)

 notification::get_intervals [ -localized ] -type_id type_id

return a list of intervals that are associated with a given notification type (not all intervals are available to all notification types). The fields for each interval is: name, interval_id, n_seconds. If the localized flag is set, then the name of the interval will be localized.

Switches:
-localized
(boolean) (optional)
-type_id
(required)

Partial Call Graph (max 5 caller/called nodes):
%3 packages/forums/www/admin/subscribe-others.tcl packages/forums/ www/admin/subscribe-others.tcl notification::get_intervals notification::get_intervals packages/forums/www/admin/subscribe-others.tcl->notification::get_intervals packages/notifications/www/request-change-frequency.tcl packages/notifications/ www/request-change-frequency.tcl packages/notifications/www/request-change-frequency.tcl->notification::get_intervals packages/notifications/www/request-new.tcl packages/notifications/ www/request-new.tcl packages/notifications/www/request-new.tcl->notification::get_intervals packages/notifications/www/request-notification.tcl packages/notifications/ www/request-notification.tcl packages/notifications/www/request-notification.tcl->notification::get_intervals db_list_of_lists db_list_of_lists (public) notification::get_intervals->db_list_of_lists lang::util::localize lang::util::localize (public) notification::get_intervals->lang::util::localize

Testcases:
No testcase defined.

notification::mark_sent (public)

 notification::mark_sent -notification_id notification_id \
    -user_id user_id

mark that a user has been sent a notification

Switches:
-notification_id
(required)
-user_id
(required)

Partial Call Graph (max 5 caller/called nodes):
%3 notification::sweep::sweep_notifications notification::sweep::sweep_notifications (private) notification::mark_sent notification::mark_sent notification::sweep::sweep_notifications->notification::mark_sent db_dml db_dml (public) notification::mark_sent->db_dml

Testcases:
No testcase defined.

notification::new (public)

 notification::new [ -notification_id notification_id ] \
    -type_id type_id -object_id object_id [ -response_id response_id ] \
    [ -notif_subject notif_subject ] [ -notif_text notif_text ] \
    [ -notif_html notif_html ] [ -subset subset ] \
    [ -already_notified already_notified ] [ -action_id action_id ] \
    [ -force ] [ -default_request_data default_request_data ] \
    [ -return_notified ] [ -notif_user notif_user ] \
    [ -notif_date notif_date ] [ -file_ids file_ids ]

Create a new notification if any notification requests exist for the object and type.

The normal function is to send one notification per notification_request that match this notification. However, by supplying one or more of the parameters below, it's possible to notify only a subset of those people who have requested notification.

This is useful in two situations. One is when you have multiple notification types that cover the same event, for example notification for an entire forum, and for a single thread within that forum. In this situation, you typically want people to receive only one notification per event (per delivery method and interval). The 'already_notified' and 'return_notified' switches help you do this.

Another situation is when your relevant audience really depends on something dynamic in your application, such as who's assigned to a certain action in a workflow, or if you want to offer a 'notify me of all activity in all forum threads that I've posted to'. In this case, the notification type would be 'my_threads' or similar. But when you notify, you only want to notify the users who've requested this notification, and who have posted to this thread. Thus, you'll need to pass in a list of user_id's of the users who posted to the current thread in the 'subset' parameter, and only those who have both a request and are in the subset list will get notified.

A variation on this is when you want people to get notified, even if they didn't request notification. This is what the -force flag does, it causes all users in the subset to get notified, whether or not they have a notification request.

In this case, the request will use the interval, delivery method, and format as specified in the 'default_request_data' parameter. If such a parameter is not specified, default values of 'instant', 'email', and 'text' will be used. The value to 'default_request_data' should be an array list with entries interval_id, delivery_method_id, and format.

In any situation where you're doing dynamic notifications, you must supply the ID of an ACS object which is specific to the underlying event in the 'action_id' parameter. This is required for the integral functioning of dynamic recipient groups. Typically this would be the ID of a forums posting, a workflow log entry, or a web log entry.

Switches:
-notification_id
(optional)
-type_id
(required)
-object_id
(required)
-response_id
(optional)
-notif_subject
(optional)
-notif_text
(optional)
-notif_html
(optional)
-subset
(optional)
A list of user_id's of a subset of users who should be notified. Only those who have a notification request for this object, and who are in the subset list will get notified. Unless you specify the -force flag, in which case everybody in the subset list will get notified, whether they requested the notification or not. In this case, the 'default_request_data' will be used for these new requests.
-already_notified
(optional)
A list of 'user_id interval_id delivery_method_id' of users already notified of this action. This is used in conjunction with the 'return_notification' boolean flag, which causes this proc to return a similar list of users notified by this call. This is used to ensure that a user is never notified twice in the same way for the same action, which could otherwise happen if you have, for example, notification requests for both an entire forum and a particular thread.
-action_id
(optional)
If you're supplying either the 'subset' or the 'already_notified' parameter, you must also supply the action_id parameter. The action_id parameter should be the object ID of an ACS Object, and should be specific to the underlying event.
-force
(boolean) (optional)
See the 'subset' parameter.
-default_request_data
(optional)
An array list with entries interval_id, delivery_method_id, and format, used to initialize new requests caused by the combination of the 'subset' and the 'force' parameters.
-return_notified
(boolean) (optional)
-notif_user
(optional)
-notif_date
(optional)
-file_ids
(optional)
Authors:
Ben Adida
Lars Pind

Partial Call Graph (max 5 caller/called nodes):
%3 calendar::do_notifications calendar::do_notifications (public) notification::new notification::new calendar::do_notifications->notification::new faq::notification_delivery::do_notification faq::notification_delivery::do_notification (private) faq::notification_delivery::do_notification->notification::new forum::message::notify_moderators forum::message::notify_moderators (private) forum::message::notify_moderators->notification::new forum::message::notify_users forum::message::notify_users (private) forum::message::notify_users->notification::new fs::do_notifications fs::do_notifications (public) fs::do_notifications->notification::new ad_conn ad_conn (public) notification::new->ad_conn ad_string_truncate ad_string_truncate (public) notification::new->ad_string_truncate db_dml db_dml (public) notification::new->db_dml db_foreach db_foreach (public) notification::new->db_foreach db_list_of_lists db_list_of_lists (public) notification::new->db_list_of_lists

Testcases:
No testcase defined.

notification::package_key (public)

 notification::package_key

The package key

Partial Call Graph (max 5 caller/called nodes):
%3 notification::display::get_urls notification::display::get_urls (public) notification::package_key notification::package_key notification::display::get_urls->notification::package_key notification::display::request_widget notification::display::request_widget (public) notification::display::request_widget->notification::package_key notification::display::subscribe_url notification::display::subscribe_url (public) notification::display::subscribe_url->notification::package_key notification::display::unsubscribe_url notification::display::unsubscribe_url (public) notification::display::unsubscribe_url->notification::package_key notification::email::manage_notifications_url notification::email::manage_notifications_url (public) notification::email::manage_notifications_url->notification::package_key

Testcases:
No testcase defined.
[ show source ]