-- -- content_extlink__copy/4 -- create or replace function content_extlink__copy( integer, integer, integer, character varying ) returns int4 as $$ declare copy__extlink_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_extlink_id cr_extlinks.extlink_id%TYPE; begin v_extlink_id := content_extlink__copy ( copy__extlink_id, copy__target_folder_id, copy__creation_user, copy__creation_ip, NULL ); return 0; end;$$ language plpgsql; -- -- content_extlink__copy/5 -- create or replace function content_extlink__copy( integer, integer, integer, character varying, character varying ) returns int4 as $$ declare copy__extlink_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 copy__name alias for $5; v_current_folder_id cr_folders.folder_id%TYPE; v_name cr_items.name%TYPE; v_url cr_extlinks.url%TYPE; v_description cr_extlinks.description%TYPE; v_label cr_extlinks.label%TYPE; v_extlink_id cr_extlinks.extlink_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__extlink_id; -- can't copy to the same folder select i.name, e.url, e.description, e.label into v_name, v_url, v_description, v_label from cr_extlinks e, cr_items i where e.extlink_id = i.item_id and e.extlink_id = copy__extlink_id; -- copy to a different folder, or same folder if name -- is different if copy__target_folder_id != v_current_folder_id or ( v_name <> copy__name and copy__name is not null ) then if content_folder__is_registered(copy__target_folder_id, 'content_extlink','f') = 't' then v_extlink_id := content_extlink__new( coalesce (copy__name, v_name), v_url, v_label, v_description, copy__target_folder_id, null, current_timestamp, copy__creation_user, copy__creation_ip, null ); end if; end if; end if; return 0; end;$$ language plpgsql;