[Rt-commit] rt branch, 4.6/txn-query-builder-with-new-themes, repushed
? sunnavy
sunnavy at bestpractical.com
Tue Dec 10 07:44:45 EST 2019
The branch 4.6/txn-query-builder-with-new-themes was deleted and repushed:
was a896b4d1b268199f2bdc1920164d410425449dcb
now c0463e8f8cdb055986756caa1529b51cef6ff088
1: 17fde7e07d ! 1: 8f3298ad11 Initial ticket transaction query builder
@@ -369,7 +369,6 @@
+ my $self = shift;
+ # Private Member Variables (which should get cleaned)
+ $self->{'_sql_query'} = '';
-+ $self->{'_sql_looking_at'} = {};
}
=head2 LimitToTicket TICKETID
@@ -1049,13 +1048,6 @@
+ $value = $user->id if $user->id;
+ }
+
-+ if ( $field eq 'Status' && $value =~ /^(?:__(?:in)?active__)$/i ) {
-+ my $user = RT::User->new( $self->CurrentUser );
-+ $user->Load($value);
-+ $value = $user->id if $user->id;
-+ }
-+
-+ $self->{_sql_looking_at}{ lc "ticket$field" } = 1;
+ $self->Limit(
+ %rest,
+ ALIAS => $self->_JoinTickets,
@@ -1110,8 +1102,6 @@
+ $args{SUBCLAUSE} ||= "txnsql"
+ if $self->{parsing_txnsql} and not $args{LEFTJOIN};
+
-+ $self->{_sql_looking_at}{ lc $args{FIELD} }{ $args{VALUE} } = 1
-+ if $args{FIELD} and ( not $args{ALIAS} or $args{ALIAS} eq "main" );
+ $self->SUPER::Limit(%args);
+}
+
@@ -1297,23 +1287,6 @@
+ return (0, $error);
+ }
+
-+ if ( !$self->{_sql_looking_at}{objecttype} ) {
-+ $self->Limit( FIELD => 'ObjectType', VALUE => 'RT::Ticket' );
-+ $self->{_sql_looking_at}{objecttype}{'RT::Ticket'} = 1;
-+ }
-+
-+ if ( $self->{_sql_looking_at}{objecttype}{'RT::Ticket'} ) {
-+ if ( !$self->{_sql_looking_at}{tickettype} ) {
-+ $self->Limit(
-+ ALIAS => $self->_JoinTickets,
-+ FIELD => 'Type',
-+ OPERATOR => '=',
-+ VALUE => 'ticket',
-+ CASESENSITIVE => 0,
-+ );
-+ }
-+ }
-+
+ # set SB's dirty flag
+ $self->{'must_redo_search'} = 1;
+
@@ -1360,7 +1333,11 @@
+if (!$Collection) {
+ $Collection = $Class->new( $session{'CurrentUser'} );
+ if ( $Class eq 'RT::Transactions' ) {
-+ $Query = join ' AND ', "ObjectType = '$ObjectType'", $Query ? "($Query)" : ();
++ my @limits = ( "ObjectType = '$ObjectType'", $Query ? "($Query)" : () );
++ if ( $ObjectType eq 'RT::Ticket' ) {
++ unshift @limits, "TicketType = 'ticket'";
++ }
++ $Query = join ' AND ', @limits;
+ }
$Collection->FromSQL($Query);
}
@@ -3078,7 +3055,11 @@
+my ( $ok, $msg );
+if ( $Query ) {
+ if ( $Class eq 'RT::Transactions' ) {
-+ ( $ok, $msg ) = $session{$session_name}->FromSQL( join ' AND ', "ObjectType = '$ObjectType'", "($Query)" );
++ my @limits = ( "ObjectType = '$ObjectType'", "($Query)" );
++ if ( $ObjectType eq 'RT::Ticket' ) {
++ unshift @limits, "TicketType = 'ticket'";
++ }
++ ( $ok, $msg ) = $session{$session_name}->FromSQL( join ' AND ', @limits );
+ }
+ else {
+ ( $ok, $msg ) = $session{$session_name}->FromSQL($Query);
@@ -3222,7 +3203,20 @@
-my $Tickets = RT::Tickets->new( $session{'CurrentUser'} );
-$Tickets->FromSQL( $Query );
+my $collection = $Class->new( $session{'CurrentUser'} );
-+$collection->FromSQL( $Class eq 'RT::Transactions' ? join( ' AND ', "ObjectType = '$ObjectType'", "($Query)" ) : $Query );
++
++my @limits;
++
++if ( $Class eq 'RT::Transactions' ) {
++ @limits = ( "ObjectType = '$ObjectType'", "($Query)" );
++ if ( $ObjectType eq 'RT::Ticket' ) {
++ unshift @limits, "TicketType = 'ticket'";
++ }
++}
++else {
++ push @limits, $Query;
++}
++
++$collection->FromSQL( join ' AND ', @limits );
if ( $OrderBy =~ /\|/ ) {
# Multiple Sorts
my @OrderBy = split /\|/, $OrderBy;
2: 57dec7ad98 = 2: 0122ff1d29 Resolve the inconsistent $Class param in Search and CollectionAsTable
3: a4ad1d535f = 3: 74c8d4baf8 Add support to clip long search result columns
4: 44c48a98d6 ! 4: 77e05fe4da Add transaction search tests
@@ -30,18 +30,18 @@
+ is( $txn->$field, $field_value{$field}, $field );
+}
+
-+$txns->FromSQL('Type="Create" AND TicketStatus="__Active__"');
++$txns->FromSQL('ObjectType="RT::Ticket" AND Type="Create" AND TicketStatus="__Active__"');
+is( $txns->Count, 2, 'Found the 2 create txns of active tickets' );
+
-+$txns->FromSQL('Type="Create" AND TicketStatus="__Inactive__"');
++$txns->FromSQL('ObjectType="RT::Ticket" AND Type="Create" AND TicketStatus="__Inactive__"');
+is( $txns->Count, 0, 'Found the 0 create txns of inactive tickets' );
+
+ok( $frodo->SetStatus('resolved'), 'Resolved 1 ticket' );
-+$txns->FromSQL('Type="Create" AND TicketStatus="__Active__"');
++$txns->FromSQL('ObjectType="RT::Ticket" AND Type="Create" AND TicketStatus="__Active__"');
+is( $txns->Count, 1, 'Found the 1 create txn of active tickets' );
+is( $txns->Next->ObjectId, $bilbo->id, 'Active ticket is bilbo' );
+
-+$txns->FromSQL('Type="Create" AND TicketStatus="__Inactive__"');
++$txns->FromSQL('ObjectType="RT::Ticket" AND Type="Create" AND TicketStatus="__Inactive__"');
+is( $txns->Count, 1, 'Found the 1 create txn of inactive tickets' );
+is( $txns->Next->ObjectId, $frodo->id, 'Inactive ticket is frodo' );
+
5: c5715e5100 = 5: 4d9e9fb25f Add transaction query builder tests
6: a896b4d1b2 = 6: c0463e8f8c Add Transactions to query builder docs
More information about the rt-commit
mailing list