-- packages/acs-messaging/sql/upgrade/sql/upgrade/upgrade-4.1-4.1.1.sql
--
-- upgrade script for acs-messaging 4.1 to 4.1.1.
-- @author teeters@arsdigita.com
-- @creation-date 2000-03-06
-- @cvs-id $Id: upgrade-4.1-4.1.1.sql,v 1.1 2001/05/23 16:39:23 jong Exp $
-- Change in acs-messaging/sql/acs-messaging-create.sql
-- content_item name_method changed from 'ACS_OBJECT.DEFAULT_NAME' to 'ACS_MESSAGE.NAME'
update acs_object_types set name_method = 'ACS_MESSAGE.NAME' where object_type = 'acs_message';
-- Added function name to package acs_message;
-- @../../../acs-messaging/sql/acs-messaging-packages.sql
-- would like to source file using @, but for some reason source not working
-- have to copy file.
--
-- packages/acs-messaging/sql/acs-messaging-packages.sql
--
-- @author John Prevost <jmp@arsdigita.com>
-- @author Phong Nguyen <phong@arsdigita.com>
-- @creation-date 2000-08-27
-- @cvs-id $Id: upgrade-4.1-4.1.1.sql,v 1.1 2001/05/23 16:39:23 jong Exp $
--
create or replace package acs_message
as
function new (
message_id in acs_messages.message_id%TYPE default null,
reply_to in acs_messages.reply_to%TYPE default null,
sent_date in acs_messages.sent_date%TYPE default sysdate,
sender in acs_messages.sender%TYPE default null,
rfc822_id in acs_messages.rfc822_id%TYPE default null,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
text in varchar2 default null,
data in cr_revisions.content%TYPE default null,
parent_id in cr_items.parent_id%TYPE default 0,
context_id in acs_objects.context_id%TYPE,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
object_type in acs_objects.object_type%TYPE default 'acs_message',
is_live in char default 't'
) return acs_objects.object_id%TYPE;
function edit (
message_id in acs_messages.message_id%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
text in varchar2 default null,
data in cr_revisions.content%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE;
procedure delete (
message_id in acs_messages.message_id%TYPE
);
function message_p (
message_id in acs_messages.message_id%TYPE
) return char;
procedure send (
message_id in acs_messages.message_id%TYPE,
recipient_id in parties.party_id%TYPE,
grouping_id in integer default null,
wait_until in date default sysdate
);
procedure send (
message_id in acs_messages.message_id%TYPE,
to_address in varchar2,
grouping_id in integer default null,
wait_until in date default sysdate
);
function first_ancestor (
message_id in acs_messages.message_id%TYPE
) return acs_messages.message_id%TYPE;
-- ACHTUNG! WARNING! ACHTUNG! WARNING! ACHTUNG! WARNING! --
-- Developers: Please don't depend on the following functionality
-- to remain in the same place. Chances are very good these
-- functions will migrate to another PL/SQL package or be replaced
-- by direct calls to CR code in the near future.
function new_file (
message_id in acs_messages.message_id%TYPE,
file_id in cr_items.item_id%TYPE default null,
file_name in cr_items.name%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE,
content in cr_revisions.content%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE;
function edit_file (
file_id in cr_items.item_id%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE,
content in cr_revisions.content%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE;
procedure delete_file (
file_id in cr_items.item_id%TYPE
);
function new_image (
message_id in acs_messages.message_id%TYPE,
image_id in cr_items.item_id%TYPE default null,
file_name in cr_items.name%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE,
content in cr_revisions.content%TYPE default null,
width in images.width%TYPE default null,
height in images.height%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE;
function edit_image (
image_id in cr_items.item_id%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE,
content in cr_revisions.content%TYPE default null,
width in images.width%TYPE default null,
height in images.height%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE;
procedure delete_image (
image_id in cr_items.item_id%TYPE
);
function new_extlink (
name in cr_items.name%TYPE,
extlink_id in cr_extlinks.extlink_id%TYPE default null,
url in cr_extlinks.url%TYPE,
label in cr_extlinks.label%TYPE default null,
description in cr_extlinks.description%TYPE default null,
parent_id in acs_objects.context_id%TYPE,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null
) return cr_extlinks.extlink_id%TYPE;
function edit_extlink (
extlink_id in cr_extlinks.extlink_id%TYPE,
url in cr_extlinks.url%TYPE,
label in cr_extlinks.label%TYPE default null,
description in cr_extlinks.description%TYPE default null
) return cr_extlinks.extlink_id%TYPE;
procedure delete_extlink (
extlink_id in cr_extlinks.extlink_id%TYPE
);
function name (
message_id in acs_objects.object_id%TYPE
) return varchar2;
end acs_message;
/
show errors
create or replace package body acs_message
as
function new (
message_id in acs_messages.message_id%TYPE default null,
reply_to in acs_messages.reply_to%TYPE default null,
sent_date in acs_messages.sent_date%TYPE default null,
sender in acs_messages.sender%TYPE default null,
rfc822_id in acs_messages.rfc822_id%TYPE default null,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
text in varchar2 default null,
data in cr_revisions.content%TYPE default null,
parent_id in cr_items.parent_id%TYPE default 0,
context_id in acs_objects.context_id%TYPE,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
object_type in acs_objects.object_type%TYPE default 'acs_message',
is_live in char default 't'
) return acs_objects.object_id%TYPE
is
v_message_id acs_messages.message_id%TYPE;
v_rfc822_id acs_messages.rfc822_id%TYPE;
v_revision_id cr_revisions.revision_id%TYPE;
begin
-- generate a message id now so we can get an rfc822 message-id
if message_id is null then
select acs_object_id_seq.nextval into v_message_id from dual;
else
v_message_id := message_id;
end if;
-- this needs to be fixed up, but Oracle doesn't give us a way
-- to get the FQDN
if rfc822_id is null then
v_rfc822_id := sysdate || '.' || v_message_id || '@' ||
utl_inaddr.get_host_name || '.hate';
else
v_rfc822_id := rfc822_id;
end if;
v_message_id := content_item.new (
name => v_rfc822_id,
parent_id => parent_id,
content_type => 'acs_message_revision',
item_id => message_id,
context_id => context_id,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip,
item_subtype => object_type
);
insert into acs_messages
(message_id, reply_to, sent_date, sender, rfc822_id)
values
(v_message_id, reply_to, sent_date, sender, v_rfc822_id);
-- create an initial revision for the new message
v_revision_id := acs_message.edit (
message_id => v_message_id,
title => title,
description => description,
mime_type => mime_type,
text => text,
data => data,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip,
is_live => is_live
);
return v_message_id;
end new;
function edit (
message_id in acs_messages.message_id%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
text in varchar2 default null,
data in cr_revisions.content%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE
is
v_revision_id cr_revisions.revision_id%TYPE;
begin
-- create a new revision using whichever call is appropriate
if edit.data is not null then
v_revision_id := content_revision.new (
item_id => message_id,
title => title,
description => description,
data => data,
mime_type => mime_type,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip
);
elsif title is not null or text is not null then
v_revision_id := content_revision.new (
item_id => message_id,
title => title,
description => description,
text => text,
mime_type => mime_type,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip
);
end if;
-- test for auto approval of revision
if edit.is_live = 't' then
content_item.set_live_revision(v_revision_id);
end if;
return v_revision_id;
end edit;
procedure delete (
message_id in acs_messages.message_id%TYPE
)
is
begin
delete from acs_messages
where message_id = acs_message.delete.message_id;
content_item.delete(message_id);
end delete;
function message_p (
message_id in acs_messages.message_id%TYPE
) return char
is
v_check_message_id integer;
begin
select decode(count(message_id),0,0,1) into v_check_message_id
from acs_messages
where message_id = message_p.message_id;
if v_check_message_id <> 0 then
return 't';
else
return 'f';
end if;
end message_p;
procedure send (
message_id in acs_messages.message_id%TYPE,
to_address in varchar2,
grouping_id in integer default null,
wait_until in date default sysdate
)
is
v_wait_until date;
begin
v_wait_until := nvl(wait_until, sysdate);
insert into acs_messages_outgoing
(message_id, to_address, grouping_id, wait_until)
values
(message_id, to_address, grouping_id, v_wait_until);
end send;
procedure send (
message_id in acs_messages.message_id%TYPE,
recipient_id in parties.party_id%TYPE,
grouping_id in integer default null,
wait_until in date default sysdate
)
is
v_wait_until date;
begin
v_wait_until := nvl(wait_until, sysdate);
insert into acs_messages_outgoing
(message_id, to_address, grouping_id, wait_until)
select send.message_id, p.email, send.grouping_id, v_wait_until
from parties p
where p.party_id = send.recipient_id;
end send;
function first_ancestor (
message_id in acs_messages.message_id%TYPE
) return acs_messages.message_id%TYPE
is
v_message_id acs_messages.message_id%TYPE;
begin
select message_id into v_message_id
from (select message_id, reply_to
from acs_messages
connect by message_id = prior reply_to
start with message_id = first_ancestor.message_id) ancestors
where reply_to is null;
return v_message_id;
end first_ancestor;
-- ACHTUNG! WARNING! ACHTUNG! WARNING! ACHTUNG! WARNING! --
-- Developers: Please don't depend on the following functionality
-- to remain in the same place. Chances are very good these
-- functions will migrate to another PL/SQL package or be replaced
-- by direct calls to CR code in the near future.
function new_file (
message_id in acs_messages.message_id%TYPE,
file_id in cr_items.item_id%TYPE default null,
file_name in cr_items.name%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
content in cr_revisions.content%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE
is
v_file_id cr_items.item_id%TYPE;
v_revision_id cr_revisions.revision_id%TYPE;
begin
v_file_id := content_item.new (
name => file_name,
parent_id => message_id,
item_id => file_id,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip
);
-- create an initial revision for the new attachment
v_revision_id := edit_file (
file_id => v_file_id,
title => title,
description => description,
mime_type => mime_type,
content => content,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip,
is_live => is_live
);
return v_file_id;
end new_file;
function edit_file (
file_id in cr_items.item_id%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
content in cr_revisions.content%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE
is
v_revision_id cr_revisions.revision_id%TYPE;
begin
v_revision_id := content_revision.new (
title => title,
mime_type => mime_type,
data => content,
item_id => file_id,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip
);
-- test for auto approval of revision
if is_live = 't' then
content_item.set_live_revision(v_revision_id);
end if;
return v_revision_id;
end edit_file;
procedure delete_file (
file_id in cr_items.item_id%TYPE
)
is
begin
content_item.delete(delete_file.file_id);
end delete_file;
function new_image (
message_id in acs_messages.message_id%TYPE,
image_id in cr_items.item_id%TYPE default null,
file_name in cr_items.name%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
content in cr_revisions.content%TYPE default null,
width in images.width%TYPE default null,
height in images.height%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE
is
v_image_id cr_items.item_id%TYPE;
v_revision_id cr_revisions.revision_id%TYPE;
begin
v_image_id := content_item.new (
name => file_name,
parent_id => message_id,
item_id => image_id,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip
);
-- create an initial revision for the new attachment
v_revision_id := edit_image (
image_id => v_image_id,
title => title,
description => description,
mime_type => mime_type,
content => content,
width => width,
height => height,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip,
is_live => is_live
);
return v_image_id;
end new_image;
function edit_image (
image_id in cr_items.item_id%TYPE,
title in cr_revisions.title%TYPE default null,
description in cr_revisions.description%TYPE default null,
mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
content in cr_revisions.content%TYPE default null,
width in images.width%TYPE default null,
height in images.height%TYPE default null,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't'
) return acs_objects.object_id%TYPE
is
v_revision_id cr_revisions.revision_id%TYPE;
begin
v_revision_id := content_revision.new (
title => edit_image.title,
mime_type => edit_image.mime_type,
data => edit_image.content,
item_id => edit_image.image_id,
creation_date => edit_image.creation_date,
creation_user => edit_image.creation_user,
creation_ip => edit_image.creation_ip
);
-- insert new width and height values
-- XXX fix after image.new exists
insert into images
(image_id, width, height)
values
(v_revision_id, width, height);
-- test for auto approval of revision
if edit_image.is_live = 't' then
content_item.set_live_revision(v_revision_id);
end if;
return v_revision_id;
end edit_image;
procedure delete_image (
image_id in cr_items.item_id%TYPE
)
is
begin
-- XXX fix after image.delete exists
delete from images
where image_id = delete_image.image_id;
content_item.delete(image_id);
end delete_image;
-- XXX should just call content_extlink.new
function new_extlink (
name in cr_items.name%TYPE default null,
extlink_id in cr_extlinks.extlink_id%TYPE default null,
url in cr_extlinks.url%TYPE,
label in cr_extlinks.label%TYPE default null,
description in cr_extlinks.description%TYPE default null,
parent_id in acs_objects.context_id%TYPE,
creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null
) return cr_extlinks.extlink_id%TYPE
is
v_extlink_id cr_extlinks.extlink_id%TYPE;
begin
v_extlink_id := content_extlink.new (
name => new_extlink.name,
url => new_extlink.url,
label => new_extlink.label,
description => new_extlink.description,
parent_id => new_extlink.parent_id,
extlink_id => new_extlink.extlink_id,
creation_date => new_extlink.creation_date,
creation_user => new_extlink.creation_user,
creation_ip => new_extlink.creation_ip
);
end new_extlink;
-- XXX should just edit extlink
function edit_extlink (
extlink_id in cr_extlinks.extlink_id%TYPE,
url in cr_extlinks.url%TYPE,
label in cr_extlinks.label%TYPE default null,
description in cr_extlinks.description%TYPE default null
) return cr_extlinks.extlink_id%TYPE
is
v_is_extlink char;
begin
v_is_extlink := content_extlink.is_extlink(edit_extlink.extlink_id);
if v_is_extlink = 't' then
update cr_extlinks
set url = edit_extlink.url,
label = edit_extlink.label,
description = edit_extlink.description
where extlink_id = edit_extlink.extlink_id;
end if;
return v_is_extlink;
end edit_extlink;
procedure delete_extlink (
extlink_id in cr_extlinks.extlink_id%TYPE
) is
begin
content_extlink.delete(extlink_id => delete_extlink.extlink_id);
end delete_extlink;
function name (
message_id in acs_objects.object_id%TYPE
) return varchar2
is
v_message_name acs_messages_all.title%TYPE;
begin
select title into v_message_name
from acs_messages_all
where message_id = name.message_id;
return v_message_name;
end name;
end acs_message;
/
show errors