X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FModel%2FBase.pm;h=450b760fc1447f9a79db7a94bbae0d0aeef87f8d;hb=abaae7b29361db768c59f0948815ef07b454bb9b;hp=d8592bc67455f33851e7bb7b68f693f0ac36335b;hpb=dcc33148f1b562834e16f658e34270f3f581833c;p=maypole.git diff --git a/lib/Maypole/Model/Base.pm b/lib/Maypole/Model/Base.pm index d8592bc..450b760 100644 --- a/lib/Maypole/Model/Base.pm +++ b/lib/Maypole/Model/Base.pm @@ -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);