Index: openacs-4/packages/acs-admin/www/apm/version-dependencies.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/apm/version-dependencies.tcl,v
diff -u -N -r1.5 -r1.6
--- openacs-4/packages/acs-admin/www/apm/version-dependencies.tcl 5 Jan 2010 01:34:54 -0000 1.5
+++ openacs-4/packages/acs-admin/www/apm/version-dependencies.tcl 10 Mar 2010 00:44:03 -0000 1.6
@@ -13,7 +13,7 @@
"
-foreach dependency_type { provide extend require } {
+foreach dependency_type { provide require extend embed } {
set dependency_type_prep "${dependency_type}s"
if { [string index $dependency_type end] eq "e" } {
@@ -38,7 +38,7 @@
set sign [ad_decode $dependency_type "provide" "<=" ">="]
set counter 0
- set other_dependency_in [ad_decode $dependency_type "provide" "'requires','extends'" "'provides'"]
+ set other_dependency_in [ad_decode $dependency_type "provide" "'requires','extends','embeds'" "'provides'"]
db_foreach apm_specific_version_dependencies {} {
incr counter
if { $counter == 1 } {
@@ -48,6 +48,7 @@
provides { set dep_d provided }
requires { set dep_d required }
extends { set dep_d extended }
+ embeds { set dep_d embeds }
}
doc_body_append "
[string totitle $dep_d] by $dep_pretty_name, version $dep_version_name\n"
}
Index: openacs-4/packages/acs-admin/www/apm/version-dependency-add-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/apm/version-dependency-add-2.tcl,v
diff -u -N -r1.9 -r1.10
--- openacs-4/packages/acs-admin/www/apm/version-dependency-add-2.tcl 28 Feb 2010 02:22:34 -0000 1.9
+++ openacs-4/packages/acs-admin/www/apm/version-dependency-add-2.tcl 10 Mar 2010 00:44:03 -0000 1.10
@@ -30,8 +30,14 @@
apm_copy_inherited_params $our_package_key
}
+ embed {
+ apm_dependency_add -dependency_id $dependency_id ${dependency_type}s $version_id $package_key $version_name
+ apm_build_one_package_relationships $our_package_key
+ apm_copy_inherited_params $our_package_key
+ }
+
default {
- ad_return_complaint 1 "Entry error: Depenendencies are either provided or required."
+ ad_return_complaint 1 "Entry error: Allowable dependencies are required, extends and embeds."
}
}
} on_error {
Index: openacs-4/packages/acs-kernel/acs-kernel.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/acs-kernel.info,v
diff -u -N -r1.109 -r1.110
--- openacs-4/packages/acs-kernel/acs-kernel.info 5 Mar 2010 12:22:07 -0000 1.109
+++ openacs-4/packages/acs-kernel/acs-kernel.info 10 Mar 2010 00:44:03 -0000 1.110
@@ -7,15 +7,15 @@
t
t
-
+
OpenACS Core Team
Routines and data models providing the foundation for OpenACS-based Web services.
2009-06-19
OpenACS
The OpenACS kernel contains the core datamodel create and drop scripts for such things as objects, groups, partiies and the supporting PL/SQL and PL/pgSQL procedures.
3
-
+
Index: openacs-4/packages/acs-kernel/sql/oracle/apm-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/oracle/apm-create.sql,v
diff -u -N -r1.45 -r1.46
--- openacs-4/packages/acs-kernel/sql/oracle/apm-create.sql 20 Jan 2010 00:17:17 -0000 1.45
+++ openacs-4/packages/acs-kernel/sql/oracle/apm-create.sql 10 Mar 2010 00:44:03 -0000 1.46
@@ -562,6 +562,10 @@
references apm_package_types (package_key),
parameter_name varchar2(100)
constraint apm_pack_params_name_nn not null,
+ scope varchar2(20) default 'instance'
+ constraint apm_parameters_scope_ck
+ check (scope in ('global','instance'))
+ constraint apm_parameters_scope_nn not null,
description varchar2(2000),
section_name varchar2(200),
datatype varchar2(100)
@@ -595,6 +599,11 @@
This is the name of the parameter, for example "DebugP."
';
+comment on column apm_parameters.scope is '
+ If the scope is "global", only one value of the parameter exists for the entire site.
+ If "instance", each package instance has its own value.
+';
+
comment on column apm_parameters.description is '
A human readable description of what the parameter is used for.
';
@@ -764,7 +773,7 @@
dependency_type varchar2(20)
constraint apm_package_deps_type_nn not null
constraint apm_package_deps_type_ck
- check(dependency_type in ('extends', 'provides','requires')),
+ check(dependency_type in ('embeds', 'extends', 'provides','requires')),
service_uri varchar2(1500)
constraint apm_package_deps_uri_nn not null,
service_version varchar2(100)
@@ -1044,11 +1053,6 @@
default null
) return apm_packages.package_id%TYPE;
-function is_child(
- parent_package_key in apm_package_dependencies.service_uri%TYPE,
- child_package_key in apm_package_dependencies.service_uri%TYPE
-) return integer;
-
procedure del (
package_id in apm_packages.package_id%TYPE
);
@@ -1844,36 +1848,7 @@
end if;
end new;
-
-function is_child(
- parent_package_key in apm_package_dependencies.service_uri%TYPE,
- child_package_key in apm_package_dependencies.service_uri%TYPE
-) return integer
-is
- cursor dependencies is
- select apd.service_uri
- from apm_package_versions apv, apm_package_dependencies apd
- where apd.version_id = apv.version_id
- and apv.enabled_p = 't'
- and apd.dependency_type = 'extends'
- and apv.package_key = child_package_key;
-begin
-
- if parent_package_key = child_package_key then
- return 1;
- end if;
-
- for dependency in dependencies loop
- if dependency.service_uri = parent_package_key or
- apm_package.is_child(parent_package_key, dependency.service_uri) = 1 then
- return 1;
- end if;
- end loop;
-
- return 0;
-
-end;
-
+
procedure del (
package_id in apm_packages.package_id%TYPE
)
Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql,v
diff -u -N -r1.29 -r1.30
--- openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql 26 Jun 2009 00:38:33 -0000 1.29
+++ openacs-4/packages/acs-kernel/sql/postgresql/acs-metadata-create.sql 10 Mar 2010 00:44:03 -0000 1.30
@@ -61,7 +61,7 @@
return tree_sortkey from acs_object_types where object_type = p_object_type;
end;' language 'plpgsql';
-create function acs_object_type_insert_tr () returns opaque as '
+create function acs_object_type_insert_tr () returns trigger as '
declare
v_parent_sk varbit default null;
v_max_value integer;
@@ -84,7 +84,7 @@
on acs_object_types for each row
execute procedure acs_object_type_insert_tr ();
-create function acs_object_type_update_tr () returns opaque as '
+create function acs_object_type_update_tr () returns trigger as '
declare
v_parent_sk varbit default null;
v_max_value integer;
Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-objects-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-objects-create.sql,v
diff -u -N -r1.60 -r1.61
--- openacs-4/packages/acs-kernel/sql/postgresql/acs-objects-create.sql 16 Jul 2009 00:40:07 -0000 1.60
+++ openacs-4/packages/acs-kernel/sql/postgresql/acs-objects-create.sql 10 Mar 2010 00:44:03 -0000 1.61
@@ -258,7 +258,7 @@
create index acs_objects_object_type_idx on acs_objects (object_type);
-create function acs_objects_mod_ip_insert_tr () returns opaque as '
+create function acs_objects_mod_ip_insert_tr () returns trigger as '
begin
new.modifying_ip := new.creation_ip;
@@ -271,7 +271,7 @@
-- show errors
-create function acs_objects_last_mod_update_tr () returns opaque as '
+create function acs_objects_last_mod_update_tr () returns trigger as '
begin
if new.last_modified is null then
new.last_modified := old.last_modified;
@@ -293,7 +293,7 @@
return tree_sortkey from acs_objects where object_id = p_object_id;
end;' language 'plpgsql' stable strict;
-create function acs_objects_insert_tr() returns opaque as '
+create function acs_objects_insert_tr() returns trigger as '
declare
v_parent_sk varbit default null;
v_max_child_sortkey varbit;
@@ -323,7 +323,7 @@
execute procedure acs_objects_insert_tr ();
-create function acs_objects_update_tr () returns opaque as '
+create function acs_objects_update_tr () returns trigger as '
declare
v_parent_sk varbit default null;
v_max_child_sortkey varbit;
@@ -438,7 +438,7 @@
from acs_object_context_index
where object_id != ancestor_id;
-create or replace function acs_objects_context_id_in_tr () returns opaque as '
+create or replace function acs_objects_context_id_in_tr () returns trigger as '
declare
security_context_root integer;
begin
@@ -472,7 +472,7 @@
create trigger acs_objects_context_id_in_tr after insert on acs_objects
for each row execute procedure acs_objects_context_id_in_tr ();
-create or replace function acs_objects_context_id_up_tr () returns opaque as '
+create or replace function acs_objects_context_id_up_tr () returns trigger as '
declare
pair record;
outer record;
@@ -544,7 +544,7 @@
create trigger acs_objects_context_id_up_tr after update on acs_objects
for each row execute procedure acs_objects_context_id_up_tr ();
-create function acs_objects_context_id_del_tr () returns opaque as '
+create function acs_objects_context_id_del_tr () returns trigger as '
begin
delete from acs_object_context_index
where object_id = old.object_id;
Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-permissions-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-permissions-create.sql,v
diff -u -N -r1.33 -r1.34
--- openacs-4/packages/acs-kernel/sql/postgresql/acs-permissions-create.sql 13 Feb 2009 13:36:02 -0000 1.33
+++ openacs-4/packages/acs-kernel/sql/postgresql/acs-permissions-create.sql 10 Mar 2010 00:44:03 -0000 1.34
@@ -118,7 +118,7 @@
-- This would be better, since the same query could be used for both oracle
-- and postgresql.
-create or replace function acs_priv_hier_ins_del_tr () returns opaque as '
+create or replace function acs_priv_hier_ins_del_tr () returns trigger as '
declare
new_value integer;
new_key varbit default null;
@@ -190,7 +190,7 @@
on acs_privilege_hierarchy for each row
execute procedure acs_priv_hier_ins_del_tr ();
-create or replace function acs_priv_del_tr () returns opaque as '
+create or replace function acs_priv_del_tr () returns trigger as '
begin
delete from acs_privilege_descendant_map
@@ -418,7 +418,7 @@
lck integer
);
-create function acs_permissions_lock_tr () returns opaque as '
+create function acs_permissions_lock_tr () returns trigger as '
begin
raise EXCEPTION ''FOR LOCKING ONLY, NO DML STATEMENTS ALLOWED'';
return null;
Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-relationships-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-relationships-create.sql,v
diff -u -N -r1.30 -r1.31
--- openacs-4/packages/acs-kernel/sql/postgresql/acs-relationships-create.sql 6 Jan 2010 20:07:24 -0000 1.30
+++ openacs-4/packages/acs-kernel/sql/postgresql/acs-relationships-create.sql 10 Mar 2010 00:44:03 -0000 1.31
@@ -394,7 +394,7 @@
-- added by oumi@arsdigita.com - Jan 11, 2001
-create function acs_rels_in_tr () returns opaque as '
+create function acs_rels_in_tr () returns trigger as '
declare
dummy integer;
target_object_type_one acs_object_types.object_type%TYPE;
Index: openacs-4/packages/acs-kernel/sql/postgresql/apm-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/apm-create.sql,v
diff -u -N -r1.69 -r1.70
--- openacs-4/packages/acs-kernel/sql/postgresql/apm-create.sql 29 Dec 2008 21:02:29 -0000 1.69
+++ openacs-4/packages/acs-kernel/sql/postgresql/apm-create.sql 10 Mar 2010 00:44:03 -0000 1.70
@@ -708,6 +708,11 @@
datatype varchar(100) not null
constraint apm_parameters_datatype_ck
check(datatype in ('number', 'string','text')),
+ scope varchar(10) default 'instance'
+ constraint apm_parameters_scope_ck
+ check (scope in ('global','instance'))
+ constraint apm_parameters_scope_nn
+ not null,
default_value text,
min_n_values integer default 1 not null
constraint apm_parameters_min_n_values_ck
@@ -733,6 +738,11 @@
This is the name of the parameter, for example "DebugP."
';
+comment on column apm_parameters.scope is '
+ If the scope is "global", only one value of the parameter exists for the entire site.
+ If "instance", each package instance has its own value.
+';
+
comment on column apm_parameters.description is '
A human readable description of what the parameter is used for.
';
@@ -837,6 +847,22 @@
''f''
);
+attr_id := acs_attribute__create_attribute (
+ ''apm_parameter'',
+ ''scope'',
+ ''string'',
+ ''Scope'',
+ ''Scope'',
+ null,
+ null,
+ null,
+ 1,
+ 1,
+ null,
+ ''type_specific'',
+ ''f''
+ );
+
attr_id := acs_attribute__create_attribute (
''apm_parameter'',
''datatype'',
@@ -996,7 +1022,7 @@
dependency_type varchar(20)
constraint apm_package_deps_type_nn not null
constraint apm_package_deps_type_ck
- check(dependency_type in ('extends', 'provides','requires')),
+ check(dependency_type in ('embeds', 'extends', 'provides','requires')),
service_uri varchar(1500)
constraint apm_package_deps_uri_nn not null,
service_version varchar(100)
@@ -1307,18 +1333,19 @@
return 0;
end;' language 'plpgsql';
-create or replace function apm__register_parameter (integer,varchar,varchar,varchar,varchar,varchar,varchar,integer,integer)
+create or replace function apm__register_parameter (integer,varchar,varchar,varchar,varchar,varchar,varchar,varchar,integer,integer)
returns integer as '
declare
register_parameter__parameter_id alias for $1; -- default null
register_parameter__package_key alias for $2;
register_parameter__parameter_name alias for $3;
- register_parameter__description alias for $4; -- default null
- register_parameter__datatype alias for $5; -- default ''string''
- register_parameter__default_value alias for $6; -- default null
- register_parameter__section_name alias for $7; -- default null
- register_parameter__min_n_values alias for $8; -- default 1
- register_parameter__max_n_values alias for $9; -- default 1
+ register_parameter__scope alias for $4;
+ register_parameter__description alias for $5; -- default null
+ register_parameter__datatype alias for $6; -- default ''string''
+ register_parameter__default_value alias for $7; -- default null
+ register_parameter__section_name alias for $8; -- default null
+ register_parameter__min_n_values alias for $9; -- default 1
+ register_parameter__max_n_values alias for $10; -- default 1
v_parameter_id apm_parameters.parameter_id%TYPE;
v_value_id apm_parameter_values.value_id%TYPE;
@@ -1339,10 +1366,10 @@
);
insert into apm_parameters
- (parameter_id, parameter_name, description, package_key, datatype,
+ (parameter_id, parameter_name, scope, description, package_key, datatype,
default_value, section_name, min_n_values, max_n_values)
values
- (v_parameter_id, register_parameter__parameter_name,
+ (v_parameter_id, register_parameter__parameter_name, register_parameter__scope,
register_parameter__description, register_parameter__package_key,
register_parameter__datatype, register_parameter__default_value,
register_parameter__section_name, register_parameter__min_n_values,
@@ -1366,6 +1393,30 @@
end;' language 'plpgsql';
+-- For backwards compatibility, register a parameter with "instance" scope.
+
+create or replace function apm__register_parameter (integer,varchar,varchar,varchar,varchar,varchar,varchar,integer,integer)
+returns integer as '
+declare
+ register_parameter__parameter_id alias for $1; -- default null
+ register_parameter__package_key alias for $2;
+ register_parameter__parameter_name alias for $3;
+ register_parameter__description alias for $4; -- default null
+ register_parameter__datatype alias for $5; -- default ''string''
+ register_parameter__default_value alias for $6; -- default null
+ register_parameter__section_name alias for $7; -- default null
+ register_parameter__min_n_values alias for $8; -- default 1
+ register_parameter__max_n_values alias for $9; -- default 1
+
+begin
+ return
+ apm__register_parameter(register_parameter__parameter_id, register_parameter__package_key,
+ register_parameter__parameter_name, ''instance'',
+ register_parameter__description, register_parameter__datatype,
+ register_parameter__default_value, register_parameter__section_name,
+ register_parameter__min_n_values, register_parameter__max_n_values);
+end;' language 'plpgsql';
+
-- function update_parameter
create or replace function apm__update_parameter (integer,varchar,varchar,varchar,varchar,varchar,integer,integer)
returns varchar as '
@@ -1468,40 +1519,99 @@
end;' language 'plpgsql' stable strict;
+create or replace function apm__id_for_name (integer,varchar)
+returns integer as '
+declare
+ id_for_name__package_id alias for $1;
+ id_for_name__parameter_name alias for $2;
+ a_parameter_id apm_parameters.parameter_id%TYPE;
+begin
+ select parameter_id into a_parameter_id
+ from apm_parameters
+ where parameter_name = id_for_name__parameter_name
+ and package_key = (select package_key from apm_packages
+ where package_id = id_for_name__package_id);
--- function get_value
+ if NOT FOUND
+ then
+ raise EXCEPTION ''-20000: The specified package % AND/OR parameter % do not exist in the system'', id_for_name__package_id, id_for_name__parameter_name;
+ end if;
+
+ return a_parameter_id;
+
+end;' language 'plpgsql' stable strict;
+
+create or replace function apm__id_for_name (varchar,varchar)
+returns integer as '
+declare
+ id_for_name__package_key alias for $1;
+ id_for_name__parameter_name alias for $2;
+ a_parameter_id apm_parameters.parameter_id%TYPE;
+begin
+ select parameter_id into a_parameter_id
+ from apm_parameters p
+ where p.parameter_name = id_for_name__parameter_name and
+ p.package_key = id_for_name__package_key;
+
+ if NOT FOUND
+ then
+ raise EXCEPTION ''-20000: The specified package % AND/OR parameter % do not exist in the system'', id_for_name__package_key, id_for_name__parameter_name;
+ end if;
+
+ return a_parameter_id;
+
+end;' language 'plpgsql' stable strict;
+
create or replace function apm__get_value (integer,varchar)
returns varchar as '
declare
get_value__package_id alias for $1;
get_value__parameter_name alias for $2;
v_parameter_id apm_parameter_values.parameter_id%TYPE;
+ value apm_parameter_values.attr_value%TYPE;
begin
- select parameter_id into v_parameter_id
- from apm_parameters
- where parameter_name = get_value__parameter_name
- and package_key = (select package_key from apm_packages
- where package_id = get_value__package_id);
- return apm__get_value(
- v_parameter_id,
- get_value__package_id
- );
+ v_parameter_id := apm__id_for_name (get_value__package_id, get_value__parameter_name);
+
+ select attr_value into value from apm_parameter_values v
+ where v.package_id = get_value__package_id
+ and parameter_id = get_value__parameter_id;
+
+ return value;
end;' language 'plpgsql' stable strict;
+create or replace function apm__get_value (varchar,varchar)
+returns varchar as '
+declare
+ get_value__package_key alias for $1;
+ get_value__parameter_name alias for $2;
+ v_parameter_id apm_parameter_values.parameter_id%TYPE;
+ value apm_parameter_values.attr_value%TYPE;
+begin
+ v_parameter_id := apm__id_for_name (get_value__package_key, get_value__parameter_name);
--- procedure set_value
-create or replace function apm__set_value (integer,integer,varchar)
+ select attr_value into value from apm_parameter_values v
+ where v.package_id is null
+ and parameter_id = get_value__parameter_id;
+
+ return value;
+
+end;' language 'plpgsql' stable strict;
+
+create or replace function apm__set_value (integer,varchar,varchar)
returns integer as '
declare
- set_value__parameter_id alias for $1;
- set_value__package_id alias for $2;
+ set_value__package_id alias for $1;
+ set_value__parameter_name alias for $2;
set_value__attr_value alias for $3;
+ v_parameter_id apm_parameter_values.parameter_id%TYPE;
v_value_id apm_parameter_values.value_id%TYPE;
begin
+ v_parameter_id := apm__id_for_name (set_value__package_id, set_value__parameter_name);
+
-- Determine if the value exists
select value_id into v_value_id from apm_parameter_values
- where parameter_id = set_value__parameter_id
+ where parameter_id = v_parameter_id
and package_id = set_value__package_id;
update apm_parameter_values set attr_value = set_value__attr_value
where value_id = v_value_id;
@@ -1513,51 +1623,47 @@
v_value_id := apm_parameter_value__new(
null,
set_value__package_id,
- set_value__parameter_id,
+ v_parameter_id,
set_value__attr_value
);
end if;
- return 0;
+ return 0;
end;' language 'plpgsql';
-
--- procedure set_value
-create or replace function apm__set_value (integer,varchar,varchar)
+create or replace function apm__set_value (varchar,varchar,varchar)
returns integer as '
declare
- set_value__package_id alias for $1;
+ set_value__package_key alias for $1;
set_value__parameter_name alias for $2;
set_value__attr_value alias for $3;
v_parameter_id apm_parameter_values.parameter_id%TYPE;
+ v_value_id apm_parameter_values.value_id%TYPE;
begin
- select parameter_id into v_parameter_id
- from apm_parameters
- where parameter_name = set_value__parameter_name
- and package_key = (select package_key from apm_packages
- where package_id = set_value__package_id);
+ v_parameter_id := apm__id_for_name (set_value__package_key, set_value__parameter_name);
- if NOT FOUND
- then
- raise EXCEPTION ''-20000: The specified package % AND/OR parameter % do not exist in the system'', set_value__package_id, set_value__parameter_name;
- end if;
+ -- Determine if the value exists
+ select value_id into v_value_id from apm_parameter_values
+ where parameter_id = v_parameter_id
+ and package_id is null;
+ update apm_parameter_values set attr_value = set_value__attr_value
+ where value_id = v_value_id;
+ update acs_objects set last_modified = now()
+ where object_id = v_value_id;
+ -- exception
+ if NOT FOUND
+ then
+ v_value_id := apm_parameter_value__new(
+ null,
+ null,
+ v_parameter_id,
+ set_value__attr_value
+ );
+ end if;
- PERFORM apm__set_value(
- v_parameter_id,
- set_value__package_id,
- set_value__attr_value
- );
-
return 0;
end;' language 'plpgsql';
-
-
--- show errors
-
--- create or replace package body apm_package
--- procedure initialize_parameters
-
create or replace function apm_package__is_child(varchar, varchar) returns boolean as '
declare
parent_package_key alias for $1;
@@ -1574,7 +1680,7 @@
from apm_package_versions apv, apm_package_dependencies apd
where apd.version_id = apv.version_id
and apv.enabled_p
- and apd.dependency_type = ''extends''
+ and apd.dependency_type in (''embeds'', ''extends'')
and apv.package_key = child_package_key
loop
if dependency.service_uri = parent_package_key or
@@ -2586,6 +2692,3 @@
return 0;
end;' language 'plpgsql';
-
-
--- show errors
Index: openacs-4/packages/acs-kernel/sql/postgresql/groups-body-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/groups-body-create.sql,v
diff -u -N -r1.31 -r1.32
--- openacs-4/packages/acs-kernel/sql/postgresql/groups-body-create.sql 12 Feb 2009 02:27:02 -0000 1.31
+++ openacs-4/packages/acs-kernel/sql/postgresql/groups-body-create.sql 10 Mar 2010 00:44:03 -0000 1.32
@@ -15,18 +15,18 @@
-- However, PG 7.3 introduces a new type "trigger" for the return type
-- needed for functions called by triggers. "create function" transmorgifies
--- the return type "opaque" to "trigger" so PG 7.2 dumps can be restored into
+-- the return type "trigger" to "trigger" so PG 7.2 dumps can be restored into
-- PG 7.3. But "create or replace" doesn't do it. We can't use "trigger"
-- because we currently are still supporting PG 7.2. Isn't life a pleasure?
-- I'm leaving the triggers we aren't overriding as "create or replace" because
-- this will be the right thing to do if the PG folks fix this problem or when
--- we drop support of PG 7.2 and no longer need to declare these as type "opaque"
+-- we drop support of PG 7.2 and no longer need to declare these as type "trigger"
drop trigger membership_rels_in_tr on membership_rels;
drop function membership_rels_in_tr ();
-create or replace function membership_rels_in_tr () returns opaque as '
+create or replace function membership_rels_in_tr () returns trigger as '
declare
v_object_id_one acs_rels.object_id_one%TYPE;
v_object_id_two acs_rels.object_id_two%TYPE;
@@ -85,7 +85,7 @@
create trigger membership_rels_in_tr after insert on membership_rels
for each row execute procedure membership_rels_in_tr ();
-create or replace function membership_rels_up_tr () returns opaque as '
+create or replace function membership_rels_up_tr () returns trigger as '
declare
map record;
begin
@@ -112,7 +112,7 @@
create trigger membership_rels_up_tr before update on membership_rels
for each row execute procedure membership_rels_up_tr ();
-create or replace function membership_rels_del_tr () returns opaque as '
+create or replace function membership_rels_del_tr () returns trigger as '
declare
v_error text;
map record;
@@ -143,7 +143,7 @@
drop trigger composition_rels_in_tr on composition_rels;
drop function composition_rels_in_tr ();
-create or replace function composition_rels_in_tr () returns opaque as '
+create or replace function composition_rels_in_tr () returns trigger as '
declare
v_object_id_one acs_rels.object_id_one%TYPE;
v_object_id_two acs_rels.object_id_two%TYPE;
@@ -253,7 +253,7 @@
-- TO DO: See if this can be optimized now that the member and component
-- mapping tables have been combined
--
-create or replace function composition_rels_del_tr () returns opaque as '
+create or replace function composition_rels_del_tr () returns trigger as '
declare
v_object_id_one acs_rels.object_id_one%TYPE;
v_object_id_two acs_rels.object_id_two%TYPE;
Index: openacs-4/packages/acs-kernel/sql/postgresql/groups-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/groups-create.sql,v
diff -u -N -r1.26 -r1.27
--- openacs-4/packages/acs-kernel/sql/postgresql/groups-create.sql 10 Feb 2009 18:31:54 -0000 1.26
+++ openacs-4/packages/acs-kernel/sql/postgresql/groups-create.sql 10 Mar 2010 00:44:03 -0000 1.27
@@ -412,7 +412,7 @@
-- sourced. That file will replace these triggers with triggers
-- that actually do useful work
-create function membership_rels_in_tr () returns opaque as '
+create function membership_rels_in_tr () returns trigger as '
declare
begin
raise EXCEPTION ''-20000: Insert to membership rels not yet supported'';
@@ -427,7 +427,7 @@
-- show errors
-create function composition_rels_in_tr () returns opaque as '
+create function composition_rels_in_tr () returns trigger as '
declare
begin
raise EXCEPTION ''-20000: Insert to composition rels not yet supported'';
Index: openacs-4/packages/acs-kernel/sql/postgresql/lob.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/lob.sql,v
diff -u -N -r1.5 -r1.6
--- openacs-4/packages/acs-kernel/sql/postgresql/lob.sql 24 Jul 2004 14:44:55 -0000 1.5
+++ openacs-4/packages/acs-kernel/sql/postgresql/lob.sql 10 Mar 2010 00:44:03 -0000 1.6
@@ -24,7 +24,7 @@
refcount integer not null default 0
);
-create or replace function on_lobs_delete() returns opaque as '
+create or replace function on_lobs_delete() returns trigger as '
begin
delete from lob_data where lob_id = old.lob_id;
return old;
@@ -51,7 +51,7 @@
-- and PG 7.0. The ACS doesn't share LOBs between tables
-- or rows within a table anyway, I don't think/hope.
-create or replace function on_lob_ref() returns opaque as '
+create or replace function on_lob_ref() returns trigger as '
begin
if TG_OP = ''UPDATE'' then
if new.lob = old.lob then
Index: openacs-4/packages/acs-kernel/sql/postgresql/rel-constraints-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/rel-constraints-create.sql,v
diff -u -N -r1.16 -r1.17
--- openacs-4/packages/acs-kernel/sql/postgresql/rel-constraints-create.sql 25 Sep 2006 17:59:16 -0000 1.16
+++ openacs-4/packages/acs-kernel/sql/postgresql/rel-constraints-create.sql 10 Mar 2010 00:44:03 -0000 1.17
@@ -496,7 +496,7 @@
create index rc_segment_required_seg_idx on
rc_segment_required_seg_map(required_rel_segment);
-create function rel_constraints_ins_tr () returns opaque as '
+create function rel_constraints_ins_tr () returns trigger as '
declare
v_rec record;
begin
@@ -539,7 +539,7 @@
on rel_constraints for each row
execute procedure rel_constraints_ins_tr ();
-create function rel_constraints_del_tr () returns opaque as '
+create function rel_constraints_del_tr () returns trigger as '
declare
v_rec record;
begin
Index: openacs-4/packages/acs-kernel/sql/postgresql/rel-segments-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/rel-segments-create.sql,v
diff -u -N -r1.13 -r1.14
--- openacs-4/packages/acs-kernel/sql/postgresql/rel-segments-create.sql 25 Sep 2006 17:21:43 -0000 1.13
+++ openacs-4/packages/acs-kernel/sql/postgresql/rel-segments-create.sql 10 Mar 2010 00:44:03 -0000 1.14
@@ -276,7 +276,7 @@
-- destroyed. These don't call the above helper functions because we're just
-- creating the identity row for the party.
-create or replace function parties_in_tr () returns opaque as '
+create or replace function parties_in_tr () returns trigger as '
begin
insert into party_approved_member_map
@@ -291,7 +291,7 @@
create trigger parties_in_tr after insert on parties
for each row execute procedure parties_in_tr ();
-create or replace function parties_del_tr () returns opaque as '
+create or replace function parties_del_tr () returns trigger as '
begin
delete from party_approved_member_map
@@ -311,7 +311,7 @@
-- group with that rel_type. This was intentional on the part of the aD folks
-- who added relational segments to ACS 4.2.
-create or replace function rel_segments_in_tr () returns opaque as '
+create or replace function rel_segments_in_tr () returns trigger as '
begin
insert into party_approved_member_map
@@ -328,7 +328,7 @@
create trigger rel_segments_in_tr before insert on rel_segments
for each row execute procedure rel_segments_in_tr ();
-create or replace function rel_segments_del_tr () returns opaque as '
+create or replace function rel_segments_del_tr () returns trigger as '
begin
delete from party_approved_member_map
Index: openacs-4/packages/acs-kernel/sql/postgresql/site-nodes-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/site-nodes-create.sql,v
diff -u -N -r1.21 -r1.22
--- openacs-4/packages/acs-kernel/sql/postgresql/site-nodes-create.sql 18 Jun 2004 18:21:57 -0000 1.21
+++ openacs-4/packages/acs-kernel/sql/postgresql/site-nodes-create.sql 10 Mar 2010 00:44:03 -0000 1.22
@@ -69,7 +69,7 @@
return tree_sortkey from site_nodes where node_id = p_node_id;
end;' language 'plpgsql' stable strict;
-create or replace function site_node_insert_tr () returns opaque as '
+create or replace function site_node_insert_tr () returns trigger as '
declare
v_parent_sk varbit default null;
v_max_value integer;
@@ -98,7 +98,7 @@
on site_nodes for each row
execute procedure site_node_insert_tr ();
-create or replace function site_node_update_tr () returns opaque as '
+create or replace function site_node_update_tr () returns trigger as '
declare
v_parent_sk varbit default null;
v_max_value integer;
Index: openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.6.0d5-5.6.0d6.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.6.0d5-5.6.0d6.sql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.6.0d5-5.6.0d6.sql 10 Mar 2010 00:44:03 -0000 1.1
@@ -0,0 +1,28 @@
+create or replace function apm_package__is_child(varchar, varchar) returns boolean as '
+declare
+ parent_package_key alias for $1;
+ child_package_key alias for $2;
+ dependency record;
+begin
+
+ if parent_package_key = child_package_key then
+ return ''t'';
+ end if;
+
+ for dependency in
+ select apd.service_uri
+ from apm_package_versions apv, apm_package_dependencies apd
+ where apd.version_id = apv.version_id
+ and apv.enabled_p
+ and apd.dependency_type in (''embeds'', ''extends'')
+ and apv.package_key = child_package_key
+ loop
+ if dependency.service_uri = parent_package_key or
+ apm_package__is_child(parent_package_key, dependency.service_uri) then
+ return ''t'';
+ end if;
+ end loop;
+
+ return ''f'';
+end;' language 'plpgsql';
+
Index: openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.tcl,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.tcl 2 Jan 2010 14:04:00 -0000 1.3
+++ openacs-4/packages/acs-object-management/www/admin/widget-add-edit-2.tcl 10 Mar 2010 00:44:03 -0000 1.4
@@ -126,4 +126,4 @@
ad_script_abort
}
-template::head::add_javascript -src widget-add-edit-2.js
\ No newline at end of file
+template::head::add_javascript -src widget-add-edit-2.js
Index: openacs-4/packages/acs-tcl/tcl/apm-install-procs-oracle.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-install-procs-oracle.xql,v
diff -u -N -r1.16 -r1.17
--- openacs-4/packages/acs-tcl/tcl/apm-install-procs-oracle.xql 19 Jan 2010 22:54:25 -0000 1.16
+++ openacs-4/packages/acs-tcl/tcl/apm-install-procs-oracle.xql 10 Mar 2010 00:44:03 -0000 1.17
@@ -259,6 +259,16 @@
+
+
+ begin
+ :1 := apm.parameter_p(
+ :descendent_package_key,
+ :parameter_name);
+ end;
+
+
+
begin
@@ -276,6 +286,16 @@
+
+
+ begin
+ :1 := apm.parameter_p(
+ :new_package_key,
+ :parameter_name);
+ end;
+
+
+
begin
Index: openacs-4/packages/acs-tcl/tcl/apm-install-procs-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-install-procs-postgresql.xql,v
diff -u -N -r1.17 -r1.18
--- openacs-4/packages/acs-tcl/tcl/apm-install-procs-postgresql.xql 19 Jan 2010 22:32:39 -0000 1.17
+++ openacs-4/packages/acs-tcl/tcl/apm-install-procs-postgresql.xql 10 Mar 2010 00:44:03 -0000 1.18
@@ -200,6 +200,12 @@
+
+
+ select apm__parameter_p(:descendent_package_key, :parameter_name);
+
+
+
select apm__register_parameter(null, :descendent_package_key, :parameter_name,
@@ -208,6 +214,12 @@
+
+
+ select apm__parameter_p(:new_package_key, :parameter_name);
+
+
+
select apm__register_parameter(null, :new_package_key, :parameter_name, :description,
Index: openacs-4/packages/acs-tcl/tcl/apm-install-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-install-procs.tcl,v
diff -u -N -r1.100 -r1.101
--- openacs-4/packages/acs-tcl/tcl/apm-install-procs.tcl 19 Jan 2010 22:32:39 -0000 1.100
+++ openacs-4/packages/acs-tcl/tcl/apm-install-procs.tcl 10 Mar 2010 00:44:03 -0000 1.101
@@ -124,20 +124,21 @@
}
}
-ad_proc -private pkg_info_new { package_key spec_file_path extends provides requires {dependency_p ""} {comment ""}} {
+ad_proc -private pkg_info_new { package_key spec_file_path embeds extends provides requires {dependency_p ""} {comment ""}} {
Returns a datastructure that maintains information about a package.
@param package_key The key of the package.
@param spec_file_path The path to the package specification file
- @param extends A list of packages extended by the package..
+ @param embeds A list of packages to be embedded in the package.
+ @param extends A list of packages extended by the package.
@param provides A list of dependencies provided by the package.
@param requires A list of requirements provided by the package..
@param dependency_p Can the package be installed without violating dependency checking.
@param comment Some text about the package. Useful to explain why it fails dependency check.
@return a list whose first element is a package key and whose second element is a path
to the associated .info file.
} {
- return [list $package_key $spec_file_path $extends $provides $requires $dependency_p $comment]
+ return [list $package_key $spec_file_path $embeds $extends $provides $requires $dependency_p $comment]
}
ad_proc -private pkg_info_key {pkg_info} {
@@ -167,44 +168,52 @@
return [file dirname [pkg_info_spec $pkg_info]]
}
-ad_proc -private pkg_info_extends {pkg_info} {
+ad_proc -private pkg_info_embeds {pkg_info} {
- @return The dependencies provided by the package.
+ @return The "embeds" dependencies of the package.
} {
return [lindex $pkg_info 2]
}
+ad_proc -private pkg_info_extends {pkg_info} {
+
+ @return The "extends" dependencies of the package.
+
+} {
+ return [lindex $pkg_info 3]
+}
+
ad_proc -private pkg_info_provides {pkg_info} {
@return The dependencies provided by the package.
} {
- return [lindex $pkg_info 3]
+ return [lindex $pkg_info 4]
}
ad_proc -private pkg_info_requires {pkg_info} {
- @return The dependencies required by the package info map.
+ @return The dependencies "requires" dependencies of the package.
} {
- return [lindex $pkg_info 4]
+ return [lindex $pkg_info 5]
}
ad_proc -private pkg_info_dependency_p {pkg_info} {
@return Does it pass the dependency checker? "" Means it has not been run yet.
} {
- return [lindex $pkg_info 5]
+ return [lindex $pkg_info 6]
}
ad_proc -private pkg_info_comment {pkg_info} {
@return Any comment specified about this package.
} {
- return [lindex $pkg_info 6]
+ return [lindex $pkg_info 7]
}
# DRB: This routine does more than check dependencies, it also parses spec files,
@@ -256,7 +265,9 @@
[apm_package_supports_rdbms_p -package_key $package(package.key)] } {
lappend install_pend [pkg_info_new \
$package(package.key) \
- $spec_file $package(extends) \
+ $spec_file \
+ $package(embeds) \
+ $package(extends) \
$package(provides) \
$package(requires) \
""]
@@ -298,7 +309,7 @@
# Now determine if we can add another package to the install set.
foreach pkg_info $install_pend {
set satisfied_p 1
- foreach req [concat [pkg_info_extends $pkg_info] [pkg_info_requires $pkg_info]] {
+ foreach req [concat [pkg_info_embeds $pkg_info] [pkg_info_extends $pkg_info] [pkg_info_requires $pkg_info]] {
if {[apm_dependency_provided_p -dependency_list $install_in_provides \
[lindex $req 0] [lindex $req 1]] != 1} {
# Unsatisfied dependency.
@@ -318,6 +329,7 @@
lappend install_in [pkg_info_new \
[pkg_info_key $pkg_info] \
[pkg_info_spec $pkg_info] \
+ [pkg_info_embeds $pkg_info] \
[pkg_info_extends $pkg_info] \
[pkg_info_provides $pkg_info] \
[pkg_info_requires $pkg_info] \
@@ -340,7 +352,7 @@
foreach pkg_info $install_pend {
set satisfied_p 1
- foreach req [concat [pkg_info_extends $pkg_info] [pkg_info_requires $pkg_info]] {
+ foreach req [concat [pkg_info_embeds $pkg_info] [pkg_info_extends $pkg_info] [pkg_info_requires $pkg_info]] {
set counter 0
foreach pkg_info_add $pkg_info_all {
# Will this package do anything to change whether this requirement has been satisfied?
@@ -381,8 +393,8 @@
if { [exists_and_not_null install_pend] } {
foreach pkg_info $install_pend {
lappend install_in [pkg_info_new [pkg_info_key $pkg_info] [pkg_info_spec $pkg_info] \
- [pkg_info_extends $pkg_info] [pkg_info_provides $pkg_info] \
- [pkg_info_requires $pkg_info] \
+ [pkg_info_embeds $pkg_info] [pkg_info_extends $pkg_info] \
+ [pkg_info_provides $pkg_info] [pkg_info_requires $pkg_info] \
"f" $install_error([pkg_info_key $pkg_info])]
}
return [list 0 $install_in]
@@ -480,14 +492,14 @@
array set version $repository($package_key)
set satisfied_p 1
- foreach req [concat $version(extends) $version(requires)] {
+ foreach req [concat $version(embeds) $version(extends) $version(requires)] {
set req_uri [lindex $req 0]
set req_version [lindex $req 1]
if { ![info exists provided($req_uri)] || \
[apm_version_names_compare $provided($req_uri) $req_version]== -1 } {
- ns_log Debug "apm_dependency_check_new: $package_key extends or requires $req_uri $req_version => failed"
+ ns_log Debug "apm_dependency_check_new: $package_key embeds, extends or requires $req_uri $req_version => failed"
set satisfied_p 0
@@ -497,7 +509,7 @@
set required($req_uri) $req_version
}
} else {
- ns_log Debug "apm_dependency_check_new: $package_key extends or requires $req_uri $req_version => OK"
+ ns_log Debug "apm_dependency_check_new: $package_key embeds, extends or requires $req_uri $req_version => OK"
}
}
@@ -609,16 +621,16 @@
lappend result(packages) $package_key
# Find unsatisfied requirements
- foreach req [concat $version(extends) $version(requires)] {
+ foreach req [concat $version(embeds) $version(extends) $version(requires)] {
set req_uri [lindex $req 0]
set req_version [lindex $req 1]
if { ![info exists provided($req_uri)] || \
[apm_version_names_compare $provided($req_uri) $req_version] == -1 } {
lappend failed($package_key) [list $req_uri $req_version]
if { [info exists provided($req_uri)] } {
- ns_log Debug "apm_dependency_check_new: Failed dependency: $package_key extends/requires $req_uri $req_version, but we only provide $provided($req_uri)"
+ ns_log Debug "apm_dependency_check_new: Failed dependency: $package_key embeds/extends/requires $req_uri $req_version, but we only provide $provided($req_uri)"
} else {
- ns_log Debug "apm_dependency_check_new: Failed dependency: $package_key extends/requires $req_uri $req_version, but we don't have it"
+ ns_log Debug "apm_dependency_check_new: Failed dependency: $package_key embeds/extends/requires $req_uri $req_version, but we don't have it"
}
}
}
@@ -694,6 +706,7 @@
# satisfaction later
lappend pkg_info_list [pkg_info_new $package(package.key) \
$spec_file \
+ $package(embeds) \
$package(extends) \
$package(provides) \
$package(requires) \
@@ -878,7 +891,7 @@
# Update all other package information.
apm_package_install_dependencies -callback $callback \
- $version(extends) $version(provides) $version(requires) $version_id
+ $version(embeds) $version(extends) $version(provides) $version(requires) $version_id
apm_package_install_owners -callback $callback $version(owners) $version_id
apm_package_install_callbacks -callback $callback $version(callbacks) $version_id
apm_build_one_package_relationships $package_key
@@ -974,24 +987,32 @@
return $version_id
}
-
ad_proc apm_copy_descendent_params { new_package_key } {
Copy new parameters in the package to its descendents. Called when a package is
upgraded.
} {
foreach descendent_package_key [nsv_get apm_package_descendents $new_package_key] {
db_foreach descendent_params {} {
- db_exec_plsql copy_descendent_param {}
+ if { [db_exec_plsql param_exists {}] } {
+ error "$parameter_name already exists in package $descendent_package_key"
+ } else {
+ db_exec_plsql copy_descendent_param {}
+ }
}
}
}
ad_proc apm_copy_inherited_params { new_package_key } {
- Copy parameters from a packages ancestors. Called for an "extends" dependency.
+ Copy parameters from a packages ancestors. Called for "embeds" and "extends"
+ dependencies.
} {
- foreach inherited_package_key [nsv_get apm_package_inherit_order $new_package_key] {
+ foreach inherited_package_key [lrange [nsv_get apm_package_inherit_order $new_package_key] 0 end-1] {
db_foreach inherited_params {} {
- db_exec_plsql copy_inherited_param {}
+ if { [db_exec_plsql param_exists {}] } {
+ error "$parameter_name already exists in package $package_key"
+ } else {
+ db_exec_plsql copy_inherited_param {}
+ }
}
}
}
@@ -1319,7 +1340,8 @@
}
}
-ad_proc -private apm_package_install_dependencies { {-callback apm_dummy_callback} extends provides requires version_id} {
+ad_proc -private apm_package_install_dependencies { {-callback apm_dummy_callback} embeds \
+ extends provides requires version_id} {
Install all package dependencies.
@@ -1342,6 +1364,13 @@
apm_interface_add $version_id $interface_uri $interface_version
}
+ foreach item $embeds {
+ set dependency_uri [lindex $item 0]
+ set dependency_version [lindex $item 1]
+ ns_log Debug "apm_package_install_dependencies: Registering dependency $dependency_uri, $dependency_version for $version_id"
+ apm_dependency_add embeds $version_id $dependency_uri $dependency_version
+ }
+
foreach item $extends {
set dependency_uri [lindex $item 0]
set dependency_version [lindex $item 1]
@@ -2031,7 +2060,7 @@
-parent_node $package_node \
-array version
- foreach dependency_type { provides requires extends } {
+ foreach dependency_type { provides requires embeds extends } {
set version($dependency_type) {}
foreach dependency_node [xml_node_get_children_by_name $package_node "$dependency_type"] {
lappend version($dependency_type) \
Index: openacs-4/packages/acs-tcl/tcl/apm-install-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-install-procs.xql,v
diff -u -N -r1.6 -r1.7
--- openacs-4/packages/acs-tcl/tcl/apm-install-procs.xql 19 Jan 2010 22:32:39 -0000 1.6
+++ openacs-4/packages/acs-tcl/tcl/apm-install-procs.xql 10 Mar 2010 00:44:03 -0000 1.7
@@ -94,10 +94,6 @@
select ap.*
from apm_parameters ap
where package_key = :new_package_key
- and not exists (select 1
- from apm_parameters ap2
- where ap2.parameter_name = ap.parameter_name
- and ap2.package_key = :descendent_package_key)
@@ -106,10 +102,6 @@
select ap.*
from apm_parameters ap
where package_key = :inherited_package_key
- and not exists (select 1
- from apm_parameters ap2
- where ap2.parameter_name = ap.parameter_name
- and ap2.package_key = :new_package_key)
Index: openacs-4/packages/acs-tcl/tcl/apm-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-procs.tcl,v
diff -u -N -r1.83 -r1.84
--- openacs-4/packages/acs-tcl/tcl/apm-procs.tcl 12 Jul 2009 01:08:30 -0000 1.83
+++ openacs-4/packages/acs-tcl/tcl/apm-procs.tcl 10 Mar 2010 00:44:03 -0000 1.84
@@ -177,29 +177,41 @@
}
-ad_proc apm_package_list_search_order {
+ad_proc apm_package_list_url_resolution {
package_list
} {
- Left-right, breadth-first traverse of the inheritance DAG.
+ Use a left-right, breadth-first traverse of the inheritance DAG to build a
+ structure to be used by the request processor to resolve URLs based on a
+ package's "extends" and "embeds" dependencies.
} {
global apm_visited_package_keys
- global apm_package_search_order
+ global apm_package_url_resolution
- foreach package_key $package_list {
+ foreach package $package_list {
+ foreach {package_key dependency_type} $package {}
if { [info exists apm_visited_package_keys($package_key)] } {
continue
}
- lappend apm_package_search_order $package_key
+ switch $dependency_type {
+ extends -
+ "" { lappend apm_package_url_resolution [acs_root_dir]/packages/$package_key/www }
+ embeds { lappend apm_package_url_resolution \
+ [list [acs_root_dir]/packages/$package_key/embed $package_key]
+ }
+ default {
+ error "apm_package_list_url_resolution: dependency type is $dependency_type"
+ }
+ }
set apm_visited_package_keys($package_key) 1
}
# Make sure old versions work ...
- foreach package_key $package_list {
- set inherit_templates_p 1
+ foreach package $package_list {
+ foreach {package_key dependency_type} $package {}
+ set inherit_templates_p t
+#fix!
catch { db_1row get_inherit_templates_p {} }
- if { [string is true $inherit_templates_p] } {
- apm_package_list_search_order [db_list get_dependencies {}]
- }
+ apm_package_list_url_resolution [db_list_of_lists get_dependencies {}]
}
}
@@ -255,15 +267,15 @@
} {
global apm_visited_package_keys
- global apm_package_search_order
+ global apm_package_url_resolution
global apm_package_inherit_order
global apm_package_load_libraries_order
global apm_package_descendents
array unset apm_visited_package_keys
- set apm_package_search_order [list]
- apm_package_list_search_order $package_key
- nsv_set apm_package_search_order $package_key $apm_package_search_order
+ set apm_package_url_resolution [list]
+ apm_package_list_url_resolution $package_key
+ nsv_set apm_package_url_resolution $package_key $apm_package_url_resolution
array unset apm_visited_package_keys
set apm_package_inherit_order [list]
@@ -295,39 +307,32 @@
ad_proc apm_package_descendents {
package_key
} {
-
Wrapper that returns the cached package descendents list.
-
} {
return [nsv_get apm_package_descendents $package_key]
}
ad_proc apm_package_inherit_order {
package_key
} {
-
Wrapper that returns the cached package inheritance order list.
-
} {
return [nsv_get apm_package_inherit_order $package_key]
}
-ad_proc apm_package_search_order {
+ad_proc apm_package_url_resolution {
package_key
} {
-
Wrapper that returns the cached package search order list.
-
} {
- return [nsv_get apm_package_search_order $package_key]
+ return [nsv_get apm_package_url_resolution $package_key]
}
+
ad_proc apm_package_load_libraries_order {
package_key
} {
-
Wrapper that returns the cached package library load order list.
-
} {
return [nsv_get apm_package_load_libraries_order $package_key]
}
@@ -2051,6 +2056,7 @@
site_node::update_cache -node_id $node_id
}
+# DRB: parameter fix!
db_foreach get_params {} {
db_1row get_new_parameter_id {}
db_dml update_param {}
Index: openacs-4/packages/acs-tcl/tcl/apm-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-procs.xql,v
diff -u -N -r1.25 -r1.26
--- openacs-4/packages/acs-tcl/tcl/apm-procs.xql 17 Mar 2009 01:11:07 -0000 1.25
+++ openacs-4/packages/acs-tcl/tcl/apm-procs.xql 10 Mar 2010 00:44:03 -0000 1.26
@@ -7,7 +7,7 @@
from apm_package_versions apv, apm_package_dependencies apd
where apd.version_id = apv.version_id
and apv.enabled_p = 't'
- and apd.dependency_type = 'extends'
+ and apd.dependency_type in ('extends', 'embeds')
and apd.service_uri = :package_key
@@ -20,22 +20,35 @@
-
+
+ select apd.service_uri
+ from apm_package_versions apv, apm_package_dependencies apd
+ where apv.package_key = :package_key
+ and apv.installed_p = 't'
+ and apd.version_id = apv.version_id
+ and apd.dependency_type in ('extends', 'embeds')
+ order by apd.dependency_id
+
+
+
+
+
select inherit_templates_p
from apm_package_types
where package_key = :package_key
-
+
- select apd.service_uri
+ select apd.service_uri, apd.dependency_type
from apm_package_versions apv, apm_package_dependencies apd
where apv.package_key = :package_key
and apv.installed_p = 't'
and apd.version_id = apv.version_id
- and apd.dependency_type = 'extends'
+ and (apd.dependency_type = 'embeds'
+ or apd.dependency_type = 'extends' and :inherit_templates_p = 't')
order by apd.dependency_id
@@ -47,7 +60,7 @@
where apv.package_key = :package_key
and apv.installed_p = 't'
and apd.version_id = apv.version_id
- and apd.dependency_type = 'extends'
+ and apd.dependency_type in ('extends', 'embeds')
order by apd.dependency_id desc
@@ -59,7 +72,7 @@
where apv.package_key = :package_key
and apv.installed_p = 't'
and apd.version_id = apv.version_id
- and apd.dependency_type in ('requires', 'extends')
+ and apd.dependency_type in ('requires', 'embeds', 'extends')
order by apd.dependency_id desc
Index: openacs-4/packages/acs-tcl/tcl/apm-xml-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-xml-procs.tcl,v
diff -u -N -r1.27 -r1.28
--- openacs-4/packages/acs-tcl/tcl/apm-xml-procs.tcl 25 Nov 2008 17:08:50 -0000 1.27
+++ openacs-4/packages/acs-tcl/tcl/apm-xml-procs.tcl 10 Mar 2010 00:44:03 -0000 1.28
@@ -169,7 +169,8 @@