-- -- static_page__get_root_folder/1 -- create or replace function static_page__get_root_folder( integer ) returns int4 as $$ declare p_package_id alias for $1; v_folder_exists_p integer; v_folder_id sp_folders.folder_id%TYPE; v_rows integer; begin -- If there isn't a root folder for this package, create one. -- Otherwise, just return its id. select count(*) into v_folder_exists_p where exists ( select 1 from sp_folders where package_id = p_package_id and parent_id is null ); if v_folder_exists_p = 0 then -- name NEEDS to be unique, label does not v_folder_id := static_page__new_folder ( null, 'sp_root_package_id_' || p_package_id, -- name 'sp_root_package_id_' || p_package_id, -- label null, null, null, null, null, null, p_package_id ); update sp_folders set package_id = p_package_id where folder_id = v_folder_id; PERFORM acs_permission__grant_permission ( v_folder_id, -- object_id acs__magic_object_id('the_public'), -- grantee_id 'general_comments_create' -- privilege ); -- The comments will inherit read permission from the pages, -- so the public should be able to read the static pages. PERFORM acs_permission__grant_permission ( v_folder_id, -- object_id acs__magic_object_id('the_public'), -- grantee_id 'read' -- privilege ); else select folder_id into v_folder_id from sp_folders where package_id = p_package_id and parent_id is null; end if; return v_folder_id; end;$$ language plpgsql;