X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FApache%2FMVC.pm;h=320b6b78252227139477c9c6e1ffc15e6f40c9c7;hb=5c199c0e9cd05a00bfc04d9688982979a41f3ee8;hp=5005effb96f244fa0eaeae8526fc64d146160b80;hpb=9de2e5c0ad43b2983e4aa02215685b69fd15d357;p=maypole.git diff --git a/lib/Apache/MVC.pm b/lib/Apache/MVC.pm index 5005eff..320b6b7 100644 --- a/lib/Apache/MVC.pm +++ b/lib/Apache/MVC.pm @@ -1,24 +1,64 @@ package Apache::MVC; -use base qw(Apache::MVC::Base Maypole); -use Apache; -use Apache::Request; use strict; use warnings; -our $VERSION = "0.3"; +use base 'Maypole'; +use mod_perl; + +if ( $mod_perl::VERSION >= 1.99 ) { + require Apache2; + require Apache::RequestRec; + require Apache::RequestUtil; + require APR::URI; +} +else { require Apache } +require Apache::Request; + +our $VERSION = "0.4"; sub get_request { - shift->{ar} = Apache::Request->new( Apache->request ); + my ( $self, $r ) = @_; + $self->{ar} = Apache::Request->new($r); +} + +sub parse_location { + my $self = shift; + $self->{path} = $self->{ar}->uri; + my $loc = $self->{ar}->location; + no warnings 'uninitialized'; + $self->{path} =~ s/^($loc)?\///; + $self->parse_path; + $self->parse_args; } sub parse_args { my $self = shift; - $self->{params} = { $self->{ar}->content }; - while ( my ( $key, $value ) = each %{ $self->{params} } ) { - $self->{params}{$key} = '' unless defined $value; + $self->{params} = { $self->_mod_perl_args( $self->{ar} ) }; + $self->{query} = { $self->_mod_perl_args( $self->{ar} ) }; +} + +sub send_output { + my $r = shift; + $r->{ar}->content_type( $r->{content_type} ); + $r->{ar}->headers_out->set( "Content-Length" => length $r->{output} ); + $r->{ar}->send_http_header; + $r->{ar}->print( $r->{output} ); +} + +sub get_template_root { + my $r = shift; + $r->{ar}->document_root . "/" . $r->{ar}->location; +} + +sub _mod_perl_args { + my ( $self, $apr ) = @_; + my %args; + foreach my $key ( $apr->param ) { + my @values = $apr->param($key); + $args{$key} = @values == 1 ? $values[0] : \@values; } - $self->{query} = { $self->{ar}->args }; + return %args; } 1; @@ -113,6 +153,7 @@ see L. =head1 AUTHOR Simon Cozens, C +Marcus Ramberg, C Screwed up by Sebastian Riedel, C =head1 LICENSE