blob: b8a0dd8b6c6cdf1f83dc9a4d379a535b47f6f3e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
<%INIT>
my %documents;
#A default implementation here loops through all transactions and pulls out all their attachments.
# We end up doing an end-run around that to get a bit more performance
# We force the cache of ticket transactions to get populated up front. otherwise, the
# code that looks at attachments will look at each one in turn.
my $transactions = $Ticket->Transactions->First;
my $attachments = RT::Attachments->new( $session{'CurrentUser'} );
$attachments->Columns( qw( Id Filename ContentType Headers Subject Parent ContentEncoding ContentType TransactionId Created));
if ( $Ticket->CurrentUserHasRight('ShowTicket') ) {
my $transactions = $attachments->NewAlias('Transactions');
$attachments->Join( ALIAS1 => 'main',
FIELD1 => 'TransactionId',
ALIAS2 => $transactions,
FIELD2 => 'id' );
my $tickets = $attachments->NewAlias('Tickets');
$attachments->Join( ALIAS1 => $transactions,
FIELD1 => 'Ticket',
ALIAS2 => $tickets,
FIELD2 => 'id' );
$attachments->Limit( ALIAS => $tickets,
FIELD => 'EffectiveId',
VALUE => $Ticket->id() );
# if the user may not see comments do not return them
unless ( $Ticket->CurrentUserHasRight('ShowTicketComments') ) {
$attachments->Limit( ALIAS => $transactions,
FIELD => 'Type',
OPERATOR => '!=',
VALUE => "Comment" );
}
}
return ($attachments);
</%INIT>
<%ARGS>
$Ticket => undef
</%ARGS>
|