Commit 2fb6ebef authored by Malte Sussdorff's avatar Malte Sussdorff

- Malte

parent c7ee67b1
Pipeline #87 failed with stages
...@@ -7,20 +7,22 @@ ...@@ -7,20 +7,22 @@
<initial-install-p>t</initial-install-p> <initial-install-p>t</initial-install-p>
<singleton-p>t</singleton-p> <singleton-p>t</singleton-p>
<version name="5.1.5" url="http://openacs.org/repository/download/apm/acs-messaging-5.1.5.apm"> <version name="5.3.1b1" url="http://openacs.org/repository/download/apm/acs-messaging-5.3.1b1.apm">
<owner url="mailto:akk+@cs.cmu.edu">Anukul Kapoor</owner> <owner url="mailto:akk+@cs.cmu.edu">Anukul Kapoor</owner>
<owner url="mailto:prevost@maya.com">John Prevost</owner> <owner url="mailto:prevost@maya.com">John Prevost</owner>
<owner url="mailto:vinod@kurup.com">Vinod Kurup</owner> <owner url="mailto:vinod@kurup.com">Vinod Kurup</owner>
<summary>General messaging for bboard and general comments.</summary> <summary>General messaging for bboard and general comments.</summary>
<release-date>2004-02-28</release-date> <release-date>2007-04-15</release-date>
<maturity>3</maturity> <maturity>3</maturity>
<vendor url="http://openacs.org">OpenACS</vendor> <vendor url="http://openacs.org">OpenACS</vendor>
<license url="http://www.gnu.org/copyleft/gpl.html">GPL</license>
<maturity>3</maturity>
<description format="text/html">Provides generic message services, with email sending. acs-mail-lite and notifications are the <description format="text/html">Provides generic message services, with email sending. acs-mail-lite and notifications are the
prefered packages for delivering this functionality and it is anticipated that this package will ultimately be deprecated.</description> prefered packages for delivering this functionality and it is anticipated that this package will ultimately be deprecated.</description>
<provides url="acs-messaging" version="5.1.4"/> <provides url="acs-messaging" version="5.3.1b1"/>
<requires url="acs-content-repository" version="5.0.0"/> <requires url="acs-content-repository" version="5.3.1b1"/>
<requires url="acs-kernel" version="5.0.0"/> <requires url="acs-kernel" version="5.3.1b1"/>
<callbacks> <callbacks>
</callbacks> </callbacks>
......
...@@ -17,9 +17,9 @@ begin ...@@ -17,9 +17,9 @@ begin
object_type => 'acs_message', object_type => 'acs_message',
pretty_name => 'Message', pretty_name => 'Message',
pretty_plural => 'Messages', pretty_plural => 'Messages',
table_name => 'ACS_MESSAGES', table_name => 'acs_messages',
id_column => 'MESSAGE_ID', id_column => 'message_id',
name_method => 'ACS_MESSAGE.NAME' name_method => 'acs_message.name'
); );
acs_object_type.create_type ( acs_object_type.create_type (
...@@ -27,9 +27,7 @@ begin ...@@ -27,9 +27,7 @@ begin
object_type => 'acs_message_revision', object_type => 'acs_message_revision',
pretty_name => 'Message Revision', pretty_name => 'Message Revision',
pretty_plural => 'Message Revisions', pretty_plural => 'Message Revisions',
table_name => 'CR_REVISIONS', name_method => 'acs_object.default_name'
id_column => 'REVISION_ID',
name_method => 'ACS_OBJECT.DEFAULT_NAME'
); );
end; end;
...@@ -42,7 +40,7 @@ create table acs_messages ( -- extends cr_items ...@@ -42,7 +40,7 @@ create table acs_messages ( -- extends cr_items
message_id integer message_id integer
constraint acs_messages_message_id_fk constraint acs_messages_message_id_fk
references cr_items (item_id) on delete cascade references cr_items (item_id) on delete cascade
constraint acs_messages_pk constraint acs_messages_message_id_pk
primary key, primary key,
-- we will need to find a way to make reply_to go to 0 instead of null -- we will need to find a way to make reply_to go to 0 instead of null
-- to improve scalability -- to improve scalability
......
...@@ -21,13 +21,14 @@ as ...@@ -21,13 +21,14 @@ as
mime_type in cr_revisions.mime_type%TYPE default 'text/plain', mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
text in varchar2 default null, text in varchar2 default null,
data in cr_revisions.content%TYPE default null, data in cr_revisions.content%TYPE default null,
parent_id in cr_items.parent_id%TYPE default 0, parent_id in cr_items.parent_id%TYPE default -4,
context_id in acs_objects.context_id%TYPE, context_id in acs_objects.context_id%TYPE,
creation_date in acs_objects.creation_date%TYPE default sysdate, creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null, creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null, creation_ip in acs_objects.creation_ip%TYPE default null,
object_type in acs_objects.object_type%TYPE default 'acs_message', object_type in acs_objects.object_type%TYPE default 'acs_message',
is_live in char default 't' is_live in char default 't',
package_id in acs_objects.package_id%TYPE default null
) return acs_objects.object_id%TYPE; ) return acs_objects.object_id%TYPE;
function edit ( function edit (
...@@ -88,7 +89,8 @@ as ...@@ -88,7 +89,8 @@ as
creation_user in acs_objects.creation_user%TYPE default null, creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null, creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't', is_live in char default 't',
storage_type in cr_items.storage_type%TYPE default 'file' storage_type in cr_items.storage_type%TYPE default 'file',
package_id in acs_objects.package_id%TYPE default null
) return acs_objects.object_id%TYPE; ) return acs_objects.object_id%TYPE;
function edit_file ( function edit_file (
...@@ -121,7 +123,8 @@ as ...@@ -121,7 +123,8 @@ as
creation_user in acs_objects.creation_user%TYPE default null, creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null, creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't', is_live in char default 't',
storage_type in cr_items.storage_type%TYPE default 'file' storage_type in cr_items.storage_type%TYPE default 'file',
package_id in acs_objects.package_id%TYPE default null
) return acs_objects.object_id%TYPE; ) return acs_objects.object_id%TYPE;
function edit_image ( function edit_image (
...@@ -151,7 +154,8 @@ as ...@@ -151,7 +154,8 @@ as
parent_id in acs_objects.context_id%TYPE, parent_id in acs_objects.context_id%TYPE,
creation_date in acs_objects.creation_date%TYPE default sysdate, creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null, creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null creation_ip in acs_objects.creation_ip%TYPE default null,
package_id in acs_objects.package_id%TYPE default null
) return cr_extlinks.extlink_id%TYPE; ) return cr_extlinks.extlink_id%TYPE;
function edit_extlink ( function edit_extlink (
...@@ -187,13 +191,14 @@ as ...@@ -187,13 +191,14 @@ as
mime_type in cr_revisions.mime_type%TYPE default 'text/plain', mime_type in cr_revisions.mime_type%TYPE default 'text/plain',
text in varchar2 default null, text in varchar2 default null,
data in cr_revisions.content%TYPE default null, data in cr_revisions.content%TYPE default null,
parent_id in cr_items.parent_id%TYPE default 0, parent_id in cr_items.parent_id%TYPE default -4,
context_id in acs_objects.context_id%TYPE, context_id in acs_objects.context_id%TYPE,
creation_date in acs_objects.creation_date%TYPE default sysdate, creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null, creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null, creation_ip in acs_objects.creation_ip%TYPE default null,
object_type in acs_objects.object_type%TYPE default 'acs_message', object_type in acs_objects.object_type%TYPE default 'acs_message',
is_live in char default 't' is_live in char default 't',
package_id in acs_objects.package_id%TYPE default null
) return acs_objects.object_id%TYPE ) return acs_objects.object_id%TYPE
is is
v_message_id acs_messages.message_id%TYPE; v_message_id acs_messages.message_id%TYPE;
...@@ -226,7 +231,8 @@ as ...@@ -226,7 +231,8 @@ as
creation_date => creation_date, creation_date => creation_date,
creation_user => creation_user, creation_user => creation_user,
creation_ip => creation_ip, creation_ip => creation_ip,
item_subtype => object_type item_subtype => object_type,
package_id => package_id
); );
insert into acs_messages insert into acs_messages
...@@ -394,7 +400,8 @@ as ...@@ -394,7 +400,8 @@ as
creation_user in acs_objects.creation_user%TYPE default null, creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null, creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't', is_live in char default 't',
storage_type in cr_items.storage_type%TYPE default 'file' storage_type in cr_items.storage_type%TYPE default 'file',
package_id in acs_objects.package_id%TYPE default null
) return acs_objects.object_id%TYPE ) return acs_objects.object_id%TYPE
is is
v_file_id cr_items.item_id%TYPE; v_file_id cr_items.item_id%TYPE;
...@@ -408,7 +415,8 @@ as ...@@ -408,7 +415,8 @@ as
creation_date => creation_date, creation_date => creation_date,
creation_user => creation_user, creation_user => creation_user,
creation_ip => creation_ip, creation_ip => creation_ip,
storage_type => storage_type storage_type => storage_type,
package_id => package_id
); );
-- create an initial revision for the new attachment -- create an initial revision for the new attachment
...@@ -482,7 +490,8 @@ as ...@@ -482,7 +490,8 @@ as
creation_user in acs_objects.creation_user%TYPE default null, creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null, creation_ip in acs_objects.creation_ip%TYPE default null,
is_live in char default 't', is_live in char default 't',
storage_type in cr_items.storage_type%TYPE default 'file' storage_type in cr_items.storage_type%TYPE default 'file',
package_id in acs_objects.package_id%TYPE default null
) return acs_objects.object_id%TYPE ) return acs_objects.object_id%TYPE
is is
v_image_id cr_items.item_id%TYPE; v_image_id cr_items.item_id%TYPE;
...@@ -496,7 +505,8 @@ as ...@@ -496,7 +505,8 @@ as
creation_date => creation_date, creation_date => creation_date,
creation_user => creation_user, creation_user => creation_user,
creation_ip => creation_ip, creation_ip => creation_ip,
storage_type => storage_type storage_type => storage_type,
package_id => package_id
); );
-- create an initial revision for the new attachment -- create an initial revision for the new attachment
...@@ -580,7 +590,8 @@ as ...@@ -580,7 +590,8 @@ as
parent_id in acs_objects.context_id%TYPE, parent_id in acs_objects.context_id%TYPE,
creation_date in acs_objects.creation_date%TYPE default sysdate, creation_date in acs_objects.creation_date%TYPE default sysdate,
creation_user in acs_objects.creation_user%TYPE default null, creation_user in acs_objects.creation_user%TYPE default null,
creation_ip in acs_objects.creation_ip%TYPE default null creation_ip in acs_objects.creation_ip%TYPE default null,
package_id in acs_objects.package_id%TYPE default null
) return cr_extlinks.extlink_id%TYPE ) return cr_extlinks.extlink_id%TYPE
is is
v_extlink_id cr_extlinks.extlink_id%TYPE; v_extlink_id cr_extlinks.extlink_id%TYPE;
...@@ -594,7 +605,8 @@ as ...@@ -594,7 +605,8 @@ as
extlink_id => new_extlink.extlink_id, extlink_id => new_extlink.extlink_id,
creation_date => new_extlink.creation_date, creation_date => new_extlink.creation_date,
creation_user => new_extlink.creation_user, creation_user => new_extlink.creation_user,
creation_ip => new_extlink.creation_ip creation_ip => new_extlink.creation_ip,
package_id => new_extlink.package_id
); );
end new_extlink; end new_extlink;
......
update acs_objects
set title = (select name
from cr_items
where item_id = object_id),
package_id = acs_object__package_id(content_item.get_root_folder(object_id))
where object_type = 'acs_message';
@@ ../acs-messaging-packages.sql
--
-- 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$
--
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 -4,
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',
package_id in acs_objects.package_id%TYPE default null
) 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 del (
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 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',
storage_type in cr_items.storage_type%TYPE default 'file',
package_id in acs_objects.package_id%TYPE default null
) 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 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;
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 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',
storage_type in cr_items.storage_type%TYPE default 'file',
package_id in acs_objects.package_id%TYPE default null
) 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 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;
procedure delete_image (
image_id in cr_items.item_id%TYPE
);
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,
package_id in acs_objects.package_id%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 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 -4,
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',
package_id in acs_objects.package_id%TYPE default null
) 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,
package_id => package_id
);
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 del (
message_id in acs_messages.message_id%TYPE
)
is
begin
delete from acs_messages
where message_id = acs_message.del.message_id;
content_item.del(message_id);
end del;
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',
storage_type in cr_items.storage_type%TYPE default 'file',
package_id in acs_objects.package_id%TYPE default null
) 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,
storage_type => storage_type,
package_id => package_id
);
-- 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.del(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',
storage_type in cr_items.storage_type%TYPE default 'file',
package_id in acs_objects.package_id%TYPE default null
) 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,
storage_type => storage_type,
package_id => package_id
);
-- 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.del(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,
package_id in acs_objects.package_id%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,
package_id => new_extlink.package_id
);
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.del(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
update acs_object_types set table_name=null, id_column=null where object_type='acs_message_revision';
...@@ -15,12 +15,12 @@ select acs_object_type__create_type ( ...@@ -15,12 +15,12 @@ select acs_object_type__create_type (
'Message', 'Message',
'Messages', 'Messages',
'content_item', 'content_item',
'ACS_MESSAGES', 'acs_messages',
'MESSAGE_ID', 'message_id',
null, null,
'f', 'f',
null, null,
'ACS_MESSAGE.NAME' 'acs_message__name'
); );
select acs_object_type__create_type ( select acs_object_type__create_type (
...@@ -28,12 +28,12 @@ select acs_object_type__create_type ( ...@@ -28,12 +28,12 @@ select acs_object_type__create_type (
'Message Revision', 'Message Revision',
'Message Revisions', 'Message Revisions',
'content_revision', 'content_revision',
'CR_REVISIONS', null,
'REVISION_ID', null,
null, null,
'f', 'f',
null, null,
'ACS_OBJECT.DEFAULT_NAME' 'acs_object__default_name'
); );
...@@ -43,7 +43,7 @@ create table acs_messages ( -- extends cr_items ...@@ -43,7 +43,7 @@ create table acs_messages ( -- extends cr_items
message_id integer message_id integer
constraint acs_messages_message_id_fk constraint acs_messages_message_id_fk
references cr_items (item_id) on delete cascade references cr_items (item_id) on delete cascade
constraint acs_messages_pk constraint acs_messages_message_id_pk
primary key, primary key,
-- we will need to find a way to make reply_to go to 0 instead of null -- we will need to find a way to make reply_to go to 0 instead of null
-- to improve scalability -- to improve scalability
......
...@@ -17,6 +17,9 @@ drop function acs_message__edit (integer,varchar,varchar,varchar, ...@@ -17,6 +17,9 @@ drop function acs_message__edit (integer,varchar,varchar,varchar,
drop function acs_message__new (integer,integer,timestamptz,integer, drop function acs_message__new (integer,integer,timestamptz,integer,
varchar,varchar,varchar,varchar,varchar,text, varchar,varchar,varchar,varchar,varchar,text,
integer,integer,integer,varchar,varchar,boolean); integer,integer,integer,varchar,varchar,boolean);
drop function acs_message__new (integer,integer,timestamptz,integer,
varchar,varchar,varchar,varchar,varchar,text,
integer,integer,integer,varchar,varchar,boolean,integer);
drop function acs_message__delete (integer); drop function acs_message__delete (integer);
drop function acs_message__message_p (integer); drop function acs_message__message_p (integer);
drop function acs_message__send (integer,varchar,integer,timestamptz); drop function acs_message__send (integer,varchar,integer,timestamptz);
...@@ -25,18 +28,26 @@ drop function acs_message__first_ancestor (integer); ...@@ -25,18 +28,26 @@ drop function acs_message__first_ancestor (integer);
drop function acs_message__new_file (integer,integer,varchar,varchar, drop function acs_message__new_file (integer,integer,varchar,varchar,
text,varchar,text,timestamptz,integer, text,varchar,text,timestamptz,integer,
varchar,boolean); varchar,boolean);
drop function acs_message__new_file (integer,integer,varchar,varchar,
text,varchar,text,timestamptz,integer,
varchar,boolean,integer);
drop function acs_message__edit_file (integer,varchar,text,varchar, drop function acs_message__edit_file (integer,varchar,text,varchar,
text,timestamptz,integer,varchar,boolean); text,timestamptz,integer,varchar,boolean);
drop function acs_message__delete_file (integer); drop function acs_message__delete_file (integer);
drop function acs_message__new_image (integer,integer,varchar,varchar, drop function acs_message__new_image (integer,integer,varchar,varchar,
text,varchar,text,integer,integer, text,varchar,text,integer,integer,
timestamptz,integer,varchar,boolean); timestamptz,integer,varchar,boolean);
drop function acs_message__new_image (integer,integer,varchar,varchar,
text,varchar,text,integer,integer,
timestamptz,integer,varchar,boolean,integer);
drop function acs_message__edit_image (integer,varchar,text,varchar, drop function acs_message__edit_image (integer,varchar,text,varchar,
text,integer,integer,timestamptz,integer, text,integer,integer,timestamptz,integer,
varchar,boolean); varchar,boolean);
drop function acs_message__delete_image (integer); drop function acs_message__delete_image (integer);
drop function acs_message__new_extlink (varchar,integer,varchar,varchar,text, drop function acs_message__new_extlink (varchar,integer,varchar,varchar,text,
integer,timestamptz,integer,varchar); integer,timestamptz,integer,varchar);
drop function acs_message__new_extlink (varchar,integer,varchar,varchar,text,
integer,timestamptz,integer,varchar,integer);
drop function acs_message__edit_extlink (integer,varchar,varchar,text); drop function acs_message__edit_extlink (integer,varchar,varchar,text);
drop function acs_message__delete_extlink (integer); drop function acs_message__delete_extlink (integer);
drop function acs_message__name (integer); drop function acs_message__name (integer);
......
...@@ -29,28 +29,28 @@ begin ...@@ -29,28 +29,28 @@ begin
if p_data is not null then if p_data is not null then
-- need to take care of blob? -- need to take care of blob?
v_revision_id := content_revision__new ( v_revision_id := content_revision__new (
p_message_id, -- item_id p_message_id, -- item_id
p_title, -- title p_title, -- title
p_description, -- description p_description, -- description
p_data, -- data p_data, -- data
p_mime_type, -- mime_type p_mime_type, -- mime_type
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
p_creation_ip -- creation_ip p_creation_ip -- creation_ip
); );
else if p_title is not null or p_text is not null then else if p_title is not null or p_text is not null then
v_revision_id := content_revision__new ( v_revision_id := content_revision__new (
p_title, -- title p_title, -- title
p_description, -- description p_description, -- description
now(), -- publish_date now(), -- publish_date
p_mime_type, -- mime_type p_mime_type, -- mime_type
null, -- nls_language null, -- nls_language
p_text, -- text p_text, -- text
p_message_id, -- item_id p_message_id, -- item_id
null, -- revision_id null, -- revision_id
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
p_creation_ip -- creation_ip p_creation_ip -- creation_ip
); );
end if; end if;
end if; end if;
...@@ -75,7 +75,7 @@ end;' language 'plpgsql'; ...@@ -75,7 +75,7 @@ end;' language 'plpgsql';
create or replace function acs_message__new (integer,integer,timestamptz,integer, create or replace function acs_message__new (integer,integer,timestamptz,integer,
varchar,varchar,varchar,varchar,text,integer,integer,integer,integer, varchar,varchar,varchar,varchar,text,integer,integer,integer,integer,
varchar,varchar,boolean) varchar,varchar,boolean,integer)
returns integer as ' returns integer as '
declare declare
p_message_id alias for $1; --default null, p_message_id alias for $1; --default null,
...@@ -95,6 +95,7 @@ declare ...@@ -95,6 +95,7 @@ declare
p_creation_ip alias for $14; --default null, p_creation_ip alias for $14; --default null,
p_object_type alias for $15; --default ''acs_message'', p_object_type alias for $15; --default ''acs_message'',
p_is_live alias for $16; --default ''t'' p_is_live alias for $16; --default ''t''
p_package_id alias for $17;
v_message_id acs_messages.message_id%TYPE; v_message_id acs_messages.message_id%TYPE;
v_rfc822_id acs_messages.rfc822_id%TYPE; v_rfc822_id acs_messages.rfc822_id%TYPE;
v_revision_id cr_revisions.revision_id%TYPE; v_revision_id cr_revisions.revision_id%TYPE;
...@@ -127,22 +128,23 @@ declare ...@@ -127,22 +128,23 @@ declare
end if; end if;
v_message_id := content_item__new ( v_message_id := content_item__new (
v_rfc822_id, -- name v_rfc822_id, -- name
p_parent_id, -- parent_id p_parent_id, -- parent_id
p_message_id, -- item_id p_message_id, -- item_id
null, -- locale null, -- locale
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
p_context_id, -- context_id p_context_id, -- context_id
p_creation_ip, -- creation_ip p_creation_ip, -- creation_ip
p_object_type, -- item_subtype p_object_type, -- item_subtype
''acs_message_revision'', -- content_type ''acs_message_revision'', -- content_type
null, -- title null, -- title
null, -- description null, -- description
''text/plain'', -- mime_type ''text/plain'', -- mime_type
null, -- nls_language null, -- nls_language
null, -- text null, -- text
''text'' -- storage_type ''text'', -- storage_type
p_package_id
); );
insert into acs_messages insert into acs_messages
...@@ -152,21 +154,64 @@ declare ...@@ -152,21 +154,64 @@ declare
-- create an initial revision for the new message -- create an initial revision for the new message
v_revision_id := acs_message__edit ( v_revision_id := acs_message__edit (
v_message_id, -- message_id v_message_id, -- message_id
p_title, -- title p_title, -- title
p_description, -- description p_description, -- description
p_mime_type, -- mime_type p_mime_type, -- mime_type
p_text, -- text p_text, -- text
p_data, -- data p_data, -- data
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
p_creation_ip, -- creation_ip p_creation_ip, -- creation_ip
p_is_live -- is_live p_is_live -- is_live
); );
return v_message_id; return v_message_id;
end;' language 'plpgsql'; end;' language 'plpgsql';
create or replace function acs_message__new (integer,integer,timestamptz,integer,
varchar,varchar,varchar,varchar,text,integer,integer,integer,integer,
varchar,varchar,boolean)
returns integer as '
declare
p_message_id alias for $1; --default null,
p_reply_to alias for $2; --default null,
p_sent_date alias for $3; --default sysdate,
p_sender alias for $4; --default null,
p_rfc822_id alias for $5; --default null,
p_title alias for $6; --default null,
p_description alias for $7; --default null,
p_mime_type alias for $8; --default ''text/plain'',
p_text alias for $9; --default null,
p_data alias for $10; --default null,
p_parent_id alias for $11; --default 0,
p_context_id alias for $12;
p_creation_date timestamptz := current_timestamp; -- alias for $13 --default sysdate,
p_creation_user alias for $13; --default null,
p_creation_ip alias for $14; --default null,
p_object_type alias for $15; --default ''acs_message'',
p_is_live alias for $16; --default ''t''
begin
return acs_message__new (p_message_id,
p_reply_to,
p_sent_date,
p_sender,
p_rfc822_id,
p_title,
p_description,
p_mime_type,
p_text,
p_data,
p_parent_id,
p_context_id,
p_creation_user,
p_creation_ip,
p_object_type,
p_is_live,
null::integer
);
end;' language 'plpgsql';
create or replace function acs_message__delete (integer) create or replace function acs_message__delete (integer)
returns integer as ' returns integer as '
declare declare
...@@ -257,7 +302,7 @@ end;' language 'plpgsql' stable strict; ...@@ -257,7 +302,7 @@ end;' language 'plpgsql' stable strict;
-- by direct calls to CR code in the near future. -- by direct calls to CR code in the near future.
create or replace function acs_message__new_file (integer,integer,varchar,varchar, create or replace function acs_message__new_file (integer,integer,varchar,varchar,
text,varchar,integer,timestamptz,integer,varchar,boolean,varchar) text,varchar,integer,timestamptz,integer,varchar,boolean,varchar,integer)
returns integer as ' returns integer as '
declare declare
p_message_id alias for $1; p_message_id alias for $1;
...@@ -272,44 +317,79 @@ declare ...@@ -272,44 +317,79 @@ declare
p_creation_ip alias for $10; -- default null p_creation_ip alias for $10; -- default null
p_is_live alias for $11; -- default ''t'' p_is_live alias for $11; -- default ''t''
p_storage_type alias for $12; -- default ''file'' p_storage_type alias for $12; -- default ''file''
p_package_id alias for $13; -- default null
v_file_id cr_items.item_id%TYPE; v_file_id cr_items.item_id%TYPE;
v_revision_id cr_revisions.revision_id%TYPE; v_revision_id cr_revisions.revision_id%TYPE;
begin begin
v_file_id := content_item__new ( v_file_id := content_item__new (
p_file_name, -- name p_file_name, -- name
p_message_id, -- parent_id p_message_id, -- parent_id
p_file_id, -- item_id p_file_id, -- item_id
null, -- locale null, -- locale
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
null, -- context_id null, -- context_id
p_creation_ip, -- creation_ip p_creation_ip, -- creation_ip
''content_item'', -- item_subtype ''content_item'', -- item_subtype
''content_revision'', -- content_type ''content_revision'', -- content_type
null, -- title null, -- title
null, -- description null, -- description
''text/plain'', -- mime_type ''text/plain'', -- mime_type
null, -- nls_language null, -- nls_language
null, -- text null, -- text
p_storage_type -- storage_type p_storage_type, -- storage_type
p_package_id -- package_id
); );
-- create an initial revision for the new attachment -- create an initial revision for the new attachment
v_revision_id := acs_message__edit_file ( v_revision_id := acs_message__edit_file (
v_file_id, -- file_id v_file_id, -- file_id
p_title, -- title p_title, -- title
p_description, -- description p_description, -- description
p_mime_type, -- mime_type p_mime_type, -- mime_type
p_data, -- data p_data, -- data
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
p_creation_ip, -- creation_ip p_creation_ip, -- creation_ip
p_is_live -- is_live p_is_live -- is_live
); );
return v_file_id; return v_file_id;
end;' language 'plpgsql'; end;' language 'plpgsql';
create or replace function acs_message__new_file (integer,integer,varchar,varchar,
text,varchar,integer,timestamptz,integer,varchar,boolean,varchar)
returns integer as '
declare
p_message_id alias for $1;
p_file_id alias for $2; -- default null
p_file_name alias for $3;
p_title alias for $4; -- default null
p_description alias for $5; -- default null
p_mime_type alias for $6; -- default ''text/plain''
p_data alias for $7; -- default null
p_creation_date alias for $8; -- default sysdate
p_creation_user alias for $9; -- default null
p_creation_ip alias for $10; -- default null
p_is_live alias for $11; -- default ''t''
p_storage_type alias for $12; -- default ''file''
begin
return acs_message__new_file (p_message_id,
p_file_id,
p_file_name,
p_title,
p_description,
p_mime_type,
p_data,
p_creation_date,
p_creation_user,
p_creation_ip,
p_is_live,
p_storage_type,
null
);
end;' language 'plpgsql';
create or replace function acs_message__edit_file (integer,varchar,text,varchar, create or replace function acs_message__edit_file (integer,varchar,text,varchar,
integer,timestamptz,integer,varchar,boolean) integer,timestamptz,integer,varchar,boolean)
returns integer as ' returns integer as '
...@@ -326,13 +406,13 @@ declare ...@@ -326,13 +406,13 @@ declare
v_revision_id cr_revisions.revision_id%TYPE; v_revision_id cr_revisions.revision_id%TYPE;
begin begin
v_revision_id := content_revision__new ( v_revision_id := content_revision__new (
p_title, -- title p_title, -- title
p_description, p_description,
current_timestamp, current_timestamp,
p_mime_type, -- mime_type p_mime_type, -- mime_type
NULL, NULL,
p_data, -- data p_data, -- data
p_file_id, -- item_id p_file_id, -- item_id
NULL, NULL,
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
...@@ -357,7 +437,7 @@ begin ...@@ -357,7 +437,7 @@ begin
end;' language 'plpgsql'; end;' language 'plpgsql';
create or replace function acs_message__new_image (integer,integer,varchar,varchar, create or replace function acs_message__new_image (integer,integer,varchar,varchar,
text,varchar,integer,integer,integer,timestamptz,integer,varchar,boolean,varchar) text,varchar,integer,integer,integer,timestamptz,integer,varchar,boolean,varchar,integer)
returns integer as ' returns integer as '
declare declare
p_message_id alias for $1; p_message_id alias for $1;
...@@ -374,6 +454,7 @@ declare ...@@ -374,6 +454,7 @@ declare
p_creation_ip alias for $12; -- default null p_creation_ip alias for $12; -- default null
p_is_live alias for $13; -- default ''t'' p_is_live alias for $13; -- default ''t''
p_storage_type alias for $14; -- default ''file'' p_storage_type alias for $14; -- default ''file''
p_package_id alias for $15; -- default null
v_image_id cr_items.item_id%TYPE; v_image_id cr_items.item_id%TYPE;
v_revision_id cr_revisions.revision_id%TYPE; v_revision_id cr_revisions.revision_id%TYPE;
begin begin
...@@ -381,39 +462,77 @@ begin ...@@ -381,39 +462,77 @@ begin
p_file_name, -- name p_file_name, -- name
p_message_id, -- parent_id p_message_id, -- parent_id
p_image_id, -- item_id p_image_id, -- item_id
null, -- locale null, -- locale
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
null, -- context_id null, -- context_id
p_creation_ip, -- creation_ip p_creation_ip, -- creation_ip
''content_item'', -- item_subtype ''content_item'', -- item_subtype
''content_revision'', -- content_type ''content_revision'', -- content_type
null, -- title null, -- title
null, -- description null, -- description
''text/plain'', -- mime_type ''text/plain'', -- mime_type
null, -- nls_language null, -- nls_language
null, -- text null, -- text
''file'' -- storage_type ''file'', -- storage_type
p_package_id -- package_id
); );
-- create an initial revision for the new attachment -- create an initial revision for the new attachment
v_revision_id := acs_message__edit_image ( v_revision_id := acs_message__edit_image (
v_image_id, -- image_id v_image_id, -- image_id
p_title, -- title p_title, -- title
p_description, -- description p_description, -- description
p_mime_type, -- mime_type p_mime_type, -- mime_type
p_data, -- data p_data, -- data
p_width, -- width p_width, -- width
p_height, -- height p_height, -- height
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
p_creation_ip, -- creation_ip p_creation_ip, -- creation_ip
p_is_live -- is_live p_is_live -- is_live
); );
return v_image_id; return v_image_id;
end;' language 'plpgsql'; end;' language 'plpgsql';
create or replace function acs_message__new_image (integer,integer,varchar,varchar,
text,varchar,integer,integer,integer,timestamptz,integer,varchar,boolean,varchar)
returns integer as '
declare
p_message_id alias for $1;
p_image_id alias for $2; -- default null
p_file_name alias for $3;
p_title alias for $4; -- default null
p_description alias for $5; -- default null
p_mime_type alias for $6; -- default ''text/plain''
p_data alias for $7; -- default null
p_width alias for $8; -- default null
p_height alias for $9; -- default null
p_creation_date alias for $10; -- default sysdate
p_creation_user alias for $11; -- default null
p_creation_ip alias for $12; -- default null
p_is_live alias for $13; -- default ''t''
p_storage_type alias for $14; -- default ''file''
begin
return acs_message__new_image (p_message_id,
p_image_id,
p_file_name,
p_title,
p_description,
p_mime_type,
p_data,
p_width,
p_height,
p_creation_date,
p_creation_user,
p_creation_ip,
p_is_live,
p_storage_type,
null
);
end;' language 'plpgsql';
create or replace function acs_message__edit_image (integer,varchar,text,varchar, create or replace function acs_message__edit_image (integer,varchar,text,varchar,
integer,integer,integer,timestamptz,integer,varchar,boolean) integer,integer,integer,timestamptz,integer,varchar,boolean)
returns integer as ' returns integer as '
...@@ -473,7 +592,7 @@ end;' language 'plpgsql'; ...@@ -473,7 +592,7 @@ end;' language 'plpgsql';
-- XXX should just call content_extlink.new -- XXX should just call content_extlink.new
create or replace function acs_message__new_extlink (varchar,integer,varchar, create or replace function acs_message__new_extlink (varchar,integer,varchar,
varchar,text,integer,timestamptz,integer,varchar) varchar,text,integer,timestamptz,integer,varchar,integer)
returns integer as ' returns integer as '
declare declare
p_name alias for $1; -- default null p_name alias for $1; -- default null
...@@ -485,23 +604,52 @@ declare ...@@ -485,23 +604,52 @@ declare
p_creation_date alias for $7; -- default sysdate p_creation_date alias for $7; -- default sysdate
p_creation_user alias for $8; -- default null p_creation_user alias for $8; -- default null
p_creation_ip alias for $9; -- default null p_creation_ip alias for $9; -- default null
p_package_id alias for $10; -- default null
v_extlink_id cr_extlinks.extlink_id%TYPE; v_extlink_id cr_extlinks.extlink_id%TYPE;
begin begin
v_extlink_id := content_extlink__new ( v_extlink_id := content_extlink__new (
p_name, -- name p_name, -- name
p_url, -- url p_url, -- url
p_label, -- label p_label, -- label
p_description, -- description p_description, -- description
p_parent_id, -- parent_id p_parent_id, -- parent_id
p_extlink_id, -- extlink_id p_extlink_id, -- extlink_id
p_creation_date, -- creation_date p_creation_date, -- creation_date
p_creation_user, -- creation_user p_creation_user, -- creation_user
p_creation_ip -- creation_ip p_creation_ip, -- creation_ip
p_package_id
); );
return v_extlink_id; return v_extlink_id;
end;' language 'plpgsql'; end;' language 'plpgsql';
create or replace function acs_message__new_extlink (varchar,integer,varchar,
varchar,text,integer,timestamptz,integer,varchar)
returns integer as '
declare
p_name alias for $1; -- default null
p_extlink_id alias for $2; -- default null
p_url alias for $3;
p_label alias for $4; -- default null
p_description alias for $5; -- default null
p_parent_id alias for $6;
p_creation_date alias for $7; -- default sysdate
p_creation_user alias for $8; -- default null
p_creation_ip alias for $9; -- default null
begin
return acs_message__new_extlink (p_name,
p_extlink_id,
p_url,
p_label,
p_description,
p_parent_id,
p_creation_date,
p_creation_user,
p_creation_ip,
null
);
end;' language 'plpgsql';
-- XXX should just edit extlink -- XXX should just edit extlink
create or replace function acs_message__edit_extlink (integer,varchar,varchar,text) create or replace function acs_message__edit_extlink (integer,varchar,varchar,text)
returns integer as ' returns integer as '
......
update acs_objects
set title = (select name
from cr_items
where item_id = object_id),
package_id = acs_object__package_id(content_item__get_root_folder(object_id))
where object_type = 'acs_message';
\i ../acs-messaging-packages.sql
update acs_object_types set table_name=null, id_column=null where object_type='acs_message_revision';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment