liquid_feedback_core

changeset 290:2301a1f2acfa

Modified function "forbid_changes_on_closed_issue_trigger" to allow voting comments to be changed after voting has finished
author jbe
date Sun Aug 19 23:37:37 2012 +0200 (2012-08-19)
parents f2292b94fc58
children 86f231bd6906
files core.sql update/core-update.v2.0.11-v2.1.0.sql
line diff
     1.1 --- a/core.sql	Sun Aug 19 23:32:26 2012 +0200
     1.2 +++ b/core.sql	Sun Aug 19 23:37:37 2012 +0200
     1.3 @@ -1576,6 +1576,15 @@
     1.4        "issue_id_v" "issue"."id"%TYPE;
     1.5        "issue_row"  "issue"%ROWTYPE;
     1.6      BEGIN
     1.7 +      IF TG_RELID = 'direct_voter'::regclass AND TG_OP = 'UPDATE' THEN
     1.8 +        IF
     1.9 +          OLD."issue_id"  = NEW."issue_id"  AND
    1.10 +          OLD."member_id" = NEW."member_id" AND
    1.11 +          OLD."weight"    = NEW."weight"
    1.12 +        THEN
    1.13 +          RETURN NULL;  -- allows changing of voter comment
    1.14 +        END IF;
    1.15 +      END IF;
    1.16        IF TG_OP = 'DELETE' THEN
    1.17          "issue_id_v" := OLD."issue_id";
    1.18        ELSE
     2.1 --- a/update/core-update.v2.0.11-v2.1.0.sql	Sun Aug 19 23:32:26 2012 +0200
     2.2 +++ b/update/core-update.v2.0.11-v2.1.0.sql	Sun Aug 19 23:37:37 2012 +0200
     2.3 @@ -161,6 +161,36 @@
     2.4  COMMENT ON FUNCTION "voter_comment_fields_only_set_when_voter_comment_is_set_trigger"() IS 'Implementation of trigger "voter_comment_fields_only_set_when_voter_comment_is_set" ON table "direct_voter"';
     2.5  COMMENT ON TRIGGER "voter_comment_fields_only_set_when_voter_comment_is_set" ON "direct_voter" IS 'If "comment" is set to NULL, then other comment related fields are also set to NULL.';
     2.6  
     2.7 +CREATE OR REPLACE FUNCTION "forbid_changes_on_closed_issue_trigger"()
     2.8 +  RETURNS TRIGGER
     2.9 +  LANGUAGE 'plpgsql' VOLATILE AS $$
    2.10 +    DECLARE
    2.11 +      "issue_id_v" "issue"."id"%TYPE;
    2.12 +      "issue_row"  "issue"%ROWTYPE;
    2.13 +    BEGIN
    2.14 +      IF TG_RELID = 'direct_voter'::regclass AND TG_OP = 'UPDATE' THEN
    2.15 +        IF
    2.16 +          OLD."issue_id"  = NEW."issue_id"  AND
    2.17 +          OLD."member_id" = NEW."member_id" AND
    2.18 +          OLD."weight"    = NEW."weight"
    2.19 +        THEN
    2.20 +          RETURN NULL;  -- allows changing of voter comment
    2.21 +        END IF;
    2.22 +      END IF;
    2.23 +      IF TG_OP = 'DELETE' THEN
    2.24 +        "issue_id_v" := OLD."issue_id";
    2.25 +      ELSE
    2.26 +        "issue_id_v" := NEW."issue_id";
    2.27 +      END IF;
    2.28 +      SELECT INTO "issue_row" * FROM "issue"
    2.29 +        WHERE "id" = "issue_id_v" FOR SHARE;
    2.30 +      IF "issue_row"."closed" NOTNULL THEN
    2.31 +        RAISE EXCEPTION 'Tried to modify data belonging to a closed issue.';
    2.32 +      END IF;
    2.33 +      RETURN NULL;
    2.34 +    END;
    2.35 +  $$;
    2.36 +
    2.37  CREATE OR REPLACE FUNCTION "close_voting"("issue_id_p" "issue"."id"%TYPE)
    2.38    RETURNS VOID
    2.39    LANGUAGE 'plpgsql' VOLATILE AS $$

Impressum / About Us