@@ -, +, @@ letter_code and code modification --- misc/cronjobs/cleanup_database.pl | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) --- a/misc/cronjobs/cleanup_database.pl +++ a/misc/cronjobs/cleanup_database.pl @@ -348,18 +348,18 @@ if ($mail) { my $count = 0; print "Mail queue purge triggered for $mail days.\n" if $verbose; print "Not deleting emails of type $letter_codes.\n" if ($verbose && $letter_codes); - my $query = q{ - DELETE FROM message_queue - WHERE time_queued < date_sub(curdate(), INTERVAL ? DAY) - AND letter_code NOT IN ( ? ) - }; - my $quoted_codes = ''; + my (@codes, $quoted_codes); if ($letter_codes) { - my @codes = map { "'$_'" } split(',', $letter_codes); - my $quoted_codes = join(',', @codes); + $letter_codes =~ s/ //g; + @codes = map { "$_" } split(',', $letter_codes); + $quoted_codes = join ",", ("?") x @codes; } - $sth = $dbh->prepare($query); - $sth->execute($mail, $quoted_codes) or die $dbh->errstr; + + $sth = $dbh->prepare(" + DELETE FROM message_queue + WHERE time_queued < date_sub(curdate(), INTERVAL ? DAY) + AND letter_code NOT IN ( $quoted_codes )"); + $sth->execute($mail, @codes) or die $dbh->errstr; $count = $sth->rows; $sth->finish; print "$count messages were deleted from the mail queue.\nDone with message_queue purge.\n" if $verbose; --