-- Datamodel create for faq -- -- @author @jennie.ybos.net,@wirth.ybos.net,openacs port @samir.symphinity.com -- -- @cvs-id $Id: faq-create.sql,v 1.12 2024/09/03 15:37:38 gustafn Exp $ -- CREATE OR REPLACE FUNCTION inline_0 () RETURNS integer AS $$ BEGIN PERFORM acs_object_type__create_type ( 'faq', -- object_type 'FAQ', -- pretty_name 'FAQs', -- pretty_plural 'acs_object', -- supertype 'faqs', -- table_name 'faq_id', -- id_column null, -- package_name 'f', -- abstract_p null, -- type_extension_table 'faq__name' -- name_method ); return 0; END; $$ LANGUAGE plpgsql; select inline_0 (); drop function inline_0 (); create table faqs ( faq_id integer constraint faqs_faq_id_fk references acs_objects(object_id) on delete cascade constraint faqs_pk primary key, faq_name varchar (250) constraint faqs_faq_name_nn not null, separate_p boolean, disabled_p boolean default false ); CREATE OR REPLACE FUNCTION inline_1 () RETURNS integer AS $$ BEGIN PERFORM acs_object_type__create_type ( 'faq_q_and_a', -- object_type 'FAQ_Q_and_A', -- pretty_name 'FAQ_Q_and_As', -- pretty_plural 'acs_object', -- supertype 'faq_q_and_as', -- table_name 'entry_id', -- id_column null, -- package_name 'f', -- abstract_p null, -- type_extension_table null -- name_method ); return 0; END; $$ LANGUAGE plpgsql; select inline_1 (); drop function inline_1 (); create table faq_q_and_as ( entry_id integer constraint faq_q_and_as_entry_id_fk references acs_objects (object_id) on delete cascade constraint faq_q_sand_a_pk primary key, faq_id integer not null references faqs on delete cascade, question text not null, answer text not null, -- determines the order of questions in a FAQ sort_key integer not null ); select acs_privilege__create_privilege('faq_view_faq'); select acs_privilege__create_privilege('faq_create_faq'); select acs_privilege__create_privilege('faq_delete_faq'); select acs_privilege__create_privilege('faq_modify_faq'); select acs_privilege__create_privilege('faq_view_q_and_a'); select acs_privilege__create_privilege('faq_create_q_and_a'); select acs_privilege__create_privilege('faq_delete_q_and_a'); select acs_privilege__create_privilege('faq_modify_q_and_a'); select acs_privilege__create_privilege('faq_admin_faq'); select acs_privilege__create_privilege('faq_admin_q_and_a'); select acs_privilege__add_child('faq_admin_faq', 'faq_view_faq'); select acs_privilege__add_child('faq_admin_faq', 'faq_create_faq'); select acs_privilege__add_child('faq_admin_faq', 'faq_delete_faq'); select acs_privilege__add_child('faq_admin_faq', 'faq_modify_faq'); select acs_privilege__add_child('faq_admin_q_and_a', 'faq_view_q_and_a'); select acs_privilege__add_child('faq_admin_q_and_a', 'faq_create_q_and_a'); select acs_privilege__add_child('faq_admin_q_and_a', 'faq_delete_q_and_a'); select acs_privilege__add_child('faq_admin_q_and_a', 'faq_modify_q_and_a'); select acs_privilege__add_child('faq_admin_faq', 'faq_admin_q_and_a'); -- bind privileges to global names select acs_privilege__add_child('create','faq_create_faq'); select acs_privilege__add_child('create','faq_create_q_and_a'); select acs_privilege__add_child('write','faq_modify_faq'); select acs_privilege__add_child('write','faq_modify_q_and_a'); select acs_privilege__add_child('read','faq_view_faq'); select acs_privilege__add_child('read','faq_view_q_and_a'); select acs_privilege__add_child('delete','faq_delete_faq'); select acs_privilege__add_child('delete','faq_delete_q_and_a'); select acs_privilege__add_child('admin','faq_admin_faq'); -- -- procedure inline_2/0 -- CREATE OR REPLACE FUNCTION inline_2( ) RETURNS integer AS $$ DECLARE default_context acs_objects.object_id%TYPE; registered_users acs_objects.object_id%TYPE; the_public acs_objects.object_id%TYPE; BEGIN default_context = acs__magic_object_id('default_context'); registered_users = acs__magic_object_id('registered_users'); the_public = acs__magic_object_id('the_public'); -- give the public the power to view faqs by default PERFORM acs_permission__grant_permission (default_context, the_public, 'faq_view_faq'); -- give the public the power to view q_and_as by default PERFORM acs_permission__grant_permission ( default_context,the_public, 'faq_view_q_and_a'); return 0; END; $$ LANGUAGE plpgsql; select inline_2 (); drop function inline_2 (); \i faq-package-create.sql \i faq-sc-create.sql