Index: openacs-4/packages/acs-content-repository/acs-content-repository.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/acs-content-repository.info,v diff -u -r1.52 -r1.53 --- openacs-4/packages/acs-content-repository/acs-content-repository.info 24 Feb 2005 13:32:58 -0000 1.52 +++ openacs-4/packages/acs-content-repository/acs-content-repository.info 18 Mar 2005 13:44:56 -0000 1.53 @@ -7,7 +7,7 @@ t t - + OpenACS The canonical repository for OpenACS content. @@ -21,7 +21,7 @@ other CMS backing functionality. Utilized by Bug Tracker, File Storage, and other packages. - + Index: openacs-4/packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d12-5.2.0d13.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d12-5.2.0d13.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d12-5.2.0d13.sql 18 Mar 2005 13:44:56 -0000 1.1 @@ -0,0 +1,86 @@ +-- +-- daveb fixes for content_folder__move. +-- +select define_function_args('content_folder__move','folder_id,target_folder_id,name;NULL'); + +create or replace function content_folder__move (integer,integer,varchar) +returns integer as ' +declare + move__folder_id alias for $1; + move__target_folder_id alias for $2; + move__name alias for $3; + v_source_folder_id integer; + v_valid_folders_p integer; +begin + + select + count(*) + into + v_valid_folders_p + from + cr_folders + where + folder_id = move__target_folder_id + or + folder_id = move__folder_id; + + if v_valid_folders_p != 2 then + raise EXCEPTION ''-20000: content_folder.move - Not valid folder(s)''; + end if; + + if move__folder_id = content_item__get_root_folder(null) or + move__folder_id = content_template__get_root_folder() then + raise EXCEPTION ''-20000: content_folder.move - Cannot move root folder''; + end if; + + if move__target_folder_id = move__folder_id then + raise EXCEPTION ''-20000: content_folder.move - Cannot move a folder to itself''; + end if; + + if content_folder__is_sub_folder(move__folder_id, move__target_folder_id) = ''t'' then + raise EXCEPTION ''-20000: content_folder.move - Destination folder is subfolder''; + end if; + + if content_folder__is_registered(move__target_folder_id,''content_folder'',''f'') != ''t'' then + raise EXCEPTION ''-20000: content_folder.move - Destination folder does not allow subfolders''; + end if; + + select parent_id into v_source_folder_id from cr_items + where item_id = move__folder_id; + + -- update the parent_id for the folder + update cr_items + set parent_id = move__target_folder_id, + name = coalesce ( move_name, name ) + where item_id = move__folder_id; + + -- update the has_child_folders flags + + -- update the source + update cr_folders set has_child_folders = ''f'' + where folder_id = v_source_folder_id and not exists ( + select 1 from cr_items + where parent_id = v_source_folder_id + and content_type = ''content_folder''); + + -- update the destination + update cr_folders set has_child_folders = ''t'' + where folder_id = move__target_folder_id; + + return 0; +end;' language 'plpgsql'; + +create or replace function content_folder__move (integer,integer) +returns integer as ' +declare + move__folder_id alias for $1; + move__target_folder_id alias for $2; +begin + + perform content_folder__move ( + move__folder_id, + move__target_folder_id, + NULL + ); + return null; +end;' language 'plpgsql';