--
-- acs_event__new_instance/2
--
create or replace function acs_event__new_instance(
new_instance__event_id integer,
new_instance__date_offset interval
) returns int4 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;