-- -- static_page__revoke_permission/4 -- create or replace function static_page__revoke_permission( integer, integer, character varying, boolean ) returns int4 as $$ declare p_item_id alias for $1; p_grantee_id alias for $2; p_privilege alias for $3; p_recursive_p alias for $4; v_file_row RECORD; v_folder_row RECORD; begin if p_recursive_p = 't' then -- For each folder that is a descendant of item_id, revoke. for v_folder_row in select s1.folder_id from sp_folders s1, sp_folders s2 where s2.folder_id = p_item_id and s1.tree_sortkey between s2.tree_sortkey and tree_right(s2.tree_sortkey) loop perform acs_permission__revoke_permission( v_folder_row.folder_id, -- object_id p_grantee_id, -- grantee_id p_privilege -- privilege ); end loop; -- For each file that is a descendant of item_id, revoke. for v_file_row in select sp.static_page_id from static_pages sp, sp_folders s1, sp_folders s2 where sp.folder_id = s1.folder_id and s2.folder_id = p_item_id and s1.tree_sortkey between s2.tree_sortkey and tree_right(s2.tree_sortkey) loop perform acs_permission__revoke_permission( v_file_row.static_page_id, -- object_id p_grantee_id, -- grantee_id p_privilege -- privilege ); end loop; else perform acs_permission__revoke_permission( p_item_id, -- object_id p_grantee_id, -- grantee_id p_privilege -- privilege ); end if; return 0; end;$$ language plpgsql;