Filename => ['TRANSFIELD',],
TransactionDate => ['TRANSDATE',],
Requestor => ['WATCHERFIELD' => 'Requestor',],
- CC => ['WATCHERFIELD' => 'Cc',],
- AdminCC => ['WATCHERFIELD' => 'AdminCC',],
+ Cc => ['WATCHERFIELD' => 'Cc',],
+ AdminCc => ['WATCHERFIELD' => 'AdminCC',],
Watcher => ['WATCHERFIELD'],
LinkedTo => ['LINKFIELD',],
CustomFieldValue =>['CUSTOMFIELD',],
die "Incorrect Meta Data for $field"
unless (defined $meta->[1] and defined $meta->[2]);
- my $LinkAlias = $sb->NewAlias ('Links');
+ $sb->{_sql_linkalias} = $sb->NewAlias ('Links')
+ unless defined $sb->{_sql_linkalias};
$sb->_OpenParen();
$sb->_SQLLimit(
- ALIAS => $LinkAlias,
+ ALIAS => $sb->{_sql_linkalias},
FIELD => 'Type',
OPERATOR => '=',
VALUE => $meta->[2],
my $matchfield = ( $value =~ /^(\d+)$/ ? "LocalTarget" : "Target" );
$sb->_SQLLimit(
- ALIAS => $LinkAlias,
+ ALIAS => $sb->{_sql_linkalias},
ENTRYAGGREGATOR => 'AND',
FIELD => $matchfield,
OPERATOR => '=',
);
#If we're searching on target, join the base to ticket.id
- $sb->Join( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'},
- ALIAS2 => $LinkAlias, FIELD2 => 'LocalBase');
+ $sb->_SQLJoin( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'},
+ ALIAS2 => $sb->{_sql_linkalias}, FIELD2 => 'LocalBase');
} elsif ( $meta->[1] eq "From" ) {
my $matchfield = ( $value =~ /^(\d+)$/ ? "LocalBase" : "Base" );
$sb->_SQLLimit(
- ALIAS => $LinkAlias,
+ ALIAS => $sb->{_sql_linkalias},
ENTRYAGGREGATOR => 'AND',
FIELD => $matchfield,
OPERATOR => '=',
);
#If we're searching on base, join the target to ticket.id
- $sb->Join( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'},
- ALIAS2 => $LinkAlias, FIELD2 => 'LocalTarget');
+ $sb->_SQLJoin( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'},
+ ALIAS2 => $sb->{_sql_linkalias}, FIELD2 => 'LocalTarget');
} else {
die "Invalid link direction '$meta->[1]' for $field\n";
$sb->_OpenParen;
# Join Transactions To Attachments
- $sb->Join( ALIAS1 => $sb->{_sql_trattachalias}, FIELD1 => 'TransactionId',
+ $sb->_SQLJoin( ALIAS1 => $sb->{_sql_trattachalias}, FIELD1 => 'TransactionId',
ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'id');
# Join Transactions to Tickets
- $sb->Join( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'}, # UGH!
+ $sb->_SQLJoin( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'}, # UGH!
ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'Ticket');
my $d = new RT::Date( $sb->CurrentUser );
$sb->_OpenParen;
- # Join Transactions To Attachments
- $sb->Join( ALIAS1 => $sb->{_sql_trattachalias}, FIELD1 => 'TransactionId',
- ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'id');
-
- # Join Transactions to Tickets
- $sb->Join( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'}, # UGH!
- ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'Ticket');
-
#Search for the right field
$sb->_SQLLimit(ALIAS => $sb->{_sql_trattachalias},
FIELD => $field,
@rest
);
+ # Join Transactions To Attachments
+ $sb->_SQLJoin( ALIAS1 => $sb->{_sql_trattachalias}, FIELD1 => 'TransactionId',
+ ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'id');
+
+ # Join Transactions to Tickets
+ $sb->_SQLJoin( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'}, # UGH!
+ ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'Ticket');
+
$sb->_CloseParen;
}
VALUE => 'RT::Ticket-Role',
ENTRYAGGREGATOR => 'AND');
- $self->Join(ALIAS1 => $groups, FIELD1 => 'Instance',
+ $self->_SQLJoin(ALIAS1 => $groups, FIELD1 => 'Instance',
ALIAS2 => 'main', FIELD2 => 'id');
# }}}
ENTRYAGGREGATOR => 'AND');
}
- $self->Join (ALIAS1 => $groups, FIELD1 => 'id',
+ $self->_SQLJoin (ALIAS1 => $groups, FIELD1 => 'id',
ALIAS2 => $groupmembers, FIELD2 => 'GroupId');
- $self->Join( ALIAS1 => $groupmembers, FIELD1 => 'MemberId',
+ $self->_SQLJoin( ALIAS1 => $groupmembers, FIELD1 => 'MemberId',
ALIAS2 => $users, FIELD2 => 'id');
$self->_CloseParen;
OPERATOR => '=',
VALUE => $restriction->{'TARGET'} );
#If we're searching on target, join the base to ticket.id
- $self->Join( ALIAS1 => 'main', FIELD1 => $self->{'primary_key'},
+ $self->_SQLJoin( ALIAS1 => 'main', FIELD1 => $self->{'primary_key'},
ALIAS2 => $LinkAlias,
FIELD2 => 'LocalBase');
}
OPERATOR => '=',
VALUE => $restriction->{'BASE'} );
#If we're searching on base, join the target to ticket.id
- $self->Join( ALIAS1 => 'main', FIELD1 => $self->{'primary_key'},
+ $self->_SQLJoin( ALIAS1 => 'main', FIELD1 => $self->{'primary_key'},
ALIAS2 => $LinkAlias,
FIELD2 => 'LocalTarget')
}
my $cfid = 0;
+ # this is pretty inefficient for huge numbers of CFs...
while ( my $CustomField = $CF->Next ) {
- if ($CustomField->Name eq $field) {
+ if (lc $CustomField->Name eq lc $field) {
$cfid = $CustomField->Id;
last;
}
$TicketCFs = $self->{_sql_keywordalias}{$cfid};
} else {
$TicketCFs = $self->{_sql_keywordalias}{$cfid} =
- $self->Join( TYPE => 'left',
+ $self->_SQLJoin( TYPE => 'left',
ALIAS1 => 'main',
FIELD1 => 'id',
TABLE2 => 'TicketCustomFieldValues',
Returns a frozen string suitable for handing back to ThawLimits.
=cut
+
+sub _FreezeThawKeys {
+ 'TicketRestrictions',
+ 'restriction_index',
+ 'looking_at_effective_id',
+ 'looking_at_type'
+}
+
# {{{ sub FreezeLimits
sub FreezeLimits {
my $self = shift;
require FreezeThaw;
- return (FreezeThaw::freeze($self->{'TicketRestrictions'},
- $self->{'restriction_index'}
- ));
+ return (FreezeThaw::freeze(@{$self}{$self->_FreezeThawKeys}));
}
# }}}
#We don't need to die if the thaw fails.
eval {
- ($self->{'TicketRestrictions'},
- $self->{'restriction_index'}
- ) = FreezeThaw::thaw($in);
- }
+ @{$self}{$self->_FreezeThawKeys} = FreezeThaw::thaw($in);
+ };
+ $RT::Logger->error( $@ ) if $@;
}
$self->{'primary_key'} = "id";
delete $self->{'items_array'};
delete $self->{'item_map'};
+ delete $self->{'columns_to_display'};
$self->SUPER::_Init(@_);
$self->_InitSQL;