Index: openacs-4/packages/acs-messaging/sql/postgresql/upgrade/upgrade-5.10.0d1-5.10.0d2.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-messaging/sql/postgresql/upgrade/Attic/upgrade-5.10.0d1-5.10.0d2.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-messaging/sql/postgresql/upgrade/upgrade-5.10.0d1-5.10.0d2.sql 24 Feb 2021 03:31:15 -0000 1.1.2.1 @@ -0,0 +1,114 @@ +-- +-- Avoid calling depreacted content_item__new/17, call content_item__new/21 instead +-- +-- + +-- +-- procedure acs_message__new/17 +-- +CREATE OR REPLACE FUNCTION acs_message__new( + p_message_id integer, --default null, + p_reply_to integer, --default null, + p_sent_date timestamptz, --default sysdate, + p_sender integer, --default null, + p_rfc822_id varchar, --default null, + p_title varchar, --default null, + p_description varchar, --default null, + 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' + p_package_id integer default null + +) RETURNS integer AS $$ +DECLARE + p_creation_date timestamptz := current_timestamp; -- alias for $13 --default sysdate, + v_message_id acs_messages.message_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 p_message_id is null then + -- select nextval('t_acs_object_id_seq') into v_message_id; + -- else + -- v_message_id := p_message_id; + -- end if; + + -- -- need to make this mandatory also - jg + -- -- this needs to be fixed up, but Oracle doesn't give us a way + -- -- to get the FQDN + + -- -- vk: get SystemURL parameter and use it to extract domain name + -- select apm__get_value(package_id, 'SystemURL') into v_system_url + -- from apm_packages where package_key='acs-kernel'; + -- v_idx := position('http://' in v_system_url); + -- v_domain_name := trim (substr(v_system_url, v_idx + 7)); + + -- if p_rfc822_id is null then + -- v_rfc822_id := current_date || '.' || v_message_id || '@' || + -- v_domain_name || '.hate'; + -- else + -- v_rfc822_id := p_rfc822_id; + -- end if; + + -- Antonio Pisano 2016-09-20 + -- rfc822_id MUST come from the tcl, no more + -- sql tricks to retrieve one if missing. + -- Motivations: + -- 1) duplication. We have same logics in acs_mail_lite::generate_message_id + -- 2) what if SystemURL is https? + -- 3) empty SystemURL would break General Comments + if p_rfc822_id is null then + RAISE null_value_not_allowed; + end if; + + v_message_id := content_item__new ( + p_rfc822_id, -- 1 name + p_parent_id, -- 2 parent_id + p_message_id, -- 3 item_id + null, -- 4 locale + p_creation_date, -- 5 creation_date + p_creation_user, -- 6 creation_user + p_context_id, -- 7 context_id + p_creation_ip, -- 8 creation_ip + p_object_type, -- 9 item_subtype + 'acs_message_revision', -- 10 content_type + null, -- 11 title + null, -- 12 description + 'text/plain', -- 13 mime_type + null, -- 14 nls_language + null, -- 15 text + null, -- 16 data + null, -- 17 relation_tag + 'f', -- 18 is_live + 'text', -- 19 storage_type + p_package_id, -- 20 package_id + 't' -- 21 with_child_rels + ); + + insert into acs_messages + (message_id, reply_to, sent_date, sender, rfc822_id) + values + (v_message_id, p_reply_to, p_sent_date, p_sender, p_rfc822_id); + + -- create an initial revision for the new message + v_revision_id := acs_message__edit ( + v_message_id, -- message_id + p_title, -- title + p_description, -- description + p_mime_type, -- mime_type + p_text, -- text + p_data, -- data + p_creation_date, -- creation_date + p_creation_user, -- creation_user + p_creation_ip, -- creation_ip + p_is_live -- is_live + ); + + return v_message_id; +END; +$$ LANGUAGE plpgsql;