From 7faa9c3e9dd12599882a9819d9d6b8cdd3757723 Mon Sep 17 00:00:00 2001 From: Patrick Donelan Date: Tue, 2 Jun 2009 01:48:41 +0000 Subject: [PATCH] Fixed Survey Date question type server-side validation, and made all validation messages generate debug output --- lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm index c6d509615..49b3a0474 100644 --- a/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm +++ b/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm @@ -572,17 +572,25 @@ sub recordResponses { if ( $questionType eq 'Country' ) { # Must be a valid country - next if !grep { $_ eq $recordedAnswer } WebGUI::Form::Country->getCountries; + if (!grep { $_ eq $recordedAnswer } WebGUI::Form::Country->getCountries) { + $self->session->log->debug("Invalid $questionType: $recordedAnswer"); + next; + } } elsif ( $questionType eq 'Date' ) { # Must be a valid date (until we get date i18n this is limited to YYYY/MM/DD) - next if $recordedAnswer !~ m|^\d{4}/\d{2}/\d{2}$|; + if ($recordedAnswer !~ m|^\d{4}/\d{1,2}/\d{1,2}$|) { + $self->session->log->debug("Invalid $questionType: $recordedAnswer"); + next; + } } elsif ( $questionType eq 'Number' || $questionType eq 'Slider' ) { if ( $answer->{max} =~ /\d/ and $recordedAnswer > $answer->{max} ) { + $self->session->log->debug("Invalid $questionType: $recordedAnswer"); next; } elsif ( $answer->{min} =~ /\d/ and $recordedAnswer < $answer->{min} ) { + $self->session->log->debug("Invalid $questionType: $recordedAnswer"); next; } } @@ -593,7 +601,10 @@ sub recordResponses { else { # In the case of a mc question, only selected answers will have a defined recordedAnswer # Thus we skip any answers where recordedAnswer is not defined - next if !defined $recordedAnswer || $recordedAnswer !~ /\S/; + if (!defined $recordedAnswer || $recordedAnswer !~ /\S/) { + $self->session->log->debug("Invalid $questionType: $recordedAnswer"); + next; + } } # If we reach here, answer validated ok