[Rt-commit] r3819 - in rt/branches/3.5-TESTING: . lib/RT

jesse at bestpractical.com jesse at bestpractical.com
Fri Sep 2 12:56:01 EDT 2005


Author: jesse
Date: Fri Sep  2 12:56:00 2005
New Revision: 3819

Modified:
   rt/branches/3.5-TESTING/   (props changed)
   rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay.pm
   rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay_SQL.pm
Log:
 r14105 at hualien:  jesse | 2005-08-30 06:17:22 -0400
  r14077 at hualien:  jesse | 2005-08-30 05:56:46 -0400
   r13547 at hualien:  jesse | 2005-08-19 10:41:11 -0400
    r7392 at hualien (orig r3602):  alexmv | 2005-08-04 13:41:33 -0400
     r5644 at zoq-fot-pik:  chmrr | 2005-08-04 13:39:54 -0400
      * Replace %FIELDS (which has pseudohash meaning) with %FIELD_METADATA
      * Make join for sorting watchers be a left join
    
   
  
 


Modified: rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay.pm
==============================================================================
--- rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay.pm	(original)
+++ rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay.pm	Fri Sep  2 12:56:00 2005
@@ -95,50 +95,50 @@
 
 # Configuration Tables:
 
-# FIELDS is a mapping of searchable Field name, to Type, and other
+# FIELD_METADATA is a mapping of searchable Field name, to Type, and other
 # metadata.
 
