[Rt-commit] r3792 - in rt/branches/CHALDEA-EXPERIMENTAL: . lib/RT
jesse at bestpractical.com
jesse at bestpractical.com
Fri Sep 2 12:06:12 EDT 2005
Author: jesse
Date: Fri Sep 2 12:06:12 2005
New Revision: 3792
Modified:
rt/branches/CHALDEA-EXPERIMENTAL/ (props changed)
rt/branches/CHALDEA-EXPERIMENTAL/lib/RT/Tickets_Overlay.pm
rt/branches/CHALDEA-EXPERIMENTAL/lib/RT/Tickets_Overlay_SQL.pm
Log:
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/CHALDEA-EXPERIMENTAL/lib/RT/Tickets_Overlay.pm
==============================================================================
--- rt/branches/CHALDEA-EXPERIMENTAL/lib/RT/Tickets_Overlay.pm (original)
+++ rt/branches/CHALDEA-EXPERIMENTAL/lib/RT/Tickets_Overlay.pm Fri Sep 2 12:06:12 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/CHALDEA-EXPERIMENTAL/lib/RT/Tickets_Overlay_SQL.pm
==============================================================================
--- rt/branches/CHALDEA-EXPERIMENTAL/lib/RT/Tickets_Overlay_SQL.pm (original)
+++ rt/branches/CHALDEA-EXPERIMENTAL/lib/RT/Tickets_Overlay_SQL.pm Fri Sep 2 12:06:12 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