-- We were missing an upgrade script to fix the cr_folder permissions inheritance problem.
--
-- @author Lars Pind (lars@collaboraid.biz)
--
-- $Id$
-- recreate this function
create or replace function bt_project__new(
integer -- package_id
) returns integer
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';
-- update context_id, package_id of existing folders
create or replace function inline_0(
) returns integer
as '
declare
rec record;
begin
-- change context_id of bug-tracker root folders to be package instance
for rec in
select project_id, folder_id from bt_projects
loop
update acs_objects set context_id = rec.project_id where object_id = rec.folder_id;
update cr_folders set package_id = rec.project_id where folder_id = rec.folder_id;
end loop;
return 0;
end;
' language 'plpgsql';
select inline_0 ();
drop function inline_0 ();