-- -- content_item__move/3 -- create or replace function content_item__move( move__item_id integer, move__target_folder_id integer, move__name character varying DEFAULT NULL::character varying ) returns int4 as $$ DECLARE BEGIN if move__target_folder_id is null then raise exception 'attempt to move item_id % to null folder_id', move__item_id; end if; if content_folder__is_folder(move__item_id) = 't' then PERFORM content_folder__move(move__item_id, move__target_folder_id); elsif content_folder__is_folder(move__target_folder_id) = 't' then if content_folder__is_registered(move__target_folder_id, content_item__get_content_type(move__item_id),'f') = 't' and content_folder__is_registered(move__target_folder_id, content_item__get_content_type(content_symlink__resolve(move__item_id)),'f') = 't' then -- update the parent_id for the item update cr_items set parent_id = move__target_folder_id, name = coalesce(move__name, name) where item_id = move__item_id; end if; if move__name is not null then update acs_objects set title = move__name where object_id = move__item_id; end if; end if; return 0; END; $$ language plpgsql;