[system] / trunk / webwork-modperl / lib / WeBWorK / PG.pm Repository:
ViewVC logotype

Diff of /trunk/webwork-modperl/lib/WeBWorK/PG.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 525 Revision 526
11 11
12=cut 12=cut
13 13
14use strict; 14use strict;
15use warnings; 15use warnings;
16use File::Temp qw(tempdir);
16use WeBWorK::DB::Classlist; 17use WeBWorK::DB::Classlist;
17use WeBWorK::DB::WW; 18use WeBWorK::DB::WW;
18use WeBWorK::PG::Translator; 19use WeBWorK::PG::Translator;
19use WeBWorK::Problem; 20use WeBWorK::Problem;
20use WeBWorK::Utils qw(readFile formatDateTime); 21use WeBWorK::Utils qw(readFile formatDateTime);
126 # store the problem source 127 # store the problem source
127 warn "PG: storing the problem source\n"; 128 warn "PG: storing the problem source\n";
128 my $sourceFile = $problem->source_file; 129 my $sourceFile = $problem->source_file;
129 $sourceFile = $courseEnv->{courseDirs}->{templates}."/".$sourceFile 130 $sourceFile = $courseEnv->{courseDirs}->{templates}."/".$sourceFile
130 unless ($sourceFile =~ /^\//); 131 unless ($sourceFile =~ /^\//);
131 $translator->source_string(readFile($sourceFile)); 132 eval { $translator->source_string(readFile($sourceFile)) };
133 if ($@) {
134 # well, we couldn't get the problem source, for some reason.
135 return bless {
136 translator => $translator,
137 head_text => "",
138 body_text => <<EOF,
139WeBWorK::Utils::readFile($sourceFile) says:
140$@
141EOF
142 answers => {},
143 result => {},
144 state => {},
145 errors => "Failed to read the problem source file.",
146 warnings => undef,
147 flags => {error_flag => 1},
148 }, $class;
149 }
132 150
133 # install a safety filter (&safetyFilter) 151 # install a safety filter (&safetyFilter)
134 warn "PG: installing a safety filter\n"; 152 warn "PG: installing a safety filter\n";
135 $translator->rf_safety_filter(\&safetyFilter); 153 $translator->rf_safety_filter(\&safetyFilter);
136 154
268 # REMOVED: refSubmittedAnswers 286 # REMOVED: refSubmittedAnswers
269 287
270 $envir{inputs_ref} = $formFields; 288 $envir{inputs_ref} = $formFields;
271 289
272 # External Programs 290 # External Programs
291 # ADDED: externalLaTeXPath, externalDvipngPath, externalMath2imgPath
273 292
274 $envir{externalTTHPath} = $courseEnv->{externalPrograms}->{tth}; 293 $envir{externalTTHPath} = $courseEnv->{externalPrograms}->{tth};
294 $envir{externalLaTeXPath} = $courseEnv->{externalPrograms}->{latex};
295 $envir{externalDvipngPath} = $courseEnv->{externalPrograms}->{dvipng};
275 $envir{externalMath2imgPath} = $courseEnv->{externalPrograms}->{math2img}; 296 $envir{externalMath2imgPath} = $courseEnv->{externalPrograms}->{math2img};
276 297
277 # Directories and URLs 298 # Directories and URLs
278 # REMOVED: courseName 299 # REMOVED: courseName
300 # ADDED: dvipngTempDir
301
279 302
280 $envir{cgiDirectory} = undef; 303 $envir{cgiDirectory} = undef;
281 $envir{cgiURL} = undef; 304 $envir{cgiURL} = undef;
282 $envir{classDirectory} = undef; 305 $envir{classDirectory} = undef;
283 $envir{courseScriptsDirectory} = $courseEnv->{webworkDirs}->{macros}."/"; 306 $envir{courseScriptsDirectory} = $courseEnv->{webworkDirs}->{macros}."/";
287 $envir{templateDirectory} = $courseEnv->{courseDirs}->{templates}."/"; 310 $envir{templateDirectory} = $courseEnv->{courseDirs}->{templates}."/";
288 $envir{tempDirectory} = $courseEnv->{courseDirs}->{html_temp}."/"; 311 $envir{tempDirectory} = $courseEnv->{courseDirs}->{html_temp}."/";
289 $envir{tempURL} = $courseEnv->{courseURLs}->{html_temp}; 312 $envir{tempURL} = $courseEnv->{courseURLs}->{html_temp};
290 $envir{scriptDirectory} = undef; 313 $envir{scriptDirectory} = undef;
291 $envir{webworkDocsURL} = $courseEnv->{webworkURLs}->{docs}; 314 $envir{webworkDocsURL} = $courseEnv->{webworkURLs}->{docs};
315 $envir{dvipngTempDir} = tempdir("webwork-dvipng-XXXXXXXX", TMPDIR => 1);
292 316
293 # Default values for evaluating answers 317 # Default values for evaluating answers
294 318
295 my $ansEvalDefaults = $courseEnv->{pg}->{ansEvalDefaults}; 319 my $ansEvalDefaults = $courseEnv->{pg}->{ansEvalDefaults};
296 $envir{$_} = $ansEvalDefaults->{$_} foreach (keys %$ansEvalDefaults); 320 $envir{$_} = $ansEvalDefaults->{$_} foreach (keys %$ansEvalDefaults);
407 431
408a WeBWorK::Set object 432a WeBWorK::Set object
409 433
410=item PROBLEM 434=item PROBLEM
411 435
412a WeBWorK::Problem object 436a WeBWorK::Problem object. The contents of the source_file field can specify a
437PG file either by absolute path or path relative to the "templates" directory.
438I<The caller should remove taint from this value before passing!>
413 439
414=item PSVN 440=item PSVN
415 441
416the problem set version number 442the problem set version number
417 443

Legend:
Removed from v.525  
changed lines
  Added in v.526

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9