[Rt-commit] r18640 - rt/3.999/branches/on-tisql/lib/RT/Model

ruz at bestpractical.com ruz at bestpractical.com
Tue Mar 3 14:21:15 EST 2009


Author: ruz
Date: Tue Mar  3 14:21:14 2009
New Revision: 18640

Modified:
   rt/3.999/branches/on-tisql/lib/RT/Model/Ticket.pm
   rt/3.999/branches/on-tisql/lib/RT/Model/User.pm

Log:
* switch to tisql expressions based on callbacks to add
  'recursive' argument for watchers, groups_watching and
  member_of

Modified: rt/3.999/branches/on-tisql/lib/RT/Model/Ticket.pm
==============================================================================
--- rt/3.999/branches/on-tisql/lib/RT/Model/Ticket.pm	(original)
+++ rt/3.999/branches/on-tisql/lib/RT/Model/Ticket.pm	Tue Mar  3 14:21:14 2009
@@ -182,23 +182,29 @@
         references RT::Model::GroupCollection
         by tisql => 'role_groups.instance = .id'
             .' AND role_groups.domain = "RT::Model::Ticket-Role"'
-            .' AND role_groups.type = %1';
+            .' AND role_groups.type = %type';
 
     column watchers =>
         references RT::Model::UserCollection
-        by tisql => 'watchers.id = .role_groups{%1}.gm.member_id';
-
-    column recursive_watchers =>
-        references RT::Model::UserCollection
-        by tisql => 'recursive_watchers.id = .role_groups{%1}.cgm.member_id';
+        by tisql => sub {
+            my %args = (@_);
+            my $phs = $args{'placeholders'};
+            return query =>
+                (!exists $phs->{'recursive'} || exists $phs->{'recursive'})
+                ? 'watchers.id = .role_groups{type => %role}.cgm.member_id'
+                : 'watchers.id = .role_groups{type => %role}.gm.member_id';
+        };
 
     column groups_watching =>
         references RT::Model::GroupCollection
-        by tisql => 'groups_watching.id = .role_groups{%1}.gm.member_id';
-
-    column recursive_groups_watching =>
-        references RT::Model::GroupCollection
-        by tisql => 'recursive_groups_watching.id = .role_groups{%1}.cgm.member_id';
+        by tisql => sub {
+            my %args = (@_);
+            my $phs = $args{'placeholders'};
+            return query =>
+                (!exists $phs->{'recursive'} || exists $phs->{'recursive'})
+                ? 'groups_watching.id = .role_groups{type => %role}.cgm.member_id'
+                ? 'groups_watching.id = .role_groups{type => %role}.gm.member_id';
+        };
 
     column links =>
         references RT::Model::LinkCollection

Modified: rt/3.999/branches/on-tisql/lib/RT/Model/User.pm
==============================================================================
--- rt/3.999/branches/on-tisql/lib/RT/Model/User.pm	(original)
+++ rt/3.999/branches/on-tisql/lib/RT/Model/User.pm	Tue Mar  3 14:21:14 2009
@@ -125,6 +125,17 @@
     column timezone => max_length is 50,  type is 'varchar(50)',  default is '';
     column pgp_key   => type is 'text';
 
+    column member_of =>
+        references RT::Model::Group
+        by tisql => sub {
+            my %args = (@_);
+            my $phs = $args{'placeholders'};
+            return query =>
+                (!exists $phs->{'recursive'} || exists $phs->{'recursive'})
+                ? 'member_of.cgm.user_id = .id'
+                : 'member_of.gm.user_id  = .id';
+        };
+
 };
 
 use Jifty::Plugin::User::Mixin::Model::User;    # name, email, email_confirmed


More information about the Rt-commit mailing list