Index: openacs-4/packages/acs-content-repository/sql/postgresql/content-item.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/postgresql/content-item.sql,v diff -u -N -r1.72.2.3 -r1.72.2.4 --- openacs-4/packages/acs-content-repository/sql/postgresql/content-item.sql 2 Feb 2016 13:14:09 -0000 1.72.2.3 +++ openacs-4/packages/acs-content-repository/sql/postgresql/content-item.sql 10 Feb 2016 09:14:19 -0000 1.72.2.4 @@ -49,13 +49,11 @@ END; $$ LANGUAGE plpgsql stable; --- new 19 param version of content_item__new (now its 20 with package_id) - select define_function_args('content_item__new','name,parent_id;null,item_id;null,locale;null,creation_date;now,creation_user;null,context_id;null,creation_ip;null,item_subtype;content_item,content_type;content_revision,title;null,description;null,mime_type;text/plain,nls_language;null,text;null,data;null,relation_tag;null,is_live;f,storage_type;null,package_id;null'); -- --- procedure content_item__new/20 +-- procedure content_item__new/19 content_item__new/20 -- CREATE OR REPLACE FUNCTION content_item__new( new__name cr_items.name%TYPE, @@ -77,7 +75,7 @@ new__relation_tag cr_child_rels.relation_tag%TYPE, -- default null new__is_live boolean, -- default 'f' new__storage_type cr_items.storage_type%TYPE, -- default null - new__package_id acs_objects.package_id%TYPE -- default null + new__package_id acs_objects.package_id%TYPE default null ) RETURNS integer AS $$ DECLARE @@ -195,36 +193,42 @@ end if; if new__data is not null then - + + -- call content_revision__new/13 + v_revision_id := content_revision__new( v_title, new__description, - now(), + now(), -- publish_date new__mime_type, new__nls_language, new__data, v_item_id, - null, + null, -- revision_id new__creation_date, new__creation_user, new__creation_ip, + null, -- content_length new__package_id ); elsif new__text is not null or new__title is not null then + -- call content_revision__new/13 + v_revision_id := content_revision__new( v_title, new__description, - now(), + now(), -- publish_date new__mime_type, - null, + new__nls_language, new__text, v_item_id, - null, + null, -- revision_id new__creation_date, new__creation_user, new__creation_ip, + null, -- content_length new__package_id ); @@ -241,55 +245,10 @@ $$ LANGUAGE plpgsql; - -- --- procedure content_item__new/19 +-- procedure content_item__new/16 content_item__new/17 -- CREATE OR REPLACE FUNCTION content_item__new( - new__name cr_items.name%TYPE, - new__parent_id cr_items.parent_id%TYPE, - new__item_id acs_objects.object_id%TYPE, - new__locale cr_items.locale%TYPE, - new__creation_date acs_objects.creation_date%TYPE, - new__creation_user acs_objects.creation_user%TYPE, - new__context_id acs_objects.context_id%TYPE, - new__creation_ip acs_objects.creation_ip%TYPE, - new__item_subtype acs_object_types.object_type%TYPE, - new__content_type acs_object_types.object_type%TYPE, - new__title cr_revisions.title%TYPE, - new__description cr_revisions.description%TYPE, - new__mime_type cr_revisions.mime_type%TYPE, - new__nls_language cr_revisions.nls_language%TYPE, - new__text varchar, - new__data cr_revisions.content%TYPE, - new__relation_tag cr_child_rels.relation_tag%TYPE, - new__is_live boolean, - new__storage_type cr_items.storage_type%TYPE -) RETURNS integer AS $$ --- --- content_item__new/19 maybe obsolete, when we define proper defaults for /20 --- -DECLARE - v_item_id cr_items.item_id%TYPE; -BEGIN - v_item_id := content_item__new (new__name, new__parent_id, new__item_id, new__locale, - new__creation_date, new__creation_user, new__context_id, new__creation_ip, - new__item_subtype, new__content_type, new__title, new__description, - new__mime_type, new__nls_language, new__text, new__data, new__relation_tag, - new__is_live, new__storage_type, null); - - return v_item_id; - -END; -$$ LANGUAGE plpgsql; - --- - - --- --- procedure content_item__new/17 --- -CREATE OR REPLACE FUNCTION content_item__new( new__name varchar, new__parent_id integer, -- default null new__item_id integer, -- default null @@ -306,162 +265,44 @@ new__nls_language varchar, -- default null new__text varchar, -- default null new__storage_type varchar, -- check in ('text','file') - new__package_id integer -- default null + new__package_id integer default null ) RETURNS integer AS $$ -- --- content_item__new/17 maybe obsolete, when we define proper defaults for /20 +-- content_item__new/17 is deprecated, one should call /20 -- DECLARE - new__relation_tag varchar default null; - new__is_live boolean default 'f'; - - v_parent_id cr_items.parent_id%TYPE; - v_parent_type acs_objects.object_type%TYPE; - v_item_id cr_items.item_id%TYPE; - v_revision_id cr_revisions.revision_id%TYPE; - v_title cr_revisions.title%TYPE; - v_rel_id acs_objects.object_id%TYPE; - v_rel_tag cr_child_rels.relation_tag%TYPE; - v_context_id acs_objects.context_id%TYPE; BEGIN + raise NOTICE 'content_item__new/17 is deprecated, call content_item__new/20 instead'; - -- place the item in the context of the pages folder if no - -- context specified - - if new__parent_id is null then - select c_root_folder_id from content_item_globals into v_parent_id; - else - v_parent_id := new__parent_id; - end if; - - -- Determine context_id - if new__context_id is null then - v_context_id := v_parent_id; - else - v_context_id := new__context_id; - end if; - - if v_parent_id = -4 or - content_folder__is_folder(v_parent_id) = 't' then - - if v_parent_id != -4 and - content_folder__is_registered( - v_parent_id, new__content_type, 'f') = 'f' then - - raise EXCEPTION '-20000: This items content type % is not registered to this folder %', new__content_type, v_parent_id; - end if; - - else if v_parent_id != -4 then - - select object_type into v_parent_type from acs_objects - where object_id = v_parent_id; - - if NOT FOUND then - raise EXCEPTION '-20000: Invalid parent ID % specified in content_item.new', v_parent_id; - end if; - - if content_item__is_subclass(v_parent_type, 'content_item') = 't' and - content_item__is_valid_child(v_parent_id, new__content_type) = 'f' then - - raise EXCEPTION '-20000: This items content type % is not allowed in this container %', new__content_type, v_parent_id; - end if; - - end if; end if; - - -- Create the object - - v_item_id := acs_object__new( - new__item_id, - new__item_subtype, - new__creation_date, - new__creation_user, - new__creation_ip, - v_context_id, - 't', - coalesce(new__title,new__name), - new__package_id - ); - - insert into cr_items ( - item_id, name, content_type, parent_id, storage_type - ) values ( - v_item_id, new__name, new__content_type, v_parent_id, new__storage_type - ); - - -- if the parent is not a folder, insert into cr_child_rels - if v_parent_id != -4 and - content_folder__is_folder(v_parent_id) = 'f' and - content_item__is_valid_child(v_parent_id, new__content_type) = 't' then - - if new__relation_tag is null then - v_rel_tag := content_item__get_content_type(v_parent_id) - || '-' || new__content_type; - else - v_rel_tag := new__relation_tag; - end if; - - v_rel_id := acs_object__new( - null, - 'cr_item_child_rel', - now(), - null, - null, - v_parent_id, - 't', - v_rel_tag || ': ' || v_parent_id || ' - ' || v_item_id, - new__package_id - ); - - insert into cr_child_rels ( - rel_id, parent_id, child_id, relation_tag, order_n - ) values ( - v_rel_id, v_parent_id, v_item_id, v_rel_tag, v_item_id - ); - - end if; - - -- use the name of the item if no title is supplied - if new__title is null then - v_title := new__name; - else - v_title := new__title; - end if; - - if new__title is not null or - new__text is not null then - - v_revision_id := content_revision__new( - v_title, - new__description, - now(), - new__mime_type, - null, - new__text, - v_item_id, - null, - new__creation_date, - new__creation_user, - new__creation_ip, - new__package_id - ); - - end if; - - -- make the revision live if is_live is true - if new__is_live = 't' then - PERFORM content_item__set_live_revision(v_revision_id); - end if; - - return v_item_id; - + return content_item__new(new__name, + new__parent_id, + new__item_id, + new__locale, + new__creation_date, + new__creation_user, + new__context_id, + new__creation_ip, + new__item_subtype, + new__content_type, + new__title, + new__description, + new__mime_type, + new__nls_language, + new__text, + null, -- data + null, -- relation_tag + 'f', -- is_live + new__storage_type, + new__package_id + ); END; $$ LANGUAGE plpgsql; -- --- procedure content_item__new/16 +-- procedure content_item__new/15 content_item__new/16 -- CREATE OR REPLACE FUNCTION content_item__new( new__name varchar, @@ -478,55 +319,16 @@ new__description varchar, -- default null new__mime_type varchar, -- default 'text/plain' new__nls_language varchar, -- default null - new__text varchar, -- default null - new__storage_type varchar -- check in ('text''file') - -) RETURNS integer AS $$ --- --- content_item__new/16 maybe obsolete, when we define proper defaults for /20 --- -DECLARE - v_item_id cr_items.item_id%TYPE; -BEGIN - v_item_id := content_item__new (new__name, new__parent_id, new__item_id, new__locale, - new__creation_date, new__creation_user, new__context_id, new__creation_ip, - new__item_subtype, new__content_type, new__title, new__description, - new__mime_type, new__nls_language, new__text, new__storage_type, null::integer); - - return v_item_id; - -END; -$$ LANGUAGE plpgsql; - - - --- --- procedure content_item__new/16 --- -CREATE OR REPLACE FUNCTION content_item__new( - new__name varchar, - new__parent_id integer, -- default null - new__item_id integer, -- default null - new__locale varchar, -- default null - new__creation_date timestamptz, -- default now() - new__creation_user integer, -- default null - new__context_id integer, -- default null - new__creation_ip varchar, -- default null - new__item_subtype varchar, -- default 'content_item' - new__content_type varchar, -- default 'content_revision' - new__title varchar, -- default null - new__description varchar, -- default null - new__mime_type varchar, -- default 'text/plain' - new__nls_language varchar, -- default null new__data integer, -- default null - new__package_id integer -- default null - + new__package_id integer default null ) RETURNS integer AS $$ -- -- content_item__new/16 maybe obsolete, when we define proper defaults for /20 -- +-- This version passes "data" as integer (lob version), most other use +-- "text" and "storage_type" +-- DECLARE --- changed to integer for blob_id new__relation_tag varchar default null; new__is_live boolean default 'f'; @@ -646,15 +448,17 @@ if new__data is not null then + -- call content_revision__new/12 (data is integer) + v_revision_id := content_revision__new( v_title, new__description, - now(), + now(), -- publish_date new__mime_type, new__nls_language, new__data, v_item_id, - null, + null, -- revision_id new__creation_date, new__creation_user, new__creation_ip, @@ -663,18 +467,21 @@ elsif new__title is not null then + -- call content_revision__new/13 (data is null) + v_revision_id := content_revision__new( v_title, new__description, - now(), + now(), -- publish_date new__mime_type, - null, - null, + new_nls_language, + null, -- data/text v_item_id, - null, + null, -- revision_id new__creation_date, new__creation_user, new__creation_ip, + null, -- content_length new__package_id ); @@ -693,78 +500,41 @@ -- --- procedure content_item__new/15 +-- procedure content_item__new/5 content_item__new/6 -- CREATE OR REPLACE FUNCTION content_item__new( new__name varchar, - new__parent_id integer, -- default null - new__item_id integer, -- default null - new__locale varchar, -- default null - new__creation_date timestamptz, -- default now() - new__creation_user integer, -- default null - new__context_id integer, -- default null - new__creation_ip varchar, -- default null - new__item_subtype varchar, -- default 'content_item' - new__content_type varchar, -- default 'content_revision' - new__title varchar, -- default null - new__description varchar, -- default null - new__mime_type varchar, -- default 'text/plain' - new__nls_language varchar, -- default null - new__data integer -- default null - -) RETURNS integer AS $$ --- --- content_item__new/15 maybe obsolete, when we define proper defaults for /20 --- -DECLARE --- changed to integer for blob_id - v_item_id cr_items.item_id%TYPE; -BEGIN - v_item_id := content_item__new (new__name, new__parent_id, new__item_id, new__locale, - new__creation_date, new__creation_user, new__context_id, new__creation_ip, - new__item_subtype, new__content_type, new__title, new__description, - new__mime_type, new__nls_language, new__data, null::integer); - - return v_item_id; - -END; -$$ LANGUAGE plpgsql; - - - --- --- procedure content_item__new/6 --- -CREATE OR REPLACE FUNCTION content_item__new( - new__name varchar, new__parent_id integer, -- default null new__title varchar, -- default null new__description text, -- default null new__text text, -- default null - new__package_id integer -- default null - + new__package_id integer default null ) RETURNS integer AS $$ --- --- content_item__new/6 maybe obsolete, when we define proper defaults for /20 --- DECLARE BEGIN + raise NOTICE 'content_item__new/5 is deprecated, call content_item__new/20 instead'; + + -- calls content_item__new/20 + return content_item__new(new__name, new__parent_id, - null, - null, - now(), - null, - null, - null, - 'content_item', - 'content_revision', + null, -- item_id + null, -- locale + now(), -- creation_date + null, -- creation_user + null, -- context_id + null, -- creation_ip + 'content_item', -- item_subtype + 'content_revision', -- content_type new__title, new__description, - 'text/plain', - null, + 'text/plain', -- mime_type + null, -- nls_language new__text, - 'text', + null, -- data + null, -- relation_tag + 'f', -- is_live + 'text', -- storage_type new__package_id ); @@ -774,39 +544,15 @@ -- --- procedure content_item__new/5 +-- procedure content_item__new/2 content_item__new/3 -- CREATE OR REPLACE FUNCTION content_item__new( new__name varchar, - new__parent_id integer, -- default null - new__title varchar, -- default null - new__description text, -- default null - new__text text -- default null - -) RETURNS integer AS $$ --- --- content_item__new/5 maybe obsolete, when we define proper defaults for /20 --- -DECLARE -BEGIN - return content_item__new(new__name, new__parent_id, new__title, new__description, - new__text, null); - -END; -$$ LANGUAGE plpgsql; - - - --- --- procedure content_item__new/3 --- -CREATE OR REPLACE FUNCTION content_item__new( - new__name varchar, new__parent_id integer, - new__package_id integer + new__package_id integer default null ) RETURNS integer AS $$ -- --- content_item__new/3 maybe obsolete, when we define proper defaults for /20 +-- calls content_item__new/6 -- DECLARE BEGIN @@ -816,29 +562,9 @@ --- --- procedure content_item__new/2 --- -CREATE OR REPLACE FUNCTION content_item__new( - new__name varchar, - new__parent_id integer -) RETURNS integer AS $$ --- --- content_item__new/2 maybe obsolete, when we define proper defaults for /20 --- -DECLARE -BEGIN - return content_item__new(new__name, new__parent_id, null, null, null, null); - -END; -$$ LANGUAGE plpgsql; - -- function new -- sets security_inherit_p to FALSE -DaveB - - - -- --- procedure content_item__new/17 +-- procedure content_item__new/16 content_item__new/17 -- CREATE OR REPLACE FUNCTION content_item__new( new__item_id integer, --default null @@ -857,12 +583,18 @@ new__storage_area_key varchar, -- default 'CR_FILES' new__item_subtype varchar, new__content_type varchar, - new__package_id integer -- default null + new__package_id integer default null ) RETURNS integer AS $$ -- -- content_item__new/17 maybe obsolete, when we define proper defaults for /20 -- +-- differs from other content_item__new/17 by +-- this version has 1st arg item_id vs. 3rd arg (differs as well from /20) +-- this version does not have a "locale" and "nls_language" +-- this version has "is_live" (like /20) +-- this version has "security_inherit_p" + DECLARE new__description varchar default null; new__relation_tag varchar default null; @@ -984,18 +716,21 @@ if new__title is not null or new__text is not null then + -- call content_revision__new/13 + v_revision_id := content_revision__new( v_title, new__description, - now(), + now(), -- publish_date new__mime_type, - null, + null, -- nls_language, new__text, v_item_id, - null, + null, -- revision_id new__creation_date, new__creation_user, new__creation_ip, + null, -- content_length new__package_id ); @@ -1012,47 +747,6 @@ $$ LANGUAGE plpgsql; - --- --- procedure content_item__new/16 --- -CREATE OR REPLACE FUNCTION content_item__new( - new__item_id integer, --default null - new__name varchar, - new__parent_id integer, -- default null - new__title varchar, -- default null - new__creation_date timestamptz, -- default now() - new__creation_user integer, -- default null - new__context_id integer, -- default null - new__creation_ip varchar, -- default null - new__is_live boolean, -- default 'f' - new__mime_type varchar, - new__text text, -- default null - new__storage_type varchar, -- check in ('text', 'file') - new__security_inherit_p boolean, -- default 't' - new__storage_area_key varchar, -- default 'CR_FILES' - new__item_subtype varchar, - new__content_type varchar - -) RETURNS integer AS $$ --- --- content_item__new/16 maybe obsolete, when we define proper defaults for /20 --- -DECLARE - v_item_id cr_items.item_id%TYPE; -BEGIN - v_item_id := content_item__new (new__item_id, new__name, new__parent_id, new__title, - new__creation_date, new__creation_user, new__context_id, new__creation_ip, - new__is_live, new__mime_type, new__text, new__storage_type, - new__security_inherit_p, new__storage_area_key, new__item_subtype, - new__content_type, null); - - return v_item_id; - -END; -$$ LANGUAGE plpgsql; - - select define_function_args('content_item__is_published','item_id'); -- -- procedure content_item__is_published/1