]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole/Model/Base.pm
Fixed MODIFY_CODE_ATTRIBUTES and FETCH_CODE_ATTRIBUTES to work with mod_perl threaded...
[maypole.git] / lib / Maypole / Model / Base.pm
index 8858c0a44a777e6b26047340c081d1471a8944f3..450b760fc1447f9a79db7a94bbae0d0aeef87f8d 100644 (file)
@@ -1,6 +1,5 @@
 package Maypole::Model::Base;
 use strict;
-use Class::C3;
 
 use Maypole::Constants;
 use attributes ();
@@ -8,24 +7,30 @@ use attributes ();
 # don't know why this is a global - drb
 our %remember;
 
-sub MODIFY_CODE_ATTRIBUTES 
-{ 
+sub MODIFY_CODE_ATTRIBUTES {
     shift; # class name not used
     my ($coderef, @attrs) = @_;
-    
-    $remember{$coderef} = \@attrs; 
-    
+    $remember{$coderef} = [$coderef, \@attrs];
+
     # previous version took care to return an empty array, not sure why, 
     # but shall cargo cult it until know better
     return; 
 }
 
-sub FETCH_CODE_ATTRIBUTES { @{ $remember{$_[1]} || [] } }
+sub FETCH_CODE_ATTRIBUTES { @{ $remember{$_[1]}->[1] || [] } }
+
+sub CLONE {
+ # re-hash %remember
+ for my $key (keys %remember) {
+ my $value = delete $remember{$key};
+ $key = $value->[0];
+ $remember{$key} = $value;
+ }
+}
 
 sub process {
     my ( $class, $r ) = @_;
     my $method = $r->action;
-    return if $r->{template};    # Authentication has set this, we're done.
 
     $r->{template} = $method;
     my $obj = $class->fetch_objects($r);
@@ -257,3 +262,24 @@ sub related {
 1;
 
 
+=head1 SEE ALSO
+
+L<Maypole>, L<Maypole::Model::CDBI>.
+
+=head1 AUTHOR
+
+Maypole is currently maintained by Aaron Trevena.
+
+=head1 AUTHOR EMERITUS
+
+Simon Cozens, C<simon#cpan.org>
+
+Simon Flack maintained Maypole from 2.05 to 2.09
+
+Sebastian Riedel, C<sri#oook.de> maintained Maypole from 1.99_01 to 2.04
+
+=head1 LICENSE
+
+You may distribute this code under the same terms as Perl itself.
+
+=cut