diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm index d07cd5bb4..1d4a0160c 100644 --- a/lib/WebGUI/Asset/Wobject/Survey.pm +++ b/lib/WebGUI/Asset/Wobject/Survey.pm @@ -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')); diff --git a/lib/WebGUI/Asset/Wobject/Survey/ExpressionEngine.pm b/lib/WebGUI/Asset/Wobject/Survey/ExpressionEngine.pm index a854ebee2..f635c9371 100644 --- a/lib/WebGUI/Asset/Wobject/Survey/ExpressionEngine.pm +++ b/lib/WebGUI/Asset/Wobject/Survey/ExpressionEngine.pm @@ -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; \ No newline at end of file +1; diff --git a/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm index 8b56bc9ab..c6d509615 100644 --- a/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm +++ b/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm @@ -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 diff --git a/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm index 101ef99d3..80d7ca120 100644 --- a/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm +++ b/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm @@ -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 } ); } diff --git a/lib/WebGUI/ProfileField.pm b/lib/WebGUI/ProfileField.pm index ce0cccafd..9ace36deb 100644 --- a/lib/WebGUI/ProfileField.pm +++ b/lib/WebGUI/ProfileField.pm @@ -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;