Index: openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d2-5.0d3.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d2-5.0d3.sql,v diff -u -N -r1.11 -r1.12 --- openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d2-5.0d3.sql 26 Jan 2004 15:39:45 -0000 1.11 +++ openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d2-5.0d3.sql 25 Apr 2004 09:52:48 -0000 1.12 @@ -250,3 +250,178 @@ and m.group_id = amo.object_id and m.rel_id = mr.rel_id and m.container_id = m.group_id; + + +drop function acs_user__new (integer,varchar,timestamptz,integer,varchar,varchar,varchar,varchar,varchar,char,char,varchar,varchar,varchar,boolean,integer); + +create function acs_user__new ( + integer, -- user_id + varchar, -- object_type + timestamptz, -- creation_date + integer, -- creation_user + varchar, -- creation_ip + integer, -- authority_id; default 'local' + varchar, -- username + varchar, -- email + varchar, -- url + varchar, -- first_names + varchar, -- last_name + char, -- password + char, -- salt + varchar, -- screen_name + boolean, -- email_verified_p + integer -- context_id +) +returns integer as ' +declare + p_user_id alias for $1; -- default null + p_object_type alias for $2; -- default ''user'' + p_creation_date alias for $3; -- default now() + p_creation_user alias for $4; -- default null + p_creation_ip alias for $5; -- default null + p_authority_id alias for $6; -- defaults to local authority + p_username alias for $7; -- + p_email alias for $8; + p_url alias for $9; -- default null + p_first_names alias for $10; + p_last_name alias for $11; + p_password alias for $12; + p_salt alias for $13; + p_screen_name alias for $14; -- default null + p_email_verified_p alias for $15; -- default ''t'' + p_context_id alias for $16; -- default null + v_user_id users.user_id%TYPE; + v_authority_id auth_authorities.authority_id%TYPE; + v_person_exists varchar; +begin + v_user_id := p_user_id; + + select case when count(*) = 0 then ''f'' else ''t'' end into v_person_exists + from persons where person_id = v_user_id; + + if v_person_exists = ''f'' then + v_user_id := person__new( + v_user_id, + p_object_type, + p_creation_date, + p_creation_user, + p_creation_ip, + p_email, + p_url, + p_first_names, + p_last_name, + p_context_id + ); + else + update acs_objects set object_type = ''user'' where object_id = v_user_id; + end if; + + -- default to local authority + if p_authority_id is null then + select authority_id + into v_authority_id + from auth_authorities + where short_name = ''local''; + else + v_authority_id := p_authority_id; + end if; + + insert into users + (user_id, authority_id, username, password, salt, screen_name, email_verified_p) + values + (v_user_id, v_authority_id, p_username, p_password, p_salt, p_screen_name, p_email_verified_p); + + insert into user_preferences + (user_id) + values + (v_user_id); + + return v_user_id; + +end;' language 'plpgsql'; + + +drop function acs__add_user (integer,varchar,timestamptz,integer,varchar,varchar,varchar,varchar,varchar,char,char,varchar,varchar,varchar,boolean,varchar); + +create function acs__add_user ( + integer, -- user_id + varchar, -- object_type + timestamptz, -- creation_date + integer, -- creation_user + varchar, -- cretion_ip + integer, -- authority_id; default 'local' + varchar, -- username + varchar, -- email + varchar, -- url + varchar, -- first_names + varchar, -- last_name + char, -- password + char, -- salt + varchar, -- screen_name + boolean, -- email_verified_p + varchar -- member_state +) +returns integer as ' +declare + p_user_id alias for $1; -- default null + p_object_type alias for $2; -- default ''user'' + p_creation_date alias for $3; -- default now() + p_creation_user alias for $4; -- default null + p_creation_ip alias for $5; -- default null + p_authority_id alias for $6; -- defaults to local authority + p_username alias for $7; -- + p_email alias for $8; + p_url alias for $9; -- default null + p_first_names alias for $10; + p_last_name alias for $11; + p_password alias for $12; + p_salt alias for $13; + p_screen_name alias for $14; -- default null + p_email_verified_p alias for $15; -- default ''t'' + p_member_state alias for $16; -- default ''approved'' + v_user_id users.user_id%TYPE; + v_rel_id membership_rels.rel_id%TYPE; +begin + v_user_id := acs_user__new ( + p_user_id, + p_object_type, + p_creation_date, + p_creation_user, + p_creation_ip, + p_authority_id, + p_username, + p_email, + p_url, + p_first_names, + p_last_name, + p_password, + p_salt, + p_screen_name, + p_email_verified_p, + null -- context_id + ); + + v_rel_id := membership_rel__new ( + null, + ''membership_rel'', + acs__magic_object_id(''registered_users''), + v_user_id, + p_member_state, + null, + null); + + PERFORM acs_permission__grant_permission ( + v_user_id, + v_user_id, + ''read'' + ); + + PERFORM acs_permission__grant_permission ( + v_user_id, + v_user_id, + ''write'' + ); + + return v_user_id; + +end;' language 'plpgsql';