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 -N -r1.47 -r1.48
--- openacs-4/packages/acs-content-repository/acs-content-repository.info 29 Dec 2004 15:29:33 -0000 1.47
+++ openacs-4/packages/acs-content-repository/acs-content-repository.info 6 Jan 2005 16:52:25 -0000 1.48
@@ -7,7 +7,7 @@
t
t
-
+
OpenACS
The canonical repository for OpenACS content.
@@ -20,7 +20,7 @@
other CMS backing functionality. Utilized by Bug Tracker, File Storage, and other packages.
-
+
Index: openacs-4/packages/acs-content-repository/sql/postgresql/content-item.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/postgresql/content-item.sql,v
diff -u -N -r1.60 -r1.61
--- openacs-4/packages/acs-content-repository/sql/postgresql/content-item.sql 5 Jan 2005 15:39:46 -0000 1.60
+++ openacs-4/packages/acs-content-repository/sql/postgresql/content-item.sql 6 Jan 2005 16:52:25 -0000 1.61
@@ -42,7 +42,7 @@
end;' language 'plpgsql' stable;
--- new 19 param version of content_item__new
+-- new 19 param version of content_item__new (now its 20 with package_id)
select define_function_args('content_item__new','name,parent_id,item_id,locale,creation_date;now,creation_user,context_id,creation_ip,item_subtype;content_item,content_type;content_revision,title,description,mime_type;text/plain,nls_language,text,data,relation_tag,is_live;f,storage_type;lob,package_id');
@@ -1265,9 +1265,8 @@
7) delete all associated comments */
-select define_function_args('content_item__delete','item_id');
-
-create or replace function content_item__delete (integer)
+select define_function_args('content_item__del','item_id');
+create or replace function content_item__del (integer)
returns integer as '
declare
delete__item_id alias for $1;
@@ -1391,6 +1390,15 @@
return 0;
end;' language 'plpgsql';
+select define_function_args('content_item__delete','item_id');
+create or replace function content_item__delete (integer)
+returns integer as '
+declare
+ delete__item_id alias for $1;
+begin
+ PERFORM content_item__del (delete__item_id);
+ return 0;
+end;' language 'plpgsql';
select define_function_args('content_item__edit_name','item_id,name');
Index: openacs-4/packages/acs-content-repository/sql/postgresql/content-revision.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/postgresql/content-revision.sql,v
diff -u -N -r1.39 -r1.40
--- openacs-4/packages/acs-content-repository/sql/postgresql/content-revision.sql 12 Aug 2004 18:51:56 -0000 1.39
+++ openacs-4/packages/acs-content-repository/sql/postgresql/content-revision.sql 6 Jan 2005 16:52:25 -0000 1.40
@@ -446,7 +446,7 @@
-- procedure delete
-select define_function_args('content_revision__delete','revision_id');
+select define_function_args('content_revision__del','revision_id');
create or replace function content_revision__delete (integer)
returns integer as '
declare
@@ -509,7 +509,17 @@
return 0;
end;' language 'plpgsql';
+select define_function_args('content_revision__delete','revision_id');
+create or replace function content_revision__delete (integer)
+returns integer as '
+declare
+ delete__revision_id alias for $1;
+begin
+ PERFORM content_revision__del(delete__revision_id);
+ return 0;
+end;' language 'plpgsql';
+
-- function get_number
select define_function_args('content_revision__get_number','revision_id');
create or replace function content_revision__get_number (integer)
Index: openacs-4/packages/acs-content-repository/sql/postgresql/content-template.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/postgresql/content-template.sql,v
diff -u -N -r1.18 -r1.19
--- openacs-4/packages/acs-content-repository/sql/postgresql/content-template.sql 6 Jan 2005 14:58:27 -0000 1.18
+++ openacs-4/packages/acs-content-repository/sql/postgresql/content-template.sql 6 Jan 2005 16:52:25 -0000 1.19
@@ -176,7 +176,8 @@
-- procedure delete
-create or replace function content_template__delete (integer)
+select define_function_args('content_template__del','template_id');
+create or replace function content_template__del (integer)
returns integer as '
declare
delete__template_id alias for $1;
@@ -196,7 +197,18 @@
return 0;
end;' language 'plpgsql';
+create or replace function content_template__delete (integer)
+returns integer as '
+declare
+ delete__template_id alias for $1;
+begin
+ PERFORM content_template__delete(delete__template_id);
+
+ return 0;
+end;' language 'plpgsql';
+
+
-- function is_template
create or replace function content_template__is_template (integer)
returns boolean as '
Index: openacs-4/packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d9-5.2.0d10.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d9-5.2.0d10.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.2.0d9-5.2.0d10.sql 6 Jan 2005 16:52:25 -0000 1.1
@@ -0,0 +1,347 @@
+--
+--
+--
+-- @author Dave Bauer (dave@thedesignexperience.org)
+-- @creation-date 2005-01-05
+-- @arch-tag: 5be8fd4b-0259-4ded-905a-37cb95b7fa9f
+-- @cvs-id $Id: upgrade-5.2.0d9-5.2.0d10.sql,v 1.1 2005/01/06 16:52:25 daveb Exp $
+--
+
+-- procedure delete
+select define_function_args('content_folder__del','folder_id,cascade_p;f');
+create or replace function content_folder__del (integer, boolean)
+returns integer as '
+declare
+ delete__folder_id alias for $1;
+ p_cascade_p alias for $2;
+ v_count integer;
+ v_child_row record;
+ v_parent_id integer;
+ v_path varchar;
+ v_folder_sortkey varbit;
+begin
+
+ if p_cascade_p = ''f'' then
+ select count(*) into v_count from cr_items
+ where parent_id = delete__folder_id;
+ -- check if the folder contains any items
+ if v_count > 0 then
+ v_path := content_item__get_path(delete__folder_id, null);
+ raise EXCEPTION ''-20000: Folder ID % (%) cannot be deleted because it is not empty.'', delete__folder_id, v_path;
+ end if;
+ else
+ -- delete children
+ select into v_folder_sortkey tree_sortkey
+ from cr_items where item_id=delete__folder_id;
+
+ for v_child_row in select
+ item_id, tree_sortkey, name
+ from cr_items
+ where tree_sortkey between v_folder_sortkey and tree_right(v_folder_sortkey)
+ and tree_sortkey != v_folder_sortkey
+ order by tree_sortkey desc
+ loop
+ if content_folder__is_folder(v_child_row.item_id) then
+ perform content_folder__delete(v_child_row.item_id);
+ else
+ perform content_item__delete(v_child_row.item_id);
+ end if;
+ end loop;
+ end if;
+
+ PERFORM content_folder__unregister_content_type(
+ delete__folder_id,
+ ''content_revision'',
+ ''t''
+ );
+
+ delete from cr_folder_type_map
+ where folder_id = delete__folder_id;
+
+ select parent_id into v_parent_id from cr_items
+ where item_id = delete__folder_id;
+ raise notice ''deleteing folder %'',delete__folder_id;
+ PERFORM content_item__delete(delete__folder_id);
+
+ -- check if any folders are left in the parent
+ update cr_folders set has_child_folders = ''f''
+ where folder_id = v_parent_id and not exists (
+ select 1 from cr_items
+ where parent_id = v_parent_id and content_type = ''content_folder'');
+
+ return 0;
+end;' language 'plpgsql';
+
+select define_function_args('content_folder__delete','folder_id,cascade_p;f');
+
+create or replace function content_folder__delete (integer, boolean)
+returns integer as '
+declare
+ delete__folder_id alias for $1;
+ p_cascade_p alias for $2;
+begin
+ PERFORM content_folder__del(delete__folder_id,p_cascade_p);
+ return 0;
+end;' language 'plpgsql';
+
+
+create or replace function content_folder__delete (integer)
+returns integer as '
+declare
+ delete__folder_id alias for $1;
+ v_count integer;
+ v_parent_id integer;
+ v_path varchar;
+begin
+ return content_folder__del(
+ delete__folder_id,
+ ''f''
+ );
+end;' language 'plpgsql';
+
+-- procedure delete
+select define_function_args('content_revision__del','revision_id');
+create or replace function content_revision__delete (integer)
+returns integer as '
+declare
+ delete__revision_id alias for $1;
+ v_item_id cr_items.item_id%TYPE;
+ v_latest_revision cr_revisions.revision_id%TYPE;
+ v_live_revision cr_revisions.revision_id%TYPE;
+ v_rec record;
+begin
+
+ -- Get item id and latest/live revisions
+ select item_id into v_item_id from cr_revisions
+ where revision_id = delete__revision_id;
+
+ select
+ latest_revision, live_revision
+ into
+ v_latest_revision, v_live_revision
+ from
+ cr_items
+ where
+ item_id = v_item_id;
+
+ -- Recalculate latest revision
+ if v_latest_revision = delete__revision_id then
+ for v_rec in
+ select r.revision_id
+ from cr_revisions r, acs_objects o
+ where o.object_id = r.revision_id
+ and r.item_id = v_item_id
+ and r.revision_id <> delete__revision_id
+ order by o.creation_date desc
+ LOOP
+
+ v_latest_revision := v_rec.revision_id;
+ exit;
+ end LOOP;
+ if NOT FOUND then
+ v_latest_revision := null;
+ end if;
+
+ update cr_items set latest_revision = v_latest_revision
+ where item_id = v_item_id;
+ end if;
+
+ -- Clear live revision
+ if v_live_revision = delete__revision_id then
+ update cr_items set live_revision = null
+ where item_id = v_item_id;
+ end if;
+
+ -- Clear the audit
+ delete from cr_item_publish_audit
+ where old_revision = delete__revision_id
+ or new_revision = delete__revision_id;
+
+ -- Delete the revision
+ PERFORM acs_object__delete(delete__revision_id);
+
+ return 0;
+end;' language 'plpgsql';
+
+select define_function_args('content_revision__delete','revision_id');
+
+create or replace function content_revision__delete (integer)
+returns integer as '
+declare
+ delete__revision_id alias for $1;
+begin
+ PERFORM content_revision__del(delete__revision_id);
+ return 0;
+end;' language 'plpgsql';
+
+-- item
+select define_function_args('content_item__del','item_id');
+create or replace function content_item__del (integer)
+returns integer as '
+declare
+ delete__item_id alias for $1;
+ -- v_wf_cases_val record;
+ v_symlink_val record;
+ v_revision_val record;
+ v_rel_val record;
+begin
+
+ -- Removed this as having workflow stuff in the CR is just plain wrong.
+ -- DanW, Aug 25th, 2001.
+
+ -- raise NOTICE ''Deleting associated workflows...'';
+ -- 1) delete all workflow cases associated with this item
+ -- for v_wf_cases_val in select
+ -- case_id
+ -- from
+ -- wf_cases
+ -- where
+ -- object_id = delete__item_id
+ -- LOOP
+ -- PERFORM workflow_case__delete(v_wf_cases_val.case_id);
+ -- end loop;
+
+ raise NOTICE ''Deleting symlinks...'';
+ -- 2) delete all symlinks to this item
+ for v_symlink_val in select
+ symlink_id
+ from
+ cr_symlinks
+ where
+ target_id = delete__item_id
+ LOOP
+ PERFORM content_symlink__delete(v_symlink_val.symlink_id);
+ end loop;
+
+ raise NOTICE ''Unscheduling item...'';
+ delete from cr_release_periods
+ where item_id = delete__item_id;
+
+ raise NOTICE ''Deleting associated revisions...'';
+ -- 3) delete all revisions of this item
+ delete from cr_item_publish_audit
+ where item_id = delete__item_id;
+
+ for v_revision_val in select
+ revision_id
+ from
+ cr_revisions
+ where
+ item_id = delete__item_id
+ LOOP
+ PERFORM acs_object__delete(v_revision_val.revision_id);
+ end loop;
+
+ raise NOTICE ''Deleting associated item templates...'';
+ -- 4) unregister all templates to this item
+ delete from cr_item_template_map
+ where item_id = delete__item_id;
+
+ raise NOTICE ''Deleting item relationships...'';
+ -- Delete all relations on this item
+ for v_rel_val in select
+ rel_id
+ from
+ cr_item_rels
+ where
+ item_id = delete__item_id
+ or
+ related_object_id = delete__item_id
+ LOOP
+ PERFORM acs_rel__delete(v_rel_val.rel_id);
+ end loop;
+
+ raise NOTICE ''Deleting child relationships...'';
+ for v_rel_val in select
+ rel_id
+ from
+ cr_child_rels
+ where
+ child_id = delete__item_id
+ LOOP
+ PERFORM acs_rel__delete(v_rel_val.rel_id);
+ end loop;
+
+ raise NOTICE ''Deleting parent relationships...'';
+ for v_rel_val in select
+ rel_id, child_id
+ from
+ cr_child_rels
+ where
+ parent_id = delete__item_id
+ LOOP
+ PERFORM acs_rel__delete(v_rel_val.rel_id);
+ PERFORM content_item__delete(v_rel_val.child_id);
+ end loop;
+
+ raise NOTICE ''Deleting associated permissions...'';
+ -- 5) delete associated permissions
+ delete from acs_permissions
+ where object_id = delete__item_id;
+
+ raise NOTICE ''Deleting keyword associations...'';
+ -- 6) delete keyword associations
+ delete from cr_item_keyword_map
+ where item_id = delete__item_id;
+
+ raise NOTICE ''Deleting associated comments...'';
+ -- 7) delete associated comments
+ PERFORM journal_entry__delete_for_object(delete__item_id);
+
+ -- context_id debugging loop
+ --for v_error_val in c_error_cur loop
+ -- raise NOTICE ''ID='' || v_error_val.object_id || '' TYPE=''
+ -- || v_error_val.object_type);
+ --end loop;
+
+ raise NOTICE ''Deleting content item...'';
+ PERFORM acs_object__delete(delete__item_id);
+
+ return 0;
+end;' language 'plpgsql';
+
+
+select define_function_args('content_item__delete','item_id');
+create or replace function content_item__delete (integer)
+returns integer as '
+declare
+ delete__item_id alias for $1;
+begin
+ PERFORM content_item__del (delete__item_id);
+ return 0;
+end;' language 'plpgsql';
+
+
+-- template
+select define_function_args('content_template__del','template_id');
+create or replace function content_template__del (integer)
+returns integer as '
+declare
+ delete__template_id alias for $1;
+begin
+
+ delete from cr_type_template_map
+ where template_id = delete__template_id;
+
+ delete from cr_item_template_map
+ where template_id = delete__template_id;
+
+ delete from cr_templates
+ where template_id = delete__template_id;
+
+ PERFORM content_item__delete(delete__template_id);
+
+ return 0;
+end;' language 'plpgsql';
+
+select define_function_args('content_template__delete','template_id');
+
+create or replace function content_template__delete (integer)
+returns integer as '
+declare
+ delete__template_id alias for $1;
+begin
+ PERFORM content_template__delete(delete__template_id);
+
+ return 0;
+end;' language 'plpgsql';
Index: openacs-4/packages/acs-content-repository/tcl/content-template-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/tcl/content-template-procs.tcl,v
diff -u -N -r1.6 -r1.7
--- openacs-4/packages/acs-content-repository/tcl/content-template-procs.tcl 6 Jan 2005 15:01:31 -0000 1.6
+++ openacs-4/packages/acs-content-repository/tcl/content-template-procs.tcl 6 Jan 2005 16:52:25 -0000 1.7
@@ -59,7 +59,7 @@
} {
return [package_exec_plsql -var_list [list \
[list template_id $template_id ] \
- ] content_template delete]
+ ] content_template del]
}