import rt 3.0.12
[freeside.git] / rt / html / Ticket / Elements / LoadTextAttachments
diff --git a/rt/html/Ticket/Elements/LoadTextAttachments b/rt/html/Ticket/Elements/LoadTextAttachments
new file mode 100755 (executable)
index 0000000..084502e
--- /dev/null
@@ -0,0 +1,39 @@
+<%INIT>
+
+my $attachments = RT::Attachments->new( $session{'CurrentUser'} );
+
+$attachments->Columns( qw(id Content ContentType TransactionId ContentEncoding));
+
+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" );
+    }
+
+    $attachments->Limit ( FIELD => 'ContentType', OPERATOR => '=', VALUE => 'text/plain');
+    $attachments->Limit ( FIELD => 'ContentType', OPERATOR => 'STARTSWITH', VALUE => 'message/');
+    $attachments->Limit ( FIELD => 'ContentType', OPERATOR => '=', VALUE => 'text');
+
+}
+return ($attachments);
+</%INIT>
+<%ARGS>
+$Ticket => undef
+</%ARGS>
+