DROP function if exists
acs_event__new(integer, character varying, text, boolean, text, integer, integer, integer, character varying, timestamp with time zone, integer, character varying, integer, integer, varchar);
--
-- procedure acs_event__new/14-18
--
-- Creates a new event (20.10.10)
--
-- @author W. Scott Meeks
--
-- @param event_id id to use for new event
-- @param name Name of the new event
-- @param description Description of the new event
-- @param html_p Is the description HTML?
-- @param status_summary Optional additional status line to display
-- @param timespan_id initial time interval set
-- @param activity_id initial activity
-- @param recurrence_id id of recurrence information
-- @param object_type 'acs_event'
-- @param creation_date default now()
-- @param creation_user acs_object param
-- @param creation_ip acs_object param
-- @param context_id acs_object param
-- @param package_id acs_object param
-- @param location location
-- @param related_link_url URL
-- @param related_link_text anchor for URL
-- @param redirect_to_rel_link_p activation flag
--
-- @return The id of the new event.
select define_function_args('acs_event__new','event_id;null,name;null,description;null,html_p;null,status_summary;null,timespan_id;null,activity_id;null,recurrence_id;null,object_type;acs_event,creation_date;now(),creation_user;null,creation_ip;null,context_id;null,package_id;null,location;null,related_link_url;null,related_link_text;null,redirect_to_rel_link_p;null');
CREATE OR REPLACE FUNCTION acs_event__new(
new__event_id integer, -- default null,
new__name varchar, -- default null,
new__description text, -- default null,
new__html_p boolean, -- default null
new__status_summary text, -- default null
new__timespan_id integer, -- default null,
new__activity_id integer, -- default null,
new__recurrence_id integer, -- default null,
new__object_type varchar, -- default 'acs_event',
new__creation_date timestamptz, -- default now(),
new__creation_user integer, -- default null,
new__creation_ip varchar, -- default null,
new__context_id integer, -- default null
new__package_id integer, -- default null
new__location varchar default NULL,
new__related_link_url varchar default NULL,
new__related_link_text varchar default NULL,
new__redirect_to_rel_link_p boolean default NULL
) RETURNS integer AS $$
-- acs_events.event_id%TYPE
DECLARE
v_event_id acs_events.event_id%TYPE;
BEGIN
v_event_id := acs_object__new(
new__event_id, -- object_id
new__object_type, -- object_type
new__creation_date, -- creation_date
new__creation_user, -- creation_user
new__creation_ip, -- creation_ip
new__context_id, -- context_id
't', -- security_inherit_p
new__name, -- title
new__package_id -- package_id
);
insert into acs_events
(event_id, name, description, html_p, status_summary,
activity_id, timespan_id, recurrence_id, location,
related_link_url, related_link_text, redirect_to_rel_link_p)
values
(v_event_id, new__name, new__description, new__html_p, new__status_summary,
new__activity_id, new__timespan_id, new__recurrence_id, new__location,
new__related_link_url, new__related_link_text, new__redirect_to_rel_link_p);
return v_event_id;
END;
$$ LANGUAGE plpgsql;
--
-- procedure acs_event__insert_instances/2
--
CREATE OR REPLACE FUNCTION acs_event__new_instance(
new_instance__event_id integer,
new_instance__date_offset interval
) RETURNS integer AS $$
DECLARE
event_row acs_events%ROWTYPE;
object_row acs_objects%ROWTYPE;
v_event_id acs_events.event_id%TYPE;
v_timespan_id acs_events.timespan_id%TYPE;
BEGIN
-- Get event parameters
select * into event_row
from acs_events
where event_id = new_instance__event_id;
-- Get object parameters
select * into object_row
from acs_objects
where object_id = new_instance__event_id;
-- We allow non-zero offset, so we copy
v_timespan_id := timespan__copy(event_row.timespan_id, new_instance__date_offset);
-- Create a new instance
v_event_id := acs_event__new(
null, -- event_id (default)
event_row.name, -- name
event_row.description, -- description
event_row.html_p, -- html_p
event_row.status_summary, -- status_summary
v_timespan_id, -- timespan_id
event_row.activity_id, -- activity_id`
event_row.recurrence_id, -- recurrence_id
'acs_event', -- object_type (default)
now(), -- creation_date (default)
object_row.creation_user, -- creation_user
object_row.creation_ip, -- creation_ip
object_row.context_id, -- context_id
object_row.package_id, -- package_id
event_row.location, -- location
event_row.related_link_url, -- related_link_url
event_row.related_link_text, -- related_link_text
event_row.redirect_to_rel_link_p -- redirect_to_rel_link_p
);
return v_event_id;
END;
$$ LANGUAGE plpgsql;