[Jifty-commit] r6229 - in jifty/trunk: .

Jifty commits jifty-commit at lists.jifty.org
Mon Jan 12 12:37:59 EST 2009


Author: sunnavy
Date: Mon Jan 12 12:37:57 2009
New Revision: 6229

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty/Plugin/ActorMetadata/Mixin/Model/ActorMetadata.pm

Log:
 r6248 at sunnavys-mb:  sunnavy | 2009-01-13 00:01:34 +0800
 we need to save every class's column name info


Modified: jifty/trunk/lib/Jifty/Plugin/ActorMetadata/Mixin/Model/ActorMetadata.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Plugin/ActorMetadata/Mixin/Model/ActorMetadata.pm	(original)
+++ jifty/trunk/lib/Jifty/Plugin/ActorMetadata/Mixin/Model/ActorMetadata.pm	Mon Jan 12 12:37:57 2009
@@ -6,6 +6,7 @@
 use base 'Jifty::DBI::Record::Plugin';
 
 our @EXPORT = qw(current_user_can current_user_is_owner);
+my %column_names;
 
 =head1 NAME
 
@@ -77,8 +78,9 @@
 sub register_triggers_for_column {
     my $self   = shift;
     my $column = shift;
-
-    return unless $column eq 'updated_on' || $column eq 'updated_by';
+    return
+      unless $column eq $column_names{ ref $self || $self }{'updated_on'}
+          || $column eq $column_names{ ref $self || $self }{'updated_by'};
 
     $self->add_trigger(name => 'after_set', callback => \&after_set);
     return 1;
@@ -93,9 +95,17 @@
 sub before_create {
     my $self = shift;
     my $args = shift;
+    for my $by (qw/created_by updated_by/) {
+        if ( $column_names{ ref $self || $self }{$by} ) {
+            $args->{$column_names{ ref $self || $self }{$by}} = $self->current_user->id;
+        }
+    }
 
-    $args->{'created_by'} = $args->{'updated_by'} = $self->current_user->id;
-    $args->{'created_on'} = $args->{'updated_on'} = Jifty::DateTime->now;
+    for my $time ( qw/created_on updated_on/ ) {
+        if ( $column_names{ ref $self || $self }{$time} ) {
+            $args->{$column_names{ ref $self || $self }{$time}} = Jifty::DateTime->now;
+        }
+    }
 
     return 1;
 }
@@ -108,8 +118,18 @@
 
 sub after_set {
     my $self = shift;
-    $self->__set( column => 'updated_on', value => Jifty::DateTime->now );
-    $self->__set( column => 'updated_by', value => $self->current_user->id );
+    if ( $column_names{ ref $self || $self }{'updated_on'} ) {
+        $self->__set(
+            column => $column_names{ ref $self || $self }{'updated_on'},
+            value  => Jifty::DateTime->now
+        );
+    }
+    if ( $column_names{ ref $self || $self }{'updated_by'} ) {
+        $self->__set(
+            column => $column_names{ ref $self || $self }{'updated_by'},
+            value  => $self->current_user->id
+        );
+    }
 
     return 1;
 }
@@ -146,7 +166,7 @@
 sub current_user_is_owner {
     my $self = shift;
 
-    my $created_by = $self->__value('created_by');
+    my $created_by = $self->__value($column_names{ref $self || $self}{'created_by'});
     return unless $self->current_user && $created_by;
 
     return unless $self->current_user->id;
@@ -175,7 +195,6 @@
 
 sub import {
     my $self = shift;
-
     my %args = @_;
     my $user_class = $args{'user_class'} || Jifty->app_class('Model', 'User');
 
@@ -193,10 +212,12 @@
         @map{@columns} = @defined{@columns} = @columns;
     }
 
+    $column_names{scalar caller} = \%map;
+
     my @ret = schema {
         if ( $defined{'created_by'} ) {
-            column $map{'created_by'} => render_as 'hidden',
-                refers_to $user_class;
+            column $map{'created_by'} => references $user_class, 
+                render_as 'hidden';
         }
         if ( $defined{'created_on'} ) {
             column $map{'created_on'} => is TimeStamp,
@@ -204,7 +225,7 @@
         }
         if ( $defined{'updated_by'} ) {
             column $map{'updated_by'} =>
-                #refers_to $user_class, # TODO this weirdly doesn't work, need dig
+#references $user_class, # TODO this weirdly doesn't work, need dig
                 render_as 'hidden';
         }
         if ( $defined{'updated_on'} ) {


More information about the Jifty-commit mailing list