Index: openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-create.sql,v
diff -u -r1.1 -r1.2
--- openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-create.sql	20 Apr 2001 20:51:09 -0000	1.1
+++ openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-create.sql	29 Jun 2001 20:28:38 -0000	1.2
@@ -100,7 +100,7 @@
         pretty_plural => 'BBoard Forum',
         table_name => 'BBOARD_FORUMS',
         id_column => 'FORUM_ID',
-        name_method => 'ACS_OBJECT.DEFAULT_NAME'
+        name_method => 'BBOARD_FORUM.NAME'
     );
 
     acs_object_type.create_type (
@@ -110,7 +110,7 @@
         pretty_plural => 'BBoard Categories',
         table_name => 'BBOARD_CATEGORIES',
         id_column => 'CATEGORY_ID',
-        name_method => 'ACS_OBJECT.DEFAULT_NAME'
+        name_method => 'BBOARD_CATEGORY.NAME'
     );
 
 end;
Index: openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-drop.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-drop.sql,v
diff -u -r1.1 -r1.2
--- openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-drop.sql	20 Apr 2001 20:51:09 -0000	1.1
+++ openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-drop.sql	29 Jun 2001 20:28:38 -0000	1.2
@@ -20,45 +20,23 @@
 -- will fail and removing bboard will be icky.  this is sort of hairy
 -- problem with unknown potential intra-package references.
 
-declare
-    image_p    integer;
+-- 
 
-    cursor children_cursor is
-	select object_id as child_id, object_type
-            from acs_objects
-            where (object_type = 'acs_message' 
-	          or object_type = 'content_item')
-                  and context_id in (select distinct m.message_id
-	                                 from acs_messages m, bboard_forum_message_map f
-                                         where m.message_id = f.message_id);
-begin
-    for child_val in children_cursor loop
-        if child_val.object_type = 'acs_message' then
-   	    acs_message.delete(child_val.child_id);
-	elsif child_val.object_type = 'content_item' then
-	    select count(*) into image_p
-                from images
-                where image_id = child_val.child_id;
-            if image_p = 1 then
-                acs_message.delete_image(child_val.child_id);
-            else
-                acs_message.delete_file(child_val.child_id);
-            end if;
-        end if;
-    end loop;
-end;
-/
-show errors
-
 -- Delete all messages that belong to forums
 declare
     cursor message_cursor is
-        select distinct m.message_id
-            from acs_messages m, bboard_forum_message_map f
-            where m.message_id = f.message_id;
+        select object_id as message_id
+	    from acs_objects
+	    where object_id in (select object_id
+                                  from acs_objects
+	                          where object_type = 'acs_message'
+    	                          start with context_id in (select forum_id
+                                                              from bboard_forums)
+	                          connect by prior object_id = context_id)
+            order by object_id desc;
 begin
     for message_val in message_cursor loop
-        acs_message.delete(message_val.message_id);
+        bboard_message.remove(message_val.message_id);
     end loop;
 end;
 /
Index: openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-packages.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-packages.sql,v
diff -u -r1.1 -r1.2
--- openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-packages.sql	20 Apr 2001 20:51:09 -0000	1.1
+++ openacs-4/contrib/obsolete-packages/bboard/sql/oracle/bboard-packages.sql	29 Jun 2001 20:28:38 -0000	1.2
@@ -48,6 +48,10 @@
 	message_id    in acs_messages.message_id%TYPE
     ) return bboard_forums.forum_id%TYPE;
 
+    function name (
+        forum_id      in acs_objects.object_id%TYPE
+    ) return varchar2;
+
 end bboard_forum;
 /
 show errors
@@ -87,6 +91,10 @@
         subscriber_id in bboard_category_subscribers.subscriber_id%TYPE
     );
 
+    function name (
+        category_id      acs_objects.object_id%TYPE
+    ) return varchar2;
+
 end bboard_category;
 /
 show errors
@@ -150,6 +158,18 @@
         subscriber_id in bboard_thread_subscribers.subscriber_id%TYPE
     );
 
