string evals are evil

This commit is contained in:
Graham Knop 2009-05-29 21:41:52 +00:00
parent c0d7357429
commit 66843db604
5 changed files with 16 additions and 16 deletions

View file

@ -19,6 +19,8 @@ use WebGUI::Utility;
use base 'WebGUI::Asset::Wobject';
use WebGUI::Asset::Wobject::Survey::SurveyJSON;
use WebGUI::Asset::Wobject::Survey::ResponseJSON;
use WebGUI::Form::Country;
use Text::CSV_XS;
use Params::Validate qw(:all);
Params::Validate::validation_options( on_fail => sub { WebGUI::Error::InvalidParam->throw( error => shift ) } );
@ -440,7 +442,7 @@ sub graph {
my $session = $self->session;
eval 'use GraphViz';
eval { require GraphViz };
if ($@) {
return;
}
@ -695,7 +697,7 @@ sub www_graph {
my $ac = $self->getAdminConsole;
eval 'use GraphViz';
eval { require GraphViz };
if ($@) {
return $ac->render('Survey Visualization requires the GraphViz module', $i18n->get('survey visualization'));
}
@ -1779,7 +1781,6 @@ sub prepareShowSurveyTemplate {
}
elsif ( $country{ $q->{questionType} } ) {
$q->{country} = 1;
use WebGUI::Form::Country;
my @countries = map +{ 'country' => $_ }, WebGUI::Form::Country::getCountries();
foreach my $a(@{$q->{answers}}){
$a->{countries} = [ {'country' => ''}, @countries ];
@ -2238,7 +2239,6 @@ END_HTML
}
}
use Text::CSV_XS;
my $csv = Text::CSV_XS->new( { binary => 1 } );
my @lines = map {$csv->combine(@$_); $csv->string} @rows;
my $output = join "\n", @lines;
@ -2637,7 +2637,7 @@ sub www_runTest {
my $i18n = WebGUI::International->new($session, 'Asset_Survey');
my $ac = $self->getAdminConsole;
eval 'use TAP::Parser';
eval { require TAP::Parser };
if ($@) {
$self->session->log->warn($TAP_PARSER_MISSING);
return $ac->render($TAP_PARSER_MISSING, $i18n->get('test results'));
@ -2669,7 +2669,7 @@ all interesting TAP::Parser and TAP::Parser::Result properties) and the template
sub parseTap {
my ($self, $tap) = @_;
eval 'use TAP::Parser';
eval { require TAP::Parser };
if ($@) {
$self->session->log->warn($TAP_PARSER_MISSING);
return;
@ -2766,12 +2766,12 @@ sub www_runTests {
my @parsers;
eval 'use TAP::Parser';
eval { require TAP::Parser };
if ($@) {
$self->session->log->warn($TAP_PARSER_MISSING);
return $ac->render($TAP_PARSER_MISSING, $i18n->get('test results'));
}
eval 'use TAP::Parser::Aggregator';
eval { require TAP::Parser::Aggregator };
if ($@) {
$self->session->log->warn($TAP_PARSER_MISSING);
return $ac->render($TAP_PARSER_MISSING, $i18n->get('test results'));

View file

@ -21,6 +21,7 @@ use Params::Validate qw(:all);
use Safe;
use List::Util qw/sum/;
use WebGUI::Asset;
use WebGUI::Asset::Wobject::Survey;
Params::Validate::validation_options( on_fail => sub { WebGUI::Error::InvalidParam->throw( error => shift ) } );
# We need these as semi-globals so that utility subs (which are shared with the safe compartment)
@ -534,7 +535,6 @@ sub run {
$session->log->debug("Using responseId: $mostRecentlyCompletedResponseId");
# (re)Instantiate the survey instance using the responseId
use WebGUI::Asset::Wobject::Survey;
$asset = WebGUI::Asset::Wobject::Survey->newByResponseId( $session, $mostRecentlyCompletedResponseId );
if ( !$asset ) {
$session->log->warn("Unable to instantiate asset by responseId: $mostRecentlyCompletedResponseId");
@ -562,4 +562,4 @@ sub run {
}
}
1;
1;

View file

@ -47,6 +47,7 @@ use Params::Validate qw(:all);
use List::Util qw(shuffle);
use Clone qw/clone/;
use Safe;
use WebGUI::Asset::Wobject::Survey::ExpressionEngine;
Params::Validate::validation_options( on_fail => sub { WebGUI::Error::InvalidParam->throw( error => shift ) } );
#-------------------------------------------------------------------
@ -816,7 +817,6 @@ sub processExpression {
my $tags = $self->tags;
my %validTargets = map { $_ => 1 } @{$self->survey->getGotoTargets};
use WebGUI::Asset::Wobject::Survey::ExpressionEngine;
my $engine = "WebGUI::Asset::Wobject::Survey::ExpressionEngine";
if (my $result = $engine->run($self->session, $expression, { values => $values, scores => $scores, tags => $tags, validTargets => \%validTargets} ) ) {
# Update tags

View file

@ -48,11 +48,11 @@ likely operate on the question indexed by:
use strict;
use JSON;
use Data::Dumper;
use Params::Validate qw(:all);
Params::Validate::validation_options( on_fail => sub { WebGUI::Error::InvalidParam->throw( error => shift ) } );
use Clone qw/clone/;
use WebGUI::Asset::Wobject::Survey::ExpressionEngine;
# The maximum value of questionsPerPage is currently hardcoded here
my $MAX_QUESTIONS_PER_PAGE = 20;
@ -1314,7 +1314,6 @@ sub validateGotoExpression{
return 'enableSurveyExpressionEngine is disabled in your site config!';
}
use WebGUI::Asset::Wobject::Survey::ExpressionEngine;
my $engine = "WebGUI::Asset::Wobject::Survey::ExpressionEngine";
return $engine->run($self->session, $object->{gotoExpression}, { validate => 1, validTargets => $goodTargets } );
}

View file

@ -22,6 +22,7 @@ use WebGUI::Operation::Shared;
use WebGUI::HTML;
use WebGUI::User;
use WebGUI::Utility;
use WebGUI::Pluggable;
=head1 NAME
@ -116,7 +117,7 @@ sub create {
# Get the field's data type
$properties->{fieldType} ||= "ReadOnly";
my $formClass = $self->getFormControlClass;
eval "use $formClass;";
eval { WebGUI::Pluggable->load($formClass) };
my $dbDataType = $formClass->getDatabaseFieldType;
# Add the column to the userProfileData table
@ -734,7 +735,7 @@ sub rename {
# Rename the userProfileData column
my $fieldClass = $self->getFormControlClass;
eval "use $fieldClass;";
eval { WebGUI::Pluggable->load($fieldClass) };
my $dbDataType = $fieldClass->getDatabaseFieldType;
$self->session->db->write(
@ -851,7 +852,7 @@ sub set {
if ($properties->{fieldType} ne $originalFieldType) {
# Create a copy of the new properties so we don't mess them up
my $fieldClass = $self->getFormControlClass;
eval "use $fieldClass;";
eval { WebGUI::Pluggable->load($fieldClass) };
my $dbDataType
= $fieldClass->new($session, $self->formProperties($properties))->getDatabaseFieldType;