Index: openacs-4/packages/dotlrn/dotlrn.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/dotlrn.info,v diff -u -r1.46 -r1.47 --- openacs-4/packages/dotlrn/dotlrn.info 31 Jan 2002 17:32:51 -0000 1.46 +++ openacs-4/packages/dotlrn/dotlrn.info 8 Feb 2002 20:50:56 -0000 1.47 @@ -29,6 +29,14 @@ <files> <file path="coding-tips.txt"/> <file type="package_spec" path="dotlrn.info"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-admin-profile-provider-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-admin-profile-provider-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-admins-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-admins-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-admins-init.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-admins-package-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-admins-package-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-admins-sanitize.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-applet-sc-create.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-classes-create.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-clubs-create.sql"/> @@ -39,10 +47,32 @@ <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-init.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-main-portlet-create.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-main-portlet-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-professor-profile-provider-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-professor-profile-provider-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-professors-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-professors-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-professors-init.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-professors-package-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-professors-package-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-professors-sanitize.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-security-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-student-profile-provider-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-student-profile-provider-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-students-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-students-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-students-init.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-students-package-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-students-package-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-students-sanitize.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-user-extension-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-user-profile-provider-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-user-profile-provider-drop.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-users-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-users-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-users-init.sql"/> <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-users-package-create.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-users-package-drop.sql"/> + <file type="data_model" db_type="oracle" path="sql/oracle/dotlrn-users-sanitize.sql"/> <file type="data_model_create" db_type="postgresql" path="sql/postgresql/dotlrn-create.sql"/> <file type="tcl_procs" path="tcl/applets-procs.tcl"/> <file type="query_file" path="tcl/applets-procs.xql"/> @@ -64,6 +94,7 @@ <file type="query_file" db_type="postgresql" path="tcl/dotlrn-procs-postgresql.xql"/> <file type="tcl_procs" path="tcl/dotlrn-procs.tcl"/> <file type="query_file" path="tcl/dotlrn-procs.xql"/> + <file type="tcl_procs" path="tcl/dotlrn-professor-profile-provider-procs.tcl"/> <file type="query_file" db_type="oracle" path="tcl/dotlrn-security-procs-oracle.xql"/> <file type="tcl_procs" path="tcl/dotlrn-security-procs.tcl"/> <file type="query_file" path="tcl/dotlrn-security-procs.xql"/> Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-admin-profile-provider-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-admin-profile-provider-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-admin-profile-provider-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,56 @@ +-- +-- Implementation of the profile provider interface for dotLRN Admins. +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-admin-profile-provider-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + -- create the implementation + foo := acs_sc_impl.new( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider', + impl_owner_name => 'dotlrn_admin_profile_provider' + ); + + -- add the bindings to the method implementations + + -- name method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider', + impl_operation_name => 'name', + impl_alias => 'dotlrn_admin_profile_provider::name', + impl_pl => 'TCL' + ); + + -- prettyName method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider', + impl_operation_name => 'prettyName', + impl_alias => 'dotlrn_admin_profile_provider::prettyName', + impl_pl => 'TCL' + ); + + -- render method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider', + impl_operation_name => 'render', + impl_alias => 'dotlrn_admin_profile_provider::render', + impl_pl => 'TCL' + ); + + -- bind this implementation to the interface it implements + acs_sc_binding.new( + contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-admin-profile-provider-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-admin-profile-provider-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-admin-profile-provider-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,50 @@ +-- +-- Implementation of the profile provider interface for dotLRN Admins. +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-admin-profile-provider-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + -- drop the binding between this implementation and the interface it + -- implements. + acs_sc_binding.delete( + contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider' + ); + + -- drop the bindings to the method implementations + + -- name method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider', + impl_operation_name => 'name' + ); + + -- prettyName method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider', + impl_operation_name => 'prettyName' + ); + + -- render method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider', + impl_operation_name => 'render' + ); + + -- drop the implementation + acs_sc_impl.delete( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_admin_profile_provider' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-admins-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,24 @@ +-- +-- Create the dotLRN Admins package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-admins-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +create table dotlrn_admin_profile_rels ( + rel_id constraint dotlrn_adm_prfl_rels_rel_id_fk + references dotlrn_user_profile_rels (rel_id) + constraint dotlrn_admin_prfl_rels_pk + primary key +); + +create table dotlrn_full_admin_profile_rels ( + rel_id constraint dotlrn_fl_adm_prfl_rels_rel_fk + references dotlrn_full_user_profile_rels (rel_id) + constraint dotlrn_full_admin_prfl_rels_pk + primary key +); + +@@ dotlrn-admin-profile-provider-create.sql +@@ dotlrn-admins-init.sql +@@ dotlrn-admins-package-create.sql Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-admins-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,13 @@ +-- +-- Drop the dotLRN Admins package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-admins-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +@@ dotlrn-admins-package-drop.sql +@@ dotlrn-admins-sanitize.sql +@@ dotlrn-admin-profile-provider-drop.sql + +drop table dotlrn_full_admin_profile_rels; +drop table dotlrn_admin_profile_rels; Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-init.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-admins-init.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-init.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,105 @@ +-- +-- Initialize the dotLRN Admins package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-admins-init.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; + group_id integer; + dotlrn_users_group_id integer; +begin + + acs_rel_type.create_type( + rel_type => 'dotlrn_admin_profile_rel', + supertype => 'dotlrn_user_profile_rel', + pretty_name => 'dotLRN Admin Profile Membership', + pretty_plural => 'dotLRN Admin Profile Memberships', + package_name => 'dotlrn_admin_profile_rel', + table_name => 'dotlrn_admin_profile_rels', + id_column => 'rel_id', + object_type_one => 'profiled_group', + role_one => null, + min_n_rels_one => 0, + max_n_rels_one => null, + object_type_two => 'user', + role_two => null, + min_n_rels_two => 0, + max_n_rels_two => 1 + ); + + select min(impl_id) + into foo + from acs_sc_impls + where impl_name = 'dotlrn_admin_profile_provider'; + + group_id := profiled_group.new( + profile_provider => foo, + group_name => 'dotLRN Admins' + ); + + insert + into dotlrn_user_types + (type, pretty_name, group_id) + values + ('admin', 'Administrator', group_id); + + foo := rel_segment.new( + segment_name => 'dotLRN Profiled Admins', + group_id => group_id, + rel_type => 'dotlrn_admin_profile_rel' + ); + + select group_id + into dotlrn_users_group_id + from groups + where group_name = 'dotLRN Users'; + + foo := composition_rel.new( + object_id_one => dotlrn_users_group_id, + object_id_two => group_id + ); + +end; +/ +show errors + +declare + foo integer; +begin + + acs_rel_type.create_type( + rel_type => 'dotlrn_full_admin_profile_rel', + supertype => 'dotlrn_full_user_profile_rel', + pretty_name => 'dotLRN Full Admin Profile Membership', + pretty_plural => 'dotLRN Full Admin Profile Memberships', + package_name => 'dotlrn_full_admin_profile_rel', + table_name => 'dotlrn_full_admin_profile_rels', + id_column => 'rel_id', + object_type_one => 'profiled_group', + role_one => null, + min_n_rels_one => 0, + max_n_rels_one => null, + object_type_two => 'user', + role_two => null, + min_n_rels_two => 0, + max_n_rels_two => 1 + ); + + select min(group_id) + into foo + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_admin_profile_provider'); + + foo := rel_segment.new( + segment_name => 'dotLRN Full Profiled Admins', + group_id => foo, + rel_type => 'dotlrn_full_admin_profile_rel' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-package-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-admins-package-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-package-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,174 @@ +-- +-- Create the Admin package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-admins-package-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +create or replace package dotlrn_admin_profile_rel +as + function new ( + rel_id in dotlrn_admin_profile_rels.rel_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_admin_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE; + + procedure delete ( + rel_id in dotlrn_admin_profile_rels.rel_id%TYPE + ); + +end; +/ +show errors + +create or replace package body dotlrn_admin_profile_rel +as + function new ( + rel_id in dotlrn_admin_profile_rels.rel_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_admin_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE + is + v_rel_id dotlrn_user_profile_rels.rel_id%TYPE; + v_group_id groups.group_id%TYPE; + begin + if group_id is null then + select min(group_id) + into v_group_id + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_admin_profile_provider'); + else + v_group_id := group_id; + end if; + + v_rel_id := dotlrn_user_profile_rel.new( + rel_id => rel_id, + id => id, + rel_type => rel_type, + group_id => v_group_id, + user_id => user_id, + creation_user => creation_user, + creation_ip => creation_ip + ); + + insert + into dotlrn_admin_profile_rels + (rel_id) + values + (v_rel_id); + + return v_rel_id; + end; + + procedure delete ( + rel_id in dotlrn_admin_profile_rels.rel_id%TYPE + ) + is + begin + delete + from dotlrn_admin_profile_rels + where rel_id = dotlrn_admin_profile_rel.delete.rel_id; + + dotlrn_user_profile_rel.delete(rel_id); + end; + +end; +/ +show errors + +create or replace package dotlrn_full_admin_profile_rel +as + function new ( + rel_id in dotlrn_full_admin_profile_rels.rel_id%TYPE default null, + portal_id in dotlrn_full_user_profile_rels.portal_id%TYPE, + theme_id in dotlrn_full_user_profile_rels.theme_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_admin_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_full_user_profile_rels.rel_id%TYPE; + + procedure delete ( + rel_id in dotlrn_full_admin_profile_rels.rel_id%TYPE + ); + +end; +/ +show errors + +create or replace package body dotlrn_full_admin_profile_rel +as + function new ( + rel_id in dotlrn_full_admin_profile_rels.rel_id%TYPE default null, + portal_id in dotlrn_full_user_profile_rels.portal_id%TYPE, + theme_id in dotlrn_full_user_profile_rels.theme_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_admin_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_full_user_profile_rels.rel_id%TYPE + is + v_rel_id dotlrn_full_user_profile_rels.rel_id%TYPE; + v_group_id groups.group_id%TYPE; + begin + if group_id is null then + select min(group_id) + into v_group_id + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_admin_profile_provider'); + else + v_group_id := group_id; + end if; + + v_rel_id := dotlrn_full_user_profile_rel.new( + rel_id => rel_id, + portal_id => portal_id, + theme_id => theme_id, + id => id, + rel_type => rel_type, + group_id => v_group_id, + user_id => user_id, + creation_user => creation_user, + creation_ip => creation_ip + ); + + insert + into dotlrn_full_admin_profile_rels + (rel_id) + values + (v_rel_id); + + return v_rel_id; + end; + + procedure delete ( + rel_id in dotlrn_full_admin_profile_rels.rel_id%TYPE + ) + is + begin + delete + from dotlrn_full_admin_profile_rels + where rel_id = dotlrn_full_admin_profile_rel.delete.rel_id; + + dotlrn_full_user_profile_rel.delete(rel_id); + end; + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-package-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-admins-package-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-package-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,9 @@ +-- +-- Create the dotLRN Admins package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-admins-package-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +drop package dotlrn_full_admin_profile_rel; +drop package dotlrn_admin_profile_rel; Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-sanitize.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-admins-sanitize.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-admins-sanitize.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,65 @@ +-- +-- Sanitize the dotLRN Admin package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-admins-sanitize.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + select min(segment_id) + into foo + from rel_segments + where segment_name = 'dotLRN Full Profiled Admins'; + + rel_segment.delete( + segment_id => foo + ); + + acs_rel_type.drop_type( + rel_type => 'dotlrn_full_admin_profile_rel', + cascade_p => 't' + ); + +end; +/ +show errors + +declare + foo integer; +begin + + select min(segment_id) + into foo + from rel_segments + where segment_name = 'dotLRN Profiled Admins'; + + rel_segment.delete( + segment_id => foo + ); + + select min(group_id) + into foo + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_admin_profile_provider'); + + delete + from dotlrn_user_types + where group_id = foo; + + profiled_group.delete( + group_id => foo + ); + + acs_rel_type.drop_type( + rel_type => 'dotlrn_admin_profile_rel', + cascade_p => 't' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/dotlrn-create.sql,v diff -u -r1.9 -r1.10 --- openacs-4/packages/dotlrn/sql/oracle/dotlrn-create.sql 22 Jan 2002 20:50:56 -0000 1.9 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-create.sql 8 Feb 2002 20:50:56 -0000 1.10 @@ -10,7 +10,6 @@ -- @dotlrn-users-create.sql -@dotlrn-users-package-create.sql @dotlrn-communities-create.sql @dotlrn-clubs-create.sql @dotlrn-classes-create.sql @@ -21,4 +20,3 @@ @dotlrn-main-portlet-create.sql @dotlrn-security-create.sql @dotlrn-user-extension-create.sql - Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-init.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/dotlrn-init.sql,v diff -u -r1.11 -r1.12 --- openacs-4/packages/dotlrn/sql/oracle/dotlrn-init.sql 15 Jan 2002 20:48:30 -0000 1.11 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-init.sql 8 Feb 2002 20:50:56 -0000 1.12 @@ -46,11 +46,6 @@ acs_rel_type.create_role ('teaching_assistant', 'Teaching Assistant', 'Teaching Assistants'); acs_rel_type.create_role ('instructor', 'Instructor', 'Instructors'); acs_rel_type.create_role ('admin', 'Administrator', 'Administrators'); - - -- add the user types - insert into dotlrn_user_types (type_id, type) values (1, 'student'); - insert into dotlrn_user_types (type_id, type) values (2, 'professor'); - insert into dotlrn_user_types (type_id, type) values (3, 'admin'); end; / show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-professor-profile-provider-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-professor-profile-provider-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-professor-profile-provider-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,56 @@ +-- +-- Implementation of the profile provider interface for dotLRN Professors. +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-professor-profile-provider-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + -- create the implementation + foo := acs_sc_impl.new( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider', + impl_owner_name => 'dotlrn_professor_profile_provider' + ); + + -- add the bindings to the method implementations + + -- name method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider', + impl_operation_name => 'name', + impl_alias => 'dotlrn_professor_profile_provider::name', + impl_pl => 'TCL' + ); + + -- prettyName method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider', + impl_operation_name => 'prettyName', + impl_alias => 'dotlrn_professor_profile_provider::prettyName', + impl_pl => 'TCL' + ); + + -- render method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider', + impl_operation_name => 'render', + impl_alias => 'dotlrn_professor_profile_provider::render', + impl_pl => 'TCL' + ); + + -- bind this implementation to the interface it implements + acs_sc_binding.new( + contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-professor-profile-provider-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-professor-profile-provider-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-professor-profile-provider-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,50 @@ +-- +-- Implementation of the profile provider interface for dotLRN Professors. +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-professor-profile-provider-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + -- drop the binding between this implementation and the interface it + -- implements. + acs_sc_binding.delete( + contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider' + ); + + -- drop the bindings to the method implementations + + -- name method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider', + impl_operation_name => 'name' + ); + + -- prettyName method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider', + impl_operation_name => 'prettyName' + ); + + -- render method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider', + impl_operation_name => 'render' + ); + + -- drop the implementation + acs_sc_impl.delete( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_professor_profile_provider' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-professors-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,24 @@ +-- +-- Create the dotLRN Professors package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-professors-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +create table dotlrn_professor_profile_rels ( + rel_id constraint dotlrn_prof_rels_rel_id_fk + references dotlrn_user_profile_rels (rel_id) + constraint dotlrn_prof_profile_rels_pk + primary key +); + +create table dotlrn_full_prof_profile_rels ( + rel_id constraint dotlrn_fp_prfl_rels_rel_fk + references dotlrn_full_user_profile_rels (rel_id) + constraint dotlrn_full_prof_prfl_rels_pk + primary key +); + +@@ dotlrn-professor-profile-provider-create.sql +@@ dotlrn-professors-init.sql +@@ dotlrn-professors-package-create.sql Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-professors-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,13 @@ +-- +-- Drop the dotLRN Professors package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-professors-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +@@ dotlrn-professors-package-drop.sql +@@ dotlrn-professors-sanitize.sql +@@ dotlrn-professor-profile-provider-drop.sql + +drop table dotlrn_full_prof_profile_rels; +drop table dotlrn_professor_profile_rels; Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-init.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-professors-init.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-init.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,105 @@ +-- +-- Initialize the dotLRN Professors package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-professors-init.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; + group_id integer; + dotlrn_users_group_id integer; +begin + + acs_rel_type.create_type( + rel_type => 'dotlrn_professor_profile_rel', + supertype => 'dotlrn_user_profile_rel', + pretty_name => 'dotLRN Professor Profile Membership', + pretty_plural => 'dotLRN Professor Profile Memberships', + package_name => 'dotlrn_professor_profile_rel', + table_name => 'dotlrn_professor_profile_rels', + id_column => 'rel_id', + object_type_one => 'profiled_group', + role_one => null, + min_n_rels_one => 0, + max_n_rels_one => null, + object_type_two => 'user', + role_two => null, + min_n_rels_two => 0, + max_n_rels_two => 1 + ); + + select min(impl_id) + into foo + from acs_sc_impls + where impl_name = 'dotlrn_professor_profile_provider'; + + group_id := profiled_group.new( + profile_provider => foo, + group_name => 'dotLRN Professors' + ); + + insert + into dotlrn_user_types + (type, pretty_name, group_id) + values + ('professor', 'Professor', group_id); + + foo := rel_segment.new( + segment_name => 'dotLRN Profiled Professors', + group_id => group_id, + rel_type => 'dotlrn_professor_profile_rel' + ); + + select group_id + into dotlrn_users_group_id + from groups + where group_name = 'dotLRN Users'; + + foo := composition_rel.new( + object_id_one => dotlrn_users_group_id, + object_id_two => group_id + ); + +end; +/ +show errors + +declare + foo integer; +begin + + acs_rel_type.create_type( + rel_type => 'dotlrn_full_professor_profile_rel', + supertype => 'dotlrn_full_user_profile_rel', + pretty_name => 'dotLRN Full Professor Profile Membership', + pretty_plural => 'dotLRN Full Professor Profile Memberships', + package_name => 'dotlrn_full_prof_profile_rel', + table_name => 'dotlrn_full_prof_profile_rels', + id_column => 'rel_id', + object_type_one => 'profiled_group', + role_one => null, + min_n_rels_one => 0, + max_n_rels_one => null, + object_type_two => 'user', + role_two => null, + min_n_rels_two => 0, + max_n_rels_two => 1 + ); + + select min(group_id) + into foo + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_professor_profile_provider'); + + foo := rel_segment.new( + segment_name => 'dotLRN Full Profiled Professors', + group_id => foo, + rel_type => 'dotlrn_full_professor_profile_rel' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-package-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-professors-package-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-package-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,174 @@ +-- +-- Create the Professor package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-professors-package-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +create or replace package dotlrn_professor_profile_rel +as + function new ( + rel_id in dotlrn_professor_profile_rels.rel_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_professor_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE; + + procedure delete ( + rel_id in dotlrn_professor_profile_rels.rel_id%TYPE + ); + +end; +/ +show errors + +create or replace package body dotlrn_professor_profile_rel +as + function new ( + rel_id in dotlrn_professor_profile_rels.rel_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_professor_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE + is + v_rel_id dotlrn_user_profile_rels.rel_id%TYPE; + v_group_id groups.group_id%TYPE; + begin + if group_id is null then + select min(group_id) + into v_group_id + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_professor_profile_provider'); + else + v_group_id := group_id; + end if; + + v_rel_id := dotlrn_user_profile_rel.new( + rel_id => rel_id, + id => id, + rel_type => rel_type, + group_id => v_group_id, + user_id => user_id, + creation_user => creation_user, + creation_ip => creation_ip + ); + + insert + into dotlrn_professor_profile_rels + (rel_id) + values + (v_rel_id); + + return v_rel_id; + end; + + procedure delete ( + rel_id in dotlrn_professor_profile_rels.rel_id%TYPE + ) + is + begin + delete + from dotlrn_professor_profile_rels + where rel_id = dotlrn_professor_profile_rel.delete.rel_id; + + dotlrn_user_profile_rel.delete(rel_id); + end; + +end; +/ +show errors + +create or replace package dotlrn_full_prof_profile_rel +as + function new ( + rel_id in dotlrn_full_prof_profile_rels.rel_id%TYPE default null, + portal_id in dotlrn_full_user_profile_rels.portal_id%TYPE, + theme_id in dotlrn_full_user_profile_rels.theme_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_professor_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_full_user_profile_rels.rel_id%TYPE; + + procedure delete ( + rel_id in dotlrn_full_prof_profile_rels.rel_id%TYPE + ); + +end; +/ +show errors + +create or replace package body dotlrn_full_prof_profile_rel +as + function new ( + rel_id in dotlrn_full_prof_profile_rels.rel_id%TYPE default null, + portal_id in dotlrn_full_user_profile_rels.portal_id%TYPE, + theme_id in dotlrn_full_user_profile_rels.theme_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_professor_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_full_user_profile_rels.rel_id%TYPE + is + v_rel_id dotlrn_full_user_profile_rels.rel_id%TYPE; + v_group_id groups.group_id%TYPE; + begin + if group_id is null then + select min(group_id) + into v_group_id + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_professor_profile_provider'); + else + v_group_id := group_id; + end if; + + v_rel_id := dotlrn_full_user_profile_rel.new( + rel_id => rel_id, + portal_id => portal_id, + theme_id => theme_id, + id => id, + rel_type => rel_type, + group_id => v_group_id, + user_id => user_id, + creation_user => creation_user, + creation_ip => creation_ip + ); + + insert + into dotlrn_full_prof_profile_rels + (rel_id) + values + (v_rel_id); + + return v_rel_id; + end; + + procedure delete ( + rel_id in dotlrn_full_prof_profile_rels.rel_id%TYPE + ) + is + begin + delete + from dotlrn_full_prof_profile_rels + where rel_id = dotlrn_full_prof_profile_rel.delete.rel_id; + + dotlrn_full_user_profile_rel.delete(rel_id); + end; + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-package-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-professors-package-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-package-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,9 @@ +-- +-- Create the dotLRN Professors package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-professors-package-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +drop package dotlrn_full_prof_profile_rel; +drop package dotlrn_professor_profile_rel; Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-sanitize.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-professors-sanitize.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-professors-sanitize.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,65 @@ +-- +-- Sanitize the dotLRN Professor package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-professors-sanitize.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + select min(segment_id) + into foo + from rel_segments + where segment_name = 'dotLRN Full Profiled Professors'; + + rel_segment.delete( + segment_id => foo + ); + + acs_rel_type.drop_type( + rel_type => 'dotlrn_full_professor_profile_rel', + cascade_p => 't' + ); + +end; +/ +show errors + +declare + foo integer; +begin + + select min(segment_id) + into foo + from rel_segments + where segment_name = 'dotLRN Profiled Professors'; + + rel_segment.delete( + segment_id => foo + ); + + select min(group_id) + into foo + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_professor_profile_provider'); + + delete + from dotlrn_user_types + where group_id = foo; + + profiled_group.delete( + group_id => foo + ); + + acs_rel_type.drop_type( + rel_type => 'dotlrn_professor_profile_rel', + cascade_p => 't' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-student-profile-provider-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-student-profile-provider-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-student-profile-provider-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,56 @@ +-- +-- Implementation of the profile provider interface for dotLRN Students. +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-student-profile-provider-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + -- create the implementation + foo := acs_sc_impl.new( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider', + impl_owner_name => 'dotlrn_student_profile_provider' + ); + + -- add the bindings to the method implementations + + -- name method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider', + impl_operation_name => 'name', + impl_alias => 'dotlrn_student_profile_provider::name', + impl_pl => 'TCL' + ); + + -- prettyName method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider', + impl_operation_name => 'prettyName', + impl_alias => 'dotlrn_student_profile_provider::prettyName', + impl_pl => 'TCL' + ); + + -- render method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider', + impl_operation_name => 'render', + impl_alias => 'dotlrn_student_profile_provider::render', + impl_pl => 'TCL' + ); + + -- bind this implementation to the interface it implements + acs_sc_binding.new( + contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-student-profile-provider-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-student-profile-provider-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-student-profile-provider-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,50 @@ +-- +-- Implementation of the profile provider interface for dotLRN Students. +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-student-profile-provider-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + -- drop the binding between this implementation and the interface it + -- implements. + acs_sc_binding.delete( + contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider' + ); + + -- drop the bindings to the method implementations + + -- name method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider', + impl_operation_name => 'name' + ); + + -- prettyName method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider', + impl_operation_name => 'prettyName' + ); + + -- render method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider', + impl_operation_name => 'render' + ); + + -- drop the implementation + acs_sc_impl.delete( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_student_profile_provider' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-students-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,24 @@ +-- +-- Create the dotLRN Students package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-students-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +create table dotlrn_student_profile_rels ( + rel_id constraint dotlrn_std_rels_rel_id_fk + references dotlrn_user_profile_rels (rel_id) + constraint dotlrn_student_profile_rels_pk + primary key +); + +create table dotlrn_full_stud_profile_rels ( + rel_id constraint dotlrn_fs_prfl_rels_rel_fk + references dotlrn_full_user_profile_rels (rel_id) + constraint dotlrn_fs_prfl_rels_pk + primary key +); + +@@ dotlrn-student-profile-provider-create.sql +@@ dotlrn-students-init.sql +@@ dotlrn-students-package-create.sql Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-students-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,13 @@ +-- +-- Drop the dotLRN Students package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-students-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +@@ dotlrn-students-package-drop.sql +@@ dotlrn-students-sanitize.sql +@@ dotlrn-student-profile-provider-drop.sql + +drop table dotlrn_full_stud_profile_rels; +drop table dotlrn_student_profile_rels; Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-init.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-students-init.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-init.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,105 @@ +-- +-- Initialize the dotLRN Students package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-students-init.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; + group_id integer; + dotlrn_users_group_id integer; +begin + + acs_rel_type.create_type( + rel_type => 'dotlrn_student_profile_rel', + supertype => 'dotlrn_user_profile_rel', + pretty_name => 'dotLRN Student Profile Membership', + pretty_plural => 'dotLRN Student Profile Memberships', + package_name => 'dotlrn_student_profile_rel', + table_name => 'dotlrn_student_profile_rels', + id_column => 'rel_id', + object_type_one => 'profiled_group', + role_one => null, + min_n_rels_one => 0, + max_n_rels_one => null, + object_type_two => 'user', + role_two => null, + min_n_rels_two => 0, + max_n_rels_two => 1 + ); + + select min(impl_id) + into foo + from acs_sc_impls + where impl_name = 'dotlrn_student_profile_provider'; + + group_id := profiled_group.new( + profile_provider => foo, + group_name => 'dotLRN Students' + ); + + insert + into dotlrn_user_types + (type, pretty_name, group_id) + values + ('student', 'Student', group_id); + + foo := rel_segment.new( + segment_name => 'dotLRN Profiled Students', + group_id => group_id, + rel_type => 'dotlrn_student_profile_rel' + ); + + select group_id + into dotlrn_users_group_id + from groups + where group_name = 'dotLRN Users'; + + foo := composition_rel.new( + object_id_one => dotlrn_users_group_id, + object_id_two => group_id + ); + +end; +/ +show errors + +declare + foo integer; +begin + + acs_rel_type.create_type( + rel_type => 'dotlrn_full_student_profile_rel', + supertype => 'dotlrn_full_user_profile_rel', + pretty_name => 'dotLRN Full Student Profile Membership', + pretty_plural => 'dotLRN Full Student Profile Memberships', + package_name => 'dotlrn_full_stud_profile_rel', + table_name => 'dotlrn_full_stud_profile_rels', + id_column => 'rel_id', + object_type_one => 'profiled_group', + role_one => null, + min_n_rels_one => 0, + max_n_rels_one => null, + object_type_two => 'user', + role_two => null, + min_n_rels_two => 0, + max_n_rels_two => 1 + ); + + select min(group_id) + into foo + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_student_profile_provider'); + + foo := rel_segment.new( + segment_name => 'dotLRN Full Profiled Students', + group_id => foo, + rel_type => 'dotlrn_full_student_profile_rel' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-package-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-students-package-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-package-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,174 @@ +-- +-- Create the Student package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-students-package-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +create or replace package dotlrn_student_profile_rel +as + function new ( + rel_id in dotlrn_student_profile_rels.rel_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_student_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE; + + procedure delete ( + rel_id in dotlrn_student_profile_rels.rel_id%TYPE + ); + +end; +/ +show errors + +create or replace package body dotlrn_student_profile_rel +as + function new ( + rel_id in dotlrn_student_profile_rels.rel_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_student_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE + is + v_rel_id dotlrn_user_profile_rels.rel_id%TYPE; + v_group_id groups.group_id%TYPE; + begin + if group_id is null then + select min(group_id) + into v_group_id + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_student_profile_provider'); + else + v_group_id := group_id; + end if; + + v_rel_id := dotlrn_user_profile_rel.new( + rel_id => rel_id, + id => id, + rel_type => rel_type, + group_id => v_group_id, + user_id => user_id, + creation_user => creation_user, + creation_ip => creation_ip + ); + + insert + into dotlrn_student_profile_rels + (rel_id) + values + (v_rel_id); + + return v_rel_id; + end; + + procedure delete ( + rel_id in dotlrn_student_profile_rels.rel_id%TYPE + ) + is + begin + delete + from dotlrn_student_profile_rels + where rel_id = dotlrn_student_profile_rel.delete.rel_id; + + dotlrn_user_profile_rel.delete(rel_id); + end; + +end; +/ +show errors + +create or replace package dotlrn_full_stud_profile_rel +as + function new ( + rel_id in dotlrn_full_stud_profile_rels.rel_id%TYPE default null, + portal_id in dotlrn_full_user_profile_rels.portal_id%TYPE, + theme_id in dotlrn_full_user_profile_rels.theme_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_student_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_full_user_profile_rels.rel_id%TYPE; + + procedure delete ( + rel_id in dotlrn_full_stud_profile_rels.rel_id%TYPE + ); + +end; +/ +show errors + +create or replace package body dotlrn_full_stud_profile_rel +as + function new ( + rel_id in dotlrn_full_stud_profile_rels.rel_id%TYPE default null, + portal_id in dotlrn_full_user_profile_rels.portal_id%TYPE, + theme_id in dotlrn_full_user_profile_rels.theme_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_student_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_full_user_profile_rels.rel_id%TYPE + is + v_rel_id dotlrn_full_user_profile_rels.rel_id%TYPE; + v_group_id groups.group_id%TYPE; + begin + if group_id is null then + select min(group_id) + into v_group_id + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_student_profile_provider'); + else + v_group_id := group_id; + end if; + + v_rel_id := dotlrn_full_user_profile_rel.new( + rel_id => rel_id, + portal_id => portal_id, + theme_id => theme_id, + id => id, + rel_type => rel_type, + group_id => v_group_id, + user_id => user_id, + creation_user => creation_user, + creation_ip => creation_ip + ); + + insert + into dotlrn_full_stud_profile_rels + (rel_id) + values + (v_rel_id); + + return v_rel_id; + end; + + procedure delete ( + rel_id in dotlrn_full_stud_profile_rels.rel_id%TYPE + ) + is + begin + delete + from dotlrn_full_stud_profile_rels + where rel_id = dotlrn_full_stud_profile_rel.delete.rel_id; + + dotlrn_full_user_profile_rel.delete(rel_id); + end; + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-package-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-students-package-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-package-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,9 @@ +-- +-- Create the dotLRN Students package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-students-package-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +drop package dotlrn_full_stud_profile_rel; +drop package dotlrn_student_profile_rel; Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-sanitize.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-students-sanitize.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-students-sanitize.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,65 @@ +-- +-- Sanitize the dotLRN Student package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-students-sanitize.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + select min(segment_id) + into foo + from rel_segments + where segment_name = 'dotLRN Full Profiled Students'; + + rel_segment.delete( + segment_id => foo + ); + + acs_rel_type.drop_type( + rel_type => 'dotlrn_full_student_profile_rel', + cascade_p => 't' + ); + +end; +/ +show errors + +declare + foo integer; +begin + + select min(segment_id) + into foo + from rel_segments + where segment_name = 'dotLRN Profiled Students'; + + rel_segment.delete( + segment_id => foo + ); + + select min(group_id) + into foo + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_student_profile_provider'); + + delete + from dotlrn_user_types + where group_id = foo; + + profiled_group.delete( + group_id => foo + ); + + acs_rel_type.drop_type( + rel_type => 'dotlrn_student_profile_rel', + cascade_p => 't' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-user-profile-provider-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-user-profile-provider-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-user-profile-provider-create.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,56 @@ +-- +-- Implementation of the profile provider interface for dotlrn users. +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-user-profile-provider-create.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + -- create the implementation + foo := acs_sc_impl.new( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider', + impl_owner_name => 'dotlrn_user_profile_provider' + ); + + -- add the bindings to the method implementations + + -- name method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider', + impl_operation_name => 'name', + impl_alias => 'dotlrn_user_profile_provider::name', + impl_pl => 'TCL' + ); + + -- prettyName method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider', + impl_operation_name => 'prettyName', + impl_alias => 'dotlrn_user_profile_provider::prettyName', + impl_pl => 'TCL' + ); + + -- render method + foo := acs_sc_impl.new_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider', + impl_operation_name => 'render', + impl_alias => 'dotlrn_user_profile_provider::render', + impl_pl => 'TCL' + ); + + -- bind this implementation to the interface it implements + acs_sc_binding.new( + contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-user-profile-provider-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-user-profile-provider-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-user-profile-provider-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,50 @@ +-- +-- Implementation of the profile provider interface for dotlrn users. +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-user-profile-provider-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + -- drop the binding between this implementation and the interface it + -- implements. + acs_sc_binding.delete( + contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider' + ); + + -- drop the bindings to the method implementations + + -- name method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider', + impl_operation_name => 'name' + ); + + -- prettyName method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider', + impl_operation_name => 'prettyName' + ); + + -- render method + foo := acs_sc_impl.delete_alias( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider', + impl_operation_name => 'render' + ); + + -- drop the implementation + acs_sc_impl.delete( + impl_contract_name => 'profile_provider', + impl_name => 'dotlrn_user_profile_provider' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-users-create.sql,v diff -u -r1.8 -r1.9 --- openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-create.sql 10 Jan 2002 19:30:17 -0000 1.8 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-create.sql 8 Feb 2002 20:50:56 -0000 1.9 @@ -1,157 +1,77 @@ - -- --- The DotLRN basic system --- copyright 2001, OpenForce, Inc. --- distributed under the GNU GPL v2 +-- Create the dotLRN Users package -- --- for Oracle 8/8i. (We're guessing 9i works, too). +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id$ -- --- ben@openforce.net --- October 30th, 2001 --- we remember September 11th, 2001 --- --- --- Users of the dotLRN system --- - --- not an object, there's really no use for it --- this is just so other, non-university systems can set up their own user types -create table dotlrn_user_types ( - type_id integer not null - constraint dlrn_user_type_pk primary key, - type varchar2(200) not null - constraint dlrn_user_type_un unique +create table dotlrn_user_profile_rels ( + rel_id constraint dotlrn_usr_prfl_rels_rel_id_fk + references user_profile_rels (rel_id) + constraint dotlrn_user_profile_rels_pk + primary key, + id varchar2(100) ); -create table dotlrn_user_rels ( - rel_id integer not null - constraint dlrn_user_rel_fk references membership_rels(rel_id) - constraint dlrn_user_rel_pk primary key, - type_id integer not null - constraint dlrn_user_rel_type_fk references dotlrn_user_types(type_id) +create table dotlrn_full_user_profile_rels ( + rel_id constraint dotlrn_fup_rels_rel_fk + references dotlrn_user_profile_rels (rel_id) + constraint dotlrn_full_user_prfl_rels_pk + primary key, + portal_id constraint dotlrn_fup_rels_portal_fk + references portals (portal_id) + constraint dotlrn_fup_rels_portal_nn + not null, + theme_id constraint dotlrn_fup_rels_theme_fk + references portal_element_themes (theme_id) ); -create table dotlrn_full_user_rels ( - rel_id integer not null - constraint dlrn_full_user_rel_fk references dotlrn_user_rels(rel_id) - constraint dlrn_full_user_rel_pk primary key, - theme_id integer - constraint dlrn_full_user_theme_fk references portal_element_themes(theme_id), - portal_id integer not null - constraint dlrn_full_user_portal_fk references portals(portal_id) +create table dotlrn_user_types ( + type varchar2(100) + constraint dotlrn_user_types_pk + primary key, + pretty_name varchar2(200), + group_id constraint dotlrn_user_types_group_id_fk + references profiled_groups (group_id) + constraint dotlrn_user_types_group_id_nn + not null ); --- the user group -declare - foo integer; -begin - foo:= acs_group.new ( - group_id => null, - object_type => 'group', - creation_date => sysdate, - group_name => 'dotLRN Users' - ); -end; -/ -show errors - -create or replace function dotlrn_get_group_id return integer is - p_group_id integer; -begin - select max(group_id) into p_group_id - from groups - where group_name = 'dotLRN Users'; - - return p_group_id; -end; -/ -show errors - -create view dotlrn_users +create or replace view dotlrn_users as select acs_rels.rel_id, + dotlrn_user_profile_rels.id, registered_users.user_id, - first_names, - last_name, - email, - dotlrn_user_types.type_id, - type - from dotlrn_user_rels, + registered_users.first_names, + registered_users.last_name, + registered_users.email, + dotlrn_user_types.type + from dotlrn_user_profile_rels, acs_rels, registered_users, dotlrn_user_types where acs_rels.object_id_two = registered_users.user_id - and acs_rels.object_id_one = dotlrn_get_group_id() - and acs_rels.rel_id = dotlrn_user_rels.rel_id - and dotlrn_user_rels.type_id = dotlrn_user_types.type_id; + and acs_rels.object_id_one = dotlrn_user_types.group_id + and acs_rels.rel_id = dotlrn_user_profile_rels.rel_id; -create view dotlrn_full_users +create or replace view dotlrn_full_users as - select acs_rels.rel_id, - registered_users.user_id, - first_names, - last_name, - email, - dotlrn_user_types.type_id, - type, - portal_id, - theme_id - from dotlrn_user_rels, - dotlrn_full_user_rels, - acs_rels, - registered_users, - dotlrn_user_types - where acs_rels.object_id_two = registered_users.user_id - and acs_rels.object_id_one = dotlrn_get_group_id() - and acs_rels.rel_id = dotlrn_user_rels.rel_id - and dotlrn_user_rels.rel_id = dotlrn_full_user_rels.rel_id - and dotlrn_user_types.type_id = dotlrn_user_rels.type_id; + select dotlrn_users.*, + dotlrn_full_user_profile_rels.portal_id, + dotlrn_full_user_profile_rels.theme_id + from dotlrn_users, + dotlrn_full_user_profile_rels + where dotlrn_users.rel_id = dotlrn_full_user_profile_rels.rel_id; --- The packages +@@ dotlrn-user-profile-provider-create.sql +@@ dotlrn-users-init.sql +@@ dotlrn-users-package-create.sql -declare - v_group_id integer; - foo integer; -begin - acs_rel_type.create_type ( - rel_type => 'dotlrn_user_rel', - supertype => 'membership_rel', - pretty_name => 'dotLRN User Membership', - pretty_plural => 'dotLRN User Memberships', - package_name => 'dotlrn_user_rel', - table_name => 'dotlrn_user_rels', - id_column => 'rel_id', - object_type_one => 'group', role_one => null, min_n_rels_one => 0, max_n_rels_one => null, - object_type_two => 'user', role_two => null, min_n_rels_two => 0, max_n_rels_two => 1 - ); +-- create administrators +@@ dotlrn-admins-create.sql - acs_rel_type.create_type ( - rel_type => 'dotlrn_full_user_rel', - supertype => 'dotlrn_user_rel', - pretty_name => 'dotLRN Full User Membership', - pretty_plural => 'dotLRN Full User Memberships', - package_name => 'dotlrn_full_user_rel', - table_name => 'dotlrn_full_user_rels', - id_column => 'rel_id', - object_type_one => 'group', role_one => null, min_n_rels_one => 0, max_n_rels_one => null, - object_type_two => 'user', role_two => null, min_n_rels_two => 0, max_n_rels_two => 1 - ); +-- create professors +@@ dotlrn-professors-create.sql - v_group_id:= dotlrn_get_group_id(); - - -- Now we create the rel segments! - foo:= rel_segment.new ( - segment_name => 'dotLRN Users', - group_id => v_group_id, - rel_type => 'dotlrn_user_rel' - ); - - foo:= rel_segment.new ( - segment_name => 'dotLRN Full Access Users', - group_id => v_group_id, - rel_type => 'dotlrn_full_user_rel' - ); -end; -/ -show errors +-- create students +@@ dotlrn-students-create.sql Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-users-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,26 @@ +-- +-- Drop the User Profile package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-users-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +-- drop students +@@ dotlrn-students-drop.sql + +-- drop professors +@@ dotlrn-professors-drop.sql + +-- drop admins +@@ dotlrn-admins-drop.sql + +@@ dotlrn-users-package-drop.sql +@@ dotlrn-users-sanitize.sql +@@ dotlrn-user-profile-provider-drop.sql + +drop view dotlrn_full_users; +drop view dotlrn_users; + +drop table dotlrn_user_types; +drop table dotlrn_full_user_profile_rels; +drop table dotlrn_user_profile_rels; Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-init.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-users-init.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-init.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,87 @@ +-- +-- Initialize the User Profile package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-users-init.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + acs_rel_type.create_type( + rel_type => 'dotlrn_user_profile_rel', + supertype => 'user_profile_rel', + pretty_name => 'dotLRN User Profile Membership', + pretty_plural => 'dotLRN User Profile Memberships', + package_name => 'dotlrn_user_profile_rel', + table_name => 'dotlrn_user_profile_rels', + id_column => 'rel_id', + object_type_one => 'profiled_group', + role_one => null, + min_n_rels_one => 0, + max_n_rels_one => null, + object_type_two => 'user', + role_two => null, + min_n_rels_two => 0, + max_n_rels_two => 1 + ); + + select min(impl_id) + into foo + from acs_sc_impls + where impl_name = 'dotlrn_user_profile_provider'; + + foo := profiled_group.new( + profile_provider => foo, + group_name => 'dotLRN Users' + ); + + foo := rel_segment.new( + segment_name => 'dotLRN Profiled Users', + group_id => foo, + rel_type => 'dotlrn_user_profile_rel' + ); + +end; +/ +show errors + +declare + foo integer; +begin + + acs_rel_type.create_type( + rel_type => 'dotlrn_full_user_profile_rel', + supertype => 'dotlrn_user_profile_rel', + pretty_name => 'dotLRN Full User Profile Membership', + pretty_plural => 'dotLRN Full User Profile Memberships', + package_name => 'dotlrn_full_user_profile_rel', + table_name => 'dotlrn_full_user_profile_rels', + id_column => 'rel_id', + object_type_one => 'profiled_group', + role_one => null, + min_n_rels_one => 0, + max_n_rels_one => null, + object_type_two => 'user', + role_two => null, + min_n_rels_two => 0, + max_n_rels_two => 1 + ); + + select min(group_id) + into foo + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_user_profile_provider'); + + foo := rel_segment.new( + segment_name => 'dotLRN Full Profiled Users', + group_id => foo, + rel_type => 'dotlrn_full_user_profile_rel' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-package-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-users-package-create.sql,v diff -u -r1.5 -r1.6 --- openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-package-create.sql 1 Dec 2001 23:16:27 -0000 1.5 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-package-create.sql 8 Feb 2002 20:50:56 -0000 1.6 @@ -1,161 +1,171 @@ - -- --- The DotLRN basic system --- copyright 2001, OpenForce, Inc. --- distributed under the GNU GPL v2 +-- Create the User Profile package -- --- for Oracle 8/8i. (We're guessing 9i works, too). +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id$ -- --- ben@openforce.net --- October 30th, 2001 --- we remember September 11th, 2001 --- --- --- Users of the dotLRN system --- +create or replace package dotlrn_user_profile_rel +as + function new ( + rel_id in dotlrn_user_profile_rels.rel_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_user_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE; -create or replace package dotlrn_user_rel -is - function new ( - rel_id in dotlrn_user_rels.rel_id%TYPE default NULL, - rel_type in acs_rels.rel_type%TYPE default 'dotlrn_user_rel', - type_id in dotlrn_user_rels.type_id%TYPE, - group_id in groups.group_id%TYPE default NULL, - user_id in users.user_id%TYPE, - creation_user in acs_objects.creation_user%TYPE default null, - creation_ip in acs_objects.creation_ip%TYPE default null - ) return dotlrn_user_rels.rel_id%TYPE; + procedure delete ( + rel_id in dotlrn_user_profile_rels.rel_id%TYPE + ); - procedure delete ( - rel_id in dotlrn_user_rels.rel_id%TYPE - ); - end; / show errors +create or replace package body dotlrn_user_profile_rel +as + function new ( + rel_id in dotlrn_user_profile_rels.rel_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_user_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE + is + v_rel_id user_profile_rels.rel_id%TYPE; + v_group_id groups.group_id%TYPE; + begin + if group_id is null then + select min(group_id) + into v_group_id + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_user_profile_provider'); + else + v_group_id := group_id; + end if; -create or replace package body dotlrn_user_rel -is - function new ( - rel_id in dotlrn_user_rels.rel_id%TYPE default NULL, - rel_type in acs_rels.rel_type%TYPE default 'dotlrn_user_rel', - type_id in dotlrn_user_rels.type_id%TYPE, - group_id in groups.group_id%TYPE default NULL, - user_id in users.user_id%TYPE, - creation_user in acs_objects.creation_user%TYPE default null, - creation_ip in acs_objects.creation_ip%TYPE default null - ) return dotlrn_user_rels.rel_id%TYPE - is - v_rel_id membership_rels.rel_id%TYPE; - p_group_id groups.group_id%TYPE; - begin - if group_id is NULL then - p_group_id:= dotlrn_get_group_id(); - else - p_group_id:= group_id; - end if; + v_rel_id := user_profile_rel.new( + rel_id => rel_id, + rel_type => rel_type, + group_id => v_group_id, + user_id => user_id, + creation_user => creation_user, + creation_ip => creation_ip + ); - v_rel_id:= membership_rel.new ( - rel_id => rel_id, - rel_type => rel_type, - object_id_one => p_group_id, - object_id_two => user_id, - creation_user => creation_user, - creation_ip => creation_ip); + insert + into dotlrn_user_profile_rels + (rel_id, id) + values + (v_rel_id, id); - insert into dotlrn_user_rels - (rel_id, type_id) values - (v_rel_id, type_id); + return v_rel_id; + end; - return v_rel_id; - end; + procedure delete ( + rel_id in dotlrn_user_profile_rels.rel_id%TYPE + ) + is + begin + delete + from dotlrn_user_profile_rels + where rel_id = dotlrn_user_profile_rel.delete.rel_id; - procedure delete ( - rel_id in dotlrn_user_rels.rel_id%TYPE - ) - is - begin - delete from dotlrn_user_rels where rel_id= dotlrn_user_rel.delete.rel_id; + user_profile_rel.delete(rel_id); + end; - membership_rel.delete(rel_id); - end; - end; / show errors +create or replace package dotlrn_full_user_profile_rel +as + function new ( + rel_id in dotlrn_full_user_profile_rels.rel_id%TYPE default null, + portal_id in dotlrn_full_user_profile_rels.portal_id%TYPE, + theme_id in dotlrn_full_user_profile_rels.theme_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_user_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE; + procedure delete ( + rel_id in dotlrn_full_user_profile_rels.rel_id%TYPE + ); --- --- Full Users --- - -create or replace package dotlrn_full_user_rel -is - function new ( - rel_id in dotlrn_full_user_rels.rel_id%TYPE default NULL, - rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_user_rel', - type_id in dotlrn_user_rels.type_id%TYPE, - portal_id in dotlrn_full_user_rels.portal_id%TYPE, - group_id in groups.group_id%TYPE default NULL, - user_id in users.user_id%TYPE, - creation_user in acs_objects.creation_user%TYPE default null, - creation_ip in acs_objects.creation_ip%TYPE default null - ) return dotlrn_full_user_rels.rel_id%TYPE; - - procedure delete ( - rel_id in dotlrn_full_user_rels.rel_id%TYPE - ); - end; / show errors +create or replace package body dotlrn_full_user_profile_rel +as + function new ( + rel_id in dotlrn_full_user_profile_rels.rel_id%TYPE default null, + portal_id in dotlrn_full_user_profile_rels.portal_id%TYPE, + theme_id in dotlrn_full_user_profile_rels.theme_id%TYPE default null, + id in dotlrn_user_profile_rels.id%TYPE default null, + rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_user_profile_rel', + group_id in groups.group_id%TYPE default null, + user_id in users.user_id%TYPE, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null + ) return dotlrn_user_profile_rels.rel_id%TYPE + is + v_rel_id dotlrn_user_profile_rels.rel_id%TYPE; + v_group_id groups.group_id%TYPE; + begin + if group_id is null then + select min(group_id) + into v_group_id + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_user_profile_provider'); + else + v_group_id := group_id; + end if; -create or replace package body dotlrn_full_user_rel -is - function new ( - rel_id in dotlrn_full_user_rels.rel_id%TYPE default NULL, - rel_type in acs_rels.rel_type%TYPE default 'dotlrn_full_user_rel', - type_id in dotlrn_user_rels.type_id%TYPE, - portal_id in dotlrn_full_user_rels.portal_id%TYPE, - group_id in groups.group_id%TYPE default NULL, - user_id in users.user_id%TYPE, - creation_user in acs_objects.creation_user%TYPE default null, - creation_ip in acs_objects.creation_ip%TYPE default null - ) return dotlrn_full_user_rels.rel_id%TYPE - is - v_rel_id dotlrn_user_rels.rel_id%TYPE; - begin - v_rel_id:= dotlrn_user_rel.new ( - rel_id => rel_id, - rel_type => rel_type, - type_id => type_id, - group_id => group_id, - user_id => user_id, - creation_user => creation_user, - creation_ip => creation_ip); + v_rel_id := dotlrn_user_profile_rel.new( + rel_id => rel_id, + id => id, + rel_type => rel_type, + group_id => v_group_id, + user_id => user_id, + creation_user => creation_user, + creation_ip => creation_ip + ); - insert into dotlrn_full_user_rels - (rel_id, portal_id) values - (v_rel_id, portal_id); + insert + into dotlrn_full_user_profile_rels + (rel_id, portal_id, theme_id) + values + (v_rel_id, portal_id, theme_id); - return v_rel_id; - end; + return v_rel_id; + end; - procedure delete ( - rel_id in dotlrn_full_user_rels.rel_id%TYPE - ) - is - begin - delete from dotlrn_full_user_rels where rel_id = dotlrn_full_user_rel.delete.rel_id; + procedure delete ( + rel_id in dotlrn_full_user_profile_rels.rel_id%TYPE + ) + is + begin + delete + from dotlrn_full_user_profile_rels + where rel_id = dotlrn_full_user_profile_rel.delete.rel_id; - dotlrn_user_rel.delete(rel_id); - end; + dotlrn_user_profile_rel.delete(rel_id); + end; end; / show errors - Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-package-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-users-package-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-package-drop.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,9 @@ +-- +-- Create the User Profile package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-users-package-drop.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +drop package dotlrn_full_user_profile_rel; +drop package dotlrn_user_profile_rel; Index: openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-sanitize.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/sql/oracle/Attic/dotlrn-users-sanitize.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn/sql/oracle/dotlrn-users-sanitize.sql 8 Feb 2002 20:50:56 -0000 1.1 @@ -0,0 +1,61 @@ +-- +-- Sanitize the User Profile package +-- +-- @author <a href="mailto:yon@openforce.net">yon@openforce.net</a> +-- @version $Id: dotlrn-users-sanitize.sql,v 1.1 2002/02/08 20:50:56 yon Exp $ +-- + +declare + foo integer; +begin + + select min(segment_id) + into foo + from rel_segments + where segment_name = 'dotLRN Full Profiled Users'; + + rel_segment.delete( + segment_id => foo + ); + + acs_rel_type.drop_type( + rel_type => 'dotlrn_full_user_profile_rel', + cascade_p => 't' + ); + +end; +/ +show errors + +declare + foo integer; +begin + + select min(segment_id) + into foo + from rel_segments + where segment_name = 'dotLRN Profiled Users'; + + rel_segment.delete( + segment_id => foo + ); + + select min(group_id) + into foo + from profiled_groups + where profile_provider = (select min(impl_id) + from acs_sc_impls + where impl_name = 'dotlrn_user_profile_provider'); + + profiled_group.delete( + group_id => foo + ); + + acs_rel_type.drop_type( + rel_type => 'dotlrn_user_profile_rel', + cascade_p => 't' + ); + +end; +/ +show errors Index: openacs-4/packages/dotlrn/tcl/dotlrn-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-procs.tcl,v diff -u -r1.34 -r1.35 --- openacs-4/packages/dotlrn/tcl/dotlrn-procs.tcl 25 Jan 2002 00:23:40 -0000 1.34 +++ openacs-4/packages/dotlrn/tcl/dotlrn-procs.tcl 8 Feb 2002 20:50:57 -0000 1.35 @@ -274,11 +274,26 @@ return [portal::render -page_num $page_num -hide_links_p $hide_links_p -render_style $render_style $portal_id $theme_id ] } - ad_proc -public get_user_type_id_from_type { + ad_proc -public get_group_id_from_user_type { -type } { - return the type_id of a dotlrn_user type + return the group_id of the group that holds users of this type } { - return [db_string select_user_type_id_from_type {} -default ""] + return [db_string select_group_id_from_user_type {} -default ""] } + + ad_proc -public get_rel_type_from_user_type { + -type + {-access_level "full"} + } { + return the appropriate rel_type base on user type and access level + } { + if {[string equal $access_level "full"] == 1} { + set rel_type "dotlrn_full_" + } else { + set rel_type "dotlrn_" + } + + return "${rel_type}${type}_profile_rel" + } } Index: openacs-4/packages/dotlrn/tcl/dotlrn-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-procs.xql,v diff -u -r1.8 -r1.9 --- openacs-4/packages/dotlrn/tcl/dotlrn-procs.xql 20 Jan 2002 17:20:44 -0000 1.8 +++ openacs-4/packages/dotlrn/tcl/dotlrn-procs.xql 8 Feb 2002 20:50:57 -0000 1.9 @@ -38,11 +38,11 @@ </querytext> </fullquery> - <fullquery name="dotlrn::get_user_type_id_from_type.select_user_type_id_from_type"> + <fullquery name="dotlrn::get_group_id_from_user_type.select_group_id_from_user_type"> <querytext> - select type_id + select dotlrn_user_types.group_id from dotlrn_user_types - where type = :type + where dotlrn_user_types.type = :type </querytext> </fullquery> Index: openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.tcl,v diff -u -r1.22 -r1.23 --- openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.tcl 25 Jan 2002 00:22:50 -0000 1.22 +++ openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.tcl 8 Feb 2002 20:50:57 -0000 1.23 @@ -15,270 +15,269 @@ @author ben@openforce.net @creation-date 2001-10-30 @version $Id$ - + } namespace eval dotlrn { ad_proc -private do_abort {} { - do an abort if security violation + do an abort if security violation } { - ad_returnredirect "not-allowed" - return -code error + ad_returnredirect "not-allowed" + return -code error } ad_proc -public get_user_types {} { - return the list of possible user types, first type then type_id + return the list of possible user types, first type then group_id of the type } { - return [db_list_of_lists select_user_types {}] + return [db_list_of_lists select_user_types {}] } ad_proc -public user_p { {-user_id:required} } { check if a user is a dotLRN user } { - return [db_string select_count "select count(*) from dotlrn_users where user_id= :user_id"] + return [db_string select_count { + select count(*) + from dual + where exists (select 1 + from dotlrn_users + where user_id = :user_id) + }] } ad_proc -public user_add { - {-rel_type "dotlrn_user_rel"} - {-user_id:required} - {-type_id 1} + {-type "student"} + {-access_level "limited"} + {-id ""} + {-user_id:required} } { - Add a user as a dotLRN user + Add a user as a dotLRN user } { # Check if the user is already a dotLRN user if {[user_p -user_id $user_id]} { return } - # set up extra vars - set extra_vars [ns_set create] - - ns_set put $extra_vars user_id $user_id - ns_set put $extra_vars type_id $type_id + # set up extra vars + set extra_vars [ns_set create] + ns_set put $extra_vars user_id $user_id + ns_set put $extra_vars id $id - db_transaction { + db_transaction { # get the first page name and theme set page_name_and_layout_list [split [ad_parameter -package_id [dotlrn::get_package_id] user_wsp_page_names "Untitled Page,Simple 2-Column;" ] ";"] set page_name_list [list] set layout_name_list [list] - - ns_log Notice "bma: [llength $page_name_and_layout_list] LENGTH" # seperate name and theme foreach item $page_name_and_layout_list { lappend page_name_list [lindex [split $item ","] 0] lappend layout_name_list [lindex [split $item ","] 1] - - ns_log Notice "bma: $page_name_list *** $layout_name_list" } - if {$rel_type == "dotlrn_full_user_rel"} { - # Create a portal page for this user - set portal_id [portal::create \ + if {[string equal $access_level "full"] == 1} { + # Create a portal page for this user + set portal_id [portal::create \ -name "Your dotLRN Workspace" \ -default_page_name [lindex $page_name_list 0] \ -layout_name [lindex $layout_name_list 0] \ $user_id] - + # create rest of the default pages from the ad_param for {set i 1} {$i < [expr [llength $page_name_list]]} {incr i} { portal::page_create -portal_id $portal_id \ -pretty_name [lindex $page_name_list $i] \ -layout_name [lindex $layout_name_list $i] } - + # manually switch back to the first page set page_id [portal::get_page_id -portal_id $portal_id -sort_key 0] # aks test adding applets on new pages # make a test page to the wsp - dotlrn_main_portlet::add_self_to_page -page_id $page_id \ - $portal_id {} + dotlrn_main_portlet::add_self_to_page -page_id $page_id $portal_id {} # end test - + # Update the user and set the portal page correctly ns_set put $extra_vars portal_id $portal_id - - } + } - # Add the relation (no need to feed in anything for object_id_one, or two for that matter). - set rel_id [relation_add -extra_vars $extra_vars -member_state approved $rel_type "" $user_id] + # Add the relation (no need to feed in anything for object_id_one, or two for that matter). + set rel_id [relation_add \ + -extra_vars $extra_vars \ + -member_state approved \ + [get_rel_type_from_user_type -type $type -access_level $access_level] \ + "" \ + $user_id] - if {$rel_type == "dotlrn_full_user_rel"} { + if {[string equal $access_level "full"] == 1} { # must be here since wsp must exist in the dotlrn_full_users table, #do the callbacks on the active dotlrn-wide applets dotlrn_community::applets_dispatch \ -op AddUser \ -list_args [list $user_id] } - - } + } - return $rel_id + return $rel_id } ad_proc -public user_remove { - user_id + user_id } { - Remove a user from the set of dotLRN users + Remove a user from the set of dotLRN users } { - # Get the rel_id and remove it - set rel_id [db_string select_rel_id {} -default ""] + set rel_id [db_string select_rel_id {} -default ""] - if {![empty_string_p $rel_id]} { - relation_remove $rel_id - } + if {![empty_string_p $rel_id]} { + relation_remove $rel_id + } } ad_proc -private user_get_type { - user_id + user_id } { - returns the dotLRN user role or empty string if not a dotLRN user - - FIXME: THIS DOES NOT WORK ANYMORE! + returns the dotLRN user role or empty string if not a dotLRN user } { - return [db_string select_user_type {} -default ""] + return [db_string select_user_type {} -default ""] } ad_proc -public user_can_browse_p { - {user_id ""} + {user_id ""} } { - Check is a user can browse dotLRN + Check is a user can browse dotLRN } { - return [ad_permission_p -user_id $user_id [dotlrn::get_package_id] dotlrn_browse] + return [ad_permission_p -user_id $user_id [dotlrn::get_package_id] dotlrn_browse] } ad_proc -public require_user_browse { - {user_id ""} + {user_id ""} } { - Require that a user be able to browse dotLRN + Require that a user be able to browse dotLRN } { - if {![user_can_browse_p -user_id $user_id]} { - do_abort - } + if {![user_can_browse_p -user_id $user_id]} { + do_abort + } } ad_proc -public set_user_read_private_data { - {-user_id:required} - val + {-user_id:required} + val } { - set whether or not a user can read private data + set whether or not a user can read private data } { - acs_privacy::set_user_read_private_data -user_id $user_id -object_id [dotlrn::get_package_id] $val + acs_privacy::set_user_read_private_data -user_id $user_id -object_id [dotlrn::get_package_id] $val } ad_proc -public user_can_read_private_data_p { - {user_id ""} + {user_id ""} } { - Check if a user can read sensitive data in dotLRN + Check if a user can read sensitive data in dotLRN } { - if {[empty_string_p $user_id]} { - set user_id [ad_conn user_id] - } - - ns_log Notice "BEN: dotlrn::user_can_read_private_data_p -- got the call, user_id = $user_id" + if {[empty_string_p $user_id]} { + set user_id [ad_conn user_id] + } - return [acs_privacy::user_can_read_private_data_p -user_id $user_id -object_id [dotlrn::get_package_id]] + return [acs_privacy::user_can_read_private_data_p -user_id $user_id -object_id [dotlrn::get_package_id]] } ad_proc -public require_user_read_private_data { - {user_id ""} + {user_id ""} } { - Require that a user be able to read sensitive data + Require that a user be able to read sensitive data } { - if {![user_can_read_private_data_p -user_id $user_id]} { - do_abort - } + if {![user_can_read_private_data_p -user_id $user_id]} { + do_abort + } } ad_proc -public user_can_read_community_type_p { - {-user_id ""} - community_type + {-user_id ""} + community_type } { - Check if a user can read a community type + Check if a user can read a community type } { - # FIXME: permission hack - # NOT SURE HOW TO FIX THIS WITHOUT object_ids on community types - return 1 + # FIXME: permission hack + # NOT SURE HOW TO FIX THIS WITHOUT object_ids on community types + return 1 } ad_proc -public require_user_read_community_type { - {-user_id ""} - community_type + {-user_id ""} + community_type } { - require that a user be able to read a community type + require that a user be able to read a community type } { - if {![user_can_read_community_type_p -user_id $user_id $community_type]} { - do_abort - } + if {![user_can_read_community_type_p -user_id $user_id $community_type]} { + do_abort + } } ad_proc -public user_can_read_community_p { - {-user_id ""} - community_id + {-user_id ""} + community_id } { - Check if a user can read a community + Check if a user can read a community } { - return [ad_permission_p -user_id $user_id $community_id dotlrn_view_community] + return [ad_permission_p -user_id $user_id $community_id dotlrn_view_community] } ad_proc -public require_user_read_community { - {-user_id ""} - community_id + {-user_id ""} + community_id } { - require that a user be able to read a community + require that a user be able to read a community } { - if {![user_can_read_community_p -user_id $user_id $community_id]} { - do_abort - } + if {![user_can_read_community_p -user_id $user_id $community_id]} { + do_abort + } } ad_proc -public user_is_community_member_p { - {-user_id ""} - community_id + {-user_id ""} + community_id } { - check if a user is a member of a community + check if a user is a member of a community } { - if {[empty_string_p $user_id]} { - set user_id [ad_conn user_id] - } - - return [dotlrn_community::member_p $community_id $user_id] + if {[empty_string_p $user_id]} { + set user_id [ad_conn user_id] + } + + return [dotlrn_community::member_p $community_id $user_id] } ad_proc -public require_user_community_member { - {-user_id ""} - community_id + {-user_id ""} + community_id } { - require that a user be member of a particular community + require that a user be member of a particular community } { - if {![user_is_community_member_p -user_id $user_id $community_id]} { - do_abort - } + if {![user_is_community_member_p -user_id $user_id $community_id]} { + do_abort + } } ad_proc -public user_can_admin_community_p { - {-user_id ""} - community_id + {-user_id ""} + community_id } { - check if a user can admin a community + check if a user can admin a community } { - return [ad_permission_p -user_id $user_id $community_id dotlrn_admin_community] + return [ad_permission_p -user_id $user_id $community_id dotlrn_admin_community] } ad_proc -public require_user_admin_community { - {-user_id ""} - community_id + {-user_id ""} + community_id } { - require that user be able to admin a community + require that user be able to admin a community } { - if {![user_can_admin_community_p -user_id $user_id $community_id]} { - do_abort - } + if {![user_can_admin_community_p -user_id $user_id $community_id]} { + do_abort + } } } Index: openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.xql,v diff -u -r1.4 -r1.5 --- openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.xql 1 Dec 2001 23:16:27 -0000 1.4 +++ openacs-4/packages/dotlrn/tcl/dotlrn-security-procs.xql 8 Feb 2002 20:50:57 -0000 1.5 @@ -2,28 +2,39 @@ <queryset> -<fullquery name="dotlrn::get_user_types.select_user_types"> -<querytext> -select type, type_id from dotlrn_user_types order by type -</querytext> -</fullquery> + <fullquery name="dotlrn::get_user_types.select_user_types"> + <querytext> + select pretty_name, + type + from dotlrn_user_types + order by pretty_name + </querytext> + </fullquery> -<fullquery name="dotlrn::user_remove.select_rel_id"> -<querytext> -select rel_id from dotlrn_users where user_id= :user_id -</querytext> -</fullquery> + <fullquery name="dotlrn::user_remove.select_rel_id"> + <querytext> + select rel_id + from dotlrn_users + where user_id = :user_id + </querytext> + </fullquery> -<fullquery name="dotlrn::user_get_type.select_user_type"> -<querytext> -select type from dotlrn_users, dotlrn_user_types where dotlrn_user_rels.type_id= dotlrn_user_types.type_id and user_id= :user_id -</querytext>> -</fullquery> + <fullquery name="dotlrn::user_get_type.select_user_type"> + <querytext> + select type + from dotlrn_users + where user_id = :user_id + </querytext>> + </fullquery> -<fullquery name="dotlrn::user_add.update_user_portal_id"> -<querytext> -update dotlrn_full_user_rels set portal_id= :portal_id where rel_id = (select rel_id from dotlrn_full_users where user_id= :user_id) -</querytext> -</fullquery> + <fullquery name="dotlrn::user_add.update_user_portal_id"> + <querytext> + update dotlrn_full_user_profile_rels + set portal_id = :portal_id + where rel_id = (select rel_id + from dotlrn_full_users + where user_id = :user_id) + </querytext> + </fullquery> </queryset> Index: openacs-4/packages/dotlrn/tcl/dotlrn-user-extension-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/tcl/dotlrn-user-extension-procs.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/dotlrn/tcl/dotlrn-user-extension-procs.tcl 22 Jan 2002 19:59:31 -0000 1.1 +++ openacs-4/packages/dotlrn/tcl/dotlrn-user-extension-procs.tcl 8 Feb 2002 20:50:57 -0000 1.2 @@ -36,12 +36,9 @@ # Loop through patterns foreach pattern [automatic_email_patterns] { - ns_log Notice "DOTLRN: checking if $email matches $pattern" if {[string match $pattern $email]} { - ns_log Notice "DOTLRN: YES IT DOES!" # create the dotLRN user now - dotlrn::user_add -rel_type dotlrn_full_user_rel -user_id $user_id - + dotlrn::user_add -type "student" -access_level "full" -user_id $user_id break } } Index: openacs-4/packages/dotlrn/www/user-add-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/user-add-2.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/dotlrn/www/user-add-2.tcl 23 Jan 2002 01:15:10 -0000 1.3 +++ openacs-4/packages/dotlrn/www/user-add-2.tcl 8 Feb 2002 20:50:57 -0000 1.4 @@ -10,6 +10,7 @@ password first_names last_name + {id ""} {referer "/acs-admin/users"} } -properties { context_bar:onevalue @@ -19,6 +20,7 @@ first_names:onevalue last_name:onevalue email:onevalue + id:onevalue password:onevalue administration_name:onevalue } Index: openacs-4/packages/dotlrn/www/user-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/user-add.tcl,v diff -u -r1.9 -r1.10 --- openacs-4/packages/dotlrn/www/user-add.tcl 31 Jan 2002 17:08:09 -0000 1.9 +++ openacs-4/packages/dotlrn/www/user-add.tcl 8 Feb 2002 20:50:57 -0000 1.10 @@ -7,11 +7,12 @@ @creation-date Jan 19, 2002 @cvs-id $Id$ } -query { - {referer "members"} + {id ""} {type "student"} - {rel_type "dotlrn_full_user_rel"} + {access_level "full"} {read_private_data_p "t"} {add_membership_p "t"} + {referer "members"} } -properties { context_bar:onevalue } @@ -35,6 +36,12 @@ -widget hidden \ -value $target_user_id +element create add_user id \ + -label "ID" \ + -datatype text \ + -widget text \ + -value $id + element create add_user email \ -label "Email" \ -datatype text \ @@ -63,18 +70,18 @@ -widget hidden \ -value $referer -element create add_user rel_type \ - -label "Rel Type" \ - -datatype text \ - -widget hidden \ - -value $rel_type - element create add_user type \ -label "Type" \ -datatype text \ -widget hidden \ -value $type +element create add_user access_level \ + -label "Access Level" \ + -datatype text \ + -widget hidden \ + -value $access_level + element create add_user read_private_data_p \ -label "Can Read Private Data" \ -datatype text \ @@ -88,15 +95,16 @@ -value $add_membership_p if {[form is_valid add_user]} { - template::form get_values add_user target_user_id email first_names last_name referer rel_type type read_private_data_p + form get_values add_user \ + target_user_id id email first_names last_name referer type access_level read_private_data_p db_transaction { # create the ACS user set password [ad_generate_random_string] set target_user_id [ad_user_new $email $first_names $last_name $password "" "" "" "t" "approved" $target_user_id] # make the user a dotLRN user - dotlrn::user_add -rel_type $rel_type -user_id $target_user_id -type_id [dotlrn::get_user_type_id_from_type -type $type] + dotlrn::user_add -id $id -type $type -access_level $access_level -user_id $target_user_id # can this user read private data? acs_privacy::set_user_read_private_data -user_id $target_user_id -object_id [dotlrn::get_package_id] -value $read_private_data_p Index: openacs-4/packages/dotlrn/www/admin/add-instructor-3.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/add-instructor-3.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/dotlrn/www/admin/add-instructor-3.tcl 20 Jan 2002 19:43:46 -0000 1.3 +++ openacs-4/packages/dotlrn/www/admin/add-instructor-3.tcl 8 Feb 2002 20:50:57 -0000 1.4 @@ -14,7 +14,7 @@ # if the user isn't already a dotLRN user make him so if {!${is_dotlrn_user}} { - dotlrn::user_add -rel_type dotlrn_full_user_rel -user_id $user_id -type_id [dotlrn::get_user_type_id_from_type -type "professor"] + dotlrn::user_add -type "professor" -access_level "full" -user_id $user_id acs_privacy::set_user_read_private_data -user_id $user_id -object_id [dotlrn_community::get_package_id $community_id] -value "t" } Index: openacs-4/packages/dotlrn/www/admin/user-edit-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/user-edit-oracle.xql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/dotlrn/www/admin/user-edit-oracle.xql 10 Dec 2001 23:58:31 -0000 1.1 +++ openacs-4/packages/dotlrn/www/admin/user-edit-oracle.xql 8 Feb 2002 20:50:57 -0000 1.2 @@ -3,10 +3,20 @@ <queryset> <rdbms><type>oracle</type><version>8.1.6</version></rdbms> -<fullquery name="select_user_info"> -<querytext> -select first_names, last_name, email, type_id, case when dotlrn_full_user_rels.rel_id is NULL then 't' else 'f' end as limited_access_p, acs_permission.permission_p(:dotlrn_package_id, user_id, 'read_private_data') as read_private_data_p from dotlrn_users, dotlrn_full_user_rels where user_id=:user_id and dotlrn_users.rel_id= dotlrn_full_user_rels.rel_id(+) -</querytext> -</fullquery> + <fullquery name="select_user_info"> + <querytext> + select dotlrn_users.id, + dotlrn_users.first_names, + dotlrn_users.last_name, + dotlrn_users.email, + dotlrn_users.type, + case when dotlrn_full_user_rels.rel_id is null then 'limited' else 'full' end as access_level, + acs_permission.permission_p(:dotlrn_package_id, :user_id, 'read_private_data') as read_private_data_p + from dotlrn_users, + dotlrn_full_user_rels + where dotlrn_users.user_id = :user_id + and dotlrn_users.rel_id = dotlrn_full_user_rels.rel_id(+) + </querytext> + </fullquery> </queryset> Index: openacs-4/packages/dotlrn/www/admin/user-edit-verify.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/user-edit-verify.adp,v diff -u -r1.6 -r1.7 --- openacs-4/packages/dotlrn/www/admin/user-edit-verify.adp 23 Jan 2002 00:15:44 -0000 1.6 +++ openacs-4/packages/dotlrn/www/admin/user-edit-verify.adp 8 Feb 2002 20:50:57 -0000 1.7 @@ -6,5 +6,7 @@ <p></p> -You're asking to change the level of access of this user. This has strong repercussions. Are you user about this? +You're asking to change the level of access of this user. +This has strong repercussions. Are you user about this? + <formtemplate id="verif_edit_user"></formtemplate> Index: openacs-4/packages/dotlrn/www/admin/user-edit.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/user-edit.adp,v diff -u -r1.6 -r1.7 --- openacs-4/packages/dotlrn/www/admin/user-edit.adp 23 Jan 2002 00:15:44 -0000 1.6 +++ openacs-4/packages/dotlrn/www/admin/user-edit.adp 8 Feb 2002 20:50:57 -0000 1.7 @@ -3,6 +3,7 @@ <property name="context_bar">@context_bar@</property> You're editing <strong>@first_names@ @last_name@</strong>. -<p> +<p></p> + <formtemplate id="edit_user"></formtemplate> Index: openacs-4/packages/dotlrn/www/admin/user-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/user-edit.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/packages/dotlrn/www/admin/user-edit.tcl 1 Feb 2002 22:30:01 -0000 1.7 +++ openacs-4/packages/dotlrn/www/admin/user-edit.tcl 8 Feb 2002 20:50:57 -0000 1.8 @@ -1,5 +1,5 @@ ad_page_contract { - Edit a User + Edit a dotLRN user @author Ben Adida (ben@openforce.net) @author yon (yon@openforce.net) @@ -10,6 +10,11 @@ user_id } +set context_bar {{users Users} {Edit}} +set dotlrn_package_id [dotlrn::get_package_id] + +db_1row select_user_info {} + form create edit_user element create edit_user user_id \ @@ -18,150 +23,58 @@ -widget hidden \ -value $user_id -element create edit_user type_id \ +element create edit_user id \ + -label "ID" \ + -datatype text \ + -widget text \ + -value $id \ + -optional + +element create edit_user type \ -label "User Type" \ -datatype text \ -widget select \ - -options [dotlrn::get_user_types] + -options [dotlrn::get_user_types] \ + -value $type -element create edit_user rel_type \ - -label "Access" \ +element create edit_user access_level \ + -label "Access Level" \ -datatype text \ -widget select \ - -options {{{limited access} dotlrn_user_rel} {{full access} dotlrn_full_user_rel}} + -options {{"Full Access" "full"} {"Limited Access" "limited"}} \ + -value $access_level element create edit_user read_private_data_p \ -label "Can Access Private Information?" \ -datatype text \ -widget select \ - -options {{yes t} {no f}} + -options {{"Yes" "t"} {"No" "f"}} \ + -value $read_private_data_p element create edit_user referer \ -label "Referer" \ -datatype text \ -widget hidden \ -value $referer -# Create a form of hidden vars -form create verif_edit_user +if {[form is_valid edit_user]} { + form get_values edit_user \ + user_id id type access_level read_private_data_p referer -element create verif_edit_user user_id \ - -label "User ID" \ - -datatype integer \ - -widget hidden - -element create verif_edit_user type_id \ - -label "Type ID" \ - -datatype integer \ - -widget hidden - -element create verif_edit_user rel_type \ - -label "Relationship Type" \ - -datatype text \ - -widget hidden - -element create verif_edit_user read_private_data_p \ --label "Can Read Private Data?" \ - -datatype text \ - -widget hidden - -element create verif_edit_user referer \ - -label "Referer" \ - -datatype text \ - -widget hidden \ - -value $referer - -set context_bar {{users Users} {Edit}} -set dotlrn_package_id [dotlrn::get_package_id] - -# We verified everything, now we make the change -if {[form is_valid verif_edit_user]} { - form get_values verif_edit_user \ - user_id type_id rel_type read_private_data_p referer - - set rel_id [db_string select_rel_id { - select rel_id - from dotlrn_users - where user_id = :user_id - }] - db_transaction { # remove the user dotlrn::user_remove $user_id # add the user - dotlrn::user_add -rel_type $rel_type -user_id $user_id -type_id $type_id + dotlrn::user_add -id $id -type $type -access_level $access_level -user_id $user_id # Update permissions acs_privacy::set_user_read_private_data -user_id $user_id -object_id [dotlrn::get_package_id] -value $read_private_data_p } - ad_returnredirect $referer - ad_script_abort -} - - -if {[form is_valid edit_user]} { - form get_values edit_user \ - user_id type_id rel_type read_private_data_p referer - - # Do something - set new_rel_type $rel_type - - db_1row select_limited_user_info { - select first_names, - last_name, - object_type as old_rel_type - from dotlrn_users, - acs_objects - where dotlrn_users.user_id = :user_id - and dotlrn_users.rel_id = acs_objects.object_id - } - - set old_rel_type [db_string select_rel_type { - select 'dotlrn_full_user_rel' - from dual - where exists (select 1 - from dotlrn_full_users - where user_id = :user_id) - } -default "dotlrn_user_rel"] - - if {$new_rel_type == $old_rel_type} { - # Simply update things - db_transaction { - # Update straight user info - db_dml update_user {} - - # Update permissions - acs_privacy::set_user_read_private_data -user_id $user_id -object_id [dotlrn::get_package_id] -value $read_private_data_p - } - } else { - # Warn about the change - element set_properties verif_edit_user user_id -value $user_id - element set_properties verif_edit_user type_id -value $type_id - element set_properties verif_edit_user rel_type -value $rel_type - element set_properties verif_edit_user read_private_data_p -value $read_private_data_p - - ad_return_template "user-edit-verify" - return - } - # redirect ad_returnredirect $referer ad_script_abort } -db_1row select_user_info {} - -# set some values -element set_properties edit_user type_id -value $type_id - -if {$limited_access_p == "t"} { - element set_properties edit_user rel_type -value dotlrn_user_rel -} else { - element set_properties edit_user rel_type -value dotlrn_full_user_rel -} - -element set_properties edit_user read_private_data_p -value $read_private_data_p - ad_return_template Index: openacs-4/packages/dotlrn/www/admin/user-edit.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/Attic/user-edit.xql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/dotlrn/www/admin/user-edit.xql 10 Dec 2001 23:58:31 -0000 1.1 +++ openacs-4/packages/dotlrn/www/admin/user-edit.xql 8 Feb 2002 20:50:57 -0000 1.2 @@ -2,12 +2,14 @@ <queryset> -<fullquery name="update_user"> -<querytext> -update dotlrn_user_rels set -type_id= :type_id -where rel_id = (select rel_id from dotlrn_users where user_id= :user_id) -</querytext> -</fullquery> + <fullquery name="update_user"> + <querytext> + update dotlrn_user_profile_rels + set id = :id + where rel_id = (select rel_id + from dotlrn_users + where user_id = :user_id) + </querytext> + </fullquery> </queryset> Index: openacs-4/packages/dotlrn/www/admin/user-new-2.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/user-new-2.adp,v diff -u -r1.10 -r1.11 --- openacs-4/packages/dotlrn/www/admin/user-new-2.adp 23 Jan 2002 00:15:44 -0000 1.10 +++ openacs-4/packages/dotlrn/www/admin/user-new-2.adp 8 Feb 2002 20:50:57 -0000 1.11 @@ -3,6 +3,7 @@ <property name="context_bar">@context_bar@</property> You've chosen to add <strong>@first_names@ @last_name@</strong>. -<p> +<p></p> + <formtemplate id="add_user"></formtemplate> Index: openacs-4/packages/dotlrn/www/admin/user-new-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/user-new-2.tcl,v diff -u -r1.13 -r1.14 --- openacs-4/packages/dotlrn/www/admin/user-new-2.tcl 1 Feb 2002 22:20:50 -0000 1.13 +++ openacs-4/packages/dotlrn/www/admin/user-new-2.tcl 8 Feb 2002 20:50:57 -0000 1.14 @@ -1,5 +1,5 @@ ad_page_contract { - Choose a role + Create a dotLRN user @author Ben Adida (ben@openforce.net) @creation-date 2001-11-04 @@ -12,31 +12,49 @@ form create add_user element create add_user user_id \ - -label "User ID" -datatype integer -widget hidden -value $user_id + -label "User ID" \ + -datatype integer \ + -widget hidden \ + -value $user_id -element create add_user type_id \ - -label "User Type" -datatype text -widget select -options [dotlrn::get_user_types] +element create add_user id \ + -label "ID" \ + -datatype text \ + -widget text \ -element create add_user rel_type \ - -label "Access" -datatype text -widget select -options {{{limited access} dotlrn_user_rel} {{full access} dotlrn_full_user_rel}} +element create add_user type \ + -label "User Type" \ + -datatype text \ + -widget select \ + -options [dotlrn::get_user_types] +element create add_user access_level \ + -label "Access Level" \ + -datatype text \ + -widget select \ + -options {{"Full Access" "full"} {"Limited Access" "limited"}} + element create add_user read_private_data_p \ - -label "Can Access Private Information?" -datatype text -widget select -options {{yes t} {no f}} + -label "Can Access Private Information?" \ + -datatype text \ + -widget select \ + -options {{"Yes" "t"} {"No" "f"}} element create add_user referer \ - -label "Referer" -datatype text -widget hidden -value $referer + -label "Referer" \ + -datatype text \ + -widget hidden \ + -value $referer if {[form is_valid add_user]} { - template::form get_values add_user user_id type_id rel_type read_private_data_p referer + form get_values add_user \ + user_id id type access_level read_private_data_p referer db_transaction { - # add the user - dotlrn::user_add -rel_type $rel_type -user_id $user_id -type_id $type_id - + dotlrn::user_add -id $id -type $type -access_level $access_level -user_id $user_id acs_privacy::set_user_read_private_data -user_id $user_id -object_id [dotlrn::get_package_id] -value $read_private_data_p } - # redirect ad_returnredirect $referer ad_script_abort }