--
-- The Notifications Package
--
-- ben@openforce.net
-- Copyright (C) 2000 MIT
--
-- GNU GPL v2
--
select define_function_args ('notification_interval__new','interval_id,name,n_seconds,creation_date,creation_user,creation_ip,context_id');
--
-- procedure notification_interval__new/7
--
CREATE OR REPLACE FUNCTION notification_interval__new(
p_interval_id integer,
p_name varchar,
p_n_seconds integer,
p_creation_date timestamptz,
p_creation_user integer,
p_creation_ip varchar,
p_context_id integer
) RETURNS integer AS $$
DECLARE
v_interval_id integer;
BEGIN
v_interval_id := acs_object__new(
p_interval_id,
'notification_interval',
p_creation_date,
p_creation_user,
p_creation_ip,
p_context_id
);
insert
into notification_intervals
(interval_id, name, n_seconds)
values
(v_interval_id, p_name, p_n_seconds);
return v_interval_id;
END;
$$ LANGUAGE plpgsql;
select define_function_args ('notification_interval__delete','interval_id');
--
-- procedure notification_interval__delete/1
--
CREATE OR REPLACE FUNCTION notification_interval__delete(
p_interval_id integer
) RETURNS integer AS $$
DECLARE
BEGIN
perform acs_object__delete(p_interval_id);
return 0;
END;
$$ LANGUAGE plpgsql;
select define_function_args ('notification_delivery_method__new','delivery_method_id,sc_impl_id,short_name,pretty_name,creation_date,creation_user,creation_ip,context_id');
--
-- procedure notification_delivery_method__new/8
--
CREATE OR REPLACE FUNCTION notification_delivery_method__new(
p_delivery_method_id integer,
p_sc_impl_id integer,
p_short_name varchar,
p_pretty_name varchar,
p_creation_date timestamptz,
p_creation_user integer,
p_creation_ip varchar,
p_context_id integer
) RETURNS integer AS $$
DECLARE
v_delivery_method_id integer;
BEGIN
v_delivery_method_id := acs_object__new(
p_delivery_method_id,
'notification_delivery_method',
p_creation_date,
p_creation_user,
p_creation_ip,
p_context_id
);
insert
into notification_delivery_methods
(delivery_method_id, sc_impl_id, short_name, pretty_name)
values
(v_delivery_method_id, p_sc_impl_id, p_short_name, p_pretty_name);
return v_delivery_method_id;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification_delivery_method__delete/1
--
select define_function_args ('notification_delivery_method__delete','delivery_method_id');
CREATE OR REPLACE FUNCTION notification_delivery_method__delete(
p_delivery_method_id integer
) RETURNS integer AS $$
DECLARE
BEGIN
perform acs_object__delete(p_delivery_method_id);
return 0;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification_type__new/9
--
select define_function_args ('notification_type__new','type_id,sc_impl_id,short_name,pretty_name,description,creation_date,creation_user,creation_ip,context_id');
CREATE OR REPLACE FUNCTION notification_type__new (
p_type_id integer,
p_sc_impl_id integer,
p_short_name varchar,
p_pretty_name varchar,
p_description varchar,
p_creation_date timestamptz,
p_creation_user integer,
p_creation_ip varchar,
p_context_id integer
) RETURNS integer AS $$
DECLARE
v_type_id integer;
BEGIN
v_type_id:= acs_object__new (
p_type_id,
'notification_type',
p_creation_date,
p_creation_user,
p_creation_ip,
p_context_id);
insert into notification_types
(type_id, sc_impl_id, short_name, pretty_name, description) values
(v_type_id, p_sc_impl_id, p_short_name, p_pretty_name, p_description);
return v_type_id;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification_type__delete/1
--
select define_function_args ('notification_type__delete','type_id');
CREATE OR REPLACE FUNCTION notification_type__delete(
p_type_id integer
) RETURNS integer AS $$
DECLARE
BEGIN
perform acs_object__delete(p_type_id);
return 0;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification_request__new/13
--
select define_function_args ('notification_request__new','request_id,object_type;notification_request,type_id,user_id,object_id,interval_id,delivery_method_id,format,dynamic_p;f,creation_date,creation_user,creation_ip,context_id');
create function notification_request__new (
p_request_id integer,
p_object_type varchar,
p_type_id integer,
p_user_id integer,
p_object_id integer,
p_interval_id integer,
p_delivery_method_id integer,
p_format varchar,
p_dynamic_p bool,
p_creation_date timestamptz,
p_creation_user integer,
p_creation_ip varchar,
p_context_id integer
) returns integer as $$
DECLARE
v_request_id integer;
BEGIN
v_request_id:= acs_object__new (
p_request_id,
p_object_type,
p_creation_date,
p_creation_user,
p_creation_ip,
p_context_id);
insert into notification_requests
(request_id, type_id, user_id, object_id, interval_id, delivery_method_id, format, dynamic_p) values
(v_request_id, p_type_id, p_user_id, p_object_id, p_interval_id, p_delivery_method_id, p_format, p_dynamic_p);
return v_request_id;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification_request__delete/1
--
select define_function_args ('notification_request__delete','request_id');
CREATE OR REPLACE FUNCTION notification_request__delete(
p_request_id integer
) RETURNS integer AS $$
DECLARE
v_notifications record;
BEGIN
for v_notifications in select notification_id
from notifications n, notification_requests nr
where n.response_id = nr.object_id
and nr.request_id = p_request_id
loop
perform acs_object__delete(v_notifications.notification_id);
end loop;
perform acs_object__delete(p_request_id);
return 0;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification_request__delete_all/1
--
select define_function_args ('notification_request__delete_all', 'object_id');
CREATE OR REPLACE FUNCTION notification_request__delete_all(
p_object_id integer
) RETURNS integer AS $$
DECLARE
v_request RECORD;
BEGIN
for v_request in select request_id
from notification_requests
where object_id= p_object_id
loop
perform notification_request__delete(v_request.request_id);
end loop;
return 0;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification_request__delete_all_for_user/1
--
select define_function_args ('notification_request__delete_all_for_user', 'user_id');
CREATE OR REPLACE FUNCTION notification_request__delete_all_for_user(
p_user_id integer
) RETURNS integer AS $$
DECLARE
v_request RECORD;
BEGIN
for v_request in select request_id
from notification_requests
where user_id= p_user_id
loop
perform notification_request__delete(v_request.request_id);
end loop;
return 0;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification__new/14
--
select define_function_args ('notification__new','notification_id,type_id,object_id,notif_date,response_id,notif_user,notif_subject,notif_text,notif_html,file_ids,creation_date,creation_user,creation_ip,context_id');
CREATE OR REPLACE FUNCTION notification__new(
p_notification_id integer,
p_type_id integer,
p_object_id integer,
p_notif_date timestamptz,
p_response_id integer,
p_notif_user integer,
p_notif_subject varchar,
p_notif_text text,
p_notif_html text,
p_file_ids text,
p_creation_date timestamptz,
p_creation_user integer,
p_creation_ip varchar,
p_context_id integer
) RETURNS integer AS $$
DECLARE
v_notification_id integer;
v_notif_date notifications.notif_date%TYPE;
BEGIN
v_notification_id := acs_object__new(
p_notification_id,
'notification',
p_creation_date,
p_creation_user,
p_creation_ip,
p_context_id
);
if p_notif_date is null then
v_notif_date := now();
else
v_notif_date := p_notif_date;
end if;
insert
into notifications
(notification_id, type_id, object_id, notif_date, response_id, notif_user, notif_subject, notif_text, notif_html, file_ids)
values
(v_notification_id, p_type_id, p_object_id, v_notif_date, p_response_id, p_notif_user, p_notif_subject, p_notif_text, p_notif_html, p_file_ids);
return v_notification_id;
END;
$$ LANGUAGE plpgsql;
--
-- procedure notification__delete/1
--
select define_function_args ('notification__delete','notification_id');
CREATE OR REPLACE FUNCTION notification__delete(
p_notification_id integer
) RETURNS integer AS $$
DECLARE
BEGIN
delete from notifications where notification_id = p_notification_id;
perform acs_object__delete(p_notification_id);
return 0;
END;
$$ LANGUAGE plpgsql;