Index: openacs-4/packages/news/sql/postgresql/upgrade/upgrade-5.9.0d1-5.9.0d2.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news/sql/postgresql/upgrade/upgrade-5.9.0d1-5.9.0d2.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news/sql/postgresql/upgrade/upgrade-5.9.0d1-5.9.0d2.sql 25 Sep 2015 08:25:57 -0000 1.1.2.1 @@ -0,0 +1,127 @@ + + +-- +-- procedure news__archive/2 with default +-- +CREATE OR REPLACE FUNCTION news__archive( + p_item_id integer, + p_archive_date timestamptz DEFAULT current_timestamp + +) RETURNS integer AS $$ +DECLARE +BEGIN + update cr_news + set archive_date = p_archive_date + where news_id = content_item__get_live_revision(p_item_id); + + return 0; +END; +$$ LANGUAGE plpgsql; + +DROP FUNCTION IF EXISTS news__archive(p_item_id integer); + + + +-- +-- procedure news__new/17 +-- +CREATE OR REPLACE FUNCTION news__new( + p_item_id integer, -- default null + p_locale varchar, -- default null, + p_publish_date timestamptz, -- default null + p_text text, -- default null + p_nls_language varchar, -- default null + p_title varchar, -- default null + p_mime_type varchar, -- default 'text/plain' + p_package_id integer, -- default null, + p_archive_date timestamptz, -- default null + p_approval_user integer, -- default null + p_approval_date timestamptz, -- default null + p_approval_ip varchar, -- default null, + p_relation_tag varchar, -- default null + p_creation_ip varchar, -- default null + p_creation_user integer, -- default null + p_is_live_p boolean, -- default 'f' + p_lead varchar + +) RETURNS integer AS $$ +DECLARE + v_news_id integer; + v_item_id integer; + v_id integer; + v_parent_id integer; + v_name varchar; + v_log_string varchar; +BEGIN + select content_item__get_id('news',null,'f') + into v_parent_id + from dual; + -- + -- this will be used for 2xClick protection + if p_item_id is null then + select nextval('t_acs_object_id_seq') + into v_id + from dual; + else + v_id := p_item_id; + end if; + + v_name := 'news-' || to_char(current_timestamp,'YYYYMMDD') || '-' || v_id; + v_log_string := 'initial submission'; + + v_item_id := content_item__new( + v_name, -- name + v_parent_id, -- parent_id + v_id, -- item_id + p_locale, -- locale + current_timestamp, -- creation_date + p_creation_user, -- creation_user + p_package_id, -- context_id + p_creation_ip, -- creation_ip + 'content_item', -- item_subtype + 'news', -- content_type + p_title, -- title + v_log_string, -- description + p_mime_type, -- mime_type + p_nls_language, -- nls_language + null, -- text + p_text, -- data + null, -- relation_tag + p_is_live_p, -- live_p + 'text', -- storage_type + p_package_id -- package_id + ); + + -- + -- get the newly created revision_id as news_id + -- + v_news_id := content_item__get_live_revision(v_item_id); + + -- + -- setting publish_date to the provided p_publish_date + -- + update cr_revisions + set publish_date = p_publish_date + where revision_id = v_news_id; + + insert into cr_news + (news_id, + lead, + package_id, + archive_date, + approval_user, + approval_date, + approval_ip) + values + (v_news_id, + p_lead, + p_package_id, + p_archive_date, + p_approval_user, + p_approval_date, + p_approval_ip); + + return v_news_id; +END; +$$ LANGUAGE plpgsql; +