Index: openacs-4/packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.3d1-5.2.3d2.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.3d1-5.2.3d2.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.3d1-5.2.3d2.sql 10 Apr 2006 09:59:13 -0000 1.1.2.1 @@ -0,0 +1,203 @@ +-- update package content_template to add package_id parameter + +create or replace package content_template +as + +c_root_folder_id constant integer := -200; + +function get_root_folder return cr_folders.folder_id%TYPE; + +function new ( + --/** Creates a new content template which can be used to render content items. + -- @author Karl Goldstein + -- @param name The name for the template, must be a valid UNIX-like filename. + -- If a template with this name already exists under the specified + -- parent item, an error is thrown + -- @param text The body of the .adp template itself, defaults to null + -- @param parent_id The parent of this item, defaults to null + -- @param is_live The should the revision be set live, defaults to 't'. Requires + -- that text is not null or there will be no revision to begin with + -- @param template_id The id of the new template. A new id will be allocated if this + -- parameter is null + -- @param creation_date As in acs_object.new + -- @param creation_ip As in acs_object.new + -- @param creation_user As in acs_object.new + -- @return The id of the newly created template + -- @see {acs_object.new}, {content_item.new}, {content_item.register_template}, + -- {content_type.register_template} + --*/ + name in cr_items.name%TYPE, + text in varchar2 default null, + parent_id in cr_items.parent_id%TYPE default null, + is_live in char default 't', + template_id in cr_templates.template_id%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, + package_id in acs_objects.package_id%TYPE default null +) return cr_templates.template_id%TYPE; + +procedure del ( + --/** Deletes the specified template, and unregisters the template from + -- all content types and content items. + -- Use with caution - this operation cannot be undone. + -- @author Karl Goldstein + -- @param template_id The id of the template to delete + -- @see {acs_object.delete}, {content_item.unregister_template}, + -- {content_type.unregister_template}, + --*/ + template_id in cr_templates.template_id%TYPE +); + +function is_template ( + --/** Determine if an item is a template. + -- @author Karl Goldstein + -- @param item_id The item id + -- @return 't' if the item is a template, 'f' otherwise + -- @see {content_template.new} + --*/ + template_id in cr_templates.template_id%TYPE +) return varchar2; + +function get_path ( + --/** Retrieves the full path to the template, as described in content_item.get_path + -- @author Karl Goldstein + -- @param template_id The id of the template for which the path is to + -- be retrieved + -- @param root_folder_id Starts path resolution at this folder + -- @return The path to the template, starting with the specified root folder + -- @see {content_item.get_path} + --*/ + template_id in cr_templates.template_id%TYPE, + root_folder_id in cr_folders.folder_id%TYPE default c_root_folder_id +) return varchar2; + +end content_template; +/ +show errors + +create or replace package body content_template +as + +function get_root_folder +return cr_folders.folder_id%TYPE +is +begin + return c_root_folder_id; +end get_root_folder; + +function new ( + name in cr_items.name%TYPE, + text in varchar2 default null, + parent_id in cr_items.parent_id%TYPE default null, + is_live in char default 't', + template_id in cr_templates.template_id%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, + package_id in acs_objects.package_id%TYPE default null +) return cr_templates.template_id%TYPE +is + + v_template_id cr_templates.template_id%TYPE; + v_parent_id cr_items.parent_id%TYPE; + v_package_id acs_objects.package_id%TYPE; + +begin + + if parent_id is null then + v_parent_id := c_root_folder_id; + else + v_parent_id := parent_id; + end if; + + -- make sure we're allowed to create a template in this folder + if content_folder.is_folder(parent_id) = 't' and + content_folder.is_registered(parent_id,'content_template') = 'f' then + + raise_application_error(-20000, + 'This folder does not allow templates to be created'); + + else + if package_id is null then + v_package_id := acs_object.package_id(v_parent_id); + else + v_package_id := package_id; + end if; + + v_template_id := content_item.new ( + item_id => content_template.new.template_id, + name => content_template.new.name, + text => content_template.new.text, + parent_id => v_parent_id, + package_id => v_package_id, + content_type => 'content_template', + is_live => content_template.new.is_live, + creation_date => content_template.new.creation_date, + creation_user => content_template.new.creation_user, + creation_ip => content_template.new.creation_ip + ); + + insert into cr_templates ( + template_id + ) values ( + v_template_id + ); + + return v_template_id; + end if; +end new; + +-- delete all template relations +procedure del ( + template_id in cr_templates.template_id%TYPE +) is +begin + + delete from cr_type_template_map + where template_id = content_template.del.template_id; + + delete from cr_item_template_map + where template_id = content_template.del.template_id; + + delete from cr_templates + where template_id = content_template.del.template_id; + + content_item.del(content_template.del.template_id); + +end del; + +function is_template ( + template_id in cr_templates.template_id%TYPE +) return varchar2 +is + v_ret varchar2(1); +begin + + select 't' into v_ret from cr_templates + where template_id = is_template.template_id; + + return v_ret; + +exception when no_data_found then + return 'f'; +end is_template; + +function get_path ( + template_id in cr_templates.template_id%TYPE, + root_folder_id in cr_folders.folder_id%TYPE default c_root_folder_id +) return varchar2 is + +begin + + return content_item.get_path(template_id, root_folder_id); + +end get_path; + +end content_template; +/ +show errors