--
-- bookmark__new/10
--
create or replace function bookmark__new(
integer,
integer,
integer,
character varying,
boolean,
integer,
timestamp with time zone,
integer,
character varying,
integer
) returns int4 as $$
DECLARE
p_bookmark_id ALIAS FOR $1; -- in bm_bookmarks.bookmark_id%TYPE,
p_owner_id ALIAS FOR $2; -- in bm_bookmarks.owner_id%TYPE,
p_url_id ALIAS FOR $3; -- in bm_urls.url_id%TYPE default null,
p_local_title ALIAS FOR $4; -- in bm_bookmarks.local_title%TYPE default null,
p_folder_p ALIAS FOR $5; -- in bm_bookmarks.folder_p%TYPE default f,
p_parent_id ALIAS FOR $6; -- in bm_bookmarks.parent_id%TYPE,
p_last_access_date ALIAS FOR $7; -- in bm_bookmarks.last_access_date%TYPE default null,
p_creation_user ALIAS FOR $8; -- in acs_objects.creation_user%TYPE default null,
p_creation_ip ALIAS FOR $9; -- in acs_objects.creation_ip%TYPE default null,
p_context_id ALIAS FOR $10; -- in acs_objects.context_id%TYPE default null
v_bookmark_id integer;
v_last_access_date bm_bookmarks.last_access_date%TYPE;
v_in_closed_p bm_in_closed_p.in_closed_p%TYPE;
c_viewing_in_closed_p_ids RECORD;
BEGIN
v_bookmark_id := acs_object__new(
p_bookmark_id,
'bookmark',
now(),
p_creation_user,
p_creation_ip,
p_parent_id
);
if p_last_access_date is null then
select now() into v_last_access_date;
else
v_last_access_date := p_last_access_date;
end if;
insert into bm_bookmarks
(bookmark_id, owner_id, url_id, local_title,
folder_p, parent_id, last_access_date)
values
(v_bookmark_id, p_owner_id, p_url_id, p_local_title,
p_folder_p, p_parent_id, v_last_access_date);
FOR c_viewing_in_closed_p_ids IN
select distinct in_closed_p_id
from bm_in_closed_p
where bookmark_id = (select parent_id from bm_bookmarks
where bookmark_id = v_bookmark_id)
LOOP
-- For each user or session record the in_closed_p status of
-- the bookmark
select bookmark__get_in_closed_p (p_parent_id, c_viewing_in_closed_p_ids.in_closed_p_id)
into v_in_closed_p;
insert into bm_in_closed_p (bookmark_id, in_closed_p_id, in_closed_p, creation_date)
values (v_bookmark_id, c_viewing_in_closed_p_ids.in_closed_p_id, v_in_closed_p, now());
END LOOP;
RETURN v_bookmark_id;
END;
$$ language plpgsql;