fix phantom customer links, RT#13852
[freeside.git] / rt / lib / RT / Tickets.pm
index 4e2415b..485d7df 100755 (executable)
@@ -2084,7 +2084,12 @@ sub JoinToCustLinks {
             TABLE2 => 'Links',
             FIELD2 => 'LocalBase',
         );
-
+       $self->SUPER::Limit(
+         LEFTJOIN => $linkalias,
+         FIELD    => 'Base',
+         OPERATOR => 'LIKE',
+         VALUE    => 'fsck.com-rt://%/ticket/%',
+       );
         $self->SUPER::Limit(
             LEFTJOIN => $linkalias,
             FIELD    => 'Type',
@@ -2134,6 +2139,12 @@ sub JoinToSvcLinks {
             TABLE2 => 'Links',
             FIELD2 => 'LocalBase',
         );
+       $self->SUPER::Limit(
+         LEFTJOIN => $linkalias,
+         FIELD    => 'Base',
+         OPERATOR => 'LIKE',
+         VALUE    => 'fsck.com-rt://%/ticket/%',
+       );
 
         $self->SUPER::Limit(
             LEFTJOIN => $linkalias,
@@ -2229,6 +2240,7 @@ sub _FreesideFieldLimit {
 
     # if it's compound, create a join from cust_main or cust_svc to that 
     # table, using custnum or svcnum, and Limit on that table instead.
+    my @_SQLLimit = ();
     foreach my $a (@alias) {
       if ( $table2 ) {
           $a = $self->Join(
@@ -2258,7 +2270,8 @@ sub _FreesideFieldLimit {
       # will produce a subclause: "cust_main_1.custnum IS NOT NULL OR 
       # cust_main_2.custnum IS NOT NULL" (or "IS NULL AND..." for a negative
       # query).
-      $self->_SQLLimit(
+      #$self->_SQLLimit(
+      push @_SQLLimit, {
           %rest,
           ALIAS           => $a,
           FIELD           => $pkey,
@@ -2267,8 +2280,15 @@ sub _FreesideFieldLimit {
           QUOTEVALUE      => 0,
           ENTRYAGGREGATOR => $is_negative ? 'AND' : 'OR',
           SUBCLAUSE       => 'fs_limit',
-      );
+      };
     }
+
+    $self->_OpenParen;
+    foreach my $_SQLLimit (@_SQLLimit) {
+      $self->_SQLLimit( %$_SQLLimit);
+    }
+    $self->_CloseParen;
+
 }
 
 #Freeside