+    function name (
+        message_id      acs_objects.object_id%TYPE
+    ) return varchar2;
+
+    procedure remove_thread (
+        thread_id    in bboard_messages_all.message_id%TYPE
+    );
+
+    procedure remove (
+        message_id   in bboard_messages_all.message_id%TYPE
+    );
+
 end bboard_message;
 /
 show errors
@@ -280,6 +300,18 @@
         end if;
     end forum_containing_message;
 
+    function name (
+        forum_id      in acs_objects.object_id%TYPE
+    ) return varchar2
+    is
+        v_forum_name   bboard_forums.short_name%TYPE;
+    begin
+        select short_name into v_forum_name
+            from bboard_forums
+	    where forum_id = name.forum_id;
+        return v_forum_name;
+    end name;
+
 end bboard_forum;
 /
 show errors
@@ -321,7 +353,7 @@
         v_context_id := nvl(context_id, forum_id);
         v_category_id := acs_object.new (
             object_id => category_id,
-            context_id => forum_id,
+            context_id => v_context_id,
             creation_date => creation_date,
             creation_user => creation_user,
             creation_ip => creation_ip,
@@ -386,6 +418,18 @@
             values (category_id, subscriber_id);
     end;
 
+    function name (
+        category_id      in acs_objects.object_id%TYPE
+    ) return varchar2
+    is
+        v_category_name   bboard_categories.short_name%TYPE;
+    begin
+        select short_name into v_category_name
+            from bboard_categories
+	    where category_id = name.category_id;
+        return v_category_name;
+    end name;
+
 end bboard_category;
 /
 show errors
@@ -566,6 +610,87 @@
             values (thread_id, subscriber_id);
     end;
 
+    function name (
+        message_id      in acs_objects.object_id%TYPE
+    ) return varchar2
+    is
+        v_message_name   bboard_messages_all.title%TYPE;
+    begin
+        select title into v_message_name
+            from bboard_messages_all
+            where message_id = name.message_id;
+        return v_message_name;
+    end name;
+
+    procedure remove_thread (
+        thread_id    in bboard_messages_all.message_id%TYPE
+    )
+    is
+	cursor messages_children is
+	   select object_id as child_id, object_type
+	       from acs_objects
+               where context_id in (select message_id 
+                                       from acs_messages
+                                       connect by prior message_id = reply_to
+                                       start with message_id = thread_id);
+
+        cursor messages is
+	   select message_id
+	       from acs_messages
+	       connect by prior message_id = reply_to
+	       start with message_id = thread_id;
+
+        image_p	     number;
+    begin
+	for child_val in messages_children loop
+	    if child_val.object_type = 'acs_message' then
+	       acs_message.delete(child_val.child_id);
+	    elsif child_val.object_type = 'content_item' then
+		select count(*) into image_p
+		    from images
+                    where image_id = child_val.child_id;
+                if image_p = 1 then
+                    acs_message.delete_image(child_val.child_id);
+                else
+                    acs_message.delete_file(child_val.child_id);
+                end if;
+           end if;
+       end loop;
+
+       for message_val in messages loop
+           acs_message.delete(message_val.message_id);
+       end loop;
+
+    end remove_thread;
+
+    procedure remove (
+        message_id    in bboard_messages_all.message_id%TYPE
+    )
+    is
+	cursor messages_children is
+	   select object_id as child_id, object_type
+	       from acs_objects
+               where context_id = message_id;
+        image_p	     number;
+    begin
+	for child_val in messages_children loop
+	    if child_val.object_type = 'acs_message' then
+	       acs_message.delete(child_val.child_id);
+	    elsif child_val.object_type = 'content_item' then
+		select count(*) into image_p
+		    from images
+                    where image_id = child_val.child_id;
+                if image_p = 1 then
+                    acs_message.delete_image(child_val.child_id);
+                else
+                    acs_message.delete_file(child_val.child_id);
+                end if;
+           end if;
+       end loop;
+
+       acs_message.delete(message_id);
+    end remove;
+
 end bboard_message;
 /
 show errors