| 1 | ################################################################################ |
1 | ################################################################################ |
| 2 | # WeBWorK Online Homework Delivery System |
2 | # WeBWorK Online Homework Delivery System |
| 3 | # Copyright © 2000-2003 The WeBWorK Project, http://openwebwork.sf.net/ |
3 | # Copyright © 2000-2003 The WeBWorK Project, http://openwebwork.sf.net/ |
| 4 | # $CVSHeader$ |
4 | # $CVSHeader: webwork-modperl/lib/WeBWorK/ContentGenerator/Instructor/SendMail.pm,v 1.12 2003/12/09 01:12:31 sh002i Exp $ |
| 5 | # |
5 | # |
| 6 | # This program is free software; you can redistribute it and/or modify it under |
6 | # This program is free software; you can redistribute it and/or modify it under |
| 7 | # the terms of either: (a) the GNU General Public License as published by the |
7 | # the terms of either: (a) the GNU General Public License as published by the |
| 8 | # Free Software Foundation; either version 2, or (at your option) any later |
8 | # Free Software Foundation; either version 2, or (at your option) any later |
| 9 | # version, or (b) the "Artistic License" which comes with this package. |
9 | # version, or (b) the "Artistic License" which comes with this package. |
| … | |
… | |
| 73 | # gather database data |
73 | # gather database data |
| 74 | ############################################################################################# |
74 | ############################################################################################# |
| 75 | # FIXME this might be better done in body? We don't always need all of this data. or do we? |
75 | # FIXME this might be better done in body? We don't always need all of this data. or do we? |
| 76 | my @users = sort $db->listUsers; |
76 | my @users = sort $db->listUsers; |
| 77 | my @user_records = (); |
77 | my @user_records = (); |
| 78 | push(@user_records,$db->getUser($_)) foreach (@users); |
78 | foreach my $userName (@users) { |
|
|
79 | my $userRecord = $db->getUser($userName); # checked |
|
|
80 | die "record for user $userName not found" unless $userRecord; |
|
|
81 | push(@user_records, $userRecord); |
|
|
82 | } |
| 79 | |
83 | |
| 80 | # store data |
84 | # store data |
| 81 | $self->{ra_users} = \@users; |
85 | $self->{ra_users} = \@users; |
| 82 | $self->{ra_user_records} = \@user_records; |
86 | $self->{ra_user_records} = \@user_records; |
| 83 | |
87 | |
| … | |
… | |
| 297 | } ; |
301 | } ; |
| 298 | |
302 | |
| 299 | |
303 | |
| 300 | foreach my $recipient (@recipients) { |
304 | foreach my $recipient (@recipients) { |
| 301 | #warn "FIXME sending email to $recipient"; |
305 | #warn "FIXME sending email to $recipient"; |
| 302 | my $ur = $self->{db}->getUser($recipient); |
306 | my $ur = $self->{db}->getUser($recipient); #checked |
|
|
307 | die "record for user $recipient not found" unless $ur; |
| 303 | my ($msg, $preview_header); |
308 | my ($msg, $preview_header); |
| 304 | eval{ ($msg,$preview_header) = $self->process_message($ur,$rh_merge_data); }; |
309 | eval{ ($msg,$preview_header) = $self->process_message($ur,$rh_merge_data); }; |
| 305 | warn "There were errors in processing user $ur, merge file $merge_file. $@" if $@; |
310 | warn "There were errors in processing user $ur, merge file $merge_file. $@" if $@; |
| 306 | my $mailer = Mail::Sender->new({ |
311 | my $mailer = Mail::Sender->new({ |
| 307 | from => $from, |
312 | from => $from, |
| … | |
… | |
| 368 | |
373 | |
| 369 | } |
374 | } |
| 370 | sub print_preview { |
375 | sub print_preview { |
| 371 | my ($self, $setID) = @_; |
376 | my ($self, $setID) = @_; |
| 372 | # get preview user |
377 | # get preview user |
| 373 | my $ur = $self->{db}->getUser($self->{preview_user}); |
378 | my $ur = $self->{db}->getUser($self->{preview_user}); #checked |
|
|
379 | die "record for preview user ".$self->{preview_user}. " not found." unless $ur; |
| 374 | |
380 | |
| 375 | # get merge file |
381 | # get merge file |
| 376 | my $merge_file = ( defined($self->{merge_file}) ) ? $self->{merge_file} : 'None'; |
382 | my $merge_file = ( defined($self->{merge_file}) ) ? $self->{merge_file} : 'None'; |
| 377 | my $delimiter = ','; |
383 | my $delimiter = ','; |
| 378 | my $rh_merge_data = $self->read_scoring_file("$merge_file", "$delimiter"); |
384 | my $rh_merge_data = $self->read_scoring_file("$merge_file", "$delimiter"); |
| … | |
… | |
| 440 | my $merge_file = ( defined($self->{merge_file}) ) ? $self->{merge_file} : 'None'; |
446 | my $merge_file = ( defined($self->{merge_file}) ) ? $self->{merge_file} : 'None'; |
| 441 | my $delimiter = ','; |
447 | my $delimiter = ','; |
| 442 | my $rh_merge_data = $self->read_scoring_file("$merge_file", "$delimiter"); |
448 | my $rh_merge_data = $self->read_scoring_file("$merge_file", "$delimiter"); |
| 443 | my @merge_keys = keys %$rh_merge_data; |
449 | my @merge_keys = keys %$rh_merge_data; |
| 444 | my $preview_user = $self->{preview_user}; |
450 | my $preview_user = $self->{preview_user}; |
| 445 | my $preview_record = $db->getUser($preview_user); |
451 | my $preview_record = $db->getUser($preview_user); # checked |
|
|
452 | die "record for preview user ".$self->{preview_user}. " not found." unless $preview_record; |
|
|
453 | |
| 446 | |
454 | |
| 447 | ############################################################################################# |
455 | ############################################################################################# |
| 448 | |
456 | |
| 449 | print CGI::start_form({method=>"post", action=>$r->uri()}); |
457 | print CGI::start_form({method=>"post", action=>$r->uri()}); |
| 450 | print $self->hidden_authen_fields(); |
458 | print $self->hidden_authen_fields(); |
| … | |
… | |
| 548 | # warn "merge keys ", join( " ",@merge_keys); |
556 | # warn "merge keys ", join( " ",@merge_keys); |
| 549 | ############################################################################################# |
557 | ############################################################################################# |
| 550 | # merge file fragment and message text area field |
558 | # merge file fragment and message text area field |
| 551 | ############################################################################################# |
559 | ############################################################################################# |
| 552 | my @tmp2; |
560 | my @tmp2; |
| 553 | eval{ @tmp2= @{$rh_merge_data->{ $db->getUser($preview_user)->student_id } };}; |
561 | eval{ @tmp2= @{$rh_merge_data->{ $db->getUser($preview_user)->student_id } };}; # checked |
| 554 | if ($@) { |
562 | if ($@) { |
| 555 | # print CGI::p( "Couldn't get merge data for $preview_user", CGI::br(), $@) ; |
563 | # print CGI::p( "Couldn't get merge data for $preview_user", CGI::br(), $@) ; |
| 556 | print "No merge data for $preview_user in merge file: <$merge_file>",CGI::br(); |
564 | print "No merge data for $preview_user in merge file: <$merge_file>",CGI::br(); |
| 557 | } else { |
565 | } else { |
| 558 | print CGI::pre("",data_format(0..($#tmp2)),"\n", data_format(@tmp2)); |
566 | print CGI::pre("",data_format(0..($#tmp2)),"\n", data_format(@tmp2)); |