From e3012c0751dad6710ea35b6d074b551bffdad09b Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Fri, 27 Sep 2013 16:02:03 -0700 Subject: [PATCH] clean up invalid ticket links on upgrade, #25067 --- FS/FS/TicketSystem.pm | 15 +++++++++++++++ rt/lib/RT/URI/freeside/Internal.pm | 1 - 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/FS/FS/TicketSystem.pm b/FS/FS/TicketSystem.pm index c1c69fa3f..fa54e0bbd 100644 --- a/FS/FS/TicketSystem.pm +++ b/FS/FS/TicketSystem.pm @@ -342,6 +342,21 @@ sub _upgrade_data { or die $dbh->errstr; $cve_2013_3373_sth->execute or die $cve_2013_3373_sth->errstr; + # Remove dangling customer links, if any + my %target_pkey = ('cust_main' => 'custnum', 'cust_svc' => 'svcnum'); + for my $table (keys %target_pkey) { + my $pkey = $target_pkey{$table}; + my $rows = $dbh->do( + "DELETE FROM links WHERE id IN(". + "SELECT links.id FROM links LEFT JOIN $table ON (links.target = ". + "'freeside://freeside/$table/' || $table.$pkey) ". + "WHERE links.target like 'freeside://freeside/$table/%' ". + "AND $table.$pkey IS NULL". + ")" + ) or die $dbh->errstr; + warn "Removed $rows dangling ticket-$table links\n" if $rows > 0; + } + return; } diff --git a/rt/lib/RT/URI/freeside/Internal.pm b/rt/lib/RT/URI/freeside/Internal.pm index 5dc92d421..d1479b5f9 100644 --- a/rt/lib/RT/URI/freeside/Internal.pm +++ b/rt/lib/RT/URI/freeside/Internal.pm @@ -211,7 +211,6 @@ sub CustomerResolver { sub CustomerInfo { my $self = shift; $self = $self->CustomerResolver; - my $rec; my $rec = $self->_FreesideGetRecord() if $self; if (!$rec) { # AsStringLong will report an error; -- 2.11.0