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 -r1.128 -r1.129 --- openacs-4/packages/acs-kernel/acs-kernel.info 2 Apr 2013 11:05:17 -0000 1.128 +++ openacs-4/packages/acs-kernel/acs-kernel.info 9 Aug 2013 13:48:38 -0000 1.129 @@ -7,15 +7,15 @@ t t - + OpenACS Core Team Routines and data models providing the foundation for OpenACS-based Web services. 2011-06-12 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/postgresql/upgrade/upgrade-5.8.0d4-5.8.0d5.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.8.0d4-5.8.0d5.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.8.0d4-5.8.0d5.sql 9 Aug 2013 13:48:38 -0000 1.1 @@ -0,0 +1,74 @@ +-- added +select define_function_args('apm__register_parameter','parameter_id;null,package_key,parameter_name,description;null,scope,datatype;string,default_value;null,section_name;null,min_n_values;1,max_n_values;1'); + +-- +-- procedure apm__register_parameter/10 +-- +CREATE OR REPLACE FUNCTION apm__register_parameter( + register_parameter__parameter_id integer, -- default null + register_parameter__package_key varchar, + register_parameter__parameter_name varchar, + register_parameter__description varchar, -- default null + register_parameter__scope varchar, + register_parameter__datatype varchar, -- default 'string' + register_parameter__default_value varchar, -- default null + register_parameter__section_name varchar, -- default null + register_parameter__min_n_values integer, -- default 1 + register_parameter__max_n_values integer -- default 1 + +) RETURNS integer AS $$ +DECLARE + + v_parameter_id apm_parameters.parameter_id%TYPE; + v_value_id apm_parameter_values.value_id%TYPE; + v_pkg record; + +BEGIN + -- Create the new parameter. + v_parameter_id := acs_object__new( + register_parameter__parameter_id, + 'apm_parameter', + now(), + null, + null, + null, + 't', + register_parameter__package_key || ' - ' || register_parameter__parameter_name, + null + ); + + insert into apm_parameters + (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, 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, + register_parameter__max_n_values); + + -- Propagate parameter to new instances. + if register_parameter__scope = 'instance' then + for v_pkg in + select package_id + from apm_packages + where package_key = register_parameter__package_key + loop + v_value_id := apm_parameter_value__new( + null, + v_pkg.package_id, + v_parameter_id, + register_parameter__default_value); + end loop; + else + v_value_id := apm_parameter_value__new( + null, + null, + v_parameter_id, + register_parameter__default_value); + end if; + + return v_parameter_id; + +END; +$$ LANGUAGE plpgsql;