Index: openacs-4/packages/survey/sql/postgresql/survey-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/survey/sql/postgresql/survey-create.sql,v
diff -u -r1.2.2.2 -r1.2.2.3
--- openacs-4/packages/survey/sql/postgresql/survey-create.sql 23 Oct 2002 16:16:35 -0000 1.2.2.2
+++ openacs-4/packages/survey/sql/postgresql/survey-create.sql 23 Oct 2002 19:30:51 -0000 1.2.2.3
@@ -304,7 +304,7 @@
-- API for survey objects
-create function survey__new (integer,varchar,text,boolean,boolean,boolean,boolean,boolean,varchar,varchar,integer,integer,integer)
+create or replace function survey__new (integer,varchar,text,boolean,boolean,boolean,boolean,boolean,varchar,varchar,integer,integer,integer)
returns integer as '
declare
new__survey_id alias for $1; -- default null
@@ -343,17 +343,36 @@
return v_survey_id;
end;' language 'plpgsql';
+
-
-create function survey__delete (integer)
+create or replace function survey__remove (integer)
returns integer as '
declare
- delete__survey_id alias for $1;
+ remove__survey_id alias for $1;
+ v_response_row survey_responses%ROWTYPE;
+ v_section_row survey_sections%ROWTYPE;
begin
+
+ for v_response_row in SELECT
+ response_id
+ from survey_responses
+ where survey_id=remove__survey_id
+ and initial_response_id is NULL
+ loop
+ PERFORM survey_response__remove(v_response_row.response_id);
+ end loop;
+
+ for v_section_row in select section_id
+ from survey_sections
+ where survey_id=remove__survey_id
+ loop
+ PERFORM survey_section__remove(v_section_row.section_id);
+ end loop;
+
delete from surveys
- where survey_id = delete__survey_id;
+ where survey_id = remove__survey_id;
- PERFORM acs_object__delete(delete__survey_id);
+ PERFORM acs_object__delete(remove__survey_id);
return 0;
@@ -362,7 +381,7 @@
-- API for survey_section objects
-create function survey_section__new (integer,integer,varchar,text,boolean,integer,integer)
+create or replace function survey_section__new (integer,integer,varchar,text,boolean,integer,integer)
returns integer as '
declare
new__section_id alias for $1; -- default null
@@ -392,21 +411,29 @@
end;' language 'plpgsql';
-create function survey_section__delete (integer)
+create or replace function survey_section__remove (integer)
returns integer as '
declare
- delete__section_id alias for $1;
+ remove__section_id alias for $1;
+ v_section_row survey_questions%ROWTYPE;
begin
+ for v_section_row in select question_id
+ from survey_questions
+ where section_id=remove__section_id
+ loop
+ PERFORM survey_question__remove(v_question_row.question_id);
+ end loop;
+
delete from survey_sections
- where section_id = delete__section_id;
+ where section_id = remove__section_id;
- PERFORM acs_object__delete(delete__section_id);
+ PERFORM acs_object__delete(remove__section_id);
return 0;
end;' language 'plpgsql';
-create function survey_question__new (integer,integer,integer,text,varchar,boolean,boolean,varchar,varchar,varchar,integer,integer)
+create or replace function survey_question__new (integer,integer,integer,text,varchar,boolean,boolean,varchar,varchar,varchar,integer,integer)
returns integer as '
declare
new__question_id alias for $1; -- default null
@@ -447,25 +474,31 @@
end;' language 'plpgsql';
--- procedure delete
-create function survey_question__delete (integer)
+create or replace function survey_question__remove (integer)
returns integer as '
declare
- delete__question_id alias for $1;
+ remove__question_id alias for $1;
begin
- delete from survey_questions
- where question_id = delete__question_id;
- PERFORM acs_object__delete(delete__question_id);
+ delete from survey_question_responses
+ where question_id=remove__question_id;
+ delete from survey_question_choices
+ where question_id=remove__question_id;
+
+ delete from survey_questions
+ where question_id = remove__question_id;
+
+ PERFORM acs_object__delete(remove__question_id);
+
return 0;
end;' language 'plpgsql';
-- create or replace package body survey_response
-- procedure new
-create function survey_response__new(integer,integer,varchar,boolean,integer,varchar,integer,integer)
+create or replace function survey_response__new(integer,integer,varchar,boolean,integer,varchar,integer,integer)
returns integer as '
declare
new__response_id alias for $1; -- default null
@@ -497,7 +530,7 @@
end;' language 'plpgsql';
--function initial_response_id
-create function survey_response__initial_response_id(integer)
+create or replace function survey_response__initial_response_id(integer)
returns integer as '
declare
p_response_id alias for $1;
@@ -511,7 +544,7 @@
return v_initial_response_id;
end;' language 'plpgsql';
-create function survey_response__initial_user_id (integer)
+create or replace function survey_response__initial_user_id (integer)
returns integer as '
declare
p_response_id alias for $1;
@@ -524,20 +557,48 @@
end;' language 'plpgsql';
-- procedure delete
-create function survey_response__delete(integer)
+create or replace function survey_response__remove(integer)
returns integer as '
declare
- delete__response_id alias for $1;
+ remove__response_id alias for $1;
+ v_response_row survey_responses%ROWTYPE;
begin
- delete from survey_responses
- where response_id = delete__response_id;
+ for v_response_row in select response_id from survey_responses
+ where initial_response_id=remove__response_id
+ loop
+ survey_response__del(v_response_row.response_id);
+ end loop;
- PERFORM acs_object__delete(delete__response_id);
+ survey_response__del(remove__response_id);
return 0;
end;' language 'plpgsql';
+create or replace function survey_response__del (integer)
+returns integer as '
+declare
+ del__response_id alias for $1;
+ v_question_response_row survey_question_responses%ROWTYPE;
+begin
+ for v_question_response_row in select item_id
+ from survey_question_responses, cr_revisions
+ where response_id=del__response_id
+ and attachment_answer=revision_id
+ loop
+ content_item__delete(v_question_response_row.item_id);
+ end loop;
+
+ delete from survey_question_responses
+ where response_id=del__response_id;
+ delete from survey_responses
+ where response_id=del__response_id;
+ acs_object.delete(del__response_id);
+ return 0;
+
+end;' language 'plpgsql';
+
+
create view survey_responses_latest as
select sr.*, o.creation_date,
o.creation_user,
Index: openacs-4/packages/survey/tcl/survey-procs-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/survey/tcl/survey-procs-postgresql.xql,v
diff -u -r1.2 -r1.2.2.1
--- openacs-4/packages/survey/tcl/survey-procs-postgresql.xql 25 Sep 2002 00:43:40 -0000 1.2
+++ openacs-4/packages/survey/tcl/survey-procs-postgresql.xql 23 Oct 2002 19:30:54 -0000 1.2.2.1
@@ -45,4 +45,39 @@
and r.response_id = o.object_id
+
+
+
+ select survey__new (
+ NULL,
+ :name,
+ :description,
+ :description_html_p,
+ :single_response_p,
+ :editable_p,
+ :enabled_p,
+ :single_section_p,
+ :type,
+ :display_type,
+ :package_id,
+ :user_id,
+ :package_id
+ );
+
+
+
+
+
+ select survey_section__new (
+ NULL,
+ :new_survey_id,
+ :name,
+ :description,
+ :description_html_p,
+ :user_id,
+ :package_id
+ );
+
+
+
\ No newline at end of file
Index: openacs-4/packages/survey/www/admin/survey-delete-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/survey/www/admin/survey-delete-postgresql.xql,v
diff -u -r1.1 -r1.1.2.1
--- openacs-4/packages/survey/www/admin/survey-delete-postgresql.xql 16 Sep 2002 00:00:25 -0000 1.1
+++ openacs-4/packages/survey/www/admin/survey-delete-postgresql.xql 23 Oct 2002 19:30:55 -0000 1.1.2.1
@@ -5,7 +5,8 @@
begin
- survey__remove(:survey_id);
+ perform survey__remove(:survey_id);
+return NULL;
end;