]> git.decadent.org.uk Git - maypole.git/commitdiff
Slight refactoring of handler_guts(), removed direct
authorDavid Baird <cpan.zerofive@googlemail.com>
Mon, 3 Oct 2005 11:31:17 +0000 (11:31 +0000)
committerDavid Baird <cpan.zerofive@googlemail.com>
Mon, 3 Oct 2005 11:31:17 +0000 (11:31 +0000)
access to  hash elements

git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@382 48953598-375a-da11-a14b-00016c27c3ee

lib/Maypole.pm

index 5bb07d519a985474532c5c96240c32fc7d0f7c71..e9aec84a80b622b5baad0c28706e9238014add6f 100644 (file)
@@ -9,6 +9,11 @@ use Maypole::Headers;
 
 our $VERSION = '2.10';
 
+# proposed privacy conventions:
+# - no leading underscore     - public to custom application code and plugins
+# - single leading underscore - private to the main Maypole stack - *not* including plugins
+# - double leading underscore - private to the current package
+
 __PACKAGE__->mk_classdata($_) for qw( config init_done view_object );
 __PACKAGE__->mk_accessors(
     qw( params query objects model_class template_args output path
@@ -75,69 +80,110 @@ sub handler : method
         template_args => {},
         config        => $class->config
     }, $class;
+    
     $r->headers_out(Maypole::Headers->new);
+    
     $r->get_request($req);
+    
     $r->parse_location();
+    
     my $status = $r->handler_guts();
+    
     return $status unless $status == OK;
+    
     $r->send_output;
+    
     return $status;
 }
 
 # The root of all evil
-sub handler_guts {
-    my $r = shift;
-    $r->model_class( $r->config->model->class_of( $r, $r->{table} ) );
+sub handler_guts 
+{
+    my ($r) = @_;
+    
+    $r->__load_model;
 
     my $applicable = $r->is_applicable;
-    unless ( $applicable == OK ) {
-
+    
+    unless ( $applicable == OK ) 
+    {
         # It's just a plain template
-        delete $r->{model_class};
-        $r->{path} =~ s{/$}{};    # De-absolutify
-        $r->template( $r->{path} );
+        $r->model_class(undef);
+        
+        my $path = $r->path;
+        $path =~ s{/$}{};    # De-absolutify
+        $r->path($path);
+        
+        $r->template($r->path);
     }
 
     # We authenticate every request, needed for proper session management
     my $status;
+    
     eval { $status = $r->call_authenticate };
-    if ( my $error = $@ ) {
+    
+    if ( my $error = $@ ) 
+    {
         $status = $r->call_exception($error);
-        if ( $status != OK ) {
+        
+        if ( $status != OK ) 
+        {
             warn "caught authenticate error: $error";
-            return $r->debug ? $r->view_object->error( $r, $error ) : ERROR;
+            return $r->debug ? $r->view_object->error($r, $error) : ERROR;
         }
     }
-    if ( $r->debug and $status != OK and $status != DECLINED ) {
+    
+    if ( $r->debug and $status != OK and $status != DECLINED ) 
+    {
         $r->view_object->error( $r,
             "Got unexpected status $status from calling authentication" );
     }
+    
     return $status unless $status == OK;
 
     # We run additional_data for every request
     $r->additional_data;
-    if ( $applicable == OK ) {
+    
+    if ( $applicable == OK ) 
+    {
         eval { $r->model_class->process($r) };
-        if ( my $error = $@ ) {
+        
+        if ( my $error = $@ ) 
+        {
             $status = $r->call_exception($error);
-            if ( $status != OK ) {
+            if ( $status != OK ) 
+            {
                 warn "caught model error: $error";
-                return $r->debug ? $r->view_object->error( $r, $error ) : ERROR;
+                return $r->debug ? $r->view_object->error($r, $error) : ERROR;
             }
         }
     }
-    if ( !$r->{output} ) {    # You might want to do it yourself
+    
+    if ( !$r->output ) 
+    {    # You might want to do it yourself
         eval { $status = $r->view_object->process($r) };
-        if ( my $error = $@ ) {
+        
+        if ( my $error = $@ ) 
+        {
             $status = $r->call_exception($error);
-            if ( $status != OK ) {
+            
+            if ( $status != OK ) 
+            {
                 warn "caught view error: $error" if $r->debug;
-                return $r->debug ? $r->view_object->error( $r, $error ) : ERROR;
+                return $r->debug ? $r->view_object->error($r, $error) : ERROR;
             }
         }
+        
         return $status;
     }
-    else { return OK; }
+    
+    return OK; 
+}
+
+sub __load_model
+{
+    my ($r) = @_;
+    $r->model_class( $r->config->model->class_of($r, $r->table) );
 }
 
 sub is_applicable {