[Rt-commit] r19111 - in rt/3.999/branches/FTS/lib/RT: Model

ruz at bestpractical.com ruz at bestpractical.com
Thu Apr 9 10:12:37 EDT 2009


Author: ruz
Date: Thu Apr  9 10:12:35 2009
New Revision: 19111

Modified:
   rt/3.999/branches/FTS/lib/RT/Model/AttachmentCollection.pm
   rt/3.999/branches/FTS/lib/RT/ScripAction/SendEmail.pm

Log:
* it's very unlikly that attachments will have own transactions ever,
  so make join_transactions method (every collection has it now) join
  transactions these attachments belong to

Modified: rt/3.999/branches/FTS/lib/RT/Model/AttachmentCollection.pm
==============================================================================
--- rt/3.999/branches/FTS/lib/RT/Model/AttachmentCollection.pm	(original)
+++ rt/3.999/branches/FTS/lib/RT/Model/AttachmentCollection.pm	Thu Apr  9 10:12:35 2009
@@ -85,35 +85,6 @@
     return $self->SUPER::_init(@_);
 }
 
-sub clean_slate {
-    my $self = shift;
-    delete $self->{_sql_transaction_alias};
-    return $self->SUPER::clean_slate(@_);
-}
-
-=head2 transaction_alias
-
-Returns alias for transactions table with applied join condition.
-Always return the same alias, so if you want to build some complex
-or recursive joining then you have to create new alias youself.
-
-=cut
-
-sub transaction_alias {
-    my $self = shift;
-    return $self->{'_sql_transaction_alias'}
-        if $self->{'_sql_transaction_alias'};
-
-    my $res = $self->new_alias('Transactions');
-    $self->limit(
-        entry_aggregator => 'AND',
-        column           => 'transaction_id',
-        value            => $res . '.id',
-        quote_value      => 0,
-    );
-    return $self->{'_sql_transaction_alias'} = $res;
-}
-
 =head2 content_type (value => 'text/plain', entry_aggregator => 'OR', operator => '=' ) 
 
 Limit result set to attachments of content_type 'TYPE'...
@@ -185,7 +156,7 @@
     my $self = shift;
     my $tid  = shift;
 
-    my $transactions = $self->transaction_alias;
+    my $transactions = $self->join_transactions;
     $self->limit(
         entry_aggregator => 'AND',
         alias            => $transactions,
@@ -234,5 +205,32 @@
     return $self->next;
 }
 
+=head2 join_transactions
+
+Returns alias for transactions table with applied join condition.
+Always return the same alias, so if you want to build some complex
+or recursive joining then you have to create new alias youself.
+
+=cut
+
+sub join_transactions {
+    my $self = shift;
+    my %args = ( new => 0, @_ );
+
+    return $self->{'_sql_aliases'}{'transactions'}
+        if !$args{'new'} && $self->{'_sql_aliases'}{'transactions'};
+
+    my $alias = $self->join(
+        alias1  => 'main',
+        column1 => 'transaction_id',
+        table2  => RT::Model::TransactionCollection->new,
+        column2 => 'id',
+    );
+    $self->{'_sql_aliases'}{'transactions'} = $alias
+        unless $args{'new'};
+
+    return $alias;
+}
+
 
 1;

Modified: rt/3.999/branches/FTS/lib/RT/ScripAction/SendEmail.pm
==============================================================================
--- rt/3.999/branches/FTS/lib/RT/ScripAction/SendEmail.pm	(original)
+++ rt/3.999/branches/FTS/lib/RT/ScripAction/SendEmail.pm	Thu Apr  9 10:12:35 2009
@@ -480,7 +480,7 @@
 
     # XXX: we need a current user here, but who is current user?
     my $attachs = RT::Model::AttachmentCollection->new( current_user => RT->system_user );
-    my $txn_alias = $attachs->transaction_alias;
+    my $txn_alias = $attachs->join_transactions;
     $attachs->limit(
         alias  => $txn_alias,
         column => 'type',


More information about the Rt-commit mailing list