package Utils; use strict; use warnings; use Data::Dumper; sub generateOutput { my ($outputfile, $rows, $header, $record, $footer, $values) = @_; return 0 if not defined $record; if(open FILE, ">$outputfile") { print FILE &$header($values) if defined $header; foreach my $r (@$rows) { my $record_alt = &$record($r, $values); print FILE $record_alt; } print FILE &$footer($values) . "\n" if defined $footer; close FILE; return 1; } else { return 0; } } sub generateEmails { my ($tool, $to, $from, $subject, $rows, $header, $record, $footer, $values, $summary) = @_; my ($msg, $body) = ("", ""); if($summary eq "yes") { foreach my $r (@$rows) { $body .= &$record($r, $values) if defined $record; } if($body ne "") { $msg .= &$header($values) if defined $header; $msg .= $body; $msg .= &$footer($values) if defined $footer; foreach my $recipient (@$to) { sendEmail($tool, $recipient, $from, $subject, $msg) if defined $record; } } } else { foreach my $r (@$rows) { $msg = ""; $msg .= &$header($values) if defined &$header; $msg .= &$record($r, $values); $msg .= &$footer($values) . "\n" if defined $footer; if(defined $record) { foreach my $recipient (@$to) { sendEmail($tool, $recipient, $from, $subject, $msg) if defined $record; } } } } } sub sendEmail { my($tool, $to, $from, $subject, $body) = @_; if(($from !~ /^(\w|\-|\_|\.)+\@((\w|\-|\_)+\.)+[a-zA-Z]{2,}$/) || ($from =~ /\.@|\.\./)) { print "Senders address ('$from') is not valid!\n"; return 0; } if(($to !~ /^(\w|\-|\_|\.)+\@((\w|\-|\_)+\.)+[a-zA-Z]{2,}$/) || ($to =~ /\.@|\.\./)) { print "Recipients address ('$to') is not valid!\n"; return 0; } if($subject eq "") { print "Subject cannot be empty!\n"; return 0; } if(open(MAIL, "|/usr/sbin/$tool -t")) { print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; print MAIL "$body"; close(MAIL); return 1; } else { return (0, "Sending email failed: $!"); } } sub fetchall_array_hashref { my ($dbh, $query) = @_; my $sth = $$dbh->prepare($query); $sth->execute(); my (@rows, $x); push(@rows, $x) while ($x = $sth->fetchrow_hashref()); return @rows; } 1;