- Publicity: Public Only All
delivery-method-procs.tcl
Notification Delivery Methods Functions to support notification delivery methods. A delivery method is a means by which a notification is sent to a user. "Email" is a common one, but others, like "sms", may exist. The delivery method integration is done via acs-service-contract: any new delivery method must implement this service contract.
- Location:
- packages/notifications/tcl/delivery-method-procs.tcl
- Created:
- 2002-05-24
- Author:
- Ben Adida
- CVS Identification:
$Id: delivery-method-procs.tcl,v 1.16.2.3 2022/07/12 14:02:11 antoniop Exp $
Procedures in this file
- notification::delivery::delete (public)
- notification::delivery::get_id (public)
- notification::delivery::new (public)
- notification::delivery::scan_replies (public)
- notification::delivery::send (public)
Detailed information
notification::delivery::delete (public)
notification::delivery::delete -delivery_method_id delivery_method_id
Unregister a delivery method with the notification service.
- Switches:
- -delivery_method_id (required)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
notification::delivery::get_id (public)
notification::delivery::get_id -short_name short_name
Return the delivery_method_id from the short_name.
- Switches:
- -short_name (required)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
notification::delivery::new (public)
notification::delivery::new [ -delivery_method_id delivery_method_id ] \
-sc_impl_id sc_impl_id -short_name short_name \
-pretty_name pretty_nameRegister a new delivery method with the notification service.
- Switches:
- -delivery_method_id (optional)
- -sc_impl_id (required)
- -short_name (required)
- -pretty_name (required)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
notification::delivery::scan_replies (public)
notification::delivery::scan_replies \
-delivery_method_id delivery_method_idscan for replies. Every delivery method allows for replies. This is the wrapper proc that indicates to the delivery method service contract implementation that it's time to scan for replies.
- Switches:
- -delivery_method_id (required)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
notification::delivery::send (public)
notification::delivery::send -delivery_method_id delivery_method_id \
[ -reply_object_id reply_object_id ] \
-notification_type_id notification_type_id \
[ -from_user_id from_user_id ] -to_user_id to_user_id \
-subject subject -content_text content_text \
-content_html content_html [ -file_ids file_ids ]do the delivery of certain content to a particular user using a particular delivery method. This is just a wrapper proc that sets up the call to the service contract implementation for a given delivery method.
- Switches:
- -delivery_method_id (required)
- -reply_object_id (optional)
- -notification_type_id (required)
- -from_user_id (optional)
- -to_user_id (required)
- -subject (required)
- -content_text (required)
- -content_html (required)
- -file_ids (optional)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Content File Source
ad_library { Notification Delivery Methods Functions to support notification delivery methods. A delivery method is a means by which a notification is sent to a user. "Email" is a common one, but others, like "sms", may exist. The delivery method integration is done via acs-service-contract: any new delivery method must implement this service contract. @creation-date 2002-05-24 @author Ben Adida <ben@openforce.biz> @cvs-id $Id: delivery-method-procs.tcl,v 1.16.2.3 2022/07/12 14:02:11 antoniop Exp $ } namespace eval notification::delivery {} d_proc -private notification::delivery::get_impl_key { {-delivery_method_id:required} } { Return the service contract implementation key for notification delivery methods } { return [db_string select_impl_key {}] } d_proc -public notification::delivery::send { {-delivery_method_id:required} {-reply_object_id ""} {-notification_type_id:required} {-from_user_id ""} {-to_user_id:required} {-subject:required} {-content_text:required} {-content_html:required} {-file_ids ""} } { do the delivery of certain content to a particular user using a particular delivery method. This is just a wrapper proc that sets up the call to the service contract implementation for a given delivery method. } { #need to check if its ok to notify this user in this way. For now just checks if they are an approved user. if { ![notification::security::can_notify_user -user_id $to_user_id -delivery_method_id $delivery_method_id] } { ns_log debug "notification::delivery::send: Blocked notification to $to_user_id subject:$subject" return "Blocked" } # Get the implementation key set impl_key [get_impl_key -delivery_method_id $delivery_method_id] # Prepare the arguments set args [list $from_user_id $to_user_id $reply_object_id $notification_type_id $subject $content_text $content_html $file_ids] # Make the generic call return [acs_sc::invoke -contract NotificationDeliveryMethod -operation Send -call_args $args -impl $impl_key] } d_proc -public notification::delivery::scan_replies { {-delivery_method_id:required} } { scan for replies. Every delivery method allows for replies. This is the wrapper proc that indicates to the delivery method service contract implementation that it's time to scan for replies. } { # Get the implementation key set impl_key [get_impl_key -delivery_method_id $delivery_method_id] # Prepare the arguments set args [list] # ns_log Notice "NOTIF-DELIV-METHOD: about to call acs_sc on $impl_key" # Make the generic call return [acs_sc::invoke -contract NotificationDeliveryMethod -operation ScanReplies -call_args $args -impl $impl_key] } d_proc -public notification::delivery::new { {-delivery_method_id ""} {-sc_impl_id:required} {-short_name:required} {-pretty_name:required} } { Register a new delivery method with the notification service. } { set extra_vars [ns_set create s \ delivery_method_id $delivery_method_id \ sc_impl_id $sc_impl_id \ short_name $short_name \ pretty_name $pretty_name \ ] return [package_instantiate_object \ -extra_vars $extra_vars \ "notification_delivery_method"] } d_proc -public notification::delivery::delete { {-delivery_method_id:required} } { Unregister a delivery method with the notification service. } { db_exec_plsql delete {} } d_proc -private notification::delivery::update_sc_impl_id { {-delivery_method_id ""} {-sc_impl_id:required} } { Register a new service contract implementation with an existing delivery method. } { db_dml update {} } d_proc -public notification::delivery::get_id { {-short_name:required} } { Return the delivery_method_id from the short_name. } { return [db_string select_delivery_method_id {}] } # Local variables: # mode: tcl # tcl-indent-level: 4 # indent-tabs-mode: nil # End: