Commit 7e568207 authored by Frank Bergmann's avatar Frank Bergmann

- Comitting OpenACS 5.9

parent 4f53500e
...@@ -7,23 +7,22 @@ ...@@ -7,23 +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.7.0" url="http://openacs.org/repository/download/apm/acs-messaging-5.7.0.apm"> <version name="5.10.0d1" url="http://openacs.org/repository/download/apm/acs-messaging-5.10.0d1.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>2011-06-12</release-date> <release-date>2013-09-08</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> <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.7.0"/> <provides url="acs-messaging" version="5.10.0d1"/>
<requires url="acs-content-repository" version="5.7.0"/> <requires url="acs-content-repository" version="5.10.0d1"/>
<requires url="acs-kernel" version="5.7.0"/> <requires url="acs-kernel" version="5.10.0d1"/>
<requires url="acs-mail-lite" version="5.7.0"/> <requires url="acs-mail-lite" version="5.10.0d1"/>
<callbacks> <callbacks>
</callbacks> </callbacks>
......
...@@ -95,18 +95,35 @@ comment on column acs_messages.rfc822_id is ' ...@@ -95,18 +95,35 @@ comment on column acs_messages.rfc822_id is '
-- support for tree queries on acs_messages -- support for tree queries on acs_messages
create or replace function acs_message_get_tree_sortkey(integer) returns varbit as '
declare
p_message_id alias for $1; -- added
begin select define_function_args('acs_message_get_tree_sortkey','message_id');
--
-- procedure acs_message_get_tree_sortkey/1
--
CREATE OR REPLACE FUNCTION acs_message_get_tree_sortkey(
p_message_id integer
) RETURNS varbit AS $$
DECLARE
BEGIN
return tree_sortkey from acs_messages where message_id = p_message_id; return tree_sortkey from acs_messages where message_id = p_message_id;
end;' language 'plpgsql' stable strict; END;
$$ LANGUAGE plpgsql stable strict;
create or replace function acs_message_insert_tr () returns opaque as '
declare --
-- procedure acs_message_insert_tr/0
--
CREATE OR REPLACE FUNCTION acs_message_insert_tr(
) RETURNS trigger AS $$
DECLARE
v_parent_sk varbit default null; v_parent_sk varbit default null;
v_max_value integer; v_max_value integer;
begin BEGIN
if new.reply_to is null then if new.reply_to is null then
select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value
from acs_messages from acs_messages
...@@ -125,20 +142,28 @@ begin ...@@ -125,20 +142,28 @@ begin
return new; return new;
end;' language 'plpgsql'; END;
$$ LANGUAGE plpgsql;
create trigger acs_message_insert_tr before insert create trigger acs_message_insert_tr before insert
on acs_messages on acs_messages
for each row for each row
execute procedure acs_message_insert_tr (); execute procedure acs_message_insert_tr ();
create function acs_message_update_tr () returns opaque as '
declare
--
-- procedure acs_message_update_tr/0
--
CREATE OR REPLACE FUNCTION acs_message_update_tr(
) RETURNS trigger AS $$
DECLARE
v_parent_sk varbit default null; v_parent_sk varbit default null;
v_max_value integer; v_max_value integer;
v_rec record; v_rec record;
clr_keys_p boolean default ''t''; clr_keys_p boolean default 't';
begin BEGIN
if new.message_id = old.message_id and if new.message_id = old.message_id and
((new.reply_to = old.reply_to) or ((new.reply_to = old.reply_to) or
(new.reply_to is null and old.reply_to is null)) then (new.reply_to is null and old.reply_to is null)) then
...@@ -155,7 +180,7 @@ begin ...@@ -155,7 +180,7 @@ begin
if clr_keys_p then if clr_keys_p then
update acs_messages set tree_sortkey = null update acs_messages set tree_sortkey = null
where tree_sortkey between new.tree_sortkey and tree_right(new.tree_sortkey); where tree_sortkey between new.tree_sortkey and tree_right(new.tree_sortkey);
clr_keys_p := ''f''; clr_keys_p := 'f';
end if; end if;
select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value
...@@ -174,7 +199,8 @@ begin ...@@ -174,7 +199,8 @@ begin
return new; return new;
end;' language 'plpgsql'; END;
$$ LANGUAGE plpgsql;
create trigger acs_message_update_tr after update create trigger acs_message_update_tr after update
on acs_messages on acs_messages
......
This diff is collapsed.
...@@ -2,35 +2,42 @@ ...@@ -2,35 +2,42 @@
-- errors on calls from query files using bindvar emulation, where -- errors on calls from query files using bindvar emulation, where
-- all the parameters are quoted and therefore of unknown type. -- all the parameters are quoted and therefore of unknown type.
create or replace function acs_message__new (integer,integer,timestamptz,integer,
varchar,varchar,varchar,varchar,text,integer,integer,integer,integer,
varchar,varchar,boolean) -- added
returns integer as ' select define_function_args('acs_message__new','message_id,reply_to,sent_date,sender,rfc822_id,title,description,mime_type,text,data,parent_id,context_id,creation_user,creation_ip,object_type,is_live');
declare
p_message_id alias for $1; --default null, --
p_reply_to alias for $2; --default null, -- procedure acs_message__new/16
p_sent_date alias for $3; --default sysdate, --
p_sender alias for $4; --default null, CREATE OR REPLACE FUNCTION acs_message__new(
p_rfc822_id alias for $5; --default null, p_message_id integer, --default null,
p_title alias for $6; --default null, p_reply_to integer, --default null,
p_description alias for $7; --default null, p_sent_date timestamptz, --default sysdate,
p_mime_type alias for $8; --default ''text/plain'', p_sender integer, --default null,
p_text alias for $9; --default null, p_rfc822_id varchar, --default null,
p_data alias for $10; --default null, p_title varchar, --default null,
p_parent_id alias for $11; --default 0, p_description varchar, --default null,
p_context_id alias for $12; p_mime_type varchar, --default 'text/plain',
p_text text, --default null,
p_data integer, --default null,
p_parent_id integer, --default 0,
p_context_id integer,
p_creation_user integer, --default null,
p_creation_ip varchar, --default null,
p_object_type varchar, --default 'acs_message',
p_is_live boolean --default 't'
) RETURNS integer AS $$
DECLARE
p_creation_date timestamptz := current_timestamp; -- alias for $13 --default sysdate, 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''
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;
v_system_url varchar; v_system_url varchar;
v_domain_name varchar; v_domain_name varchar;
v_idx integer; v_idx integer;
begin BEGIN
-- generate a message id now so we can get an rfc822 message-id -- generate a message id now so we can get an rfc822 message-id
if p_message_id is null then if p_message_id is null then
select acs_object_id_seq.nextval into v_message_id; select acs_object_id_seq.nextval into v_message_id;
...@@ -39,18 +46,18 @@ declare ...@@ -39,18 +46,18 @@ declare
end if; end if;
-- need to make this mandatory also - jg -- need to make this mandatory also - jg
-- this needs to be fixed up, but Oracle doesn''t give us a way -- this needs to be fixed up, but Oracle doesn't give us a way
-- to get the FQDN -- to get the FQDN
-- vk: get SystemURL parameter and use it to extract domain name -- vk: get SystemURL parameter and use it to extract domain name
select apm__get_value(package_id, ''SystemURL'') into v_system_url select apm__get_value(package_id, 'SystemURL') into v_system_url
from apm_packages where package_key=''acs-kernel''; from apm_packages where package_key='acs-kernel';
v_idx := position(''http://'' in v_system_url); v_idx := position('http://' in v_system_url);
v_domain_name := trim (substr(v_system_url, v_idx + 7)); v_domain_name := trim (substr(v_system_url, v_idx + 7));
if p_rfc822_id is null then if p_rfc822_id is null then
v_rfc822_id := current_date || ''.'' || v_message_id || ''@'' || v_rfc822_id := current_date || '.' || v_message_id || '@' ||
v_domain_name || ''.hate''; v_domain_name || '.hate';
else else
v_rfc822_id := p_rfc822_id; v_rfc822_id := p_rfc822_id;
end if; end if;
...@@ -65,13 +72,13 @@ declare ...@@ -65,13 +72,13 @@ declare
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
); );
insert into acs_messages insert into acs_messages
...@@ -94,5 +101,6 @@ declare ...@@ -94,5 +101,6 @@ declare
); );
return v_message_id; return v_message_id;
end;' language 'plpgsql'; END;
$$ LANGUAGE plpgsql;
-- call image__delete instead. -- call image__delete instead.
create or replace function acs_message__delete_image (integer)
returns integer as '
declare -- added
p_image_id alias for $1; select define_function_args('acs_message__delete_image','image_id');
begin
--
-- procedure acs_message__delete_image/1
--
CREATE OR REPLACE FUNCTION acs_message__delete_image(
p_image_id integer
) RETURNS integer AS $$
DECLARE
BEGIN
perform image__delete(p_image_id); perform image__delete(p_image_id);
return 1; return 1;
end;' language 'plpgsql'; END;
$$ LANGUAGE plpgsql;
...@@ -9,5 +9,5 @@ ad_library { ...@@ -9,5 +9,5 @@ ad_library {
} }
# Schedule every 15 minutes # Schedule every 15 minutes
ad_schedule_proc -thread t 900 acs_messaging_process_queue ad_schedule_proc -thread t 907 acs_messaging_process_queue
...@@ -133,7 +133,7 @@ ad_proc -private acs_messaging_timezone_offset { ...@@ -133,7 +133,7 @@ ad_proc -private acs_messaging_timezone_offset {
} { } {
Returns a best guess of the timezone offset for the machine. Returns a best guess of the timezone offset for the machine.
} { } {
return [format "%+05d" [expr ([lindex [ns_localtime] 2] - [lindex [ns_gmtime] 2]) * 100]] return [format "%+05d" [expr {([lindex [ns_localtime] 2] - [lindex [ns_gmtime] 2]) * 100]}]
} }
ad_proc -private acs_messaging_process_queue { ad_proc -private acs_messaging_process_queue {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<ul> <ul>
<li><a href="requirements">requirements</a> <li><a href="requirements">requirements</a>
<li><a href="../bboard/design">bboard design</a> <li><a href="design">design</a>
</ul> </ul>
<hr> <hr>
......
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