Index: openacs-4/packages/acs-content-repository/sql/postgresql/content-folder.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/postgresql/content-folder.sql,v diff -u -N -r1.51 -r1.51.4.1 --- openacs-4/packages/acs-content-repository/sql/postgresql/content-folder.sql 7 Jul 2011 10:46:02 -0000 1.51 +++ openacs-4/packages/acs-content-repository/sql/postgresql/content-folder.sql 10 Feb 2016 09:22:03 -0000 1.51.4.1 @@ -210,9 +210,6 @@ -- new select define_function_args('content_folder__new','name,label,description;null,parent_id;null,context_id;null,folder_id;null,creation_date;now,creation_user;null,creation_ip;null,security_inherit_p;t,package_id;null'); - - - -- -- procedure content_folder__new/11 -- @@ -904,7 +901,7 @@ ) RETURNS integer AS $$ DECLARE - v_is_registered varchar; + v_is_registered boolean; BEGIN if register_content_type__include_subtypes = 'f' then Index: openacs-4/packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.9.1d7-5.9.1d8.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.9.1d7-5.9.1d8.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.9.1d7-5.9.1d8.sql 10 Feb 2016 09:22:03 -0000 1.1.2.1 @@ -0,0 +1,56 @@ +-- +-- Fix type of v_is_registered to boolean (was "varchar") +-- (This chance is necessary at least for pg 9.5) +-- + +-- +-- procedure content_folder__register_content_type/3 +-- +CREATE OR REPLACE FUNCTION content_folder__register_content_type( + register_content_type__folder_id integer, + register_content_type__content_type varchar, + register_content_type__include_subtypes boolean -- default 'f' + +) RETURNS integer AS $$ +DECLARE + v_is_registered boolean; +BEGIN + + if register_content_type__include_subtypes = 'f' then + + v_is_registered := content_folder__is_registered( + register_content_type__folder_id, + register_content_type__content_type, + 'f' + ); + + if v_is_registered = 'f' then + + insert into cr_folder_type_map ( + folder_id, content_type + ) values ( + register_content_type__folder_id, + register_content_type__content_type + ); + + end if; + + else + + insert into cr_folder_type_map + select register_content_type__folder_id as folder_id, + o.object_type as content_type + from acs_object_types o, acs_object_types o2 + where o.object_type <> 'acs_object' + and not exists (select 1 + from cr_folder_type_map + where folder_id = register_content_type__folder_id + and content_type = o.object_type) + and o2.object_type = register_content_type__content_type + and o.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey); + end if; + + return 0; +END; +$$ LANGUAGE plpgsql; + Index: openacs-4/packages/acs-content-repository/tcl/test/content-folder-test-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/tcl/test/content-folder-test-procs.tcl,v diff -u -N -r1.3.14.1 -r1.3.14.2 --- openacs-4/packages/acs-content-repository/tcl/test/content-folder-test-procs.tcl 10 Sep 2015 08:21:19 -0000 1.3.14.1 +++ openacs-4/packages/acs-content-repository/tcl/test/content-folder-test-procs.tcl 10 Feb 2016 09:22:03 -0000 1.3.14.2 @@ -45,11 +45,11 @@ ######################################################### # create a child folder ######################################################### - set child_folder_id [db_nextval "acs_object_id_seq"] + set child_folder_id [db_nextval "acs_object_id_seq"] set returned_child_folder_id [content::folder::new \ -folder_id $child_folder_id \ -parent_id $first_folder_id \ - -name "test_folder_${first_folder_id}"] + -name "test_folder_${first_folder_id}"] ######################################################### # check if child is a subfolder of parent #########################################################