--
-- @author Lars Pind (lars@collaboraid.biz)
-- @creation-date 2003-07-03
-- Make groups registered users and the public closed (security)
update groups set join_policy = 'closed' where group_id in (-1,-2);
-- Make object_id 0 ("Unregistered Visitor") a user, not a person.
insert into users (user_id) values (0);
update acs_objects set object_type = 'user' where object_id = 0;
-- Add 'admin_rel' relationship type for administrators of a group
create table admin_rels (
rel_id integer constraint admin_rel_rel_id_fk
references membership_rels (rel_id)
constraint admin_rel_rel_id_pk
primary key
);
-- Create the admin role if it doesn't already exist
create function inline_0 ()
returns integer as '
declare
v_role_exists_p integer;
begin
-- dotlrn may have created the admin role already
select count(*) into v_role_exists_p
from acs_rel_roles
where role = ''admin'';
if v_role_exists_p = 0 then
PERFORM acs_rel_type__create_role (''admin'', ''Administrator'', ''Administrators'');
end if;
return 0;
end;' language 'plpgsql';
select inline_0 ();
drop function inline_0 ();
select acs_rel_type__create_type (
'admin_rel', -- rel_type
'Administrator Relation', -- pretty_name
'Administrator Relationships', -- pretty_plural
'membership_rel', -- supertype
'admin_rels', -- table_name
'rel_id', -- id_column
'admin_rel', -- package_name
'group', -- object_type_one
null, -- role_one
0, -- min_n_rels_one
null, -- max_n_rels_one
'person', -- object_type_two
'admin', -- role_two
0, -- min_n_rels_two
null -- max_n_rels_two
);
-- create or replace package body admin_rel
-- function new
select define_function_args('admin_rel__new','rel_id,rel_type;admin_rel,object_id_one,object_id_two,member_state;approved,creation_user,creation_ip');
create or replace function admin_rel__new (integer,varchar,integer,integer,varchar,integer,varchar)
returns integer as '
declare
p_rel_id alias for $1; -- default null
p_rel_type alias for $2; -- default ''admin_rel''
p_object_id_one alias for $3;
p_object_id_two alias for $4;
p_member_state alias for $5; -- default ''approved''
p_creation_user alias for $6; -- default null
p_creation_ip alias for $7; -- default null
v_rel_id integer;
begin
v_rel_id := membership_rel__new (
p_rel_id, -- rel_id
p_rel_type, -- rel_type
p_object_id_one, -- object_id_one
p_object_id_two, -- object_id_two
p_member_state, -- member_state
p_creation_user, -- creation_usre
p_creation_ip -- creation_ip
);
insert into admin_rels
(rel_id)
values
(v_rel_id);
return v_rel_id;
end;' language 'plpgsql';
-- function new
create or replace function admin_rel__new (integer,integer)
returns integer as '
declare
object_id_one alias for $1;
object_id_two alias for $2;
begin
return membership_rel__new(
null, -- rel_id
''admin_rel'', -- rel_type
object_id_one, -- object_id_one
object_id_two, -- object_id_two
''approved'', -- member_state
null, -- creation_user
null -- creation_ip
);
end;' language 'plpgsql';
-- procedure delete
create or replace function admin_rel__delete (integer)
returns integer as '
declare
rel_id alias for $1;
begin
PERFORM membership_rel__delete(rel_id);
return 0;
end;' language 'plpgsql';
-- Internationalize role "member"
update acs_rel_roles
set pretty_name = 'member',
pretty_plural = 'members'
where role = 'member';