Index: openacs-4/packages/dotlrn-survey/sql/postgresql/dotlrn-survey-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-survey/sql/postgresql/dotlrn-survey-create.sql,v diff -u -r1.1.1.1 -r1.1.1.1.8.1 --- openacs-4/packages/dotlrn-survey/sql/postgresql/dotlrn-survey-create.sql 14 May 2003 21:06:34 -0000 1.1.1.1 +++ openacs-4/packages/dotlrn-survey/sql/postgresql/dotlrn-survey-create.sql 3 Nov 2004 00:58:13 -0000 1.1.1.1.8.1 @@ -152,3 +152,87 @@ select inline_0(); drop function inline_0(); + +-- +-- Survey Clone function +-- + +create or replace function dotlrn_survey__clone(integer,integer) +returns integer as ' +declare + p_old_package_id alias for $1; -- comment + p_new_package_id alias for $2; -- comment + v_survey_id surveys.survey_id%TYPE; + v_section_id survey_sections.section_id%TYPE; + v_question_id survey_questions.question_id%TYPE; + v_choice_id survey_question_choices.choice_id%TYPE; + c_one_survey record; + c_one_section record; + c_one_question record; + c_q_choice record; +begin + for c_one_survey in select s.*, o.creation_user + from surveys s, acs_objects o + where package_id=p_old_package_id + and o.object_id=s.survey_id + loop + v_survey_id := survey__new( + null, + c_one_survey.name, + c_one_survey.description, + c_one_survey.description_html_p, + c_one_survey.single_response_p, + c_one_survey.editable_p, + c_one_survey.enabled_p, + c_one_survey.single_section_p, + c_one_survey.type, + c_one_survey.display_type, + p_new_package_id, + c_one_survey.creation_user, + p_new_package_id + ); + for c_one_section in select * + from survey_sections + where survey_id=c_one_survey.survey_id + loop + v_section_id := survey_section__new ( + null, + v_survey_id, + c_one_section.name, + c_one_section.description, + c_one_section.description_html_p, + c_one_survey.creation_user, + v_survey_id + ); + + for c_one_question in select * + from survey_questions + where section_id=c_one_section.section_id + loop + v_question_id := survey_question__new ( + null, + v_section_id, + c_one_question.sort_order, + c_one_question.question_text, + c_one_question.abstract_data_type, + c_one_question.required_p, + c_one_question.active_p, + c_one_question.presentation_type, + c_one_question.presentation_options, + c_one_question.presentation_alignment, + c_one_survey.creation_user, + v_section_id + ); + + for c_q_choice in select * + from survey_question_choices + where question_id=c_one_question.question_id + loop + select survey_choice_id_seq.sequence into v_choice_id; + insert into survey_question_choices (choice_id,question_id,label,numeric_value,sort_order) values (v_choice_id,v_question_id,c_q_choice.label,c_q_choice.numeric_value,c_q_choice.sort_order); + end loop; + end loop; + end loop; + end loop; + return v_survey_id; +end;' language 'plpgsql'; \ No newline at end of file