[Jifty-commit] r2880 - in Jifty-DBI/branches/od: .
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Thu Mar 1 19:45:22 EST 2007
Author: jesse
Date: Thu Mar 1 19:45:20 2007
New Revision: 2880
Modified:
Jifty-DBI/branches/od/ (props changed)
Jifty-DBI/branches/od/lib/Jifty/DBI/Record.pm
Log:
r50701 at pinglin: jesse | 2007-03-01 19:44:22 -0500
* Initial refactoring to introduce callbacks for plugins
Modified: Jifty-DBI/branches/od/lib/Jifty/DBI/Record.pm
==============================================================================
--- Jifty-DBI/branches/od/lib/Jifty/DBI/Record.pm (original)
+++ Jifty-DBI/branches/od/lib/Jifty/DBI/Record.pm Thu Mar 1 19:45:20 2007
@@ -7,6 +7,8 @@
use Lingua::EN::Inflect ();
use Jifty::DBI::Column ();
use UNIVERSAL::require ();
+use Class::Trigger qw/add_trigger call_trigger/;
+
use base qw/
Class::Data::Inheritable
@@ -608,8 +610,8 @@
my $column = shift;
my $value = $self->__value( $column => @_ );
- my $method = $self->can("after_$column");
- $method->( $self, \$value ) if $method;
+ $self->_run_callback( name => "after_".$column,
+ args => \$value);
return $value;
}
@@ -696,23 +698,18 @@
@_
);
- my $method = "before_set_" . $args{column};
- if ( $self->can($method) ) {
- my $before_set_ret = $self->$method( \%args );
- return $before_set_ret
- unless ($before_set_ret);
- }
- my $ok = $self->__set(%args);
+ my $ok = $self->_run_callback( name => "before_set_" . $args{column},
+ args => \%args);
+ return $ok if not ($ok);
- return $ok unless $ok;
+ $ok = $self->__set(%args);
+ return $ok if not $ok;
- $method = "after_set_" . $args{column};
- if( $self->can($method) ) {
# Fetch the value back to make sure we have the actual value
my $value = $self->_value($args{column});
- $self->$method({column => $args{column}, value => $value});
- }
+ my $after_set_ret = $self->_run_callback( name => "after_set_" . $args{column}, args =>
+ {column => $args{column}, value => $value});
return $ok;
}
@@ -1048,14 +1045,16 @@
- if ( $self->can('before_create') ) {
- my $before_ret = $self->before_create( \%attribs );
- return ($before_ret) unless ($before_ret);
- }
+ my $ok = $self->_run_callback( name => "before_create",
+ args => \%attribs);
+ return $ok if not ($ok);
my $ret = $self->__create(%attribs);
- $self->after_create( \$ret ) if $self->can('after_create');
+ $ok = $self->_run_callback( name => "after_create",
+ args => \$ret);
+ return $ok if not ($ok);
+
if ($class) {
$self->load_by_cols(id => $ret);
return ($self);
@@ -1149,12 +1148,13 @@
sub delete {
my $self = shift;
- if ( $self->can('before_delete') ) {
- my $before_ret = $self->before_delete();
- return $before_ret unless ($before_ret);
- }
+ my $before_ret = $self->_run_callback( name => 'before_delete' );
+ return $before_ret unless ($before_ret);
my $ret = $self->__delete;
- $self->after_delete( \$ret ) if $self->can('after_delete');
+
+ my $after_ret
+ = $self->_run_callback( name => 'after_delete', args => \$ret );
+ return $after_ret unless ($after_ret);
return ($ret);
}
@@ -1342,6 +1342,19 @@
}
}
+
+sub _run_callback {
+ my $self = shift;
+ my %args = ( name => undef,
+ args => undef,
+ @_);
+ my $method = $args{'name'};
+ if ( $self->can($method) ) {
+ return $self->$method( $args{args} );
+ }
+ else { return 1};
+}
+
1;
__END__
More information about the Jifty-commit
mailing list