--
-- content_symlink__copy/4
--
create or replace function content_symlink__copy(
integer,
integer,
integer,
character varying
) returns int4 as $$
declare
copy__symlink_id alias for $1;
copy__target_folder_id alias for $2;
copy__creation_user alias for $3;
copy__creation_ip alias for $4; -- default null
v_current_folder_id cr_folders.folder_id%TYPE;
v_name cr_items.name%TYPE;
v_target_id cr_items.item_id%TYPE;
v_label cr_symlinks.label%TYPE;
v_symlink_id cr_symlinks.symlink_id%TYPE;
begin
if content_folder__is_folder(copy__target_folder_id) = 't' then
select
parent_id
into
v_current_folder_id
from
cr_items
where
item_id = copy__symlink_id;
-- can't copy to the same folder
if copy__target_folder_id != v_current_folder_id then
select
i.name, content_symlink__resolve(i.item_id), s.label
into
v_name, v_target_id, v_label
from
cr_symlinks s, cr_items i
where
s.symlink_id = i.item_id
and
s.symlink_id = copy__symlink_id;
if content_folder__is_registered(copy__target_folder_id,
'content_symlink','f') = 't' then
if content_folder__is_registered(copy__target_folder_id,
content_item__get_content_type(content_symlink__resolve(copy__symlink_id)),'f') = 't' then
v_symlink_id := content_symlink__new(
v_name,
v_label,
v_target_id,
copy__target_folder_id,
null,
now(),
copy__creation_user,
copy__creation_ip
);
end if;
end if;
end if;
end if;
return 0;
end;$$ language plpgsql;