oracle8.1.6
declare
v_rel_id integer;
begin
for cur in (select r.rel_id from acs_rels r,
membership_rels m
where m.rel_id = r.rel_id
and (r.rel_type = 'dotlrn_guest_rel'
or r.rel_type = 'dotlrn_non_guest_rel')
and r.object_id_one = acs.magic_object_id('registered_users')
and r.object_id_two = :user_id)
loop
membership_rel.del(cur.rel_id);
end loop;
v_rel_id := membership_rel.new(
rel_type => 'dotlrn_non_guest_rel',
object_id_one => acs.magic_object_id('registered_users'),
object_id_two => :user_id,
member_state => 'approved'
);
end;
declare
v_rel_id integer;
begin
for cur in (select r.rel_id from acs_rels r,
membership_rels m
where m.rel_id = r.rel_id
and (r.rel_type = 'dotlrn_guest_rel'
or r.rel_type = 'dotlrn_non_guest_rel')
and r.object_id_one = acs.magic_object_id('registered_users')
and r.object_id_two = :user_id)
loop
membership_rel.del(cur.rel_id);
end loop;
v_rel_id := membership_rel.new(
rel_type => 'dotlrn_guest_rel',
object_id_one => acs.magic_object_id('registered_users'),
object_id_two => :user_id,
member_state => 'approved'
);
end;
declare
v_segment_id integer;
begin
select segment_id into v_segment_id
from rel_segments
where group_id = acs.magic_object_id('registered_users')
and rel_type = :rel_type;
acs_permission.${action}_permission(:object_id,v_segment_id,'read_private_data');
end;
select case when count(1) = 0 then 0 else 1 end
from acs_permissions p,
rel_segments r
where p.grantee_id = r.segment_id
and p.privilege = 'read_private_data'
and r.group_id = acs.magic_object_id('registered_users')
and r.rel_type = 'dotlrn_guest_rel'
and p.object_id = :object_id