--
-- 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;