-- -- bt_project__new/1 -- create or replace function bt_project__new( integer ) returns int4 as $$ declare p_package_id alias for $1; v_count integer; v_instance_name varchar; v_creation_user integer; v_creation_ip varchar; v_folder_id integer; v_keyword_id integer; begin select count(*) into v_count from bt_projects where project_id = p_package_id; if v_count > 0 then return 0; end if; -- get instance name for the content folder select p.instance_name, o.creation_user, o.creation_ip into v_instance_name, v_creation_user, v_creation_ip from apm_packages p join acs_objects o on (p.package_id = o.object_id) where p.package_id = p_package_id; -- create a root CR folder v_folder_id := content_folder__new( 'bug_tracker_'||p_package_id, -- name v_instance_name, -- label null, -- description content_item_globals.c_root_folder_id, -- parent_id p_package_id, -- context_id null, -- folder_id now(), -- creation_date v_creation_user, -- creation_user v_creation_ip, -- creation_ip, 't' -- security_inherit_p ); -- Set package_id column. Oddly enoguh, there is no API to set it update cr_folders set package_id = p_package_id where folder_id = v_folder_id; -- register our content type PERFORM content_folder__register_content_type ( v_folder_id, -- folder_id 'bt_bug_revision', -- content_type 't' -- include_subtypes ); -- create the instance root keyword v_keyword_id := content_keyword__new( v_instance_name, -- heading null, -- description null, -- parent_id null, -- keyword_id current_timestamp, -- creation_date v_creation_user, -- creation_user v_creation_ip, -- creation_ip 'content_keyword' -- object_type ); -- insert the row into bt_projects insert into bt_projects (project_id, folder_id, root_keyword_id) values (p_package_id, v_folder_id, v_keyword_id); -- Create a General component to start with insert into bt_components (component_id, project_id, component_name) select acs_object_id_seq.nextval, p_package_id, 'General'; return 0; end; $$ language plpgsql;