--
-- acs_object__check_path/2
--
create or replace function acs_object__check_path(
integer,
integer
) returns bool as $$
declare
check_path__object_id alias for $1;
check_path__ancestor_id alias for $2;
check_path__context_id acs_objects.context_id%TYPE;
check_path__security_inherit_p acs_objects.security_inherit_p%TYPE;
begin
if check_path__object_id is null or check_path__ancestor_id then
raise exception 'acs_object__check_path called with null object_id or ancestor_id';
end if;
if check_path__object_id = check_path__ancestor_id then
return 't';
end if;
select context_id, security_inherit_p
into check_path__context_id, check_path__security_inherit_p
from acs_objects
where object_id = check_path__object_id;
-- we should be able to handle the case where check_path fails
-- should we not?
if check_path__object_id = 0 and check_path__context_id is null then
return 'f';
end if;
if check_path__context_id is null or check_path__security_inherit_p = 'f'
then
check_path__context_id := 0;
end if;
return acs_object__check_path(check_path__context_id,
check_path__ancestor_id);
end;$$ language plpgsql;