-my %FIELDS = (
-    Status          => ['ENUM'],
-    Queue           => [ 'ENUM' => 'Queue', ],
-    Type            => [ 'ENUM', ],
-    Creator         => [ 'ENUM' => 'User', ],
-    LastUpdatedBy   => [ 'ENUM' => 'User', ],
-    Owner           => [ 'ENUM' => 'User', ],
-    EffectiveId     => [ 'INT', ],
-    id              => [ 'INT', ],
-    InitialPriority => [ 'INT', ],
-    FinalPriority   => [ 'INT', ],
-    Priority        => [ 'INT', ],
-    TimeLeft        => [ 'INT', ],
-    TimeWorked      => [ 'INT', ],
-    MemberOf        => [ 'LINK' => To => 'MemberOf', ],
-    DependsOn       => [ 'LINK' => To => 'DependsOn', ],
-    RefersTo        => [ 'LINK' => To => 'RefersTo', ],
-    HasMember       => [ 'LINK' => From => 'MemberOf', ],
-    DependentOn     => [ 'LINK' => From => 'DependsOn', ],
-    DependedOnBy    => [ 'LINK' => From => 'DependsOn', ],
-    ReferredToBy    => [ 'LINK' => From => 'RefersTo', ],
-    Told	    => ['DATE' => 'Told',],
-    Starts	    => ['DATE' => 'Starts',],
-    Started	    => ['DATE' => 'Started',],
-    Due		    => ['DATE' => 'Due',],
-    Resolved	    => ['DATE' => 'Resolved',],
-    LastUpdated	    => ['DATE' => 'LastUpdated',],
-    Created	    => ['DATE' => 'Created',],
-    Subject	    => ['STRING',],
-    Content	    => ['TRANSFIELD',],
-    ContentType	    => ['TRANSFIELD',],
-    Filename        => ['TRANSFIELD',],
-    TransactionDate => ['TRANSDATE',],
-    Requestor       => ['WATCHERFIELD' => 'Requestor',],
-    Requestors       => ['WATCHERFIELD' => 'Requestor',],
-    Cc              => ['WATCHERFIELD' => 'Cc',],
-    AdminCc         => ['WATCHERFIELD' => 'AdminCc',],
-    Watcher	    => ['WATCHERFIELD'],
-    LinkedTo	    => ['LINKFIELD',],
-    CustomFieldValue =>['CUSTOMFIELD',],
-    CF              => ['CUSTOMFIELD',],
+my %FIELD_METADATA = (
+    Status           => [ 'ENUM', ],
+    Queue            => [ 'ENUM' => 'Queue', ],
+    Type             => [ 'ENUM', ],
+    Creator          => [ 'ENUM' => 'User', ],
+    LastUpdatedBy    => [ 'ENUM' => 'User', ],
+    Owner            => [ 'ENUM' => 'User', ],
+    EffectiveId      => [ 'INT', ],
+    id               => [ 'INT', ],
+    InitialPriority  => [ 'INT', ],
+    FinalPriority    => [ 'INT', ],
+    Priority         => [ 'INT', ],
+    TimeLeft         => [ 'INT', ],
+    TimeWorked       => [ 'INT', ],
+    MemberOf         => [ 'LINK' => To => 'MemberOf', ],
+    DependsOn        => [ 'LINK' => To => 'DependsOn', ],
+    RefersTo         => [ 'LINK' => To => 'RefersTo', ],
+    HasMember        => [ 'LINK' => From => 'MemberOf', ],
+    DependentOn      => [ 'LINK' => From => 'DependsOn', ],
+    DependedOnBy     => [ 'LINK' => From => 'DependsOn', ],
+    ReferredToBy     => [ 'LINK' => From => 'RefersTo', ],
+    Told             => [ 'DATE' => 'Told', ],
+    Starts           => [ 'DATE' => 'Starts', ],
+    Started          => [ 'DATE' => 'Started', ],
+    Due              => [ 'DATE' => 'Due', ],
+    Resolved         => [ 'DATE' => 'Resolved', ],
+    LastUpdated      => [ 'DATE' => 'LastUpdated', ],
+    Created          => [ 'DATE' => 'Created', ],
+    Subject          => [ 'STRING', ],
+    Content	     => [ 'TRANSFIELD', ],
+    ContentType      => [ 'TRANSFIELD', ],
+    Filename         => [ 'TRANSFIELD', ],
+    TransactionDate  => [ 'TRANSDATE', ],
+    Requestor        => [ 'WATCHERFIELD' => 'Requestor', ],
+    Requestors       => [ 'WATCHERFIELD' => 'Requestor', ],
+    Cc               => [ 'WATCHERFIELD' => 'Cc', ],
+    AdminCc          => [ 'WATCHERFIELD' => 'AdminCc', ],
+    Watcher	     => [ 'WATCHERFIELD', ],
+    LinkedTo	     => [ 'LINKFIELD', ],
+    CustomFieldValue => [ 'CUSTOMFIELD', ],
+    CF               => [ 'CUSTOMFIELD', ],
     Updated          => [ 'TRANSDATE', ],
     RequestorGroup   => [ 'MEMBERSHIPFIELD' => 'Requestor', ],
     CCGroup          => [ 'MEMBERSHIPFIELD' => 'Cc', ],
@@ -201,7 +201,7 @@
 
 # Helper functions for passing the above lexically scoped tables above
 # into Tickets_Overlay_SQL.
-sub FIELDS     { return \%FIELDS }
+sub FIELDS     { return \%FIELD_METADATA }
 sub dispatch   { return \%dispatch }
 sub can_bundle { return \%can_bundle }
 
@@ -271,7 +271,7 @@
     die "Invalid Operation: $op for $field"
       unless $op eq "=" or $op eq "!=";
 
-    my $meta = $FIELDS{$field};
+    my $meta = $FIELD_METADATA{$field};
     if ( defined $meta->[1] ) {
         my $class = "RT::" . $meta->[1];
         my $o     = $class->new( $sb->CurrentUser );
@@ -323,7 +323,7 @@
 sub _LinkLimit {
     my ( $sb, $field, $op, $value, @rest ) = @_;
 
-    my $meta = $FIELDS{$field};
+    my $meta = $FIELD_METADATA{$field};
     die "Invalid Operator $op for $field" unless $op =~ /^(=|!=|IS)/io;
 
     die "Incorrect Metadata for $field"
@@ -446,7 +446,7 @@
     die "Invalid Date Op: $op"
       unless $op =~ /^(=|>|<|>=|<=)$/;
 
-    my $meta = $FIELDS{$field};
+    my $meta = $FIELD_METADATA{$field};
     die "Incorrect Meta Data for $field"
       unless ( defined $meta->[1] );
 
@@ -802,7 +802,7 @@
     else {
         $fieldname = $field;
     }
-    my $meta = $FIELDS{$fieldname};
+    my $meta = $FIELD_METADATA{$fieldname};
     my $type = ( defined $meta->[1] ? $meta->[1] : undef );
 
     my $users = $self->_WatcherJoin($type);
@@ -850,40 +850,34 @@
     my $self  = shift;
     my $type  = shift;
     my $key   = shift || "limit";
-    my $groups = $self->{ 'alias_' . $key . "_groups" } ||=
-      $self->NewAlias('Groups');
-    my $groupmembers =
-      $self->{ 'alias_' . $key . "_groupmembers" } ||=
-      $self->NewAlias('CachedGroupMembers');
-    my $users = $self->{ 'alias_' . $key . "_users" } ||=
-      $self->NewAlias('Users');
 
-    $self->SUPER::Limit(
-        ALIAS           => $groups,
-        FIELD           => 'Domain',
-        VALUE           => 'RT::Ticket-Role',
-        ENTRYAGGREGATOR => 'AND'
-    );
-    $self->Join(
-        ALIAS1 => $groups,
-        FIELD1 => 'Instance',
-        ALIAS2 => 'main',
-        FIELD2 => 'id'
+    my $groups = $self->Join(
+        TYPE   => 'left',
+        ALIAS1 => 'main',
+        FIELD1 => 'id',
+        TABLE2 => 'Groups',
+        FIELD2 => 'Instance'
     );
-    $self->Join(
+    my $groupmembers = $self->Join(
         ALIAS1 => $groups,
         FIELD1 => 'id',
-        ALIAS2 => $groupmembers,
+        TABLE2 => 'CachedGroupMembers',
         FIELD2 => 'GroupId'
     );
-    $self->Join(
+    my $users = $self->Join(
         ALIAS1 => $groupmembers,
         FIELD1 => 'MemberId',
-        ALIAS2 => $users,
+        TABLE2 => 'Users',
         FIELD2 => 'id'
     );
     $self->SUPER::Limit(
         ALIAS           => $groups,
+        FIELD           => 'Domain',
+        VALUE           => 'RT::Ticket-Role',
+        ENTRYAGGREGATOR => 'AND'
+    );
+    $self->SUPER::Limit(
+        ALIAS           => $groups,
         FIELD           => 'Type',
         VALUE           => $type,
         ENTRYAGGREGATOR => 'AND'
@@ -985,7 +979,7 @@
     # }}}
 
     # If we care about which sort of watcher
-    my $meta = $FIELDS{$field};
+    my $meta = $FIELD_METADATA{$field};
     my $type = ( defined $meta->[1] ? $meta->[1] : undef );
 
     if ($type) {
@@ -2532,9 +2526,9 @@
         }
 
         die "I don't know about $field yet"
-          unless ( exists $FIELDS{$realfield} or $restriction->{CUSTOMFIELD} );
+          unless ( exists $FIELD_METADATA{$realfield} or $restriction->{CUSTOMFIELD} );
 
-        my $type = $FIELDS{$realfield}->[0];
+        my $type = $FIELD_METADATA{$realfield}->[0];
         my $op   = $restriction->{'OPERATOR'};
 
         my $value = (

Modified: rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay_SQL.pm
==============================================================================
--- rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay_SQL.pm	(original)
+++ rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay_SQL.pm	Fri Sep  2 12:56:00 2005
@@ -51,12 +51,12 @@
 # Import configuration data from the lexcial scope of __PACKAGE__ (or
 # at least where those two Subroutines are defined.)
 
-my %FIELDS = %{FIELDS()};
+my %FIELD_METADATA = %{FIELDS()};
 my %dispatch = %{dispatch()};
 my %can_bundle = %{can_bundle()};
 
 # Lower Case version of FIELDS, for case insensitivity
-my %lcfields = map { ( lc($_) => $_ ) } (keys %FIELDS);
+my %lcfields = map { ( lc($_) => $_ ) } (keys %FIELD_METADATA);
 
 sub _InitSQL {
   my $self = shift;
@@ -297,7 +297,7 @@
       my $class;
       if (exists $lcfields{lc $key}) {
         $key = $lcfields{lc $key};
-        $class = $FIELDS{$key}->[0];
+        $class = $FIELD_METADATA{$key}->[0];
       }
    # no longer have a default, since CF's are now a real class, not fallthrough
    # fixme: "default class" is not Generic.


More information about the Rt-commit mailing list