X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FTransactions.pm;fp=rt%2Flib%2FRT%2FTransactions.pm;h=86a05f73b9d66513f8edad2f246160655ab4f073;hb=33beebf4cb42eba3e1dd868ad5e0af102de961da;hp=0b977c623ac9e35f6700bc1acafd2816752ba70f;hpb=7ac86daf67b0a95153b736d5811f9050363f6553;p=freeside.git diff --git a/rt/lib/RT/Transactions.pm b/rt/lib/RT/Transactions.pm index 0b977c623..86a05f73b 100755 --- a/rt/lib/RT/Transactions.pm +++ b/rt/lib/RT/Transactions.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -46,78 +46,129 @@ # # END BPS TAGGED BLOCK }}} -# Autogenerated by DBIx::SearchBuilder factory (by ) -# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. -# -# !! DO NOT EDIT THIS FILE !! -# - -use strict; - - =head1 NAME - RT::Transactions -- Class Description - + RT::Transactions - a collection of RT Transaction objects + =head1 SYNOPSIS - use RT::Transactions + use RT::Transactions; + =head1 DESCRIPTION =head1 METHODS + =cut + package RT::Transactions; -use RT::SearchBuilder; -use RT::Transaction; +use strict; +use warnings; -use vars qw( @ISA ); -@ISA= qw(RT::SearchBuilder); +use RT::Transaction; -sub _Init { - my $self = shift; - $self->{'table'} = 'Transactions'; - $self->{'primary_key'} = 'id'; +use base 'RT::SearchBuilder'; +sub Table { 'Transactions'} - return ( $self->SUPER::_Init(@_) ); +# {{{ sub _Init +sub _Init { + my $self = shift; + + $self->{'table'} = "Transactions"; + $self->{'primary_key'} = "id"; + + # By default, order by the date of the transaction, rather than ID. + $self->OrderByCols( { FIELD => 'Created', + ORDER => 'ASC' }, + { FIELD => 'id', + ORDER => 'ASC' } ); + + return ( $self->SUPER::_Init(@_)); } +=head2 LimitToTicket TICKETID -=head2 NewItem +Find only transactions for the ticket whose id is TICKETID. + +This includes tickets merged into TICKETID. + +Repeated calls to this method will intelligently limit down to that set of tickets, joined with an OR -Returns an empty new RT::Transaction item =cut -sub NewItem { + +sub LimitToTicket { my $self = shift; - return(RT::Transaction->new($self->CurrentUser)); + my $tid = shift; + + unless ( $self->{'tickets_table'} ) { + $self->{'tickets_table'} ||= $self->NewAlias('Tickets'); + $self->Join( + ALIAS1 => 'main', + FIELD1 => 'ObjectId', + ALIAS2 => $self->{'tickets_table'}, + FIELD2 => 'id' + ); + $self->Limit( + FIELD => 'ObjectType', + VALUE => 'RT::Ticket', + ); + } + $self->Limit( + ALIAS => $self->{tickets_table}, + FIELD => 'EffectiveId', + OPERATOR => '=', + ENTRYAGGREGATOR => 'OR', + VALUE => $tid, + ); + } -RT::Base->_ImportOverlays(); -=head1 SEE ALSO -This class allows "overlay" methods to be placed -into the following files _Overlay is for a System overlay by the original author, -_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations. +sub Next { + my $self = shift; + + my $Transaction = $self->SUPER::Next(); + if ((defined($Transaction)) and (ref($Transaction))) { + # If the user can see the transaction's type, then they can + # see the transaction and we should hand it back. + if ($Transaction->Type) { + return($Transaction); + } + + #If the user doesn't have the right to show this ticket + else { + return($self->Next()); + } + } + + #if there never was any ticket + else { + return(undef); + } +} + -These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line - no warnings qw(redefine); -so that perl does not kick and scream when you redefine a subroutine or variable in your overlay. +=head2 NewItem -RT::Transactions_Overlay, RT::Transactions_Vendor, RT::Transactions_Local +Returns an empty new RT::Transaction item =cut +sub NewItem { + my $self = shift; + return(RT::Transaction->new($self->CurrentUser)); +} +RT::Base->_ImportOverlays(); 1;